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