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 网络编程

Download history 155/week @ 2024-06-22 11/week @ 2024-06-29

每月483次下载

自定义许可

160KB
3.5K SLoC

简介

GitHub Workflow Status Crates.io docs.rs

scalpel是一个用于在Rust中进行数据包剖析和雕塑的crate。

Scalpel可用于剖析网络上的数据包,或根据某些规范生成可发送到网络的数据包(此功能尚处于早期开发阶段,并提供了概念验证实现)。'scalpel'的目标是使数据包剖析API友好,以便在应用程序中更易于使用。请参阅examples/目录中的示例,以了解它可以用在哪些类型的“应用程序”中。

这仍然处于早期阶段,正在积极开发中,API不稳定,可能会发生重大变化。

入门

目前支持的API允许您剖析网络上的数据包并以JSON格式显示(这使用serde_json,因此serde的格式可能大多数都适用) -

  1. packet_json - 一个示例,演示了如何将任何buffer读取为scalpel::Packet结构。
  2. pcap - 一个示例,演示了如何以JSON格式显示捕获在网上的数据包。 (这应该作为sudo运行)。

特性

Python绑定

有一个实验性的Python API可用,以演示如何从Python使用scalpel进行数据包剖析。默认情况下,Python绑定是禁用的。可以通过构建或运行代码时使用--features="python-bindings"命令行参数来启用Python绑定。有关如何使用Python绑定入门的说明,请参阅'使用Python绑定'。目前,我们只从Python绑定中提供了基本的剖析和将数据包作为JSON显示的功能。这项支持是一个WIP。

WebAssembly支持

实验性的 'wasm' 支持已经可用。可以使用 --features=wasm 来启用此支持。请注意,python-bindingswasm 是互斥的特性。此存储库 包含一个示例,使用基于 'actix' 的网络服务器在浏览器中运行数据包解析。

数据包生成(或雕刻)

这是一个 WIP 和非常早期的支持。目前实现了创建一个简单的基于以太网和 IP 的数据包并将其序列化为线缆的初始实现。此特性的目标是应该可以使用 scalpel crate 来实现一个 API 友好的数据包生成器。

依赖关系

~0.9–7.5MB
~58K SLoC