私は現在、学士論文の開始段階に取り組んでおり、問題はゲートウェイ (別名ルーター) を実装することです。私は現在、生のソケットを開こうとしているので、イーサネット パケットをシュレッドして開き、そこに含まれるさまざまな種類のフィールドを確認できます。
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 パーミッションを与える方法についての手がかりはありません。
何か案は?