pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/55446 (scapy function send() does not work)
The following reply was made to PR pkg/55446; it has been noted by GNATS.
From: tmp%bh0.amt.ru@localhost
To: gnats-bugs%netbsd.org@localhost, gutteridge%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
pkgsrc-bugs%netbsd.org@localhost, tmp%bh0.amt.ru@localhost
Cc:
Subject: Re: pkg/55446 (scapy function send() does not work)
Date: Fri, 17 Jul 2020 13:07:51 +0300
On 07/15/20 05:25, David H. Gutteridge wrote:
> The following reply was made to PR pkg/55446; it has been noted by GNATS.
>
> From: "David H. Gutteridge" <david%gutteridge.ca@localhost>
> To: gnats-bugs%netbsd.org@localhost
> Cc:
> Subject: Re: pkg/55446 (scapy function send() does not work)
> Date: Tue, 14 Jul 2020 22:22:45 -0400
>
> On Fri, 2020-07-10 at 23:43 +0300, tmp%bh0.amt.ru@localhost wrote:
> > On 07/10/20 23:35, tmp%bh0.amt.ru@localhost wrote:
> > > On 07/06/20 01:25, David H. Gutteridge wrote:
> > > > I hadn't had occasion to try interacting with a loopback device with
> > > > Scapy before, but I borrowed that example from the Scapy test suite
> > > > (where it recorded a pass for me on NetBSD 8.1 when I ran it while
> > > > doing the last package update), but, the difference is, their test
> > > > example targets the IP address "8.8.8.8".
> > >
> > > I tried "8.8.8.8", the result was:
> [...]
> > > >>> sendp(IP(dst="8.8.8.8")/ICMP()/"test"
> > > ... help
> > > File "<console>", line 2
> > > help
> > > ^
> > > SyntaxError: invalid syntax
> > > >>>
> >
> > I'm sorry for the mistake, the right output is:
> >
> > > > > send(IP(dst="8.8.8.8")/ICMP()/"test"
> > ... help
> > File "<console>", line 2
> > help
> > ^
> > SyntaxError: invalid syntax
> > > I realized that something went wrong.
>
> I think you're missing a closing bracket in those examples?
Yes, I'm sorry, the right output is:
# scapy
INFO: Can't import matplotlib. Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
INFO: No IPv6 support in kernel
WARNING: No route found for IPv6 destination :: (no default route?)
INFO: Can't import python-cryptography v1.7+. Disabled WEP decryption/encryption. (Dot11)
INFO: Can't import python-cryptography v1.7+. Disabled IPsec encryption/authentication.
WARNING: IPython not available. Using standard Python shell instead.
AutoCompletion, History are disabled.
aSPY//YASa
apyyyyCY//////////YCa |
sY//////YSpcs scpCY//Pp | Welcome to Scapy
ayp ayyyyyyySCP//Pp syY//C | Version git-archive.dev304758016
AYAsAYYYYYYYY///Ps cY//S |
pCCCCY//p cSSps y//Y | https://github.com/secdev/scapy
SPPPP///a pP///AC//Y |
A//A cyP////C | Have fun!
p///Ac sC///a |
P////YCpc A//A | To craft a packet, you have to be a
scccccp///pSP///p p//Y | packet, and learn how to swim in
sY/////////y caa S//P | the wires and in the waves.
cayCyayP//Ya pY/Ya | -- Jean-Claude Van Damme
sY/PsY////YCc aC//Yp |
sc sccaCY//PCypaapyCP//YSs
spCPY//////YPSps
ccaacs
>>> send(IP(dst="8.8.8.8")/ICMP()/"test")
ERROR: --- Error sending packets
Traceback (most recent call last):
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 197, in _sndrcv_snd
self.pks.send(p)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 317, in send
return os.write(self.outs, raw(x))
OSError: [Errno 47] Address family not supported by protocol family
WARNING: Mac address to reach destination not found. Using broadcast.
WARNING: Could not get the source MAC: No MAC address found on tun4 !
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 319, in send
realtime=realtime, return_packets=return_packets)
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 291, in __gen_send
s.send(p)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 362, in send
L2bpfSocket.send(self, frame)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 317, in send
return os.write(self.outs, raw(x))
OSError: [Errno 47] Address family not supported by protocol family
>>>
> Taking Scapy's ICMP test cases "Sending an ICMP message at layer 2 and
> layer 3" from their test/regression.uts (lines 1337-1344) and running
> them manually (without any prior explicit configration of any kind) on
> 8.2_STABLE/amd64, I get something different:
>
> >>> send(IP(dst="8.8.8.8")/ICMP(), return_packets=True, realtime=True)
> WARNING: Mac address to reach destination not found. Using broadcast.
> .
> Sent 1 packets.
> <PacketList: TCP:0 UDP:0 ICMP:1 Other:0>
My output is:
>>> send(IP(dst="8.8.8.8")/ICMP(), return_packets=True, realtime=True)
ERROR: --- Error sending packets
Traceback (most recent call last):
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 197, in _sndrcv_snd
self.pks.send(p)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 317, in send
return os.write(self.outs, raw(x))
OSError: [Errno 47] Address family not supported by protocol family
WARNING: Mac address to reach destination not found. Using broadcast.
WARNING: Could not get the source MAC: No MAC address found on tun4 !
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 319, in send
realtime=realtime, return_packets=return_packets)
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 291, in __gen_send
s.send(p)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 362, in send
L2bpfSocket.send(self, frame)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 317, in send
return os.write(self.outs, raw(x))
OSError: [Errno 47] Address family not supported by protocol family
>>>
> >>> sendp(Ether()/IP(dst="8.8.8.8")/ICMP(), return_packets=True,
> realtime=True)
> WARNING: Mac address to reach destination not found. Using broadcast.
> .
> Sent 1 packets.
> <PacketList: TCP:0 UDP:0 ICMP:1 Other:0>
> >>>
>
> (In my case, I have a wired wm0 active.)
My output is:
>>> sendp(Ether()/IP(dst="8.8.8.8")/ICMP(), return_packets=True, realtime=True)
ERROR: --- Error sending packets
Traceback (most recent call last):
File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py", line 197, in _sndrcv_snd
self.pks.send(p)
File "/usr/pkg/lib/python3.7/site-packages/scapy/arch/bpf/supersocket.py", line 317, in send
return os.write(self.outs, raw(x))
OSError: [Errno 47] Address family not supported by protocol family
WARNING: Mac address to reach destination not found. Using broadcast.
WARNING: Could not get the source MAC: No MAC address found on tun4 !
.
Sent 1 packets.
<PacketList: TCP:0 UDP:0 ICMP:1 Other:0>
>>>
> > > > Anyway, you'll want to have a
> > > > look at the following link in the Scapy documentation:
> > > >
> > > https://scapy.readthedocs.io/en/latest/troubleshooting.html#i-can-t-ping-127-0-0-1-scapy-does-not-work-with-127-0-0-1-or-on-the-loopback-interface
> > >
> > > I tried the above, the result was:
> > >
> > > # scapy
> > > INFO: Can't import matplotlib. Won't be able to plot.
> > > INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
> > > INFO: No IPv6 support in kernel
> > > WARNING: No route found for IPv6 destination :: (no default route?)
> > > INFO: Can't import python-cryptography v1.7+. Disabled WEP
> > > decryption/encryption. (Dot11)
> > > INFO: Can't import python-cryptography v1.7+. Disabled IPsec
> > > encryption/authentication.
> > > WARNING: IPython not available. Using standard Python shell
> > > instead.
> > > AutoCompletion, History are disabled.
> > >
> > > aSPY//YASa
> > > apyyyyCY//////////YCa |
> > > sY//////YSpcs scpCY//Pp | Welcome to Scapy
> > > ayp ayyyyyyySCP//Pp syY//C | Version git-
> > > archive.dev304758016
> > > AYAsAYYYYYYYY///Ps cY//S |
> > > pCCCCY//p cSSps y//Y |
> > > https://github.com/secdev/scapy
> > > SPPPP///a pP///AC//Y |
> > > A//A cyP////C | Have fun!
> > > p///Ac sC///a |
> > > P////YCpc A//A | Wanna support scapy?
> > > Rate it on
> > > scccccp///pSP///p p//Y | sectools!
> > > sY/////////y caa S//P |
> > > http://sectools.org/tool/scapy/
> > > cayCyayP//Ya pY/Ya | -- Satoshi
> > > Nakamoto
> > > sY/PsY////YCc aC//Yp |
> > > sc sccaCY//PCypaapyCP//YSs
> > > spCPY//////YPSps
> > > ccaacs
> > >
> > > >>> conf.L3socket
> > > <L3bpfSocket: read/write packets using BPF>
> > > >>> conf.L3socket=L3RawSocket
> > > >>> conf.L3socket
> > > <L3RawSocket: Layer 3 using Raw sockets (PF_INET/SOCK_RAW)>
> > > >>> p=IP(dst="127.0.0.1")/ICMP()/"test"
> > > >>> p.show2()
> > > ###[ IP ]###
> > > version= 4
> > > ihl= 5
> > > tos= 0x0
> > > len= 32
> > > id= 1
> > > flags=
> > > frag= 0
> > > ttl= 64
> > > proto= icmp
> > > chksum= 0x7cda
> > > src= 127.0.0.1
> > > dst= 127.0.0.1
> > > \options\
> > > ###[ ICMP ]###
> > > type= echo-request
> > > code= 0
> > > chksum= 0x1026
> > > id= 0x0
> > > seq= 0x0
> > > ###[ Raw ]###
> > > load= 'test'
> > >
> > > >>> send(p)
> > > Traceback (most recent call last):
> > > File "<console>", line 1, in <module>
> > > File "/usr/pkg/lib/python3.7/site-packages/scapy/sendrecv.py",
> > > line 316, in send
> > > socket = socket or conf.L3socket(*args, **kargs)
> > > File "/usr/pkg/lib/python3.7/site-packages/scapy/supersocket.py",
> > > line 150, in __init__
> > > self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
> > > socket.htons(type)) # noqa: E501
> > > AttributeError: module 'socket' has no attribute 'AF_PACKET'
> > >
> > > > Separately...
> > > >
> > > > >I'd like to clarify the environment of the bug:
> > > > >(1) I have no active Ethernet or SLIP interfaces;
> > > > >(2) I have active Wi-Fi and tun interfaces.
> > > > >
> > > > >According to the "man 4 bpf": "A packet can be sent out on the network
> > > > >by writing to a bpf file descriptor. The writes are unbuffered, meaning
> > > > >only one packet can be processed per write. Currently, only writes to
> > > > >Ethernets and SLIP links are supported."
> > > >
> > > > I think there may be a documentation issue or two there. That last
> > > > statement is perhaps outdated (I haven't checked in detail), and refers
> > > > to writes to a link layer which Wi-Fi devices also use. (Note your
> > > > tcpdump output states your iwi0 device's "link-type" is "Ethernet".)
> > > >
> > > > From looking at Scapy commits, it seems NetBSD 8 was the release they
> > > > developed against. So generally we should expect at minimum it's more
> > > > likely to work on 8.x than newer releases.
> > > >
> > > > I don't use Scapy much; I was using bits of it before for specific
> > > > purposes, but not most of its functionality, so issues with it haven't
> > > > been a priority for me to chase. I think in this case some of this
> > > > issue is better directed to the Scapy project. (I will look into the
> > > > bpf documentation aspect.)
> > > >
> > > > Dave
> > >
> > > OK. I'll write to the Scapy project.
>
> Once submitted, please add the Scapy issue number to this PR. We'll keep
> this open, as it may require something from our end. (Separate from any
> NetBSD documentation that needs to be adjusted still.)
>
> Dave
OK, but I have not received any answer from the Scapy Project yet.
--
Alexei
Home |
Main Index |
Thread Index |
Old Index