【发布时间】:2016-03-25 06:36:11
【问题描述】:
我想知道是否有可能在没有 root 权限的情况下运行 Scapy 的 'sniff(...)'。
它用于捕获某些包的应用程序中。但我不想以 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 功能也无济于事。
【问题讨论】:
-
sniff() 需要设置混杂模式,因此功能 CAP_NET_ADMIN 应该足以让您的程序运行(参见 man capabilities(7))
-
抱歉,但我对功能不是很熟悉:我是否必须将这些设置到我的脚本、scapy 库甚至其他地方?
-
如果您希望普通用户在没有权限提升的情况下使用该程序(例如here),您可以使用 setcap(8) 作为 root 设置脚本功能。
-
感谢您的指导,但没有引起任何反应。我添加了更多信息和我运行的测试。
标签: python-2.7 scapy sniffing linux-capabilities