diff options
author | 2016-03-21 16:03:47 +0200 | |
---|---|---|
committer | 2016-03-21 16:03:47 +0200 | |
commit | b89efa188810bf95a9d245e69e2961b5721c3b0f (patch) | |
tree | 454273ac6c4ae972ebb8a2c86b893296970b4fa9 /scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py | |
parent | f72c6df9d2e9998ae1f3529d729ab7930b35785a (diff) |
scapy python 2/3
Diffstat (limited to 'scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py')
-rw-r--r-- | scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py b/scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py new file mode 100644 index 00000000..2c1efa4c --- /dev/null +++ b/scripts/external_libs/scapy-2.3.1/python2/scapy/tools/check_asdis.py @@ -0,0 +1,103 @@ +#! /usr/bin/env python + +import getopt + +def usage(): + print >>sys.stderr,"""Usage: check_asdis -i <pcap_file> [-o <wrong_packets.pcap>] + -v increase verbosity + -d hexdiff packets that differ + -z compress output pcap + -a open pcap file in append mode""" + +def main(argv): + PCAP_IN = None + PCAP_OUT = None + COMPRESS=False + APPEND=False + DIFF=False + VERBOSE=0 + try: + opts=getopt.getopt(argv, "hi:o:azdv") + for opt, parm in opts[0]: + if opt == "-h": + usage() + raise SystemExit + elif opt == "-i": + PCAP_IN = parm + elif opt == "-o": + PCAP_OUT = parm + elif opt == "-v": + VERBOSE += 1 + elif opt == "-d": + DIFF = True + elif opt == "-a": + APPEND = True + elif opt == "-z": + COMPRESS = True + + + if PCAP_IN is None: + raise getopt.GetoptError("Missing pcap file (-i)") + + except getopt.GetoptError,e: + print >>sys.stderr,"ERROR: %s" % e + raise SystemExit + + + + from scapy.config import conf + from scapy.utils import RawPcapReader,RawPcapWriter,hexdiff + from scapy.layers import all + + + pcap = RawPcapReader(PCAP_IN) + pcap_out = None + if PCAP_OUT: + pcap_out = RawPcapWriter(PCAP_OUT, append=APPEND, gz=COMPRESS, linktype=pcap.linktype) + pcap_out._write_header(None) + + LLcls = conf.l2types.get(pcap.linktype) + if LLcls is None: + print >>sys.stderr," Unknown link type [%i]. Can't test anything!" % pcap.linktype + raise SystemExit + + + i=-1 + differ=0 + failed=0 + for p1,meta in pcap: + i += 1 + try: + p2d = LLcls(p1) + p2 = str(p2d) + except KeyboardInterrupt: + raise + except Exception,e: + print "Dissection error on packet %i" % i + failed += 1 + else: + if p1 == p2: + if VERBOSE >= 2: + print "Packet %i ok" % i + continue + else: + print "Packet %i differs" % i + differ += 1 + if VERBOSE >= 1: + print repr(p2d) + if DIFF: + hexdiff(p1,p2) + if pcap_out is not None: + pcap_out.write(p1) + i+=1 + correct = i-differ-failed + print "%i total packets. %i ok, %i differed, %i failed. %.2f%% correct." % (i, correct, differ, + failed, i and 100.0*(correct)/i) + + +if __name__ == "__main__": + import sys + try: + main(sys.argv[1:]) + except KeyboardInterrupt: + print >>sys.stderr,"Interrupted by user." |