一个自动化的、模块化的密码分析框架(即数学毁灭性武器)
featherduster的Python项目详细描述
羽毛掸子(和隐窝掸子)
Featherduster是一个主要由Daniel“Unicornfource”Crowley编写的工具,与社区贡献一起用于破解密码;它试图使识别和利用弱密码系统的过程尽可能简单。隐窝是羽毛除尘器后面的活动部件,可以独立于羽毛除尘器使用。
为什么是“羽毛掸子”?在一些密码学的人中间有一个笑话,在那里使用密码学很差,或者解决一个密码学不想解决的问题,叫做“在上面撒魔法密码学精灵的灰尘”。羽毛掸子是用来清理神奇的密码仙女灰尘。
这是羽毛掸子的beta版本。事情可能会破裂。
如果你发现一个bug,请提交一个问题。欢迎并鼓励拉取请求。
羽毛掸子的使用
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用法
cryptanalib可以单独使用featherduster来制作基于python的加密攻击工具。cryptanalib函数的文档可以通过pythonhelp()
函数访问,就像这样:
>>> 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
密码分析引擎
羽毛喷粉机使用的cryptanib分析引擎可以自动检测编码和解码样本。引擎假设所有的样本都是用相同的进程生成的(例如,base64encode(aes_encrypt(datum))
),但是在某种程度上可以处理混合的样本。目前,cryptanalib可以检测并解码以下编码方案:
- 香草基64
- ASCII十六进制编码
- Zlib压缩
- URL编码
cryptanalib的分析引擎也可以在分析阶段检测许多属性:
- 低熵密文(用于检测自制密码)
- 分组密码用法与流密码用法
- ECB模式
- 带固定iv的cbc模式
- 哈希算法(引擎将注意到长度扩展攻击可能适用于基于merkle daamgard的哈希算法)
- openssl格式的密文
- 流密码密钥重用
- 带有专用组件的RSA密钥
- RSA模块不够大
- rsa模重用
- 仅转置密码