
自动化、模块化的密码分析工具;即一件“数学毁灭性武器”。
FeatherDuster 是一款主要用于破解密码学算法的工具,由 Daniel "unicornfurnace" Crowley 编写,并得到了社区贡献者的支持;它致力于让识别和利用弱密码系统的过程尽可能简单。Cryptanalib 是 FeatherDuster 背后的核心组件,也可以独立于 FeatherDuster 使用。
为什么叫 "FeatherDuster"(鸡毛掸子)?在一些密码学爱好者之间存在一个内部梗:糟糕地使用密码学,或者用密码学去解决本不该由密码学解决的问题,被称为"撒上魔法般的密码学仙尘"。FeatherDuster 就是用来清理这些魔法般的密码学仙尘的。
这是 FeatherDuster 的测试版。某些功能可能存在问题。
如果你发现了 bug,请提交 issue。欢迎并鼓励 Pull Request。
python featherduster/featherduster.py [ciphertext file 1] ... [ciphertext file n]
如果你已经把 FeatherDuster 安装到你的虚拟环境中,你可以直接这样运行:
(featherduster) $ featherduster [ciphertext file 1] ... [ciphertext file n]
通过位置参数导入样本时,每个文件都会被当作独立的密文进行读取和处理,无论文件采用何种格式。FeatherDuster 能够自动识别并解码常见的编码方式,因此即使这些文件中包含经过编码的样本也没关系。
一旦 FeatherDuster 控制台启动,就会出现其他密文导入方式,具体来说,你可以导入一个以换行符分隔样本的文件,其中每一行都会被当作一个独立样本,就像这样:
68657920636f6f6c
796f752072656164
74686520726561646d65
此外,还可以通过命令行输入在 FeatherDuster 中指定单个密文。由于这种输入会在换行符处结束,因此如果样本中可能包含换行符,建议使用某种编码形式。
Cryptanalib 可以独立于 FeatherDuster 使用,用于构建基于 Python 的密码攻击工具。可以通过 Python 的 help() 函数访问 cryptanalib 函数的文档,如下所示:
>>> 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
Cryptanalib 中的分析引擎被 FeatherDuster 使用,能够自动检测编码方式并解码样本。该引擎假设所有样本都是通过同一流程生成的(例如 base64encode(aes_encrypt(datum))),但在一定程度上也能处理混合样本。目前,Cryptanalib 可以检测并解码以下编码方案:
Cryptanalib 的分析引擎还可以在分析阶段检测多种属性: