#packet #networking #capture #analysis #multi-threading #operating-systems

bin+lib packet_snooper

一个跨平台的线程框架,用于捕获和分析数据包

2 个稳定版本

1.0.2 2022 年 9 月 4 日

27#operating-systems

MIT 许可证

3MB
2.5K SLoC

Packet-Snooper

License: MIT Rust-Workflow

packet_snooper 是一个跨平台的库,用于使用 Rust 编程语言编写的网络流量数据分析。

它可在 Windows 和类似 UNIX 的操作系统(如 Linux 和 macOS)上使用。

它是作为大学项目的一部分开发的(意大利都灵的 Politecnico 大学,"系统与设备编程"。2022 年)。

设置/安装

安装依赖项

  • Windows

安装 WinPcap。

下载 WinPcap 开发者包。

将 /Lib 或 /Lib/x64 文件夹添加到您的 LIB 环境变量中。

  • Linux

安装 libpcap 库的库和头文件。例如

On Debian based Linux: install libpcap-dev.
On Fedora Linux: install libpcap-devel.

注意:如果未以 root 用户身份运行,您需要设置类似如下的能力:sudo setcap cap_net_raw,cap_net_admin=eip path/to/bin。

  • Mac OS X

默认情况下,libpcap 应该已经安装在 Mac OS X 上。

其他信息

注意:零超时可能导致 pcap::Capture::next 挂起并永远不会返回(因为它等待超时到期才返回)。这可以通过使用非零超时(如 libpcap 手册建议的)并在循环中调用 pcap::Capture::next 来修复。

TCP/IP 架构支持

第 2 层

full-support: EthernetII
identification: Ethernet802.3
future support: ()

第 3 层(以太网字段 "EtherType"。IEEE 802.3)

full-support: IPv4, (IPv6), IPv6HopByHop
identification: ARP
future support: ()

第 4 层(L3 协议的 "协议类型" 字段)

full-support: UDP, (TCP)
identification: (). Others: IGMP, ICMPv4, ICMPv6
future support: ()

高层

full-support: ()
identification: FTP=20, SSH=22, SMPT=23, DNS=53, HTTP=80, POP3=110
                SFTP=115, SNMP=161, BGP=179, HTTPS=443
future support: ()

架构概述 & 内部状态机设计

使用的技术

  • 主要编程语言:Rust
  • 版本控制,团队合作:Git,GitHub

使用的库(rust crates)

  • pcap
  • serde
  • serde_json

作者

  • Alberto Foti
  • Samuele Giannetto

依赖项