rendered paste body--- old/p0f2.py 2007-06-12 14:11:16.000000000 -0500
+++ bin/p0f2.py 2007-06-12 14:10:56.000000000 -0500
@@ -434,25 +434,25 @@
return match
class P0f(object):
- def __init__(self, synconf='p0f.fp', synackconf='p0fa.fp',
- rstconf='p0fr.fp', match=True, rewrite=False):
+ def __init__(self, synconf='share/p0f.fp', synackconf='share/p0fa.fp',
+ rstconf='share/p0fr.fp', match=True, rewrite=False):
self.matchdb = {}
self.rewritedb = {}
if synconf:
- bh = load_config(dsniff.path_open(synconf))
+ bh = load_config(open(synconf))
if match:
self.matchdb[dpkt.tcp.TH_SYN] = bh
if rewrite:
self.rewritedb[dpkt.tcp.TH_SYN] = self._match_to_rewrite(bh)
if synackconf:
- bh = load_config(dsniff.path_open(synackconf))
+ bh = load_config(open(synackconf))
if match:
self.matchdb[dpkt.tcp.TH_SYN|dpkt.tcp.TH_ACK] = bh
if rewrite:
bh = self._match_to_rewrite(bh)
self.rewritedb[dpkt.tcp.TH_SYN|dpkt.tcp.TH_ACK] = bh
if rstconf:
- bh = load_config(dsniff.path_open(rstconf))
+ bh = load_config(open(rstconf))
if match:
self.matchdb[dpkt.tcp.TH_RST] = bh
self.matchdb[dpkt.tcp.TH_RST|dpkt.tcp.TH_ACK] = bh
@@ -528,14 +528,19 @@
import dnet, dsniff
-class P0f2(dsniff.IPReader):
- pcap_filter = '(tcp[13] & 0x%x != 0)' % (dpkt.tcp.TH_SYN|dpkt.tcp.TH_RST)
+class P0f2(dsniff.Handler):
+ name = 'p0f2'
def setup(self):
self.p0f = P0f()
self.ipcache = { dpkt.tcp.TH_SYN:{}, dpkt.tcp.TH_RST:{} }
+ self.subscribe('pcap', '(tcp[13] & 0x%x != 0)' % (dpkt.tcp.TH_SYN|dpkt.tcp.TH_RST), self.recv_pkt)
- def recv_ip(self, ts, ip):
+ def teardown(self):
+ print >>sys.stderr, 'caught %s unique ips' % (len(self.cache),)
+
+ def recv_pkt(self, pc, pkt):
+ ip = dpkt.ethernet.Ethernet(pkt).ip
f = ip.tcp.flags & (dpkt.tcp.TH_SYN|dpkt.tcp.TH_RST)
if ip.src not in self.ipcache[f]:
self.ipcache[f][ip.src] = 1