OSX connection sharing and Scapy

我正在使用 Scapy 使用以下代码嗅探网络流量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from scapy. all import *

import sys

filter = sys. argv [ 1 ]

def Responder ( ):

    def getPacket (pkt ):
        if Raw in pkt:   print pkt [Raw ]

    return getPacket

sniff ( filter = filter , prn =Responder ( ) )

如果我只是浏览一个网站,这段代码就可以正常工作。

问题是,当我打开连接共享并尝试运行此脚本时,我收到以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bash- 3.2 # sudo python sniffy.py”tcp port 80″
Traceback (most recent call last ):
  File “sniffy.py” , line 1 , in <module >
    from scapy. all import *
  File “/Library/Python/2.7/site-packages/scapy/all.py” , line 25 , in <module >
    from route import *
  File “/Library/Python/2.7/site-packages/scapy/route.py” , line 162 , in <module >
    conf. route =Route ( )
  File “/Library/Python/2.7/site-packages/scapy/route.py” , line 22 , in __init__
    self. resync ( )
  File “/Library/Python/2.7/site-packages/scapy/route.py” , line 31 , in resync
    self. routes = read_routes ( )
  File “/Library/Python/2.7/site-packages/scapy/arch/unix.py” , line 87 , in read_routes
    ifaddr = scapy. arch. get_if_addr (netif )
  File “/Library/Python/2.7/site-packages/scapy/arch/__init__.py” , line 36 , in get_if_addr
    return socket. inet_ntoa (get_if_raw_addr (iff ) )
  File “/Library/Python/2.7/site-packages/scapy/arch/pcapdnet.py” , line 188 , in get_if_raw_addr
    return i. get (ifname ) [ “addr” ]. data
  File “dnet.pyx” , line 990 , in dnet. intf. get
OSError: Device not configured

我尝试在脚本顶部添加 “conf.iface=en1” 。这给出了同样的错误。 en1 是一个有效的接口。

我也遵循了这里的建议,并将第 34 行的 arch/unix.py 从 ” os.popen(“netstat -rn”) ” 更改为 ” os.popen(“netstat -rn | grep -v vboxnet”) “。这没有解决它。


我正在运行 OSX 10.5.9 – 一直在努力让 scapy 正常工作 – 在安装 dnet/pcap 库后,我也得到了”OSError:设备未配置”。尝试用

替换 unix.py 中的第 34 行

“netstat -rn | grep -v vboxnet”

仍然出现同样的错误。但是当我在 if 块的 “else” 部分更改第 37 行时:

1
2
3
4
5
6
7
8
def read_routes ( ):
    if scapy. arch. SOLARIS:
        f = os. popen ( “netstat -rvn” ) # -f inet
    elif scapy. arch. FREEBSD:
        f = os. popen ( “netstat -rnW” ) # -W to handle long interface names
    else:
        # f=os.popen(“netstat -rn”) # -f inet
        f = os. popen ( “netstat -rn | grep -v vboxnet” ) # -f inet

像魅力一样工作!


我正在运行 OSX 10.10.3,并且一直在努力让 scapy 工作。我尝试在 scapy、scapy-real、dnet、dnet-real 上使用 pip install ,但我仍然遇到同样的错误。这真的很令人沮丧,所以我听从了上面 Adam B 的建议,并认为我会添加包含需要更改的 unix.py 文件的文件夹。

在 /usr/local/lib/python2.7/site-packages/scapy/arch/ 中使用 vim、nano 或其他文本编辑器打开 unix.py。

将第 37 行更改为

fs=os.popen(“netstat -rn | grep -v vboxnet”) # -f inet

它应该适合你。我仍然收到一个错误,即无法导入 python gnuplot package器并且也无法导入 PyX。


似乎 scapy 在使用桥接接口时遇到了麻烦。我遇到了同样的问题并修复了它,只是过滤了 Internet 共享网桥接口。在这种情况下,正确的解决方法是将相同的字符串替换为 “netstat -rn | grep -v vboxnet | grep -v bridge”


声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。