#pcap #packet #sniffing

pcap_on_demand

在pcap/wpcap周围的一个数据包捕获API,按需加载pcap/wpcap

2个版本

0.1.3 2020年5月12日
0.1.2 2020年3月11日
0.1.1 2020年3月10日
0.1.0 2020年3月10日

#4 in #sniffing

MIT/Apache

56KB
981 行代码(不包括注释)

pcap_on_demand Build status Crates.io Docs.rs

这是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.0许可证定义的,任何有意提交给作品并由您包含的贡献,应按上述方式双许可,不附加任何额外的条款或条件。

依赖关系

~0.1–1.5MB
~23K SLoC