#packet-parser #wifi #capture #format #frame #byte #field

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

#1106 in Parser implementations

Download history 43/week @ 2023-11-20 32/week @ 2023-11-27 14/week @ 2023-12-04 9/week @ 2023-12-11 10/week @ 2023-12-18 78/week @ 2023-12-25 13/week @ 2024-01-01 72/week @ 2024-01-08 115/week @ 2024-01-15 137/week @ 2024-01-22 309/week @ 2024-01-29 506/week @ 2024-02-05 357/week @ 2024-02-12 200/week @ 2024-02-19 219/week @ 2024-02-26 192/week @ 2024-03-04

1,030 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

~285–380KB