【发布时间】:2021-02-12 03:37:07
【问题描述】:
我正在 Visual Studio 和 windows 10 x64 下使用 c++ 创建一个简单的嗅探器,但是当我尝试运行它时。我得到了Failed to create raw socket.,这是因为管理员权限,但我正在访问互联网。我可以使用 CAP_NET_ADMIN 之类的东西,但它是基于 linux 的。有没有办法在windows下做wireshark等非root用户的工作?
//Initialise Winsock
printf("\nInitialising Winsock...");
if (WSAStartup(MAKEWORD(2,2), &wsa) != 0)
{
printf("WSAStartup() failed.\n");
return 1;
}
printf("Initialised");
//Create a RAW Socket
printf("\nCreating RAW Socket...");
sniffer = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if (sniffer == INVALID_SOCKET)
{
printf("Failed to create raw socket.\n");
return 1;
}
printf("Created.");
【问题讨论】:
-
您可以提升您的进程权限。无需以其他用户身份运行,
-
socket:"否则返回INVALID_SOCKET的值,调用WSAGetLastError可以得到具体的错误码。"
-
在代码级别我该怎么做?
-
是否有另一种方法可以在不使用管理员的情况下嗅探原始套接字?
-
完全没有,但我想看看它是如何工作的。