我正在Visual Studio和Windows 10 x64下使用c ++创建一个简单的嗅探器,但是当我尝试运行它时。我得到Failed to create raw socket.
是因为管理员权限,但是我正在通过Internet进行访问。我可以使用类似CAP_NET_ADMIN
的东西,但这是基于linux的。有没有办法在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.");
答案 0 :(得分:1)
原始套接字提供了操作底层套接字的功能 运输,因此它们可用于构成恶意软件的恶意目的 安全威胁。因此,只有管理员组的成员 可以在Windows 2000及更高版本上创建SOCK_RAW类型的套接字。
答案 1 :(得分:0)
如果有人用 Wine 得到这个,你需要允许 wineserver 使用 Ping.SendPrivileged:
sudo setcap CAP_NET_RAW=ep /usr/bin/wine
sudo setcap CAP_NET_RAW=ep /usr/bin/wineserver
sudo setcap CAP_NET_RAW=ep YOUREXE.exe