当前位置:首页 > TCP/IP > 正文内容

解决使用scapy库无法发包问题

待你如初恋11个月前 (06-22)990

使用了root用户还是提示没有权限:PermissionError: [Errno 1] Operation not permitted


原因:运行脚步是使用了root权限,但是如果python解释器没有执行原始套接字的访问权限和网络管理权限,就会出现上面的错误。


解决:使用 setcap 命令对实际的 Python 解释器设置权限:

sudo setcap cap_net_raw,cap_net_admin=eip xxxxxxx/scapy_env/bin/python3.11

“xxxxxxx/scapy_env/bin/python3.11”是python解释器实际的位置(readlink -f $(which python3)命令可以获取到)


setcap命令用于给指定的可执行文件(这里是Python解释器)设置特定的能力,使其在执行过程中具有指定的权限。

cap_net_raw和cap_net_admin是两个网络相关的能力,分别表示对原始套接字的访问权限和网络管理权限。

eip表示将这两个能力授予指定的可执行文件,即Python解释器。


移除特权:

sudo setcap -r xxxxxxx/scapy_env/bin/python3.11


查看是否移除了特权:

getcap xxxxxxx/scapy_env/bin/python3.11



  • 查找可执行文件路径:

    • 使用 which python3 可以快速找到 python3 的路径,但可能是符号链接。如果路径是一个符号链接(symlink),它不会解析符号链接到实际文件。

    • 适合快速检查命令路径。

  • 解析实际文件路径:

    • 使用 readlink -f $(which python3) 可以找到 python3 的实际文件路径,特别是当你需要对实际文件进行操作(如设置权限)时。

    • 适合需要实际文件路径的场景,如设置特权或进行其他需要实际路径的操作。



版权声明:本文由学习记录吧发布,如需转载请注明出处。

本文链接:https://www.xxjl8.com/?id=30

标签: TCP/IP
分享给朋友:

“解决使用scapy库无法发包问题” 的相关文章

数据链路层

数据链路层

为什么使用Wireshark抓包 (enp4s0网卡)ARP ,帧的长度只有42个字节?因为Wireshark 抓包位置如果是在本地,那么对于本地产生所发出的数据包,是在进网卡之前所抓取的包,而填充数据以及 CRC(上面的FCS4个字节) 一般是由网卡硬件/驱动程序完成,所以 42 字节的组成并不包...

Scapy中发送数据包的函数集合

在 Scapy 中,有多个函数用于发送数据包,每个函数适用于不同的协议层。下面详细解释这些函数及其用途:send()用途: 发送数据包到网络(通常用于三层,即网络层)。适用层: 网络层(第三层),例如 IP 层。使用场景: 发送 IP 层的数据包,如 TCP/UDP 数据包。from sc...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。