Python-Code, der RSA verschlüsselte Datei in Chunks von 64 Bit unter Verwendung eines privaten Exponenten und Moduls entschlüsselt

Ich habe eine verschlüsselte Datei, die ich versuche, als Teil eines Experiments zu dekodieren. Nachdem ich hart und lang gearbeitet hatte, konnte ich den privaten Exponenten vom öffentlichen Schlüssel extrahieren, da der Modul klein war:

Openssl rsa -pubin -inform PEM -text -nicht <public_key.pem Public-Key: (64 bit) Modul: 16513720463601767803 (0xe52c8544a915157b) Exponent: 65537

Jetzt habe ich:

Factors: 3917781347 x 4215069449 Private exponent: 9440767265896423601 

Nun, um den Klartext abzuleiten, muss ich jeden 64-Bit-Block des Chiffretextes auf den privaten Exponenten mod den Modul erhöhen. Ich versuche, ein Python-Skript zu schreiben, das das für mich in Hex-Datenform machen wird.

Dies ist der Code, den ich bisher habe:

 #!/usr/bin/python file = open('encrypted.hex', 'r') c = file.readline() d = 0x830457cf1ae460b1 N = 0xe52c8544a915157b m = hex(pow(c, d, N)).rstrip("L") f = open('new.try', 'w') f.write(m) f.close() 

Ich habe xxd , um die Hex-Daten aus der Chiffretext-Datei zu extrahieren: xxd -p> encrypted.hex

Dies schuf einen Hex-Dump der Datei namens 'encrypted.hex'. Der Inhalt dieser Datei beginnt wie folgt:

 7d4554292d7b9f980ed049cea0f968cf438b6fc312cf2028ce5ce2fe9f38 387b72a01bf6564f25884a2cacd187c2eeccd0cf78c2a74785f18d5e72b5 270ac3e45b6f7505347b38ec7684b1af206d73ea4a84cd59b50be56d7abf 74a569868406ab2b17846c9e448fe1392b21dac0b10fbb733536c99e598b 683be7400a1ad55c42faa171becd803b8b8f4a1fa512a33222ec042486c5 672f6200d4f00e2994b6d247a44edb6ce90795bde7ccda4433cf6fca8362 f87c68f9df6418c4f0b8fb9da39a1d173fea2b1466e646f01e2dc7fb0499 311d35ec75c15c5910b2d3e0c662de0b3b1716bab44faa2a36538bb44f6a 3c3abd37692cf95fa075b58485ad983533782d7bf51e10c0e3b18ccec972 

…und so weiter. Das Tool 'xxd' hat den Hexdump erstellt und Zeilenumbrüche eingefügt, denke ich.

Also, 'c' ist der ciphertext , 'd' ist der private exponent , 'N' ist der modulus und 'm' soll die Klartext-Hex-Bytes enthalten.

Das Skript gibt mir aber diesen Fehler:

  Traceback (most recent call last): File "final.py", line 8, in <module> m = hex(pow(c, d, N)).rstrip("L") TypeError: unsupported operand type(s) for pow(): 'str', 'long', 'long' 

Könnte jemand mein Python-Skript korrigieren, damit es den Chiffretext wie gewünscht entschlüsseln kann?

One Solution collect form web for “Python-Code, der RSA verschlüsselte Datei in Chunks von 64 Bit unter Verwendung eines privaten Exponenten und Moduls entschlüsselt”

Unter der Annahme, dass c ein Hex-String mit einem Vielfachen von 16 Zeichen ist, kannst du es alle 16 Zeichen (64-Bit) teilen und dann diesen Hex-Chunk in einen Int umwandeln, um dein Textbuch RSA darauf zu führen. Da deine Hex-Datei Zeilenumbrüche hat, musst du diese Zeilenumbrüche zuerst entfernen . Sie können die ganze Datei wie mit file.read() anstelle von file.readline() .

Endgültiger Code

 n = 16 c = c.replace('\n', '').replace('\r', '') m = [hex(pow(int(c[i:i+n], 16), d, N)).rstrip("L") for i in range(0, len(c), n)] f = open('new.try', 'w') f.write(''.join(m)) f.close() 
  • Pythonfilter / Lambda
  • Wie AES verschlüsseln / entschlüsseln Dateien mit Python / PyCrypto in einer OpenSSL-kompatiblen Weise?
  • Python AES Entschlüsselungsroutine (Code Hilfe)
  • Emulieren von SSHs SOCKS Proxy Tunnel in Python
  • Verschlüsselte Datei oder db in python
  • Python gnupg.encrypt: keine Fehler, aber nicht verschlüsselnde Daten oder Dateien
  • Warum ist AES verschlüsselte Chiffre der gleichen Saite mit der gleichen Taste immer anders?
  • Verschlüsselung einer JPG-Datei mit picrypro's AES fehlgeschlagen
  • Wie man eine Datei mit Python verschlüsselt, aber mit der Shell entschlüsselt werden kann?
  • Verwenden von DPAPI mit Python?
  • Sicher verschlüsseln Sie ganzzahlige (bis zu 2 ^ 48) in den kürzesten URL-sicheren String
  • Python ist die beste Programmiersprache der Welt.