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 中使用

MIT 许可证

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