一个自动化的、模块化的密码分析框架(即数学毁灭性武器)

featherduster的Python项目详细描述


羽毛掸子(和隐窝掸子)

FeatherDuster logo Build Status

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模重用
  • 仅转置密码

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何删除列表中的重复项并将列表复制到另一个列表中   Java如何在非UI应用程序中检测tab键按下?   java无法在未调用Looper的线程内创建处理程序。警报对话框线程上的prepare()   java Jaxb将XML转换为ElementNSImpl类型,而不是正确的类型   基于java标记的过滤实现Firestore   我们可以使用Java和Eclipse使用YouTube分析Api吗?   JavaSpring注释在多个选项卡中同时打开多个视图   java Hibernate不使用JBOSS检索数据   矩阵如何从Apache Commons数学Java库中找到伪逆   对象Java打印“null”作为字符串引用!=使无效   java中的图形慢映射   java用户界面:操作栏和上下文操作栏,新趋势   java Infinispan,版本化操作返回不正确的结果   java调整保存在父JFrame中的JInternalFrame的大小,并且该父JFrame使用ComponentMover API注册   java如何防止会话属性在服务器上持久化?   java如何为SpringBoot 2创建自定义嵌入式servlet容器   使用Robolectric进行单元测试时,在片段类内调用getString()时发生java IllegalStateException