• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% Regression tests for Scapy
2
3+Syntax check
4= Import the homeplugg layer
5
6from scapy.contrib.homepluggp import *
7import binascii
8#from scapy.all import
9
10# HomePlugGP
11
12############
13############
14+ Basic tests
15
16* Those test are here mainly to check nothing has been broken
17
18= Most important packet to intrude a HPGP network
19~ field
20_xstr = binascii.unhexlify("0108600000010000000000000000040000000227cfe35f01e50a01c8a074ad04537cb54b88b62d49b35b51000000c1f2")
21pkt = HomePlugAV(_xstr)
22assert pkt.NewKey == b'\xc8\xa0t\xad\x04S|\xb5K\x88\xb6-I\xb3[Q'
23assert pkt.NetworkID == b"'\xcf\xe3_\x01\xe5\n"
24
25= Some other important parsing tests
26~ field
27_xstr = b'\x01\x08`\x00\x00\x01\xaa\xaa\xaa\xaa\x00\x00\x00\x00\x04\x00\x00\x00\x00\x96F`Y\xbf\xf8\x05\x0164\xc5\xdf.nO}r\x05\xf5\x8d9)S\xc0\x00\x00\x00'
28pkt = HomePlugAV(_xstr)
29assert pkt.MyNonce == 0xaaaaaaaa
30assert pkt.YourNonce == 0x0
31assert pkt.PID == 4
32assert pkt.NetworkID == b'\x96F`Y\xbf\xf8\x05'
33assert pkt.NewKey == b'64\xc5\xdf.nO}r\x05\xf5\x8d9)S\xc0'
34
35_xstr = b'\x01e`\x00\x00\xff\xff\xff\xff\xff\xff\n\x06\x01\xbc\xf2\xaf\xf1\x00\x04\x00\x00=\x83\xfb\xe2\xbb\x0b\xb8\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
36pkt = HomePlugAV(_xstr)
37assert pkt.MSoundTargetMAC == 'ff:ff:ff:ff:ff:ff'
38assert pkt.NumberMSounds == 10
39assert pkt.TimeOut == 6
40assert pkt.ResponseType == 1
41assert pkt.ForwardingSTA == 'bc:f2:af:f1:00:04'
42assert pkt.SecurityType == 0
43assert pkt.RunID == b'=\x83\xfb\xe2\xbb\x0b\xb8\x8a'
44
45_xstr = b'\x01n`\x00\x00\x00\x00\xbc\xf2\xaf\xf1\x00\x04=\x83\xfb\xe2\xbb\x0b\xb8\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n:!\t\t\n\x06\x06\x0e\x07\x07\t\t\n\n\x0b\x0b\x0b\x0b\x0c\r\x0e\x0e\x0e\x0f\x0f\x0f\x0f\x11\x11\x11\x12\x12\x12\x12\x12\x13\x12\x12\x11\x11\x11\x10\x12\x12\x12\x11\x10\x0f\x0f\x10\x14\x12\x10\x10\x11\x12\x14\x16;'
46pkt = HomePlugAV(_xstr)
47assert len(pkt.Groups) == pkt.NumberOfGroups
48assert pkt.NumberOfSounds == 10
49
50_xstr = b'\x01v`\x00\x00\x00\x00\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\t\xe8jdY,w\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
51pkt = HomePlugAV(_xstr)
52assert pkt.SenderID == b'\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa'
53
54= Some important manipulations
55~ field
56pkt = HomePlugAV(version=0x01)/CM_MNBC_SOUND_IND()
57pkt.RandomValue="AAAAAAAAAA"
58assert raw(pkt) == b'\x01v`\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00AAAAAAAAAA\x00\x00\x00\x00\x00\x00'
59
60pkt = HomePlugAV()/CM_SET_KEY_REQ(YourNonce=0xaaaa, NewKey="b" * 16)
61assert raw(pkt) == b'\x00\x08`\x00\xb0R\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00bbbbbbbbbbbbbbbb'
62