在Windows中用Python发送原始套接字时出错

1 投票
1 回答
721 浏览
提问于 2025-04-18 01:27

我正在Windows系统上用Python创建一个原始套接字,但它不工作。我看到这可能是因为权限的问题。有没有人知道我怎么检查自己是否有权限,或者怎么获得这些权限?谢谢!

这是我写了三行代码后出现的错误信息:

import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)

enter image description here

1 个回答

2

你需要是管理员组的成员。

可以查看 TCP/IP 原始套接字 在 MSDN 上的内容:

原始套接字允许你直接操作底层的传输,这样就可能被用来做一些恶意的事情,带来安全威胁。因此,从 Windows 2000 及以后版本开始,只有管理员组的成员才能创建类型为 SOCK_RAW 的套接字。

还有

注意 要使用类型为 SOCK_RAW 的套接字,需要有管理员权限。运行使用原始套接字的 Winsock 应用程序的用户必须是本地计算机的管理员组成员,否则原始套接字的调用会失败,并返回错误代码 WSAEACCES。在 Windows Vista 及更高版本中,原始套接字的访问权限是在创建套接字时进行检查的。而在更早版本的 Windows 中,原始套接字的访问权限是在其他套接字操作时进行检查的。

撰写回答