Commit Diff


commit - 05318df6523d79d06c245ba86c817626117b4288
commit + 129af471c931245c590c96319fcd4f8ca3b6f8ed
blob - /dev/null
blob + ad09209b00820a054c74cd24e977e8030645cb55 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/Makefile
@@ -0,0 +1,48 @@
+ARGS !=			cd ${.CURDIR} && ls proto_*.py
+TARGETS ?=		${ARGS}
+REGRESS_TARGETS =	${TARGETS:S/^/run-regress-/}
+CLEANFILES +=		*.log
+
+.for a in ${ARGS}
+run-regress-$a: $a
+	@echo '\n======== $@ ========'
+	SUDO=${SUDO} python $a
+.endfor
+
+.include <bsd.regress.mk>
+
+# TODO:
+#
+# 802_11 
+# atalk
+# atm
+# cnfp
+# decnet
+# dvmrp
+# enc
+# fddi
+# frag6
+# iapp
+# igrp
+# ip6
+# ip6opts
+# ipsec
+# ipx
+# isoclns
+# krb
+# lwres
+# netbios
+# nfs
+# null
+# ofp
+# ospf6
+# pflog
+# pfsync
+# pim
+# rt6
+# sl
+# slow
+# sunrpc
+# timed
+# udpencap
+# wb
blob - /dev/null
blob + 8c48e1e72d2b201621c8ce4fbf6401f734150e96 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/helper.py
@@ -0,0 +1,48 @@
+#/usr/local/bin/env python
+
+import subprocess as sub
+import logging
+import time
+import os
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+# sudo modprobe dummy
+# sudo ip link set name eth10 dev dummy0
+# ip link show eth10
+# ip link set dev eth10 up
+
+DEF_IFACE = 'em0'
+
+def chck(pkt, re_output, debug=False):
+
+        #if os.getuid() != 0:
+        #    print "root priveleges is required"
+        #    exit(1)
+
+        #if isinstance(pkt, list):
+        #    packet_count = len(pkt)
+        #else:
+        #    packet_count = 1
+
+        pcap_name = 'sample.pcap'
+
+        wrpcap(pcap_name, pkt)
+        tcpdump_cmd = [ 'doas', 'tcpdump', '-r', pcap_name ]
+        # tcpdump_cmd = [ 'doas', 'tcpdump', '-i', DEF_IFACE, '-c', str(packet_count) ]
+        p = sub.Popen(tcpdump_cmd, stdout=sub.PIPE, stderr=sub.PIPE)
+
+        while True:
+            if p.poll() is None:
+                break
+
+        # time.sleep(2)
+        # send(pkt, iface=DEF_IFACE, verbose=1)
+
+        if debug:
+            pkt.show()
+            print p.communicate()[0]
+        p.wait()
+
+        os.remove(pcap_name)
blob - /dev/null
blob + 37d5dad32cc74353a97ed7b849f670e12974559f (mode 644)
Binary files /dev/null and tests/tcpdump-regress/helper.pyc differ
blob - /dev/null
blob + 185de9b3104c9b4f1871be8cc234c93ccfe40543 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_arp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "arp"
+        packet = ARP(op=ARP.who_has, psrc='192.168.1.2', pdst='192.168.1.1')
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 332ff1981250170b545f7a2ff71c1b5928347733 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_bgp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/bgp.py
+	print "bgp"
+	#packet = IP()/TCP()/BGPUpdate()
+	#re_output = ""
+	#helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + b8df1f088715265dd58c7c6ccbc04dc8be718615 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_carp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+	# https://github.com/secdev/Scapy/blob/master/scapy/contrib/carp.py
+	print "carp"
+	#packet = CARP()
+	#re_output = ""
+	#helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 60e3f267845c0d84a8444ec7e2c4d2875ad65560 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_cdp.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/cdp.py
+        print "cdp"
+        #packet = CDP()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 34c54e1c9fb8b61f69664f06bd90c095747304a2 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_dhcp6.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "dhcp6"
+        packet = DHCP(options=[("message-type", "discover"), "end"])
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 57b28ab1867da6e0f8f21ccc45fa4ab0e293a187 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_domain.py
@@ -0,0 +1,24 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+
+def main():
+
+        print "domain"
+        packet = IP() / UDP(dport=53) / DNS(qd=DNSQR(qname="google.com"))
+        re_output = ""
+        helper.chck(packet, re_output)
+
+        packet = TCP(dport=53)
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+
+        main()
blob - /dev/null
blob + 8734e0a902ad9144c9ad82c64388627017788c71 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ether.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "ether"
+        packet = Ether()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + d608bf90b0bc61a9526a88608f722658b6bc3743 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_etherip.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/etherip.py
+        print "etherip"
+        #packet = EtherIP()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 516d4d3f03460308e05af82c7213f1376db34c97 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_gre.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "gre"
+        packet = GRE()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + b6bdf9402c67744bd22995fe5b5c105ee2895d08 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_gtp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/gtp.py
+        print "gtp"
+        #packet = GTP()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + df4b9648e45a650fe66d2b2a47fd8ca582fe9fb2 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_hsrp.py
@@ -0,0 +1,21 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "hsrp"
+        #packet = Ether(src="00:0C:07:AC:02", dst="00:5E:00:00:02")  /
+        #            IP(dst="224.0.0.2", src='attacerIP', ttl=1)     / 
+        #            UDP()                                           /
+        #            HSRP(priority=230, virtualIP='virtualIP')
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + fbfa23e9afc8b6732e293ec03509cade6234c3b8 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_icmp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "icmp"
+        packet = IP(dst="192.168.1.1", ttl=128) / ICMP()
+        re_output = ""
+        tcpdump_opt = "-v ip and 'ip[8]>128'"
+        helper.chck(packet, re_output, debug=True)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + f6829c2e6ac38ce24102fe3827b31036c8805911 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_icmp6.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "icmp6"
+        packet = ICMPv6EchoRequest()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + f007e09ccfcacacc55d5788bb51a607a4ebec7cc (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ike.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/ikev2.py
+        print "ike"
+        #packet = IKEv2()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 5ef402444585c3da8d30e2528541586424d0a4d2 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ip.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "ip"
+        packet = IP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + d6ab3afc2493709b15903ee946376329b9f7c13f (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_l2tp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "l2tp"
+        packet = L2TP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 1083717429bc6fbb6875ec389f7bf2142e16eef9 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_llc.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "llc"
+        packet = LLC()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + c04d05a083370e6226c228ab63cd7f4c147a200e (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_lldp.py
@@ -0,0 +1,20 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/lldp.py
+        #load_contrib('lldp')
+        print "lldp"
+        #packet = LLDP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 5890029678bb9a7a7ea5e8ec0bec3347865339d5 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_mpls.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/mpls.py
+        print "mpls"
+        #packet = MPLS()
+        #re_output = ""
+        #chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + e36adb59fa40fc2f54d2987a07eb618260c20817 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ntp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "ntp"
+        packet = IP()/UDP(dport=123)/Raw(load=str("\x17\x00\x03\x2a") + str("\x00")*4)
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + ca0577301a996e0a0cf25e61d70bfb6f6797cf99 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ospf.py
@@ -0,0 +1,20 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/ospf.py
+        #load_contrib('ospf')
+        print "ospf"
+        #packet = OSPF()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 5aa68c12c10a681c357f7d5d37fee42c88804bdb (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ppp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "ppp"
+        packet = PPP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 8c14b595c34ff1b4f2fa3158f9dcb15b17633c1a (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_radius.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "radius"
+        #packet = Radius()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 092db08fb095a5665e935a5f347b56e7489f069f (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_raw.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "raw"
+        packet = Raw()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
+
blob - /dev/null
blob + 15f0527a909bc8c196467445dae33d0f7e28f680 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_rip.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "rip"
+        packet = RIP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
+
blob - /dev/null
blob + 333ce647769aa6bd5bfbe788575887def9363264 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_ripng.py
@@ -0,0 +1,19 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/ripng.py
+        print "ripng"
+        #packet = RIPNG()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
+
blob - /dev/null
blob + d0f9f34d8f432c1eefc13c3c424e558d37fcbfb0 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_snmp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "snmp"
+        packet = UDP(sport=161) / SNMP(community="private", PDU="")
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + fd80afd6e645cd0c2e4c554864bd01d4fcddf362 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_stp.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "stp"
+        packet = STP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 79777ef20284ba873256b55c76e034e2459c76fa (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_tcp.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "tcp"
+        packet = TCP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 7b008358a0135fb0a8334116fddab112e9dd8409 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_tftp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "tftp"
+        packet = IP()/UDP()/TFTP()/TFTP_DATA(block=0)
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + ff6ab54f228994704052a3cfb46fa6bd2537e580 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_udp.py
@@ -0,0 +1,17 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "udp"
+        packet = UDP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + a26cf19181186407419833f0ff81ec2890943bcc (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_vqp.py
@@ -0,0 +1,20 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        # vqp
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/vqp.py
+        print "vqp"
+        #packet = VQP()
+        #re_output = ""
+        #helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 7d5217c3b4331023a6cb7bd51cfbca8ae6ccd0a8 (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/proto_vrrp.py
@@ -0,0 +1,18 @@
+#/usr/local/bin/env python
+
+import helper
+import logging
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+def main():
+
+        print "vrrp"
+        packet = UDP()
+        re_output = ""
+        helper.chck(packet, re_output)
+
+
+if __name__ == "__main__":
+        main()
blob - /dev/null
blob + 12618473062572f7517647d3220d9b2c868b1313 (mode 644)
Binary files /dev/null and tests/tcpdump-regress/sample-tcp.pcap differ
blob - /dev/null
blob + 5b2ebcb491a68c24a390aa8ca160eef0ae44d44c (mode 644)
--- /dev/null
+++ tests/tcpdump-regress/send.py
@@ -0,0 +1,333 @@
+#/usr/local/bin/env python
+
+import subprocess as sub
+import logging
+import time
+import os
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+from scapy.all import *
+logging.getLogger("scapy.runtime").setLevel(logging.WARNING)
+
+iface = 'em0'
+
+# sudo modprobe dummy
+# sudo ip link set name eth10 dev dummy0
+# ip link show eth10
+# ip link set dev eth10 up
+
+def chck(pkt, re_output, debug=False):
+
+        if os.getuid() != 0:
+            print "root priveleges is required"
+            exit(1)
+
+        if isinstance(pkt, list):
+            packet_count = len(pkt)
+        else:
+            packet_count = 1
+
+        p = sub.Popen(('doas', 'tcpdump', '-i', iface, '-c', str(packet_count)),
+                        stdout=sub.PIPE, stderr=sub.PIPE)
+        while True:
+            if p.poll() is None:
+                break
+
+        # time.sleep(2)
+        send(pkt, iface=iface, verbose=1)
+
+	pkt.show()
+	print p.communicate()[0]
+        p.wait()
+
+
+def main():
+
+        # 802_11 ???
+ 
+        print "arp"
+        packet = ARP(op=ARP.who_has, psrc='192.168.1.2', pdst='192.168.1.1')
+        re_output = ""
+        chck(packet, re_output)
+
+        # atalk
+        # atm
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/bgp.py
+        #print "bgp"
+        #packet = IP()/TCP()/BGPUpdate()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        print "bootp"
+        packet = BOOTP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/carp.py
+        #print "carp"
+        #packet = CARP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # cdp
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/cdp.py
+        #print "cdp"
+        #packet = CDP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # cnfp
+        # decnet
+
+        print "dhcp6"
+        packet = DHCP(options=[("message-type", "discover"), "end"])
+        re_output = ""
+        chck(packet, re_output)
+
+        print "domain"
+        packet = IP() / UDP(dport=53) / DNS(qd=DNSQR(qname="google.com"))
+        re_output = ""
+        chck(packet, re_output)
+
+        packet = TCP(dport=53)
+        re_output = ""
+        chck(packet, re_output)
+
+        # dvmrp
+        # enc
+        
+        print "ether"
+        packet = Ether()
+        re_output = ""
+        chck(packet, re_output)
+
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/etherip.py
+        #print "etherip"
+        #packet = EtherIP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # fddi
+        # frag6
+        
+        print "gre"
+        packet = GRE()
+        re_output = ""
+        chck(packet, re_output)
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/gtp.py
+        #print "gtp"
+        #packet = GTP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        print "hsrp"
+        packet = Ether(src=’00:00:0C:07:AC:02’, dst=’01:00:5E:00:00:02’ ) /
+                    IP(dst=’224.0.0.2’, src='attacerIP', ttl=1) / 
+                    UDP() /
+                    HSRP(priority=230, virtualIP='virtualIP'), inter=3, loop=1)
+        re_output = ""
+        chck(packet, re_output)
+
+        # iapp ???
+
+        print "icmp"
+        packet = IP(dst="192.168.1.1", ttl=128) / ICMP()
+        re_output = ""
+	tcpdump_opt = "-v ip and 'ip[8]>128'"
+        chck(packet, re_output)
+
+        print "icmp6"
+        packet = ICMPv6EchoRequest()
+        re_output = ""
+        chck(packet, re_output)
+
+        # igrp
+
+        # ike
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/ikev2.py
+        #print "ike"
+        #packet = IKEv2()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        print "ip"
+        packet = IP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # ip6
+        # ip6opts
+        # ipsec
+        # ipx
+        # isoclns
+        # krb
+
+        print "l2tp"
+        packet = L2TP()
+        re_output = ""
+        chck(packet, re_output)
+
+        print "llc"
+        packet = LLC()
+        re_output = ""
+        chck(packet, re_output)
+
+        # lldp
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/lldp.py
+        #load_contrib('lldp')
+        #print "lldp"
+        #packet = LLDP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # lwres
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/mpls.py
+        #print "mpls"
+        #packet = MPLS()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # netbios
+        # nfs
+
+        print "ntp"
+        packet = IP()/UDP(dport=123)/Raw(load=str("\x17\x00\x03\x2a") + str("\x00")*4)
+        re_output = ""
+        chck(packet, re_output)
+
+        # null
+        # ofp
+
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/ospf.py
+        #load_contrib('ospf')
+        #print "ospf"
+        #packet = OSPF()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # ospf6
+        # pflog
+        # pfsync
+        # pim
+
+        print "ppp"
+        packet = PPP()
+        re_output = ""
+        chck(packet, re_output)
+
+        #print "radius"
+        #packet = Radius()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        print "raw"
+        packet = Raw()
+        re_output = ""
+        chck(packet, re_output)
+
+        print "rip"
+        packet = RIP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # ripng
+        # https://github.com/secdev/Scapy/blob/master/scapy/contrib/ripng.py
+        #print "ripng"
+        #packet = RIPNG()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        # rt6
+        # sl
+        # slow
+
+        print "snmp"
+        packet = UDP(sport=161) / SNMP(community="private", PDU="")
+        re_output = ""
+        chck(packet, re_output)
+
+        print "stp"
+        packet = STP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # sunrpc
+
+        print "tcp"
+        packet = TCP()
+        re_output = ""
+        chck(packet, re_output)
+
+        print "tftp"
+        packet = IP()/UDP()/TFTP()/TFTP_DATA(block=0)
+        re_output = ""
+        chck(packet, re_output)
+
+        # timed
+
+        print "udp"
+        packet = UDP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # udpencap
+
+        # vqp
+        # https://github.com/secdev/scapy/blob/master/scapy/contrib/vqp.py
+        #print "vqp"
+        #packet = VQP()
+        #re_output = ""
+        #chck(packet, re_output)
+
+        print "vrrp"
+        packet = UDP()
+        re_output = ""
+        chck(packet, re_output)
+
+        # wb
+
+if __name__ == "__main__":
+        main()
+
+"""
+from scapy.all import *
+import urllib
+import urlparse
+import threading
+import re
+
+proxy   = "http://my.proxy.server:8080"
+proxyIP = "1.2.3.4" # IP address of proxy
+
+# list of URLs
+urls = ["http://www.bbc.co.uk/news",
+        "http://www.google.co.uk"]
+
+packets = []
+
+# packet callback
+def pkt_callback(pkt):
+    packets.append(pkt) # save the packet
+
+# monitor function
+def monitor(fname):
+    del packets[:]
+    bpf_filter = "tcp and host " + proxyIP       # set this filter to capture the traffic you want
+    sniff(timeout=60, prn=pkt_callback, filter=bpf_filter, store=0)
+    f=open(fname+".data", 'w')
+    for pkt in packets:
+        f.write(repr(pkt))  # or just save the raw packet data instead
+        f.write('\n')
+    f.close()
+
+for url in urls:
+    print "capturing: " + url
+    mon = threading.Thread(target=monitor, args=(re.sub(r'\W+', '', url),))
+    mon.start()
+    data = urllib.urlopen(url, proxies={'http': proxy})
+    # this line gets IP address of url host, might be helpful 
+    # addr = socket.gethostbyname(urlparse.urlparse(data.geturl()).hostname)
+    mon.join()
+"""