Python使用Raw socket触发WinError 10013权限错误问题咨询
错误原因
Windows 从 XP SP2 版本开始对原始套接字 socket.SOCK_RAW 增加了严格的权限管控规则,只有具备管理员权限的进程才有权限创建、使用原始套接字。你遇到的 10013 错误就是当前运行 Python 代码的进程没有管理员权限,系统拦截了原始套接字的创建请求导致的。
解决方法
- 以管理员身份运行代码执行环境:右键点击你用来运行代码的程序(CMD、PowerShell、Pycharm、VS Code 等均可),选择「以管理员身份运行」,再执行你的嗅探代码即可正常创建原始套接字。
- 如果你需要长期调试该工具,可以设置程序默认以管理员身份启动:右键对应程序的快捷方式→选择「属性」→切换到「兼容性」标签页→勾选「以管理员身份运行此程序」,保存设置后每次打开程序自动获取对应权限,无需每次手动选择。
- 若管理员运行后仍然报错,可暂时关闭第三方防火墙、Windows Defender 网络防护功能后重试,部分安全防护规则会额外拦截原始套接字的调用请求。
补充优化建议:如果你需要抓取所有 IP 层的数据包,不限于 TCP 协议,可将套接字创建代码的第三个参数改为
socket.IPPROTO_IP,后续自行解析 IP 头和上层协议内容,更适配手动实现嗅探工具的需求。
内容的提问来源于stack exchange,提问作者MLG Herobrine
相关产品推荐
相关产品推荐

