AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rijndael-Entschlüsselung

Ein Thema von ArneH · begonnen am 24. Dez 2007 · letzter Beitrag vom 5. Sep 2012
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
ArneH

Registriert seit: 8. Apr 2006
7 Beiträge
 
#1

Rijndael-Entschlüsselung

  Alt 24. Dez 2007, 13:49
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:
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)
Ich habe nun schon verschiedene Komponenten in Delphi ausprobiert (DEC, TLockBox, DCPcrypt), aber ich habe es nicht hingekriegt.

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...
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

Re: Rijndael-Entschlüsselung

  Alt 24. Dez 2007, 19:30
Zitat von ArneH:
Hallo!

Rijndael im CFB-Modus

Code:
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)
Das ist auf jeden Fall kein Standard-CFB, da der IV zuerst im ECB-Modus verschlüsselt wird. Bis Du sicher, daß nicht der unverschlüsselte IV im cipher = AES.new(key,AES.MODE_CFB,iv) stehen muss?

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?
http://csrc.nist.gov/publications/ni...SP_800-38B.pdf

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
  Mit Zitat antworten Zitat
q3fuba

Registriert seit: 13. Feb 2008
7 Beiträge
 
#3

Re: Rijndael-Entschlüsselung

  Alt 13. Feb 2008, 22:08
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:
IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')
IV_Cipher = AES.new(Key,AES.MODE_ECB)
IV = IV_Cipher.encrypt(IV)
nur beu mir geht das ganz dann sogar noch weiter ^_^

Delphi-Quellcode:
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()
habs auch mit LockBox rumgespielt, aber nichts rausbekommen.

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!
  Mit Zitat antworten Zitat
ArneH

Registriert seit: 8. Apr 2006
7 Beiträge
 
#4

Re: Rijndael-Entschlüsselung

  Alt 13. Feb 2008, 22:15
@q3fuba: Da will wohl jemand RSD-Files entschlüsseln...
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 08:13
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:
  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}
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 http://www.cityinthesky.co.uk/cryptography.html oder meine Routinen von http://home.netsurf.de/wolfgang.ehrhardt/crypt_de.html verwenden.

Gruß Gammatester
  Mit Zitat antworten Zitat
q3fuba

Registriert seit: 13. Feb 2008
7 Beiträge
 
#6

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 10:18
Zitat:
@q3fuba: Da will wohl jemand RSD-Files entschlüsseln...
nöö *zwinker*
Würde mich allgemein mal gerne mit Crypting usw beschäftigen, da es ja nützlich ist ^_^

Zitat von gammatester:
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:
  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}
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 http://www.cityinthesky.co.uk/cryptography.html oder meine Routinen von http://home.netsurf.de/wolfgang.ehrhardt/crypt_de.html verwenden.

Gruß Gammatester
Hmm jo hab jetzt mal DCPCrypt installed.
"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:
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;
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.

Weil ich wiss das ganze dann ja auch verstehen können, warum das so oder so gemacht wird.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#7

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 11:05
Zitat von q3fuba:

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.
Fluch und Segen von Komponenten! Hinweis: Nach Installation die Datei BlockCiphers.html im Verzeichnis doc ansehen,

Zitat:
The TDCP_blockcipher component extends the TDCP_cipher component to provide chaining mode functions. Functions available are:
...
Delphi-Quellcode:
 
procedure EncryptECB(const Indata; var Outdata);
procedure DecryptECB(const Indata; var Outdata);
Darüber hinaus kannst Du ja wohl nicht erwarten, daß ich ein Tutorial für fremde Bibliotheken schreibe, (wenn dann erstmal für die eigene).

Für erste gute Hinweise sind die Artikel von wikipedia zu empfehlen, zB http://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode

Gruß Gammatester
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 20:34
Poste doch mal das was nach der Ent-Verscxhlüsselung als Resultat rauskommen soll.

Im DEC machst du das so

Delphi-Quellcode:
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;
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.

Gruß Hagen
  Mit Zitat antworten Zitat
q3fuba

Registriert seit: 13. Feb 2008
7 Beiträge
 
#9

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 22:36
Zitat:
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.
So hier hab ich mal 3 varianten von Ver/Entschlüsselten strings:
Code:
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]
Das "Passwort" ist immer gleich, bei allen und wie schon oben geschrieben:
Code:
8C35192D964DC3182C6F84F3252239EB4A320D2500000000
der komplette inhalt der "decrypt.py" ist der hier:
Code:
#!/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()
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.

Hoffe das hilft dir, folgedessen auch mir weiter

// edit sorry wegen der DEC, hab nicht gewusst dass die von dir is
// auch "installiert hab ichs jetzt schon, also die ordner einfach in den suchpfad hinzugefügt und schon funzt der code auch ->

[edit=Jelly]Zeilen umgebrochen... Mfg, Jelly[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

Re: Rijndael-Entschlüsselung

  Alt 14. Feb 2008, 22:45
Zitat von q3fuba:
wieso ich die DEC von Luckie nicht installen kann
Da bist gut, die DEC ( <- siehe Hint) ist von Hagen aka negaH

OnTopic: Hast du schon nach Hier im Forum suchenDEC AND installieren gesucht?

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz