xCodeでlibpcapを使用して次のコードを記述しました
#include<pcap.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<unistd.h>
#define MAXBYTES2CAPTURE 2048
void processPacket(u_char *arg,const struct pcap_pkthdr* pkthdr,const u_char* packet){
int i=0,*counter=(int*)arg;
printf("Packet Count:%d\n",++(*counter));
printf("Recived Packet Size:%d\n",pkthdr->len);
printf("Payload:\n");
for(i=0;i<pkthdr->len;i++){
if(isprint(packet[i]))
printf("%c",packet[i]);
else
printf(". ");
if((i%16==0&&i!=0)||i==pkthdr->len-1)
printf("\n");
}
}
int main(){
int count=0;
pcap_t *descr=NULL;
char errbuf[PCAP_ERRBUF_SIZE];
memset(errbuf,0,PCAP_ERRBUF_SIZE);
descr=pcap_open_live("en1", MAXBYTES2CAPTURE, 1, 512, errbuf);
if(descr!=NULL)
pcap_loop(descr, -1, processPacket,(u_char*)&count);
else
printf("ERROR");
return 0;
}
xCode 4.4から実行しているときに「エラー」が表示されますが、製品ディレクトリに移動してターミナルで次のように実行すると:
sudo ./TCP_packet
password:********
私はすでに setuid(0) を使用していますが、まだ xCode では動作しません!!!
では、このプログラムを xCode で root として実行するにはどうすればよいですか? xCode で行う必要がある設定はありますか? xCode ver:4.4
OSX:10.7 Lion
ありがとう