OSX连接共享和Scapy

2024-05-16 16:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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())

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

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

^{pr2}$

我试图在脚本的顶部添加"conf.iface=en1"。这就产生了同样的错误。en1是一个有效的接口。在

我也遵循了here的建议,并更改了arch/unix.py版在第34行从“os.popen("netstat -rn")”到“os.popen("netstat -rn | grep -v vboxnet")”。这没能解决问题。在


Tags: 代码import脚本rawosdef错误sys
3条回答

我运行的是OSX10.10.3,我花了很多时间试图让scapy工作。我试着在scapy、scapyreal、dnet、dnetreal上使用pip安装,但仍然得到相同的错误。它变得非常令人沮丧,所以我听从了上面亚当B的建议,并认为我应该添加一个包含unix.py版需要更改的文件。在

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

将第37行改为

四季酒店=os.popen公司(“netstat-rn | grep-v vboxnet”)#-f inet

它应该对你有用。我仍然得到一个错误:python gnuplot包装器不能导入,PyX也不能导入。在

看来scapy在处理网桥接口时遇到了麻烦。我也遇到了同样的问题,只需过滤掉互联网共享网桥接口就可以了。在这种情况下,right fix将用"netstat -rn | grep -v vboxnet | grep -v bridge"替换相同的字符串

我运行的是OSX 10.5.9—花了很多时间让scapy工作—在安装了dnet/pcap库之后,我得到了OSError:设备不是配置“太。尝试更换中的第34行unix.py版与

"netstat -rn | grep -v vboxnet"

还是有同样的错误。但当我在if块的“else”部分改为第37行时:

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

工作起来很有魅力!在

相关问题 更多 >