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

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

待你如初恋10个月前 (06-22)788

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

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

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

Bash
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解释器。

移除特权:

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

查看是否移除了特权:

Bash
getcap xxxxxxx/scapy_env/bin/python3.11


  • 查找可执行文件路径:

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

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

  • 解析实际文件路径:

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

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

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

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

标签: TCP/IP

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

数据链路层

数据链路层

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

发表评论

访客

看不清,换一张

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