18个版本 (破坏性更新)

0.13.0 2024年7月17日
0.12.1 2023年4月12日
0.12.0 2023年2月13日
0.11.1 2022年6月21日
0.2.0 2021年2月22日

#1313 in 网络编程

Download history 28/week @ 2024-07-01 107/week @ 2024-07-15 40/week @ 2024-07-29

每月147次下载

MIT许可证

86KB
1.5K SLoC

法语

安全感知的线协议解析库。

此库包含各种线协议的解析器,并旨在用于网络安全传感器。

每个解析器都提供了一个通用接口,允许传感器引擎将字节喂给解析器并接收解析后的元数据。预期的字节位于会话层,因此引擎负责将传输层数据组装成会话有效负载,然后将其馈入此库。

此库旨在具有弹性,解析尽可能多的野外看到的消息。如果消息无效或不满足规范,解析器不应丢弃它。解析器将在消息失败验证时设置标志,而不是返回错误。

每个解析器的接口统一且简单,仅包含几个函数来

  • 测试有效负载是否为所讨论的协议(例如,这是modbus吗?)
  • 向解析器提供更多字节
  • 设置回调,在特定协议元数据事件上调用(待办事项)
  • 指示某些字节不可用(即通知数据包丢失)(待办事项)
  • 指示会话已结束(待办事项)

该库公开了Rust和C绑定,以便轻松集成到现有和未来的网络安全传感器平台。(待办事项)

用法

开始使用 SAWP,请在项目的 Cargo.toml 依赖中包含一个解析器。基础库也必须用于使用常用类型。

支持的最低 rustc 版本为 1.63.0

示例

[dependencies]
sawp-modbus = "0.13.0"
sawp = "0.13.0"

FFI 支持

一些解析器为 C/C++ 项目提供了外置函数接口。可以通过构建时使用 ffi 功能来启用 FFI 支持。

还提供了一个 Makefile,以简化构建过程。请参考此文件以获取更深入的文档。

# Install cbindgen which is required to generate headers
cargo install --force cbindgen

# Build headers and shared objects
make

贡献

该项目正在积极维护并接受开源贡献。请参阅 CONTRIBUTING 以获取更多详细信息。

依赖项

~3MB
~62K SLoC