On Thu, 30 Sep 2010 16:42:39 +0200 Laurent Ghigonis <laur...@gouloum.fr> wrote:
> Hello :) Hi, Yes you need to create a lot of bpf to get a fully functionnal scapy. Attached is a diff that make bpf device clonable if you want to give it a try (Apply it on a -current src). N'hesite pas à repondre en français / si tu as des questions. > > When I send packets with scapy from packages or lastest mercurial, on OpenBSD > -current, I quickly end up with all my /dev/bpf devices used. > I tried to find the problem in the scapy source without success. Also > searched for the problem in scapy ml, but it seems that scapy v2 works > for everybody ... > > Here, scapy seems to use one bpf per paket sent : > > mia# /usr/local/bin/scapy > INFO: Can't import python gnuplot wrapper . Won't be able to plot. > INFO: Can't import PyX. Won't be able to use psdump() or pdfdump(). > Welcome to Scapy (2.0.1) > >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") > . > Sent 1 packets. > >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") > . > Sent 1 packets. > >>> sendp(Ether(dst="00:08:a1:88:26:19")/IP(dst="192.168.3.254")/ICMP(),iface="em0") > . > Sent 1 packets. > >>> > > mia$ fstat |grep bpf > root python2.6 13450 7 / 26794 crw------- rw bpf4 > root python2.6 13450 8 / 26795 crw------- rw bpf5 > root python2.6 13450 10 / 26796 crw------- rw bpf6 > _tcpdump tcpdump 21353 3 / 26793 crw------- r bpf3 > _dhcp dhclient 9089 8 / 26792 crw------- rw bpf2 > _tcpdump tcpdump 13399 3 / 26791 crw------- r bpf1 > _pflogd pflogd 24999 3 / 26790 crw------- rw bpf0 > root pflogd 4077 3 / 26790 crw------- rw bpf0 > > After sending a few more packets, it has used all bpf devices, and i get > > >>> sendp(Ether(dst="00:08:a1:88:26:03")/IP(dst="192.168.3.254")/ICMP(),iface="em0") > Traceback (most recent call last): > File "<console>", line 1, in <module> > File "/usr/local/lib/python2.6/site-packages/scapy/sendrecv.py", line 243, in > sendp > __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, > loop=loop, count=count, verbose=verbose) > File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line > 293, in __init__ > self.outs = dnet.eth(iface) > File "dnet.pyx", line 112, in dnet.eth.__init__ > OSError: No such file or directory > > and for all the following tries > > >>> sendp(Ether(dst="00:08:a1:88:26:03")/IP(dst="192.168.3.254")/ICMP(),iface="em0") > Traceback (most recent call last): > File "<console>", line 1, in <module> > File "/usr/local/lib/python2.6/site-packages/scapy/sendrecv.py", line 243, in > sendp > __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, > loop=loop, count=count, verbose=verbose) > File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line > 270, in __init__ > self.ins = open_pcap(iface, 1600, 0, 100) > File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line > 53, in <lambda> > open_pcap = lambda *args,**kargs: _PcapWrapper_libpcap(*args,**kargs) > File "/usr/local/lib/python2.6/site-packages/scapy/arch/pcapdnet.py", line > 42, in __init__ > self.pcap.open_live(*args, **kargs) > File "/usr/local/lib/python2.6/site-packages/pcap.py", line 86, in open_live > def open_live(*args): return _pcap.pcapObject_open_live(*args) > Exception: /dev/bpf11: No such file or directory > > It tries bpf11 because i created bpf10 just to see. > I specify the mac address manualy because if i don't i get > "WARNING: Mac address to reach destination not found. Using broadcast." > and it uses one more bpf device per paket sent. > > Huhu. Help appreciated :) > laurent > > -- Jonathan Armani
bpf.diff
Description: Binary data