7 个版本
0.2.0 | 2020 年 10 月 29 日 |
---|---|
0.1.5 | 2019 年 6 月 23 日 |
0.1.3 | 2019 年 4 月 27 日 |
0.1.2 | 2018 年 10 月 10 日 |
#1582 在 解析器实现
每月 241 次下载
在 sn0int 中使用
46KB
520 代码行
slippy-rfc4880

纯 Rust 解析器,用于 RFC-4880(OpenPGP 消息格式)。代码库基于 openpgp crate,但已移除所有加密代码,以保持仅需要解码二进制数据包格式的项目的依赖项数量最少。
此外,代码库已加固,以确保它可以处理任意输入而不会崩溃。还添加了一个可选的分配限制,以避免在无效输入上出现内存不足。
模糊测试
使用 cargo-fuzz 和 libfuzzer 对代码库进行了广泛的模糊测试。已使用 pgp 密钥服务器的完整转储启动语料库文件夹。
git clone https://github.com/kpcyrd/sloppy-rfc4880
mkdir pgp
cd pgp
wget -c -r -p -e robots=off -N -l1 --cut-dirs=3 -nH http://pgp.key-server.io/dump/2018-10-07/
cd ../sloppy-rfc4880
for x in ../pgp/sks-dump-*; do
cat "$x" | cargo run --release --example split fuzz/corpus/rfc4880/pgp
cargo +nightly fuzz cmin --release rfc4880
done
您可以从 发布页面 下载已预处理的语料库文件夹的副本。
要开始模糊测试,请运行
cargo +nightly fuzz run --release rfc4880 -j $(nproc) -- -timeout=240 -rss_limit_mb=500
许可证
Apache-2.0 许可
依赖项
~1.2–2MB
~42K SLoC