9个不稳定版本 (3个破坏性更新)
0.4.1 | 2024年6月27日 |
---|---|
0.4.0 | 2024年3月18日 |
0.3.1 | 2024年2月21日 |
0.3.0 | 2024年1月2日 |
0.1.2 | 2022年10月22日 |
#1026 in 网络编程
每月483次下载
160KB
3.5K SLoC
简介
scalpel
是一个用于在Rust中进行数据包剖析和雕塑的crate。
Scalpel可用于剖析网络上的数据包,或根据某些规范生成可发送到网络的数据包(此功能尚处于早期开发阶段,并提供了概念验证实现)。'scalpel'的目标是使数据包剖析API友好,以便在应用程序中更易于使用。请参阅examples/
目录中的示例,以了解它可以用在哪些类型的“应用程序”中。
这仍然处于早期阶段,正在积极开发中,API不稳定,可能会发生重大变化。
入门
目前支持的API允许您剖析网络上的数据包并以JSON格式显示(这使用serde_json
,因此serde
的格式可能大多数都适用) -
packet_json
- 一个示例,演示了如何将任何buffer
读取为scalpel::Packet
结构。pcap
- 一个示例,演示了如何以JSON格式显示捕获在网上的数据包。 (这应该作为sudo
运行)。
特性
Python绑定
有一个实验性的Python API可用,以演示如何从Python使用scalpel进行数据包剖析。默认情况下,Python绑定是禁用的。可以通过构建或运行代码时使用--features="python-bindings"
命令行参数来启用Python绑定。有关如何使用Python绑定入门的说明,请参阅'使用Python绑定'。目前,我们只从Python绑定中提供了基本的剖析和将数据包作为JSON显示的功能。这项支持是一个WIP。
WebAssembly支持
实验性的 'wasm' 支持已经可用。可以使用 --features=wasm
来启用此支持。请注意,python-bindings
和 wasm
是互斥的特性。此存储库 包含一个示例,使用基于 'actix' 的网络服务器在浏览器中运行数据包解析。
数据包生成(或雕刻)
这是一个 WIP 和非常早期的支持。目前实现了创建一个简单的基于以太网和 IP 的数据包并将其序列化为线缆的初始实现。此特性的目标是应该可以使用 scalpel
crate 来实现一个 API 友好的数据包生成器。
依赖关系
~0.9–7.5MB
~58K SLoC