From 01ac767be7cd6c4f6969669314dca7bbb392cf9e Mon Sep 17 00:00:00 2001 From: Guillaume Valadon Date: Thu, 13 Apr 2017 11:25:05 +0200 Subject: [PATCH] Answering machines unit tests --- test/answering_machines.uts | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/answering_machines.uts diff --git a/test/answering_machines.uts b/test/answering_machines.uts new file mode 100644 index 000000000..213143173 --- /dev/null +++ b/test/answering_machines.uts @@ -0,0 +1,61 @@ +% Regression tests for Scapy Answering Machines + +# More informations at http://www.secdev.org/projects/UTscapy/ + + +############ +############ ++ Answering Machines + += Generic answering machine mocker +import mock +@mock.patch("scapy.ansmachine.sniff") +def test_am(cls_name, packet_query, check_reply, mock_sniff, **kargs): + def sniff(*args,**kargs): + kargs["prn"](packet_query) + mock_sniff.side_effect = sniff + am = cls_name(**kargs) + am.send_reply = check_reply + am() + + += BOOT_am +def check_BOOTP_am_reply(packet): + assert(BOOTP in packet and packet[BOOTP].op == 2) + assert(packet[BOOTP].yiaddr == "192.168.1.128" and packet[BOOTP].giaddr == "192.168.1.1") + +test_am(BOOTP_am, + IP()/UDP()/BOOTP(op=1), + check_BOOTP_am_reply) + + += DHCP_am +def check_DHCP_am_reply(packet): + assert(DHCP in packet and len(packet[DHCP].options)) + assert(("domain", "localnet") in packet[DHCP].options) + +test_am(DHCP_am, + IP()/UDP()/BOOTP(op=1)/DHCP(), + check_DHCP_am_reply) + + += ARP_am +def check_ARP_am_reply(packet): + assert(ARP in packet and packet[ARP].psrc == "10.28.7.1") + assert(packet[ARP].hwsrc == "00:01:02:03:04:05") + +test_am(ARP_am, + Ether()/ARP(pdst="10.28.7.1"), + check_ARP_am_reply, + IP_addr="10.28.7.1", + ARP_addr="00:01:02:03:04:05") + + += DNS_am +def check_DNS_am_reply(packet): + assert(DNS in packet and packet[DNS].ancount == 1) + assert(packet[DNS].an.rdata == "192.168.1.1") + +test_am(DNS_am, + IP()/UDP()/DNS(qd=DNSQR(qname="www.secdev.org")), + check_DNS_am_reply)