7 个版本 (4 个重大更新)
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.9.0 | 2022 年 2 月 7 日 |
#1807 in 网络编程
每月 127 次下载
64KB
1K SLoC
法语
安全意识的有线协议解析库。
此库包含各种有线协议的解析器,并旨在用于网络安全传感器。
每个解析器都公开了一个通用接口,允许传感器引擎将字节喂入解析器,并返回解析后的元数据。这些字节预期位于会话层,因此引擎负责将传输层数据组装成会话有效负载,然后将其喂入此库。
此库旨在具有弹性,并尽可能地解析野外的消息。如果消息无效或不符合规范,解析器不应将其丢弃。解析器将在消息验证失败时在消息上设置标志,而不是返回错误。
每个解析器的接口都是统一且简单的,仅包含几个函数来
- 测试有效负载是否是所讨论的协议(例如,这是 modbus 吗?)
- 向解析器提供更多字节
- 设置回调以在特定协议元数据事件上调用(待办事项)
- 指示某些字节不可用(即通知数据包丢失)(待办事项)
- 指示会话已结束(待办事项)
该库公开了 Rust 和 C 绑定,以便轻松集成到现有的和未来的网络安全传感器平台。(待办事项)
用法
通过在项目的 Cargo.toml
依赖项中包含解析器来开始使用 SAWP。还需要基本库来使用通用类型。
rustc
的最低支持版本是 1.63.0
。
示例
[dependencies]
sawp-modbus = "0.13.0"
sawp = "0.13.0"
FFI 支持
一些解析器提供了用于C/C++项目的Foreign Function Interface(FFI)。可以通过使用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
~74K SLoC