pcaparse
This is a combination of awesome pcap-file crate and pcap-file-tokio crate with some issues fixed.
Provides parsers, readers and writers for Pcap and PcapNg data.
Documentation
Installation
This crate is on crates.io.
Add it to your Cargo.toml:
[]
= "0.1.0"
Crate Features
tokio enables async reading and writing via tokio crate.
Examples
PcapReader
use File;
use PcapReader;
let file_in = open.expect;
let mut pcap_reader = new.unwrap;
// Read test.pcap
while let Some = pcap_reader.next_packet
PcapNgReader
use File;
use PcapNgReader;
let file_in = open.expect;
let mut pcapng_reader = new.unwrap;
// Read test.pcapng
while let Some = pcapng_reader.next_block
Async PcapReader
enable tokio feature first
use File;
use PcapReader;
async
Async PcapReader from tokio's TcpStream
enable tokio feature first
use ;
use PcapReader;
async
async
Async PcapNgReader from tokio's File
enable tokio feature first
use File;
use PcapNgReader;
async
Fuzzing
Currently there are 4 crude harnesses to check that the parser won't panic in any situation. To start fuzzing you must install cargo-fuzz with the command:
And then, in the root of the repository, you can run the harnesses as:
Keep in mind that libfuzzer by default uses only one core, so you can either run all the harnesses in different terminals, or you can pass the -jobs and -workers attributes. More info can be found in its documentation here.
To get better crash reports add to you rust flags: -Zsanitizer=address.
E.g.
RUSTFLAGS="-Zsanitizer=address"
License
Licensed under MIT.
Disclaimer
To test the library I used the excellent PcapNg testing suite provided by hadrielk.