8个版本 (破坏性更新)
0.7.0 | 2021年9月13日 |
---|---|
0.6.0 | 2020年11月30日 |
0.5.0 | 2019年8月5日 |
0.4.1 | 2019年1月30日 |
0.1.0 | 2018年2月1日 |
在解析器实现中排名2359
每月下载量10,258
用于suricata
68KB
1K SLoC
ipsec-parser
IPsec解析器
此crate包含用于IPsec的几个解析器:IKEv2和读取ESP封装消息的封装。此解析器提供读取和分析消息的基本功能,但不处理消息的解释。
支持ESP,但仅用于读取有效负载的封装。
支持封装ESP,以区分IKE和ESP头。
IKEv2解析器
一个IKEv2(RFC7296)解析器,使用nom解析器组合框架实现。
代码可在Github上找到,并是Rusticata项目的一部分。
要解析IKE数据包,首先使用parse_ikev2_header
读取头部,然后使用头部的类型解析剩余部分
use ipsec_parser::*;
use nom::IResult;
static IKEV2_INIT_RESP: &'static [u8] = include_bytes!("../assets/ike-sa-init-resp.bin");
fn test_ikev2_init_resp() {
let bytes = IKEV2_INIT_RESP;
match parse_ikev2_header(&bytes) {
Ok( (rem, ref hdr) ) => {
match parse_ikev2_payload_list(rem,hdr.next_payload) {
Ok( (_, Ok(ref p)) ) => {
// p is a list of payloads
// first one is always dummy
assert!(p.len() > 0);
assert_eq!(p[0].content, IkeV2PayloadContent::Dummy);
for payload in p {
match payload.content {
IkeV2PayloadContent::SA(ref sa) => { /* .. */ },
_ => ()
}
}
},
e => { eprintln!("Parsing payload failed: {:?}", e); },
}
},
_ => { eprintln!("Parsing header failed"); },
}
}
更新日志
0.7.0
- 升级到nom 7
- 将MSRV设置为1.46
0.6.0
- 升级到nom 6
- 将所有基于宏的解析器转换为函数
0.5.0
- 升级到nom 5
0.4.1
- 不要在
use
组中使用glob导入(与rust 1.24兼容)
0.4.0
- 升级到nom 4
0.3.0
- 添加函数
parse_ikev2_message
以读取头部和有效负载列表 init_spi
和resp_spi
字段已从&[u8]
更改为u64
Rusticata
此解析器是rusticata项目的一部分。该项目旨在提供安全的解析器,可用于其他项目。
解析器的测试是通过手动测试和单元测试以及cargo-fuzz完成的。如果您发现任何问题,请填写错误报告。
请随时贡献:测试、反馈、文档、新解析器的建议(或代码)等。
许可证
以下任一许可证下提供
- Apache License,版本2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您自行选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将如上双许可,不附加任何额外条款或条件。
依赖项
约1MB
约19K SLoC