mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-04-26 07:29:59 -07:00
Compiling telecom-parser takes 2 minutes on my machine. After removing those derives it takes 1:15. I suspect it's mostly serde though.
27 lines
1.3 KiB
Markdown
27 lines
1.3 KiB
Markdown
# Autogenerated telcom packet parsing
|
|
|
|
This crate contains [ASN.1](https://en.wikipedia.org/wiki/ASN.1) specs for various telcom message payloads, as well as autogenerated
|
|
Rust code for parsing these messages. We're using [hampi](https://github.com/ystero-dev/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](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2440)). The ASN.1 blocks are denoted by `--ASN1START` and `--ASN1STOP` text, so extracting them automatically is possible using a script like [hampi's](https://github.com/ystero-dev/hampi/blob/master/examples/specs/parse_spec.py). Instead of doing this ourselves, we just sourced ours from [these](https://obj-sys.com/products/asn1apis/lte_3gpp_apis.php#lte_4g_apis).
|
|
|
|
# TODO
|
|
* implement proof of concept binary using this to parse QMDL, summarize the packets
|