P1sec / pycrate

A Python library to ease the development of encoders and decoders for various protocols and file formats; contains ASN.1 and CSN.1 compilers.
GNU Lesser General Public License v2.1
381 stars 132 forks source link

Numbering items while printing ASN.1 decoding results #181

Closed dbressan2 closed 2 years ago

dbressan2 commented 2 years ago

Hi

Wireshark RRC decoder has a very useful feature where items are numbered after ASN.1 decoding. This helps correlate different parts of the RRC signalling. Is there a possibility to have items explicitly numbered using Pycrate with to_asn1 method or any other method ?

Example from Wireshark decoding:

nr-rrc.ul.dcch

00 c2 00 04 63 df 24 2b b0 10 7e 48 57 41 15 b7 5c d5 34 2c 0e bd c2 a8 fd 73 64 f1 ba c5 e7 a1 75 8d 53 43 ea d9 22 89 d5 30 44 08 91 21 1d 01 d6 1a c0 07 80 6b 26 4c 19 30 70 c1 8b 46 cd 19 da 75 80 04 a1 83 f6 16 6b 1b 38 0d 20 00 9f 00

nr-rrc.ul.dcch (NR Radio Resource Control (RRC) protocol) NR Radio Resource Control (RRC) protocol UL-DCCH-Message message: c1 (0) c1: measurementReport (0) measurementReport ...

                           measResultNeighCells: measResultListNR (0)
                                measResultListNR: 1 item
                                    Item 0
                                        MeasResultNR
                                            physCellId: 86
                                            measResult
                                                cellResults
                                                    resultsSSB-Cell
                                                        rsrp: -111dBm <= SS-RSRP < -110dBm (46)
                                                        rsrq: -17.0dB <= SS-RSRQ < -16.5dB (53)
                                                        sinr: -4.5dB <= SS-SINR < -4.0dB (38)
                                                rsIndexResults
                                                    resultsSSB-Indexes: 6 items
                                                        Item 0
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 0
                                                                ssb-Results
                                                                    rsrp: -110dBm <= SS-RSRP < -109dBm (47)
                                                                    rsrq: -15.5dB <= SS-RSRQ < -15.0dB (56)
                                                                    sinr: -2.5dB <= SS-SINR < -2.0dB (42)
                                                        Item 1
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 7
                                                                ssb-Results
                                                                    rsrp: -111dBm <= SS-RSRP < -110dBm (46)
                                                                    rsrq: -16.5dB <= SS-RSRQ < -16.0dB (54)
                                                                    sinr: -4.0dB <= SS-SINR < -3.5dB (39)
                                                        Item 2
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 6
                                                                ssb-Results
                                                                    rsrp: -113dBm <= SS-RSRP < -112dBm (44)
                                                                    rsrq: -20.0dB <= SS-RSRQ < -19.5dB (47)
                                                                    sinr: -8.5dB <= SS-SINR < -8.0dB (30)
                                                        Item 3
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 2
                                                                ssb-Results
                                                                    rsrp: -113dBm <= SS-RSRP < -112dBm (44)
                                                                    rsrq: -17.0dB <= SS-RSRQ < -16.5dB (53)
                                                                    sinr: -4.5dB <= SS-SINR < -4.0dB (38)
                                                        Item 4
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 3
                                                                ssb-Results
                                                                    rsrp: -114dBm <= SS-RSRP < -113dBm (43)
                                                                    rsrq: -18.5dB <= SS-RSRQ < -18.0dB (50)
                                                                    sinr: -6.5dB <= SS-SINR < -6.0dB (34)
                                                        Item 5
                                                            ResultsPerSSB-Index
                                                                ssb-Index: 4
                                                                ssb-Results
                                                                    rsrp: -115dBm <= SS-RSRP < -114dBm (42)
                                                                    rsrq: -19.5dB <= SS-RSRQ < -19.0dB (48)
                                                                    sinr: -6.5dB <= SS-SINR < -6.0dB (34)

Thanks !

p1-bmu commented 2 years ago

You should go through the wiki: https://github.com/P1sec/pycrate/wiki/Using-the-pycrate-asn1-runtime There are some methods such as get_at() or get_val_at() to help with navigating into ASN.1 objects and values.