我想知道是否有可能在没有 root 权限的情况下运行 Scapy 的“嗅探(...)”。

它用于捕获某些包的应用程序中。但我不想使用 root 权限运行整个应用程序或更改 scapy 本身的任何内容。

提前致谢!

编辑:

为了测试,我使用以下代码:

from scapy.all import *

def arp_monitor_callback(pkt):
    if ARP in pkt and pkt[ARP].op in (1,2): #who-has or is-at
        return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%")

sniff(prn=arp_monitor_callback, filter="arp", store=0)

我只能使用 sudo 运行它。

我尝试使用 sudo setcap 'cap_net_admin=+eip' test.py 设置功能。但它没有显示任何效果。甚至 all 功能也无济于事。

最佳答案

如果您希望能够仅以./test.py的身份执行脚本,则需要为运行脚本的二进制文件(即python和tcpdump)设置功能:

setcap cap_net_raw=eip /usr/bin/pythonX.X
setcap cap_net_raw=eip /usr/bin/tcpdump

其中X.X是用于运行脚本的python版本。

(请注意,您的系统上的路径可能不同)

请注意,这允许任何人打开系统上的原始套接字。

关于python-2.7 - 没 Root过的Python Scapy嗅探,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36215201/

10-12 16:51