2016-08-29 3 views
0

Ich lese diese article über die geheime AES verschlüsselte Nachricht der Piraten-Bucht, die gelöst wird. (das sind alte Nachrichten)Wie verschlüsselt man eine Nachricht mit AES-Verschlüsselung?

Der Löser benutzte diesen Befehl in seinem Linux-Terminal, um die Nachricht zu entschlüsseln.

echo "JyO7wNzc8xht47QKWohfDVj6Sc2qH+X5tBCT+uetocIJcjQnp/2f1ViEBR+ty0Cz" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d -p 

Die decrpyted Nachricht war ein Link: https://www.youtube.com/watch?v=-YEG9DgRHhA


Ich möchte, dass die Pirate Bay habe meine eigene kundenspezifische Mitteilung auf die gleiche Weise encrpyt. Ich nehme an, ich müsste den verschlüsselten Text in meine benutzerdefinierte Nachricht ändern und den Befehl zum Verschlüsseln ändern, anstatt ihn zu entschlüsseln. Aber wie mache ich das?

+0

Vergessen Sie nicht, einen anderen Schlüssel zu verwenden. – Daniel

Antwort

1

Es sollte so einfach sein wie:

echo -n "https://stackoverflow.com/q/39197703/5128464" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -iv 0 -e -base64 

chiffrierten Text Giving:

l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk 

die dann entschlüsselt werden können (mit der gleichen Technik, Schlüssel usw.):

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d 

Zurückgeben des Klartextes:

https://stackoverflow.com/q/39197703/5128464 

Aber wenn Sie sorgfältig den ursprünglichen entschlüsselten Text (d. H. Dump die eigentliche Nachricht Bytes):

echo "JyO7wNzc8xht47QKWohfDVj6Sc2qH+X5tBCT+uetocIJcjQnp/2f1ViEBR+ty0Cz" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 

Sie diese erhalten (bitte die fünf ‚00‘ Bytes am Ende der Ausgabe beachten):

0000000: 68 74 74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 https://www.yout 
0000010: 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d ube.com/watch?v= 
0000020: 2d 59 45 47 39 44 67 52 48 68 41 00 00 00 00 00 -YEG9DgRHhA..... 

Und wenn Sie das gleiche für das vorherige Ergebnis wiederholen :

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 

Sie ein anderes Ende erhalten (diesmal fünf '05' Bytes):

0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover 
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197 
0000020: 37 30 33 2f 35 31 32 38 34 36 34 05 05 05 05 05 703/5128464..... 

Diese Bytes heißen padding bytes und müssen hinzugefügt werden, da AES cipher in CBC mode keine Nachrichten verarbeiten kann, deren Länge nicht N * 128 Bits ist (d. H. die nicht in 16-Byte-Blöcken)

Die in den ursprünglichen Klartext verwendet padding unterteilt werden (d.h. 00 00 00 00 00) ein zero padding, aber die zweite (04 04 04 04) ein PKCS7 padding.

Leider Null padding ist nicht direkt im OpenSSL Kommandozeilenprogramme unterstützt werden, so müssen Sie es manuell hinzufügen (beachten Sie die zusätzlichen Null-Bytes und eine zusätzliche -nopad Option):

echo -ne "https://stackoverflow.com/q/39197703/5128464\0\0\0\0\0" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -e -base64 

Giving:

l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR 

Sie können die Polsterung des neuen Klartext überprüfen:

echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1 
siehe

Um dass die Polsterung jetzt korrekt ist:

0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover 
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197 
0000020: 37 30 33 2f 35 31 32 38 34 36 34 00 00 00 00 00 703/5128464..... 

Wenn Sie wollten die Polsterung in der Schale erzeugen, siehe z.B. here (unter EDIT3).

Viel Glück!

Verwandte Themen