mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-04-23 22:19:59 -07:00
Autogenerated telcom packet parsing
This crate contains ASN.1 specs for various telcom message payloads, as well as autogenerated Rust code for parsing these messages. We're using hampi as a parser generator, and it seems 3GPP protocols are encoded in the unaligned Packed Encoding Rules (or uPER) codec.
Generating the parser
To install the hampi compiler, run:
> cargo install asn1-compiler
To generate the parser for LTE RRC, run:
> rs-asn1c --codec uper --module src/lte_rrc.rs -- specs/EUTRA* specs/PC5-RRC-Definitions.asn
Sourcing the ASN.1 files
3GPP, who develops the standards for 4G (and all the other G's) publishes ASN.1 specs for their protocols in these horrific Microsoft Word docs (e.g. here). The ASN.1 blocks are denoted by --ASN1START and --ASN1STOP text, so extracting them automatically is possible using a script like hampi's. Instead of doing this ourselves, we just sourced ours from these.
TODO
- implement proof of concept binary using this to parse QMDL, summarize the packets