mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-04-30 09:29:58 -07:00
28 lines
1.4 KiB
Markdown
28 lines
1.4 KiB
Markdown
# Autogenerated LTE-RRC packet parsing
|
|
|
|
This crate contains [ASN.1](https://en.wikipedia.org/wiki/ASN.1) specs for LTE RRC 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, run:
|
|
|
|
```
|
|
> hampi-rs-asn1c --codec uper --derive clone --derive partial-eq --derive serialize --module src/lte_rrc.rs -- specs/*
|
|
```
|
|
|
|
## 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
|
|
* document how to use them??? maybe toplevel doc comments in lib.rs?
|
|
* implement proof of concept binary using this to parse QMDL, summarize the packets
|