• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% Regression tests for Scapy
2
3+Syntax check
4= Import the loraphy2wan layer
5
6from scapy.contrib.loraphy2wan import *
7from scapy.compat import raw
8
9# LoRa PHY to WAN
10
11############
12############
13+ Basic tests
14
15* Those test are here mainly to check nothing has been broken
16
17= Packet decoding
18~ field
19
20p = b'\x00\x00\x00\x00lovecafemeeetoo\x00iiS\x02LI'
21pkt = LoRa(p)
22assert pkt.Join_Request_Field[0].DevEUI == b'meeetoo\x00'
23assert pkt.Join_Request_Field[0].DevNonce == 26985
24
25p = b'\x0f0P@\xad\x15\x00`\x80\x06\x00\t\xca\xfe\x0c\x1d\x8d\x04\\\xb5'
26pkt = LoRa(p)
27assert pkt.MType == 2
28assert pkt.DataPayload == b'\xca\xfe'
29assert pkt.FCnt == 6
30assert pkt.FPort == 9
31assert pkt.FCtrl[0].ADR == 1
32assert pkt.DevAddr[0].NwkID == 0xad
33assert pkt.DevAddr[0].NwkAddr == 0x600015
34
35p = b'\x0f0P\x80\xad\x15\x00`\x00\x01\x00\t\xca\xfe:\x98\x89|\x8f\xd4'
36pkt = LoRa(p)
37assert pkt.MType == 4
38
39= Decoding an encrypted JA packet
40
41LoRa.encrypted = True
42p = b'\x00\x00\x00 \x086\xe2\x87\xa9\x80\\\xb7\xee\x9e_\xff|\x9e\xe9z'
43pkt = LoRa(p)
44assert pkt.Join_Accept_Encrypted == b'\x086\xe2\x87\xa9\x80\\\xb7\xee\x9e_\xff|\x9e\xe9z'
45
46= Packet crafting: generating an unencrypted JA frame
47
48ja = Join_Accept()
49ja.JoinAppNonce=0x6fe14a
50ja.NetID = 0x10203
51ja.DevAddr = 0x68e8cb1
52assert raw(ja) == b'J\xe1o\x03\x02\x01\xb1\x8c\x8e\x06\x00\x00'
53
54= Generating an unencrypted LoRa JA packet
55
56LoRa.encrypted = False
57pkt = LoRa(MType=0b001)
58pkt.Join_Accept_Field = [ja]
59assert raw(pkt) == b'\x00\x00\x00 J\xe1o\x03\x02\x01\xb1\x8c\x8e\x06\x00\x00\x00\x00\x00\x00'
60
61= Parsing Piggy back commands
62
63p = b'\r0\xc0\x80\xad\x15\x00`\x01\x01\x00\x02\xc0\xe3N\xb7\xc7\xae'
64pkt = LoRa(p)
65assert pkt.FOpts_up[0].CID == 2
66