#packet-parser #parser #packet #wifi

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

#2072 in Parser implementations

Download history 150/week @ 2024-07-22 141/week @ 2024-07-29 203/week @ 2024-08-05 216/week @ 2024-08-12 186/week @ 2024-08-19 164/week @ 2024-08-26 180/week @ 2024-09-02 270/week @ 2024-09-09 153/week @ 2024-09-16 256/week @ 2024-09-23 152/week @ 2024-09-30 143/week @ 2024-10-07 71/week @ 2024-10-14 54/week @ 2024-10-21 92/week @ 2024-10-28 73/week @ 2024-11-04

298 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

~270–370KB