首页 电脑 电脑学堂 查看内容

sniff教程

2004-11-15 05:57 1200 0

摘要: /*by:sunwearhttp://blog.csdn.net/sunwear*/#include <stdio.h>#include <stdlib.h>#include ...
关键词: nbsp include char ERROR printf struct buffer buffcmp exit ETHHDRSIZE

/*by:sunwearhttp://blog.csdn.net/sunwear*/#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/wait.h>#include <sys/ioctl.h>#include <sys/stat.h>#include <netdb.h>#include <net/if.h>#include <linux/if_ether.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/ip_icmp.h>#include <netinet/ip_tcp.h>#include "spoof.c" #define ERROR      -1#define ETHHDRSIZE 14 #ifdef SYSV#define bcopy(s1,s2,len) memcpy(s2,s1,len)#endif char buffcmp[255]; unsigned long host2ip(char *serv){   struct sockaddr_in sinn;   struct hostent     *hent;        if ((hent = gethostbyname(serv)) == NULL) {     herror("gethostbyname");     exit(ERROR);  }    bzero((char *)&sinn, sizeof(sinn));  bcopy(hent->h_addr, (char *)&sinn.sin_addr, hent->h_length);  return sinn.sin_addr.s_addr;} char *Lookit(char *buff, char *file){  FILE *fd;  bzero(buffcmp, 255);   if ((fd = fopen(file, "r")) == NULL) {     perror("fopen");     exit(ERROR);  }    while (!feof(fd)){     fscanf(fd, "%s", buffcmp);      if(strstr(buff, (char *)&buffcmp)) {       fclose(fd);       return((char *)&buffcmp);            }  }  fclose(fd);      return NULL;}                          void main(int argc, char **argv){     int s;  int i, x;   struct ifreq  ifr;  struct iphdr  *ip;  struct tcphdr *tcp;   char *data;  char *BANWORD;  char buffer[4000];   printf("sunwear\n");   if(argc < 3) {     printf(" usage: %s <device> <banwordlist>\n", argv[1]);     exit(ERROR);  }     /*************************** TCP-IP STUFF   *****************************/  ip   = (struct iphdr  *)(buffer+ETHHDRSIZE);  tcp  = (struct tcphdr *)(buffer+ETHHDRSIZE+IPHDRSIZE);  data = (char *)(buffer+ETHHDRSIZE+IPHDRSIZE+TCPHDRSIZE);   bzero(buffer, sizeof(buffer));            /************************** INTERFACE STUFF  ***************************/        strcpy(ifr.ifr_name, argv[1]);  if ((s = socket(AF_INET, SOCK_PACKET,IPPROTO_EGP)) == ERROR) {     perror("socket");     exit(ERROR);  }     if(ioctl(s, SIOCGIFFLAGS, &ifr) == ERROR) {       perror("ioctl");       close(s);       exit(ERROR);  }     ifr.ifr_flags |= IFF_PROMISC;   if(ioctl(s, SIOCSIFFLAGS, &ifr) == ERROR) {        perror("ioctl");        close(s);        exit(ERROR);  }   while(1) {     if ((x = read(s, buffer, 400)) == ERROR) {       perror("read");       close(s);       exit(ERROR);    }     if(ip->protocol == 6)       if((BANWORD = Lookit(data, argv[2])) != NULL) {            printf("BANWORD !!!\033[05m\033[01m\033[31m%s\033[0m!!!\n",               BANWORD);               printf("%s:%d->",         (char *)inet_ntoa(ip->saddr), ntohs(tcp->th_sport));            printf("%s:%d",        (char *)inet_ntoa(ip->daddr), ntohs(tcp->th_dport));             printf("-->");                             for(i=0; i < ntohs(ip->tot_len)-IPHDRSIZE-TCPHDRSIZE; i++)            printf("%c", *(data + i));            printf("<--\n");       }  }}
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部