Home | Trees | Indices | Help |
|
---|
|
1 # $Id$ 2 3 """Snoop file format.""" 4 5 import sys, time 6 import dpkt 7 8 # RFC 1761 9 10 SNOOP_MAGIC = 0x736E6F6F70000000L 11 12 SNOOP_VERSION = 2 13 14 SDL_8023 = 0 15 SDL_8024 = 1 16 SDL_8025 = 2 17 SDL_8026 = 3 18 SDL_ETHER = 4 19 SDL_HDLC = 5 20 SDL_CHSYNC = 6 21 SDL_IBMCC = 7 22 SDL_FDDI = 8 23 SDL_OTHER = 9 24 25 26 dltoff = { SDL_ETHER:14 } 2729 """snoop packet header.""" 30 __byte_order__ = '!' 31 __hdr__ = ( 32 ('orig_len', 'I', 0), 33 ('incl_len', 'I', 0), 34 ('rec_len', 'I', 0), 35 ('cum_drops', 'I', 0), 36 ('ts_sec', 'I', 0), 37 ('ts_usec', 'I', 0), 38 )3941 """snoop file header.""" 42 __byte_order__ = '!' 43 __hdr__ = ( 44 ('magic', 'Q', SNOOP_MAGIC), 45 ('v', 'I', SNOOP_VERSION), 46 ('linktype', 'I', SDL_ETHER), 47 )4850 """Simple snoop dumpfile writer.""" 557157 if ts is None: 58 ts = time.time() 59 s = str(pkt) 60 n = len(s) 61 pad_len = 4 - n % 4 if n % 4 else 0 62 ph = PktHdr(orig_len=n,incl_len=n, 63 rec_len=PktHdr.__hdr_len__+n+pad_len, 64 ts_sec=int(ts), 65 ts_usec=int((int(ts) - float(ts)) * 1000000.0)) 66 self.__f.write(str(ph)) 67 self.__f.write(s + '\0' * pad_len)6870 self.__f.close()73 """Simple pypcap-compatible snoop file reader.""" 7411976 self.name = fileobj.name 77 self.fd = fileobj.fileno() 78 self.__f = fileobj 79 buf = self.__f.read(FileHdr.__hdr_len__) 80 self.__fh = FileHdr(buf) 81 self.__ph = PktHdr 82 if self.__fh.magic != SNOOP_MAGIC: 83 raise ValueError, 'invalid snoop header' 84 self.dloff = dltoff[self.__fh.linktype] 85 self.filter = ''8688 return self.fd8991 return self.__fh.linktype92 95 98100 if cnt > 0: 101 for i in range(cnt): 102 ts, pkt = self.next() 103 callback(ts, pkt, *args) 104 else: 105 for ts, pkt in self: 106 callback(ts, pkt, *args)107109 self.dispatch(0, callback, *args)110112 self.__f.seek(FileHdr.__hdr_len__) 113 while 1: 114 buf = self.__f.read(PktHdr.__hdr_len__) 115 if not buf: break 116 hdr = self.__ph(buf) 117 buf = self.__f.read(hdr.rec_len - PktHdr.__hdr_len__) 118 yield (hdr.ts_sec + (hdr.ts_usec / 1000000.0), buf[:hdr.incl_len])
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Mar 19 07:50:08 2015 | http://epydoc.sourceforge.net |