#!/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]
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)
rsdf = open(infile,'r')
data = rsdf.read()
data = binascii.unhexlify(''.join(data.split()))
data = data.splitlines()
for link in data:
link = base64.b64decode(link)
link = obj.decrypt(link)
print link.replace('CCF: ','')
rsdf.close()
Da ich leider kaum Ahnung von Cryptography und praktisch keine Python Erfahrung habe, komme ich mit diesem Code absolut niocht klar..
Hat jemand eine Idee, wie man das in C# uebersetzt bekommt?
daran sitz ich schon den ganzen abend - aber ich bekomme das ganze absolut nicht hin.. wie gesagt, verstehe wenig von crypto und noch wen iger von Python - und da weis ich zT auch leider absolut nicht, was die entsprechungen von .Net funktionen sind...
*edit* das ist das, was ich im Moment als Code habe:
{
//byte[] key = Convert.ToByte("8C35192D964DC3182C6F84F3252239EB4A320D2500000000");
// 8C35192D964DC3182C6F84F3252239EB4A320D25
//byte[] iv = HexToBytes("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
// FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Rijndael rij = Rijndael.Create();
int discarded;
rij.Key = Encoding.UTF8.GetBytes("8C35192D964DC3182C6F84F3252239EB4A320D25");
rij.IV = Encoding.UTF8.GetBytes("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
rij.Mode = CipherMode.ECB;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = rij.CreateEncryptor(rij.Key, rij.IV);
byt = Encoding.UTF8.GetBytes(rtfLinks.Text);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
rtfLinks.Text = Convert.ToBase64String(ms.ToArray());
}
Im Moment jammert der Debugger nur, dass der Key eine unpassende Laenge hat..