kbandla / dpkt

fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols
Other
1.09k stars 271 forks source link

Radiotap module does not correctly decode radiotap format #419

Closed kristahi closed 3 years ago

kristahi commented 6 years ago

There are multiple issues with the radiotap header decoder module, which make it more or less unusable at the moment for anything but getting at the 802.11 frames trailing the radiotap header.

Major issues:

I am willing to provide patches to sort this out, but the extent of the breakage presents some challenges:

One possibility is to just remove support for parsing the contents of the radiotap header and instead offer it in raw form so users can pass it into another library such as the one above themselves. This way you can still use dpkt to decode the actual frames.

Any opinions on this?

brifordwylie commented 5 years ago

@kristahi as you may have noticed we're working with a bit of a skeleton crew here. I'll give you my input FWIW.

Looking at https://github.com/radiotap/python-radiotap there are basically just two files, one approach is to contact the author, let him know we're interested in his work and would like to include them into dpkt and add him as a contributor :) @bcopeland (https://github.com/bcopeland)

Since I don't know anything about radiotap, you'd have to manage pulling in that work (if Bob would like to contribute it).

brifordwylie commented 5 years ago

Also just making sure to 'link' this within this discussion: https://github.com/kbandla/dpkt/pull/306

bcopeland commented 5 years ago

Hi guys, thanks for pulling me in. A history on this code: from time to time I work on Linux wireless in various areas: kernel, userspace daemons, etc. I originally wrote radiotap.py for my own uses, and as such ieee80211_parse() is not a complete 802.11 dissector. However, I believe radiotap_parse() is generally correct -- I tested it against the existing test cases for the C libraries. The github radiotap account is run by the people that mostly drive the spec these days, so, to the extent that it doesn't match up with the spec, I'd like to hear about it.

As far as I'm concerned you can take what you like with or without attribution into your project. If it needs a couple of tweaks here or there (like dropping ieee80211_parse) I would consider also removing those from the "official" python-radiotap to keep them more or less in sync. It doesn't get updated very often so I wouldn't worry too much about skew.

obormot commented 3 years ago

Some (but not all) of the issues addressed in https://github.com/kbandla/dpkt/pull/517 (now merged to master).