1 个不稳定版本
0.1.0 | 2020年4月1日 |
---|
#3 in #oracles
29KB
606 代码行
Padantic
一个用于利用所有类型的填充预言机的快速 CLI 工具。
优化
- 块级多线程
- 猜测遵循优先列表,初始设置为英语字母频率,并在发现新字节时自动调整
- 最后一个填充字节尝试的最大次数为 BLOCKSIZE
用法
预言机 - 在这个例子中 - 是你提供的命令,它通过 stdin 接收 base64 编码的块,并将 yes(正确填充)/no(不正确填充)写入 stdout。你可以在 Python 示例 中找到预言机示例。预言机可以用任何语言编写(或者简单地编写一个 shell 脚本)。将执行完整的预言机命令行,因此请随意传递命令行选项。
常规用法
padantic [十六进制编码的密文] -O out -- python oracle.py
示例用法
padantic 4B730C0BC9F1FCA944D50B012DCDCDCD58D0BADA3B0CDADD849EFFB5351B1EE55A1D168B337089F5A88E43D4A7F403C5E527F9CAF5825A88B3E4EC72A2FEE1230FA71DA08C71ACB58D663679E265213567341CA9918AA14A8D6983D65C39E463560859BFA290DAFC419679CCA9688A7EF377E5E095B1D5876A50E90EB7DA9487CB8C141F15AF61431E3DB139DF3D8370 -O out -- python oracle.py
命令行参数
padantic 0.1.0
catnip <catnip@catnip.fyi>
USAGE:
padantic [FLAGS] [OPTIONS] <cipher> <oracle>...
FLAGS:
-h, --help
Prints help information
-v
use multiple times to increase log level. ex: -vv for `info`. 1 is the default so errors are always logged
--noiv
skip CBC on first block and guess IV interactively
-V, --version
Prints version information
OPTIONS:
--chars <chars>
(space seperated) list of hex encoded bytes to guess the plaintext. ALL 256 POSSIBLE BYTES MUST BE PRESENT
in no particular order. example: 00 01 02 ... 61 62 63 ... 6A 6B ... FF FF [default: english.chars]
--log <log>
target file for logging output. log will contain stderr output from the oracle.
-O, --output <output>
writes result to file
-s, --size <size>
CBC block size [default: 16]
ARGS:
<cipher>
target ciphertext (hex encoded)
<oracle>...
the command to run as an oracle. should only return status 0 for valid padding. command will be ran with
base64 paylod as first arg. arguments after cmd argument will be prepended BEFORE payload
安装
cargo install padantic
要运行它,您必须将 cargo bin 目录添加到您的路径中(推荐)或写入
cargo run padantic
而不是只是 padantic
看看它有多漂亮
我需要更新这个 gif,因为我在 padantic 中添加了颜色,但无论如何,请欣赏这个 gif:
技巧
- -noiv 标签会获取第一个块的中间字节,这样您可以通过简单的 XOR 操作恢复 IV,如果您通过猜测第一个块的明文来恢复 IV
- 考虑向您的预言机添加随机延迟(和用户代理)
- -O 标签是可选的,但它非常有用,可以将结果存储在文件中
- 如果您需要调试您的预言机,将其写入 stderr,并使用 --log 开关生成日志文件。日志文件将包含所有 stderr 输出
依赖关系
~8MB
~141K SLoC