% Regression tests for Scapy +Syntax check = Import the homeplugg layer from scapy.contrib.homepluggp import * import binascii #from scapy.all import # HomePlugGP ############ ############ + Basic tests * Those test are here mainly to check nothing has been broken = Most important packet to intrude a HPGP network ~ field _xstr = binascii.unhexlify("0108600000010000000000000000040000000227cfe35f01e50a01c8a074ad04537cb54b88b62d49b35b51000000c1f2") pkt = HomePlugAV(_xstr) assert pkt.NewKey == b'\xc8\xa0t\xad\x04S|\xb5K\x88\xb6-I\xb3[Q' assert pkt.NetworkID == b"'\xcf\xe3_\x01\xe5\n" = Some other important parsing tests ~ field _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' pkt = HomePlugAV(_xstr) assert pkt.MyNonce == 0xaaaaaaaa assert pkt.YourNonce == 0x0 assert pkt.PID == 4 assert pkt.NetworkID == b'\x96F`Y\xbf\xf8\x05' assert pkt.NewKey == b'64\xc5\xdf.nO}r\x05\xf5\x8d9)S\xc0' _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' pkt = HomePlugAV(_xstr) assert pkt.MSoundTargetMAC == 'ff:ff:ff:ff:ff:ff' assert pkt.NumberMSounds == 10 assert pkt.TimeOut == 6 assert pkt.ResponseType == 1 assert pkt.ForwardingSTA == 'bc:f2:af:f1:00:04' assert pkt.SecurityType == 0 assert pkt.RunID == b'=\x83\xfb\xe2\xbb\x0b\xb8\x8a' _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;' pkt = HomePlugAV(_xstr) assert len(pkt.Groups) == pkt.NumberOfGroups assert pkt.NumberOfSounds == 10 _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' pkt = HomePlugAV(_xstr) assert pkt.SenderID == b'\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa' = Some important manipulations ~ field pkt = HomePlugAV(version=0x01)/CM_MNBC_SOUND_IND() pkt.RandomValue="AAAAAAAAAA" assert 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' pkt = HomePlugAV()/CM_SET_KEY_REQ(YourNonce=0xaaaa, NewKey="b" * 16) assert 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'