#packet-parser #parser #wifi #packet

radiotap

A parser for the Radiotap capture format. See http://www.radiotap.org.

4 stable releases

Uses old Rust 2015

2.0.0-beta.1 Sep 1, 2020
1.3.0 Sep 21, 2018
1.2.0 Jun 26, 2018
1.1.0 Jun 26, 2018
1.0.0 May 24, 2018

#1707 in Parser implementations

Download history 142/week @ 2024-03-13 144/week @ 2024-03-20 187/week @ 2024-03-27 164/week @ 2024-04-03 108/week @ 2024-04-10 142/week @ 2024-04-17 140/week @ 2024-04-24 149/week @ 2024-05-01 252/week @ 2024-05-08 184/week @ 2024-05-15 278/week @ 2024-05-22 209/week @ 2024-05-29 208/week @ 2024-06-05 148/week @ 2024-06-12 138/week @ 2024-06-19 171/week @ 2024-06-26

683 downloads per month
Used in nearby

Apache-2.0/MIT

55KB
1K SLoC

radiotap

crates.io docs.rs

A parser for the Radiotap capture format.

Getting started

Add to your project with

cargo add radiotap

or directly editing your Cargo.toml

[dependencies]
radiotap = "1.0.0"

See the documentation here.

Example usage

See examples/ for more.

The Radiotap::from_bytes(&capture) constructor will parse all present fields into a Radiotap struct:

let capture = [
    0, 0, 56, 0, 107, 8, 52, 0, 185, 31, 155, 154, 0, 0, 0, 0, 20, 0, 124, 21, 64, 1, 213,
    166, 1, 0, 0, 0, 64, 1, 1, 0, 124, 21, 100, 34, 249, 1, 0, 0, 0, 0, 0, 0, 255, 1, 80,
    4, 115, 0, 0, 0, 1, 63, 0, 0
];

let radiotap = Radiotap::from_bytes(&capture).unwrap();
println!("{:?}", radiotap.vht);

If you just want to parse a few specific fields from the Radiotap capture you can create an iterator using RadiotapIterator::from_bytes(&capture):

let capture = [
    0, 0, 56, 0, 107, 8, 52, 0, 185, 31, 155, 154, 0, 0, 0, 0, 20, 0, 124, 21, 64, 1, 213,
    166, 1, 0, 0, 0, 64, 1, 1, 0, 124, 21, 100, 34, 249, 1, 0, 0, 0, 0, 0, 0, 255, 1, 80,
    4, 115, 0, 0, 0, 1, 63, 0, 0
];

for element in RadiotapIterator::from_bytes(&capture).unwrap() {
    match element {
        Ok((field::Kind::VHT, data)) => {
            let vht: field::VHT = field::from_bytes(data).unwrap();
            println!("{:?}", vht);
        },
        _ => {}
    }
}

License

This project is dual licensed under the Apache 2.0 License and the MIT License. See the LICENSE-APACHE and LICENSE-MIT files.

Dependencies

~280–375KB