int main(int argc, char *argv[], char *envp[]) { int soc, size; u_char buf[65535]; if (argc <= 1) { fprintf(stderr, "pcap device-name\n"); return 1; } if ((soc = InitRawSocket(argv[1], 0, 0)) == -1) { fprintf(stderr, "InitRawSocket:error:%s\n", argv[1]); return -1; } while (1) { if ((size = read(soc, buf, sizeof(buf))) <= 0) perror("read"); else AnalyzePacket(buf, size); } close(soc); return 0; }
int main(int argc, char *argv[], char *envp[]) { pthread_t th1, th2, th3; getArpCache(); // Initialize Physical Interface IP Address if(chgIfIp(NameDev3, inet_addr(dev3IpAddr))==0) { DebugPrintf("Change IP Address\n%s IP: %s\n", NameDev3, dev3IpAddr); } // Get Interface Infomation getIfMac(NameDev1, dev1MacAddr); // getIfIp(NameDev1, dev1IpAddr); getIfMac(NameDev2, dev2MacAddr); //getIfIp(NameDev2, dev2IpAddr); getIfMac(NameDev3, dev3MacAddr); getIfIp(NameDev3, dev3IpAddr); // Init Socket if((Device[0].soc=InitRawSocket(NameDev1,1,0))==-1) { DebugPrintf("InitRawSocket:error:%s\n",NameDev1); return(-1); } DebugPrintf("%s OK\n",NameDev1); if((Device[1].soc=InitRawSocket(NameDev2,1,0))==-1) { DebugPrintf("InitRawSocket:error:%s\n",NameDev2); return(-1); } DebugPrintf("%s OK\n",NameDev2); if((Device[2].soc=InitRawSocket(NameDev3,1,0))==-1) { DebugPrintf("InitRawSocket:error:%s\n",NameDev3); return(-1); } DebugPrintf("%s OK\n",NameDev3); DisableIpForward(); signal(SIGINT,EndSignal); signal(SIGTERM,EndSignal); signal(SIGQUIT,EndSignal); signal(SIGPIPE,SIG_IGN); signal(SIGTTIN,SIG_IGN); signal(SIGTTOU,SIG_IGN); DebugPrintf("Thread Start\n"); int status; if ((status = pthread_create(&th1, NULL, thread1, NULL)) != 0) { printf("pthread_create%s\n", strerror(status)); } if ((status = pthread_create(&th2, NULL, thread2, NULL)) != 0) { printf("pthread_create%s\n", strerror(status)); } if ((status = pthread_create(&th3, NULL, thread3, NULL)) != 0) { printf("pthread_create%s\n", strerror(status)); } pthread_join(th1, NULL); pthread_join(th2, NULL); pthread_join(th3, NULL); close(Device[0].soc); close(Device[1].soc); close(Device[2].soc); return(0); }
int main(int argc,char *argv[],char *envp[]) { int soc,size,c,i; u_char buf[65535]; if(argc<=1){ fprintf(stderr,"pcap device-name\n"); return(1); } if((soc=InitRawSocket(argv[1],0,0))==-1){ fprintf(stderr,"InitRawSocket:error:%s\n",argv[1]); return(-1); } while((c = getopt(argc,argv,"aivctudsA")) != -1){ switch(c){ case 'a': fil[7] = 1; break; case 'i': fil[6] = 1; break; case 'v': fil[5] = 1; break; case 'c': fil[4] = 1; break; case 't': fil[3] = 1; break; case 'u': fil[2] = 1; break; case 'd': fil[1] = 1; break; case 's': fil[0] = 1; break; case 'A': for(i = 0;i < 8;i++){ fil[i] = 1; } break; default: i = -1; printf(" '%s' This option is invalid. prease input any option.\n\n",argv[2]); printf("arp = a,ip = i,ipv6 = v,icmp = c\n\ntcp = t,udp = u,destination = d,source = s,all = A \n\n"); break; } printf("%d\n",fil[7]); } if(argv[2] == null) while(1){ if(i == -1){ break; } if((size=read(soc,buf,sizeof(buf)))<=0){ perror("read"); } else{ AnalyzePacket(buf,size); } } close(soc); return(0); }