Hallo,
ich hab ein Programm, dass einen Buffer entschlüsselt. Und ich hätte gern gewusst, welcher Algorhitmus verwendet wurde.
Ich kann beliebige Eingaben machen, und mir das "entschlüsselte" Ergebnis angucken.
Bisher habe ich folgendes:
Beim Entschlüsseln wird folgendes gemacht:
Die CRC32 Tabelle wird geladen (Daten davon z.b.
hier)
Dann wird das Startpunkt der Tabelle um die Länge des Buffers verschoben.
Danach geht er vom letzten zum zweiten Byte durch und entschlüsselt es folgendermaßen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| While... begin tmp:=akt. Byte; tmp2:=Byte vor akt. Byte (PByte(@akt.Byte-1)^) tmp2:=PByte(PCRCTable+tmp2)^; tmp:=tmp XOR tmp2; tmp:=tmp XOR Byte(Länge); tmp:=tmp XOR i; akt.Byte:=tmp; Inc(i); end; |
wobei i am Anfang 1 ist
danach werden die ersten 8 Byte mit 2 4-Byte werten überschrieben (weiß ne wo die her kommen)
die ersten 4 Byte werden weiter entschlüsselt durch:
aktByte:=aktByte XOR (PorigCRCTable+aktByte)^
für die zweiten 4 Byte wird ein Key verwendet:
Quelltext
1: 2: 3: 4: 5: 6:
| aktKey:=Key; while... begin aktByte:=Byte(aktByte+(aktKey SAR 8)); aktKey:=aktKey*constA+constB; end; |
die restlichen Bytes im packet werden dann ebenfalls nochmal entschlüsselt. Auch hier fehlt mir wieder das Wissen wie.
Kommt das jemand bekannt vor? Kennt jemand den Algorhitmus?
Wäre sehr schön, wenn ich schnell eine Antwort bekäme.
Bsp
Zitat: |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000 |
wird entschlüsselt zu
Zitat: |
78BB0346076F3753CAAE94C48BFF4919F145BD59C6B22D3470E720A9E2CB3BC253B9A92305DBE14A24
5B0CD4B8E33DFA78616A6A1F6F7F065897E7DC6CCFD4D3055E79EF01CED35E0D3E34CDF7FEA95B2C44
8CBDD2ED21D6AEA96700C69BCC9F4B82770BD9BE7C70090D47F20D565D78122BA337CE6C5B188123C0
88DEBB4FA53BCABEA0AD06C68B4DA142D9 |
Moderiert von
Narses: Umbrüche in die Code-Zitate eingefügt