| % 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' |