我目前正在研究我的学士论文的开始阶段,我的问题是实现一个网关(又名路由器)。我目前正在尝试打开一个原始套接字,以便我可以打开一个以太网数据包并检查它包含哪些不同类型的字段。
我正在使用 Codeblocks IDE 在 Debian VM 上编写 C++ 代码。
当尝试通过以下代码打开原始套接字时,我收到一条错误消息:
Error creating raw socket: Operation not permitted
代码:
int CreateRawSocket(int protocol_to_sniff)
{
int s;
if((s = socket(PF_PACKET, RAW_SOCK, htons(protocol_to_sniff))) == -1)
{
perror("Error creating raw socket");
exit(-1);
}
return s;
}
int main()
{
int s = CreateRawSocket(ETH_P_ALL);
}
我搜索了一下,但似乎无法解决问题,尽管我想我知道问题出在哪里。到目前为止,我发现这是权限问题,但我不知道如何赋予代码块 sudo 权限。
有任何想法吗?