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 |
我尝试在脚本顶部添加
我也遵循了这里的建议,并将第 34 行的 arch/unix.py 从 “
我正在运行 OSX 10.5.9 – 一直在努力让 scapy 正常工作 – 在安装 dnet/pcap 库后,我也得到了”OSError:设备未配置”。尝试用
替换 unix.py 中的第 34 行
仍然出现同样的错误。但是当我在 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 共享网桥接口。在这种情况下,正确的解决方法是将相同的字符串替换为
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/python/267875.html