![]() |
Rijndael-Entschlüsselung
Hallo!
Ich möchte in meiner Delphi/FreePascal-Anwendung Strings entschlüsseln, die mit Rijndael im CFB-Modus verschlüsselt sind. Mit Python funktioniert das auch wunderbar, nur unter Delphi kriege ich es nicht hin. Prinzipiell sollte das so laufen:
Code:
Ich habe nun schon verschiedene Komponenten in Delphi ausprobiert (DEC, TLockBox, DCPcrypt), aber ich habe es nicht hingekriegt.
key = binascii.unhexlify('A3A882F4860F09E8F8B526BA15A161951EF7A00F00000000')
iv = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') iv_cipher = AES.new(key,AES.MODE_ECB) iv = iv_cipher.encrypt(iv) cipher = AES.new(key,AES.MODE_CFB,iv) result = cipher.decrypt(encryptedstring) Könnte mir da bitte jemand auf die Sprünge helfen? Ich bin nach mehreren Stunden des vergeblichen Versuchens nämlich so langsam am Verzweifeln... |
Re: Rijndael-Entschlüsselung
Zitat:
Delphi-Quellcode:
stehen muss?
cipher = AES.new(key,AES.MODE_CFB,iv)
Außerdem wäre zu klären, ob es ein 8-Bit-, 64-Bit- oder 128-Bit-CFB ist? Lauft Dein Code mit den offiziellen Testvektoren aus der NIST-Spec? ![]() Wenn die beiden Sachen klar sind, sollte es kein Problem sein, den Code nach Pascal zu übersetzen (wenn die Library den 8,64 oder 128 Bitmodus unterstützt, meine zB hat nur den 128-er). Gruß Gammatester |
Re: Rijndael-Entschlüsselung
hi, gammatester
ich habe das das selbe problem wie ArneH. Der IV (was auch immer das ist) wird bei mir auch ZUERST im ECB Verschlüsselt und dann wird IV_Cipher encrypted. also so:
Delphi-Quellcode:
nur beu mir geht das ganz dann sogar noch weiter ^_^
IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')
IV_Cipher = AES.new(Key,AES.MODE_ECB) IV = IV_Cipher.encrypt(IV)
Delphi-Quellcode:
habs auch mit LockBox rumgespielt, aber nichts rausbekommen.
Key = binascii.unhexlify('F1C500DA3292182CF80CC3732239EEB3F560EAA100000000')
IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') IV_Cipher = AES.new(Key,AES.MODE_ECB) IV = IV_Cipher.encrypt(IV) obj = AES.new(Key,AES.MODE_CFB,IV) afile = open(infile,'r') data = afile.read() data = binascii.unhexlify(''.join(data.split())) data = data.splitlines() Ob der key 128, 192 oder 256 (welche ich bei LockBox auswählen kann) ist, ist eigentlich egal, das kann man ja testen. mich würde eben auch nur der Pascal code von meinem Python code interessieren :) danke schonmal im voraus für eure hilfe! |
Re: Rijndael-Entschlüsselung
@q3fuba: Da will wohl jemand RSD-Files entschlüsseln... :)
|
Re: Rijndael-Entschlüsselung
Hallo Leute.
ich weiß zwar nicht, was die genauen Probleme sind. Aber ich bin sehr sicher, da0 sie nicht mit Lockbox zu lösen sind. Vergeßt Lockbox! Zu langsam, veraltet, nicht Standard und vor allem: Man hat keine Möglichkeit den IV selbst vorzugeben:
Delphi-Quellcode:
Wenn bekannt ist, was verwendet wird und wie, sollte es doch möglich sein, systematisch eine Lösung zu finden mit verlässlichen Paketen, neben dem hier allseits bekannten DEC kann man noch Dave Bartons
if Encrypt then begin
{set up an initialization vector (IV)} {$IFDEF MSWINDOWS} Block[0] := timeGetTime; Block[1] := timeGetTime; {$ENDIF} {$IFDEF LINUX} fd := fopen( '/dev/random', 'r' ); fread( @Block[0], SizeOf( byte ), SizeOf( Block[0] ), fd ); fread( @Block[1], SizeOf( byte ), SizeOf( Block[1] ), fd ); fclose( fd ); {$ENDIF} ![]() ![]() Gruß Gammatester |
Re: Rijndael-Entschlüsselung
Zitat:
Würde mich allgemein mal gerne mit Crypting usw beschäftigen, da es ja nützlich ist ^_^ Zitat:
"Rijndael" ist ja das neue AES soweit ich gelesen habe, wobei ich sagen muss, ich habe bis jetzt nur mit XOR Cryption beschäftigt und das nicht wirklich intensiv. Also habe mit Crypting eher wenig erfahung :!: Wenn ich jetzt die componente "DCP_rijndael" ins form stecke, kann ich ja die Crypting Mode auswählen... Aber da gibts keine "ECB" Mode zur auswahl, bei LockBox konnte man das auswählen. Hier habe ich nur folgende: cmCBC cmCFB8bit cmCFBblock cmCTR cmOFB Da sehe ich also schonmal die erste Türe die für mich verschlossen ist :? bis jetzt habe ich es soweit (ist aber warscheinlich auch falsch)
Delphi-Quellcode:
währe dir dankbar wenn du mir dabei auf die sprünge helfen könntest oder vielleicht irgendwo ein tutorial wie man AES IV mit Delphi verwendet wenn möglich für DCPCrypt.
procedure TForm1.Button1Click(Sender: TObject);
var key, Text: string; begin Text:='mein Text'; key:='8C35192D964DC3182C6F84F3252239EB4A320D2500000000'; DCP_rijndael1.SetIV('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'); // Hier fehlt noch einiges, was ich nicht verstehe wie es gemacht wird Memo1.Lines.Text:=DCP_rijndael1.DecryptString(Text); end; Weil ich wiss das ganze dann ja auch verstehen können, warum das so oder so gemacht wird. |
Re: Rijndael-Entschlüsselung
Zitat:
Zitat:
Für erste gute Hinweise sind die Artikel von wikipedia zu empfehlen, zB ![]() Gruß Gammatester |
Re: Rijndael-Entschlüsselung
Poste doch mal das was nach der Ent-Verscxhlüsselung als Resultat rauskommen soll.
Im DEC machst du das so
Delphi-Quellcode:
Also, am besten du postest hier zwei Sets von Passwörtern + Verschlüsselten Daten + Entschlüsselten Daten, alles im HEX Format. Dann bin ich wsentlich schneller beim Austesten aller möglichen Parameter als zu verstehen was du exakt möchtest, was du schon probiert hast und ob deine Angaben auch stimmen und nicht Missverständnisse sind.
with TCipher_Rijndael.Create do
try Mode := cmCFB8; // CFB-8Bit Feedback Init(TFormat_HEX.Decode('8C35192D964DC3182C6F84F3252239EB4A320D2500000000'), '', $FF); // IV ist $FF befüllt Result := DecodeBinary('0102030AAFFCC', TFormat_HEX); // Result ist lesbar, Input ist HEX Formatiert finally Free; end; Gruß Hagen |
Re: Rijndael-Entschlüsselung
Zitat:
Code:
Das "Passwort" ist immer gleich, bei allen und wie schon oben geschrieben:
Verschlüsselt 1:
696D6C5666374861645137307A6C466C516E6F2F73736937614A616C734E4C765830636751345930544E 5432334C4C6752306256646C652F77735A3246704B6E5A654F6C6E686E2F586E4C4C4A6E3D3D0D0A^ Entschlüsselt 1: CCF: [url]http://rapidshare.com/files/58141435/voy402.part1.rar[/url] ------------------------------------------------------------------------------ Verschlüsselt 2: 696D6C5666374861645137307A6C466C516E6F2F73736937614A616C734E4C765830636751345930544E 5432304434714341456B506573524D424B4930497A7A57357A3D0D0A Entschlüsselt 2: CCF: [url]http://rapidshare.com/files/91891665/D2SC.rar[/url] ------------------------------------------------------------------------------ Verschlüsselt 3: 696D6C5666374861645137307A6C466C516E6F2F73736937614A616C734E4C765830636751345930544E 5432304434714341456B506573524D424B4930497A7A57357A3D0D0A387447614C6C6B4F365264314831 4558386B414F55664B47494E486E4F346C6F376C4A31777233516E7867315234455571724D3752596F2F 324F3335376B2B2F5A7639304E715976425456390D0A Entschlüsselt 3: CCF: [url]http://rapidshare.com/files/91891665/D2SC.rar[/url] CCF: [url]http://rapidshare.com/files/72806508/Forum_Tools.rar[/url]
Code:
der komplette inhalt der "decrypt.py" ist der hier:
8C35192D964DC3182C6F84F3252239EB4A320D2500000000
Code:
hab den schon so modifiziert, dass das ergebnis fast so ist, wie ich es haben will, nur will ich das ganze jetzt auch in delphi machen können.
#!/usr/bin/env python
import binascii import base64 from Crypto.Cipher import AES import sys # 8C 35 19 2D 96 4D C3 18 2C 6F 84 F3 25 22 39 EB 4A 32 0D 25 infile = sys.argv[1] outfile = infile+'.txt' Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000') IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') IV_Cipher = AES.new(Key,AES.MODE_ECB) IV = IV_Cipher.encrypt(IV) obj = AES.new(Key,AES.MODE_CFB,IV) afile = open(infile,'r') f = open(outfile, 'w') data = afile.read() data = binascii.unhexlify(''.join(data.split())) data = data.splitlines() for link in data: link = base64.b64decode(link) link = obj.decrypt(link) f.write(str(link.replace('CCF: ', ''))+'\n') afile.close() f.close() Hoffe das hilft dir, folgedessen auch mir weiter :) // edit sorry wegen der DEC, hab nicht gewusst dass die von dir is :oops: // auch "installiert hab ichs jetzt schon, also die ordner einfach in den suchpfad hinzugefügt und schon funzt der code auch -> :wall: [edit=Jelly]Zeilen umgebrochen... Mfg, Jelly[/edit] |
Re: Rijndael-Entschlüsselung
Zitat:
OnTopic: Hast du schon nach ![]() MfG, Bug |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz