Simple tools to decode MAC commands and Join messages
Work in progress
$ ./maccommands.py --help
usage: maccommands.py [-h] -d DATA [--direction DIRECTION]
Parse LoRaWAN MAC Commands
optional arguments:
-h, --help show this help message and exit
-d DATA, --data DATA MAC payload in hex string
--direction DIRECTION
uplink: 0, downlink: 1
$ ./maccommands.py --direction 1 -d 0a00d0248d0a01a02c8d0a0270348d0a03403c8d
DL : 0a00d0248d0a01a02c8d0a0270348d0a03403c8d
CID: 0x0A : Name: DlChannelReq
Raw: 00d0248d
Data:
ChIndex: 0
Frequency: 925000000
CID: 0x0A : Name: DlChannelReq
Raw: 01a02c8d
Data:
ChIndex: 1
Frequency: 925200000
CID: 0x0A : Name: DlChannelReq
Raw: 0270348d
Data:
ChIndex: 2
Frequency: 925400000
CID: 0x0A : Name: DlChannelReq
Raw: 03403c8d
Data:
ChIndex: 3
Frequency: 925600000
--------------
File index.html shows a small webpage example for MAC commands decoding using maccommands.js.
Decoding is a working progress
$ ./lora-decode.py --help
usage: lora-decode.py [-h] -d DATA [--appkey APPKEY] [--clear]
Parse a LoRaWAN PHYPayload.
optional arguments:
-h, --help show this help message and exit
-d DATA, --data DATA LoRaWAN payload in hex string
--appkey APPKEY AppKey (hex) to decrypt Join Accept
--clear Treat Join Accept as already decrypted (cleartext)
$ ./lora-decode.py -d 201c0000020000068b03040201b8ab8c88b38c58bb8c28c38cf8ca8c006db0d77f --clear
MHDR:
MHDR Byte: 0x20
MType: Join Accept
Major: 0 (LoRaWAN v1.0)
Frame Type: Join Accept
Fields:
AppNonce: 00001c
NetID: 000002
DevAddr: 04038b06
DLSettings: 0x2
RxDelay: 1
CFList: b8ab8c88b38c58bb8c28c38cf8ca8c00
MIC: 6db0d77f