1% Test mount layer 2#################### 3#################### 4 5+ Packet Creation Tests 6 7= Create subpackets 8Path() 9File_Object() 10 11= Create Mount Calls 12NULL_Call() 13MOUNT_Call() 14UNMOUNT_Call() 15 16= Create Successful Mount Replies 17MOUNT_Reply(status=0) 18 19= Create Failed Mount Replies 20MOUNT_Reply(status=1) 21 22+ RPC Layer bindings tests 23 24= Layer Bindings for Mount Calls 25from scapy.contrib.oncrpc import * 26pkt = RPC()/RPC_Call()/NULL_Call() 27assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100005, 3, 0) 28pkt = RPC()/RPC_Call()/MOUNT_Call() 29assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100005, 3, 1) 30pkt = RPC()/RPC_Call()/UNMOUNT_Call() 31assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100005, 3, 3) 32 33= Layer Bindings for Mount Replies 34from scapy.contrib.oncrpc import * 35pkt = RPC()/RPC_Reply()/NULL_Reply() 36assert pkt.mtype == 1 37pkt = RPC()/RPC_Reply()/MOUNT_Reply() 38assert pkt.mtype == 1 39pkt = RPC()/RPC_Reply()/UNMOUNT_Reply() 40assert pkt.mtype == 1 41 42+ Test Built Packets vs Raw Strings 43 44= Mount calls vs Raw strings 45pkt = MOUNT_Call( 46 path=Path( 47 length=4, 48 path='path' 49 ) 50) 51assert bytes(pkt) == b'\x00\x00\x00\x04path' 52 53pkt = UNMOUNT_Call( 54 path=Path( 55 length=4, 56 path='path' 57 ) 58) 59assert bytes(pkt) == b'\x00\x00\x00\x04path' 60 61= Mount replies vs Raw Strings 62pkt = MOUNT_Reply( 63 status=0, 64 filehandle=File_Object( 65 length=4, 66 fh='file' 67 ), 68 flavors=3, 69 flavor=[ 70 0,0,0 71 ] 72) 73assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 74