1+ SOCKS 4/5 tests 2 3= Basic build and dissection - test version dispatch 4 5p1 = Ether(raw(Ether()/IP()/TCP()/SOCKS()/SOCKS5Request())) 6p2 = Ether(raw(Ether()/IP()/TCP()/SOCKS()/SOCKS5Reply())) 7p3 = Ether(raw(Ether()/IP()/TCP()/SOCKS()/SOCKS4Request())) 8p4 = Ether(raw(Ether()/IP()/TCP()/SOCKS()/SOCKS4Reply())) 9 10assert p1[TCP].dport == 1080 11assert p1[SOCKS].vn == 0x5 12assert SOCKS5Request in p1 13 14assert p2[TCP].sport == 1080 15assert p2[SOCKS].vn == 0x5 16assert SOCKS5Reply in p2 17 18assert p3[TCP].dport == 1080 19assert p3[SOCKS].vn == 0x4 20assert SOCKS4Request in p3 21 22assert p4[TCP].sport == 1080 23assert p4[SOCKS].vn == 0x0 24assert SOCKS4Reply in p4 25 26= SOCKS5Request build and dissection 27 28pkt = IP(dst="127.0.0.1", src="127.0.0.1")/TCP(sport=123)/SOCKS()/SOCKS5Request(atyp=0x3, addr="scapy.net") 29assert raw(pkt) == b'E\x00\x009\x00\x01\x00\x00@\x06|\xbc\x7f\x00\x00\x01\x7f\x00\x00\x01\x049\x048\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00\xf2*\x00\x00\x05\x00\x00\x03\x05scapy\x03net\x00\x00P' 30pkt = IP(raw(pkt)) 31 32assert SOCKS5Request in pkt 33assert pkt[SOCKS5Request].addr == b'scapy.net.' 34 35= Test SOCKSv5 over UDP 36 37pkt = Ether()/IP()/UDP()/SOCKS5UDP(port=53)/DNS() 38pkt = Ether(raw(pkt)) 39assert DNS in pkt 40