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