我在python终端上键入了这个:
from scapy.all import *
traceroute("gmail.com")
得到这个错误:
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/dist-packages/scapy/layers/inet.py",
line 1428, in traceroute
timeout=timeout, filter=filter, verbose=verbose, **kargs)
File "/usr/local/lib/python3.6/dist-packages/scapy/sendrecv.py",
line 326, in sr
s = conf.L3socket(filter=filter, iface=iface, nofilter=nofilter)
File "/usr/local/lib/python3.6/dist-packages/scapy/arch/linux.py",
line 326, in __init__
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
socket.htons(type))
File "/usr/lib/python3.6/socket.py", line 144, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
PermissionError: [Errno 1] Operation not permitted
我已经尝试过在网上搜索解决方案,但没有成功。我很乐意在我遇到的这个问题上得到帮助;提前谢谢。
traceroute
需要访问原始套接字,因此,由于原始套接字受到Linux 的限制,您需要以root身份启动python
启动shell时键入sudo python
,或者键入sudo scapy
(要预先配置scapy shell(,或者如果是程序文件,则键入sudo python yourprogram.py