
Ein automatisiertes, modulares Kryptoanalyse-Tool; d. h. eine Mathevernichtungswaffe
FeatherDuster ist ein Tool, das hauptsächlich von Daniel "unicornfurnace" Crowley gemeinsam mit Beiträgen aus der Community geschrieben wurde, um Krypto zu knacken. Es versucht, den Prozess der Identifizierung und Ausnutzung schwacher Kryptosysteme so einfach wie möglich zu gestalten. Cryptanalib ist das Innenleben von FeatherDuster und kann unabhängig von FeatherDuster verwendet werden.
Warum "FeatherDuster"? Unter einigen Krypto-Leuten gibt es einen Insider-Witz, bei dem schlechte Krypto-Nutzung oder die Lösung eines Problems, für das Krypto nicht gedacht ist, als "magischen Krypto-Feenstaub darüberstreuen" bezeichnet wird. FeatherDuster ist dazu da, magischen Krypto-Feenstaub zu beseitigen.
Dies ist eine Beta-Version von FeatherDuster. Einige Dinge könnten defekt sein.
Wenn du einen Fehler findest, erstelle bitte ein Issue. Pull Requests sind willkommen und erwünscht.
python featherduster/featherduster.py [Chiffratdatei 1] ... [Chiffratdatei n]
Wenn du FeatherDuster in deiner virtuellen Umgebung installiert hast, kannst du es einfach wie folgt ausführen:
(featherduster) $ featherduster [Chiffratdatei 1] ... [Chiffratdatei n]
Beim Importieren von Proben über Positionsargumente wird jede Datei konsumiert und als eigenes Chiffrat behandelt, unabhängig vom Format der Dateien. FeatherDuster besitzt die Fähigkeit, gängige Kodierungen automatisch zu erkennen und zu dekodieren, daher ist es in Ordnung, wenn diese Dateien kodierte Proben enthalten.
Sobald die FeatherDuster-Konsole gestartet ist, stehen alternative Methoden zum Import von Chiffraten zur Verfügung, insbesondere die Möglichkeit, eine Datei mit durch Zeilenumbrüchen getrennten Proben zu importieren, wobei jede Zeile als einzelne Probe behandelt wird, wie folgt:
68657920636f6f6c
796f752072656164
74686520726561646d65
und die Möglichkeit, ein einzelnes Chiffrat in FeatherDuster über die Kommandozeileneingabe anzugeben. Da diese Eingabe bei einem Zeilenumbruch endet, wird empfohlen, eine Form der Kodierung zu verwenden, falls die Probe einen Zeilenumbruch enthält.
Cryptanalib kann getrennt von FeatherDuster verwendet werden, um Python-basierte Krypto-Angriffswerkzeuge zu erstellen. Die Dokumentation für Cryptanalib-Funktionen kann über die Python-Funktion help() aufgerufen werden, wie folgt:
>>> import cryptanalib as ca
>>> dir(ca) # output edited for a cleaner README file
[ ... 'analyze_ciphertext', 'batch_gcd', 'bb98_padding_oracle', 'break_alpha_shift', 'break_ascii_shift', 'break_columnar_transposition', 'break_generic_shift', 'break_many_time_pad', ... ]
>>> help(ca.bb98_padding_oracle)
Help on function bb98_padding_oracle in module cryptanalib:
bb98_padding_oracle(ciphertext, padding_oracle, exponent, modulus, verbose=False, debug=False)
Bleichenbacher's RSA-PKCS1-v1_5 padding oracle from CRYPTO '98
Given an RSA-PKCS1-v1.5 padding oracle and a ciphertext,
decrypt the ciphertext.
ciphertext - The ciphertext to decrypt
padding_oracle - A function that communicates with the padding oracle.
The function should take a single parameter as the ciphertext, and
should return either True for good padding or False for bad padding.
exponent - The public exponent of the keypair
modulus - The modulus of the keypair
verbose - (bool) Whether to show verbose output
debug - (bool) Show very verbose output
Die Analyse-Engine in Cryptanalib, die von FeatherDuster verwendet wird, kann automatisch Kodierungen erkennen und Proben dekodieren. Die Engine nimmt an, dass alle Proben mit demselben Prozess erzeugt werden (z. B. base64encode(aes_encrypt(datum))), kann aber gemischte Proben bis zu einem gewissen Grad verarbeiten. Derzeit kann Cryptanalib die folgenden Kodierungsschemata erkennen und dekodieren:
Die Analyse-Engine von Cryptanalib kann in der Analysephase auch eine Reihe von Eigenschaften erkennen: