2个版本
0.1.3 | 2020年5月12日 |
---|---|
0.1.2 | 2020年3月11日 |
0.1.1 |
|
0.1.0 |
|
#4 in #sniffing
56KB
981 行代码(不包括注释)
pcap_on_demand
这是pcap crate的一个分支。
该crate按需加载pcap库。
因此,它提供的保证更少。
文档
这是一个用于访问pcap(或Windows上的wpcap)数据包嗅探功能的Rust语言crate。如果您需要任何东西,请随时发布一个问题或提交一个pull请求!
功能
- 列出设备
- 在设备或savefiles上打开捕获句柄
- 从捕获句柄获取数据包
- 使用BPF程序过滤数据包
- 列出/设置/获取数据链路链接类型
- 配置一些参数,如混杂模式和缓冲区长度
- 将数据包写入savefiles
- 将数据包注入到接口
查看使用示例。
构建
Windows
安装 WinPcap。
将wpcap.dll放在您的 C:\Rust\bin\rustlib\x86_64-pc-windows-gnu\lib\
目录中(64位)或 C:\Rust\bin\rustlib\i686-pc-windows-gnu\lib\
(32位)。
Linux
在基于Debian的Linux上,安装 libpcap-dev
。如果不是以root用户身份运行,您需要设置能力,如下所示: sudo setcap cap_net_raw,cap_net_admin=eip path/to/bin
Mac OS X
默认情况下,Mac OS X上应该安装libpcap。
注意: 零超时可能导致 pcap::Capture::next
挂起并永不返回(因为它在返回之前等待超时到期)。这可以通过使用非零超时(如libpcap手册建议的)并在循环中调用 pcap::Capture::next
来修复。
库位置
如果构建crate时设置了环境变量PCAP_LIBDIR
,它将被添加到链接器搜索路径中 - 这允许链接到特定的libpcap
。
可选特性
tokio
使用tokio
特性来启用对流式数据包捕获的支持。
[dependencies]
pcap = { version = "0.7", features = ["tokio"] }
pcap-savefile-append
要访问Capture::savefile_append
函数(允许向现有的pcap文件追加数据),您必须依赖于pcap-savefile-append
特性标志。这需要至少libpcap版本1.7.2。
[dependencies]
pcap = { version = "0.7", features = ["pcap-savefile-append"] }
pcap-fopen-offline-precision
要启用Capture::from_raw_fd_with_precision
构造函数(允许从原始文件描述符以预定义的时间戳精度打开离线捕获),您必须添加pcap-fopen-offline-precision
特性标志。这需要libpcap版本1.5.0或更高。
[dependencies]
pcap = { version = "0.7", features = ["pcap-fopen-offline-precision"] }
许可证
在以下任一许可证下许可
- Apache许可证第2版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交给作品并由您包含的贡献,应按上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~0.1–1.5MB
~23K SLoC