Wertepaare - zweiten Wert berechnen?

Hallo,

ich habe eine kurze Frage:

Ich habe 10 hexadezimale Werte (je 3 Byte lang), die mit irgendeinem Algorithmus verändert wurden, dass andere 3 Bytes dabei herauskommen.

Welcher Algorithmus das ist, weiß ich leider nicht, aber ich würde es gerne herausfinden.

Den Thread "Warum dein Bytestring für den Arsch ist" habe ich gelesen, aber vielleicht hilfts ja wenn ich ein paar mehr Werte (10) habe und die außerdem einmal im "Klartext" und einmal, nachdem sie verändert wurden.

Code:
Veränderung Klartext
0xD5C306    0x03402D
0xA49CFF    0x15E7D4
0xD460C1    0x760F60
0x114A54    0xC31E1D
0x8CD037    0xC9A1FB
0x902FF3    0x2C83AF
0xF28004    0x9D6B32
0x7B8312    0x280CDF
0x197169    0xC2F491
0xFD6459    0xC4FF89
Ein normaler Hash kann es nicht sein, da die Werte in der Spalte "Veränderung" (also die Ausgabe des Algorithmus) für alle 3-byte-Werte einmalig ist (Es gibt keine zwei Klartexte, bei denen der gleiche Wert herauskommt).

Ich suche nun einen Algorithmus, der mir aus den veränderten Werten wieder den Originalwert ausrechnet.

Vielleicht hat ja einer eine Idee, wie das gelöst werden könnte.

Vielen Dank,

leseratte10
 
Zuletzt bearbeitet:
Ein normaler Hash kann es nicht sein, da die Werte in der Spalte "Veränderung" (also die Ausgabe des Algorithmus) für alle 3-byte-Werte einmalig ist (Es gibt keine zwei Klartexte, bei denen der gleiche Wert herauskommt).

Woraus geht das jetzt hervor? Der Sinn einer Hashfunktion ist es auch möglichst wenige Kollisionen zu erzeugen, d.h. entweder musst du den Algorithmus kennen um irgendwas zu beweisen oder du hast alle möglichen Eingabewerte überprüft.

Ich würde sagen, probiere einfach die gängigen Kryptoalgorithmen aus, aber ohne einen Schlüssel wird das schwierig.

EDIT: Ich würde eher darauf schließen, dass kein Hash benutzt wird, weil die gängigen Hashes einfach länger als 3 Byte sind.


Ich suche nun einen Algorithmus, der mir aus den veränderten Werten wieder den Originalwert ausrechnet.

Reicht es dir nicht aus einfach nur den Originalwert ohne Algorithmus zu bekommen? Du hast gerade mal 6 Hexziffern als Eingabe, also gerade mal 16^6 = 16.777.216 mögliche Eingaben. Rechnest du alle möglichen Eingaben aus und speicherst das ganze als Hashmap o.ä. ab, hast du eine Lookup Table, die nun wirklich noch handhabbar ist.
 
Zuletzt bearbeitet:
Einmaligkeit: Das Ergebnis (der veränderte Wert) bildet zusammen mit dem Hersteller-Teil die MAC-Adresse eines Geräts. Und die ist einmalig.

Originalwert: Ich kann nicht einfach alle 16kk möglichen Werte abspeichern, da ich keine Möglichkeit habe, eigene "veränderte" Werte zu generieren. Ich habe nur die oben genannten Wertepaare (und demnächst evtl. noch ein paar mehr)
 
man könnte hoffen das es eine linearkombination ist ... dann brauchst du 24 solcher paare um einen mögliche lösung aufzustellen, und dann ein paar weitere ums zu testen

aber für sehr warscheinlich halte ich das nicht

gibts ne möglichkeit an die paare für ein paar choosen plaintexts zu kommen?

000000
FFFFFF
AAAAAA
555555
CCCCCC
333333

das wären gute testfälle
 
Leider nicht. Wie gesagt, das ist ein Teil aus der MAC-Adresse eines Geräts.

Wenn aber schon 24 Wertepaare für einen ersten Test ausreichen, schau ich mal, ob ich noch 14-15 zusammen bekomme.

EDIT: Ich würde eher darauf schließen, dass kein Hash benutzt wird, weil die gängigen Hashes einfach länger als 3 Byte sind.
Vielleicht ist es ja ein Teil eines Hashes?
 
Zuletzt bearbeitet:
Zurück
Oben