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

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如何在href中将struts2文本字段的值作为参数传递?   java检查对象属性是否为空的最佳方法是什么?   java通过Maven使用Junit类别运行Cucumber测试   java如何在selenium Webdriver(Mac)中使用Robot类上传多个文件?   如何用python绘制图形或将python转换为java和Matlab?   java Osgi捆绑包更新和ResourceBundle   java使用流api将流<@Nullable T>转换为流<@NonNull T>   java中EXCEL的平台无关连接字符串   JavaFX中的java表   java Jetty线程池和sun。HttpServer会话   JPA存储库bean的java Spring注入无法工作NullPointerException   java从另一个Kubernetes作业触发Kubernetes   我的java netbeans抽奖计划需要帮助吗   泛型中的java有界类型无法扩展另一个有界类型   如果混合使用全局构建和概要文件构建,java cxfcodegenplugin会生成错误代码   封装SQL平台之间差异的java策略?