13个版本 (8个稳定版)
2.0.0 | 2023年3月16日 |
---|---|
1.4.0 | 2022年11月19日 |
1.3.0 | 2022年10月28日 |
1.2.0 | 2020年7月13日 |
0.3.0 | 2018年11月21日 |
#5 in #pcapng
2,362 每月下载量
用于 feeless
83KB
1K SLoC
pcarp
一个用于读取pcapng文件的纯Rust库。
- 正确:在广泛的测试套件中与
tshark
一致。 - 快速:性能与
libpcap
相似。 - 灵活:封装了任何实现
Read
的类型。 - 易用:它是
Packet
的迭代器 - 无生命周期。 - 健壮:尽可能优雅地处理损坏的pcap。
限制
libpcap
功能丰富;pcarp
只读取pcapng文件。与libpcap
相比的限制
- 不支持旧版pcap;
pcarp
仅支持pcapng。 - 不支持写入;
pcarp
是只读的。 - 不进行任何类型的解析。
pcarp
提供原始数据包。 - 不支持过滤。这一点与“不进行解析”有关。
如果您想解析以太网/IP/TCP等协议,则需要另一个库。我们使用etherparse,效果很好。还有pnet或rshark,尽管我还没有尝试过它们。
错误处理
pcarp
被设计成对错误非常健壮,即使面对损坏或恶意的输入。
- 如果pcarp遇到意外的标志或选项,它将使用
tracing
crate记录警告并继续。 - 如果一个数据包被破坏到无法识别,pcarp将返回错误,但后续的数据包仍然可读。
- 如果pcarp遇到帧损坏,则错误不可恢复,无法读取更多数据包。
pcarp 永远不会 报错。它经过模糊测试以确保这一点,但模糊测试并不完美。如果您遇到崩溃,请报告它!
许可证
该软件本身属于公共领域。
部分文档复制自pcap规范,因此版权归IETF所有;这些地方已经明确标注。集成测试使用的pcaps由Wireshark基金会根据GNU GPL条款分发。
依赖项
~0.8–1.4MB
~27K SLoC