Hello :)

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

Reply via email to