Mac OS XでCでコーディングされた単純なパケットスニッファを実行すると、全く出力が得られませんでしたが、これは奇妙なことです!誰かが私が何が起こっているのか理解するのを助けることができますMac OS Xで奇妙なRAWソケット
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void) {
int i, recv_length, sockfd;
u_char buffer[9000];
if ((sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP)) == -1) {
printf("Socket failed!!\n");
return -1;
}
for(i=0; i < 3; i++) {
recv_length = recv(sockfd, buffer, 8000, 0);
printf("Got some bytes : %d\n", recv_length);
}
return 0;
}
私はそれをコンパイルし、私の箱の上にそれを実行し、何が起こっていない:あなたの助けのための
MacOsxBox:Desktop evariste$sudo ./simpleSniffer
感謝。
生のソケットを直接開こうとするのではなく、libpcapを使用してください。 – duskwuff