xref: /aosp_15_r20/external/scapy/scapy/contrib/homeplugav.uts (revision 7dc08ffc4802948ccbc861daaf1e81c405c2c4bd)
1% Regression tests for Scapy
2
3# HomePlugAV
4
5############
6############
7+ Basic tests
8
9* Those test are here mainly to check nothing has been broken
10
11= Building packets packet
12~ basic HomePlugAV GetDeviceVersion StartMACRequest StartMACConfirmation ResetDeviceRequest ResetDeviceConfirmation NetworkInformationRequest ReadMACMemoryRequest ReadMACMemoryConfirmation ReadModuleDataRequest ReadModuleDataConfirmation WriteModuleDataRequest WriteModuleData2NVMRequest WriteModuleData2NVMConfirmation NetworkInfoConfirmationV10 NetworkInfoConfirmationV11 NetworkInfoV10 NetworkInfoV11 HostActionRequired LoopbackRequest LoopbackConfirmation SetEncryptionKeyRequest SetEncryptionKeyConfirmation ReadConfBlockRequest ReadConfBlockConfirmation QUAResetFactoryConfirm GetNVMParametersRequest GetNVMParametersConfirmation SnifferRequest SnifferConfirmation SnifferIndicate
13
14HomePlugAV()
15HomePlugAV()/GetDeviceVersion()
16HomePlugAV()/StartMACRequest()
17HomePlugAV()/StartMACConfirmation()
18HomePlugAV()/ResetDeviceRequest()
19HomePlugAV()/ResetDeviceConfirmation()
20HomePlugAV()/NetworkInformationRequest()
21HomePlugAV()/ReadMACMemoryRequest()
22HomePlugAV()/ReadMACMemoryConfirmation()
23HomePlugAV()/ReadModuleDataRequest()
24HomePlugAV()/ReadModuleDataConfirmation()
25HomePlugAV()/WriteModuleDataRequest()
26HomePlugAV()/WriteModuleData2NVMRequest()
27HomePlugAV()/WriteModuleData2NVMConfirmation()
28HomePlugAV()/NetworkInfoConfirmationV10()
29HomePlugAV()/NetworkInfoConfirmationV11()
30HomePlugAV()/NetworkInfoConfirmationV10()/NetworkInfoV10()
31HomePlugAV()/NetworkInfoConfirmationV11()/NetworkInfoV11()
32HomePlugAV()/HostActionRequired()
33HomePlugAV()/LoopbackRequest()
34HomePlugAV()/LoopbackConfirmation()
35HomePlugAV()/SetEncryptionKeyRequest()
36HomePlugAV()/SetEncryptionKeyConfirmation()
37HomePlugAV()/ReadConfBlockRequest()
38HomePlugAV()/ReadConfBlockConfirmation()
39HomePlugAV()/QUAResetFactoryConfirm()
40HomePlugAV()/GetNVMParametersRequest()
41HomePlugAV()/GetNVMParametersConfirmation()
42HomePlugAV()/SnifferRequest()
43HomePlugAV()/SnifferConfirmation()
44HomePlugAV()/SnifferIndicate()
45
46= Some important manipulations
47~ field
48pkt = HomePlugAV()/SetEncryptionKeyRequest()
49pkt.NMK = "A" * 16
50pkt.DAK = "B" * 16
51raw(pkt)
52_ == b"\x00P\xa0\x00\xb0R\x00AAAAAAAAAAAAAAAA\x00\xff\xff\xff\xff\xff\xffBBBBBBBBBBBBBBBB"
53
54pkt = HomePlugAV()/ReadMACMemoryRequest()
55pkt.Address = 0x31337
56pkt.Length = 0x666
57raw(pkt)
58_ == b"\x00\x08\xa0\x00\xb0R7\x13\x03\x00f\x06\x00\x00"
59
60pkt = HomePlugAV()/ReadModuleDataRequest()
61pkt.Length = 0x666
62pkt.Offset = 0x1337
63raw(pkt)
64assert(_ == b"\x00$\xa0\x00\xb0R\x02\x00f\x067\x13\x00\x00")
65
66pkt = HomePlugAV()/SnifferRequest()
67pkt.SnifferControl = 0x1
68raw(pkt)
69_ == b"\x004\xa0\x00\xb0R\x01"
70
71= Some important fields parsing
72~ field
73_xstr = b"\x00%\xa0\x00\xb0R\x00\x00\x00\x00\x02\x00\x00\x04\x00\x00\x00\x00`\x8d\x05\xf9\x04\x01\x00\x00\x88)\x00\x00\x87`[\x14\x00$\xd4okm\x1f\xedHu\x85\x16>\x86\x1aKM\xd2\xe91\xfc6\x00\x00603506A112119017\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00z]\xa9\xe2]\xedR\x8b\x85\\\xdf\xe8~\xe9\xb2\x14637000A112139290\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00FREEPLUG_LC_6400_4-1_1.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\xcb\x0e\x10 \xad\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00`\xe5\x16\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x03\x02\x80\x84\x1e\x00\x80\x84\x1e\x00\xe0\x93\x04\x00\xe0\x93\x04\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
74
75pkt = HomePlugAV(_xstr)
76ReadModuleDataConfirmation in pkt
77_ == True
78(pkt[ReadModuleDataConfirmation].ModuleID == 2, pkt[ReadModuleDataConfirmation].checksum == 4177890656, pkt[ReadModuleDataConfirmation].DataLen == 1024, pkt[ReadModuleDataConfirmation].Offset == 0)
79_ == (True, True, True, True)
80
81ModulePIB(pkt.ModuleData, pkt.Offset, pkt.DataLen)
82(_.NMK == b"z]\xa9\xe2]\xedR\x8b\x85\\\xdf\xe8~\xe9\xb2\x14", _.DAK == b"\x1f\xedHu\x85\x16>\x86\x1aKM\xd2\xe91\xfc6")
83_ == (True, True)
84
85#= Discovery packet tests in local
86#~ netaccess HomePlugAV NetworkInfoConfirmationV10 NetworkInfoConfirmationV11
87#pkt = Ether()/HomePlugAV()
88#old_debug_dissector = conf.debug_dissector
89#conf.debug_dissector = False
90#a = srp1(pkt, iface="eth0")
91#conf.debug_dissector = old_debug_dissector
92#a
93#pkt.version = a.version
94#pkt /= NetworkInformationRequest()
95#old_debug_dissector = conf.debug_dissector
96#conf.debug_dissector = False
97#a = srp1(pkt, iface="eth0")
98#conf.debug_dissector = old_debug_dissector
99#NetworkInfoConfirmationV10 in a or NetworkInfoConfirmationV11 in a
100#_ == True
101
102#= Reading local 0x400st octets of Software Image in Module Data blocks
103#~ netaccess HomePlugAV ReadModuleDataRequest
104#pkt = Ether()/HomePlugAV()/ReadModuleDataRequest(ModuleID=0x1)
105#old_debug_dissector = conf.debug_dissector
106#conf.debug_dissector = False
107#a = srp1(pkt, iface="eth0")
108#conf.debug_dissector = old_debug_dissector
109#a
110#len(a.ModuleData) == pkt.Length
111#_ == True
112
113= Testing length and checksum on a generated Write Module Data Request
114string = b"goodchoucroute\x00\x00"
115pkt = WriteModuleDataRequest(ModuleData=string)
116pkt = WriteModuleDataRequest(pkt.build())
117pkt.show()
118(pkt.checksum == chksum32(pkt.ModuleData), pkt.DataLen == len(pkt.ModuleData))
119_ == (True, True)
120