
Uno strumento di crittanalisi automatizzato e modulare; ovvero un'Arma di Distruzione Matematica.
FeatherDuster è uno strumento scritto principalmente da Daniel "unicornfurnace" Crowley, con contributi della community, per violare la crittografia; cerca di rendere il più semplice possibile il processo di identificazione e sfruttamento di sistemi crittografici deboli. Cryptanalib è il motore dietro FeatherDuster e può essere usato indipendentemente da FeatherDuster.
Perché "FeatherDuster"? C'è un inside joke tra alcuni addetti ai lavori della crittografia in cui usare la crittografia in modo scadente, o per risolvere un problema che la crittografia non è pensata per risolvere, viene chiamato "cospargerla di polvere magica di fata crittografica". FeatherDuster serve a ripulire la polvere magica di fata crittografica.
Questa è una versione beta di FeatherDuster. Alcune cose potrebbero non funzionare.
Se trovi un bug, per favore apri una issue. Le pull request sono benvenute e incoraggiate.
python featherduster/featherduster.py [file di ciphertext 1] ... [file di ciphertext n]
Se hai installato FeatherDuster nel tuo ambiente virtuale, puoi semplicemente eseguirlo come:
(featherduster) $ featherduster [file di ciphertext 1] ... [file di ciphertext n]
Quando si importano campioni tramite argomenti posizionali, ogni file verrà consumato e trattato come un ciphertext a sé stante, indipendentemente dal formato dei file. FeatherDuster ha la capacità di riconoscere e decodificare automaticamente codifiche comuni, quindi va bene se questi file contengono campioni codificati.
Una volta avviata la console di FeatherDuster, saranno disponibili metodi alternativi di importazione del ciphertext, in particolare la possibilità di importare un file con campioni separati da newline dove ogni riga verrà trattata come un campione distinto, come segue:
68657920636f6f6c
796f752072656164
74686520726561646d65
e la possibilità di specificare un singolo ciphertext in FeatherDuster tramite input da riga di comando. Poiché questo input termina con un newline, si consiglia di usare qualche forma di codifica nel caso il campione contenga un newline.
Cryptanalib può essere usato separatamente da FeatherDuster per creare strumenti di attacco crittografico basati su Python. La documentazione delle funzioni di cryptanalib è accessibile tramite la funzione help() di Python, come segue:
>>> 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
Il motore di analisi di Cryptanalib, usato da FeatherDuster, può rilevare automaticamente le codifiche e decodificare i campioni. Il motore presuppone che tutti i campioni siano generati con lo stesso processo (ad esempio, base64encode(aes_encrypt(datum))), ma può gestire in una certa misura campioni misti. Attualmente, Cryptanalib può rilevare e decodificare i seguenti schemi di codifica:
Il motore di analisi di Cryptanalib può rilevare anche una serie di proprietà durante la fase di analisi: