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