#读写 #pcap #pcap-parser #pcapng #读取 #写入 #解析

pcap-file

一个用于解析、读取和写入 Pcap 和 PcapNg 的 crate

13 个版本 (3 个稳定版)

3.0.0-rc12024年1月9日
2.0.0 2023年2月1日
2.0.0-rc12023年1月13日
1.1.1 2019年11月19日
0.7.0 2017年6月25日

#57解析器实现

Download history 7354/week @ 2024-04-21 7185/week @ 2024-04-28 7337/week @ 2024-05-05 7645/week @ 2024-05-12 8393/week @ 2024-05-19 6560/week @ 2024-05-26 7860/week @ 2024-06-02 7456/week @ 2024-06-09 7447/week @ 2024-06-16 7278/week @ 2024-06-23 6617/week @ 2024-06-30 8316/week @ 2024-07-07 8777/week @ 2024-07-14 8851/week @ 2024-07-21 9108/week @ 2024-07-28 8569/week @ 2024-08-04

每月下载量:35,741
用于 21 个 crate(19 个直接使用)

MIT 许可证

150KB
3K SLoC

pcap-file

为 Pcap 和 PcapNg 文件提供解析器、读取器和写入器。

有关 Pcap 文件,请参阅 pcap 模块。

有关 PcapNg 文件,请参阅 pcapng 模块。

Crates.io rustdoc Crates.io

文档

https://docs.rs/pcap-file

安装

此 crate 位于 crates.io。将其添加到您的 Cargo.toml

[dependencies]
pcap-file = "3.0.0-rc1"

示例

PcapReader

use std::fs::File;
use pcap_file::pcap::PcapReader;

let file_in = File::open("test.pcap").expect("Error opening file");
let mut pcap_reader = PcapReader::new(file_in).unwrap();

// Read test.pcap
while let Some(pkt) = pcap_reader.next_packet() {
    //Check if there is no error
    let pkt = pkt.unwrap();

    //Do something
 }

PcapNgReader

use std::fs::File;
use pcap_file::pcapng::PcapNgReader;

let file_in = File::open("test.pcapng").expect("Error opening file");
let mut pcapng_reader = PcapNgReader::new(file_in).unwrap();

// Read test.pcapng
while let Some(block) = pcapng_reader.next_block() {
    // Check if there is no error
    let block = block.unwrap();

    //  Do something
}

模糊测试

目前有 4 个原始 harness 来检查解析器在任何情况下都不会崩溃。要开始模糊测试,您必须使用以下命令安装 cargo-fuzz

$ cargo install cargo-fuzz

然后,在仓库的根目录下,您可以运行 harness 作为

$ cargo fuzz run pcap_reader
$ cargo fuzz run pcap_ng_reader
$ cargo fuzz run pcap_parser
$ cargo fuzz run pcap_ng_parser

请注意,libfuzzer 默认仅使用一个核心,因此您可以选择在不同的终端中运行所有 harness,或者您可以通过传递 -jobs-workers 属性。更多信息可以在其文档中找到 这里。为了获得更好的崩溃报告,请将以下内容添加到您的 rust 标志中:-Zsanitizer=address。例如。

RUSTFLAGS="-Zsanitizer=address" cargo fuzz run pcap_reader

许可证

MIT 许可

免责声明

为了测试库,我使用了 hadrielk 提供的出色的 PcapNg 测试套件。

依赖项

~0.4–1MB
~21K SLoC