6 个版本 (1 个稳定版)
使用旧的 Rust 2015
1.0.0 | 2017年1月10日 |
---|---|
0.0.4 | 2016年9月7日 |
0.0.3 | 2016年4月7日 |
0.0.2 | 2015年6月16日 |
#2522 在 解析器实现 中
每月 21 次下载
在 pcapng-writer 中使用
36KB
707 行
pcapng-rs
pcapng 为您提供原生 Rust 代码的 pcapng 解析器。在 examples/
中有一些如何从文件中读取 pcapng 文件的变体。
在底层,它使用 nom 来实现解析,这使得这个库保持小巧和紧凑。它目前处于非常不稳定的状态,我可能还会大量调整接口(特别是关于实际块类所在的地方),但如果你在它上面构建了某些东西,请告诉我,我会尽量配合。
在最高层面,获取数据包的最简单方法是将整个 pcapng 文件读入内存,然后运行解析器。
let mut fh = fs::File::open("filename.pcapng").unwrap();
let mut buf: Vec<u8> = Vec::new();
let read = fh.read_to_end(&mut buf);
match pcapng::block::parse_blocks(&buf[..]) {
IResult::Done(_, blocks) => {
for i in blocks {
println!("{:?}", i.parse());
}
}
IResult::Error(e) => panic!("Error: {:?}", e),
IResult::Incomplete(i) => panic!("Incomplete: {:?}", i),
}
如果你想要流式传输,则更倾向于使用实际消费者基础设施的其它方法,但这需要编写更多的代码。
联系方式
如果你正在使用这个库,我会很乐意知道。我可以在 freenode 或 mozilla 的 irc 上以 richo
的身份联系。
许可证
根据 MIT 许可证发布。
依赖项
~660KB
~13K SLoC