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 ): 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”

评论(0)