3个不稳定版本

0.13.0 2024年7月17日
0.12.1 2023年4月12日
0.12.0 2023年2月13日

网络编程中排名 1472

每月下载量 48

MIT 许可证

135KB
2.5K SLoC

法语

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

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

每个解析器都提供了一个公共接口,允许传感器引擎将字节输入解析器并接收解析后的元数据。字节预期在会话层,因此引擎负责将传输层数据组装成会话有效载荷,然后将其输入到该库中。

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

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

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

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

用法

通过在项目的Cargo.toml依赖关系中包含解析器来开始使用SAWP。使用通用类型还需要基础库。

最小支持的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

依赖项

~2.4–4MB
~75K SLoC