| 发表于:2007-12-07 11:44:0710楼 得分:0 |
//myxray.c v0.2 #include <sys/socket.h> #include <sys/types.h> #include <stdio.h> #include <errno.h> #include <sys/ioctl.h> #include <net/if.h> #include <signal.h> #include <netinet/ip.h> #include <netinet/in.h> #include <string.h> #include <arpa/inet.h> #include <netinet/if_ether.h> #include <netinet/ip_icmp.h> #include <time.h> #include <netinet/igmp.h> #define __favor_bsd #include <netinet/tcp.h> #include <netdb.h> #include <netinet/udp.h> #define packet_size 4096 #define eth_hw_addr_len 6 #define ip_addr_len 4 #define lowcounter 10 #define max(a,b) ((a)> (b)?(a):(b)) struct arp_packet { u_char targ_hw_addr[eth_hw_addr_len]; u_char src_hw_addr[eth_hw_addr_len]; u_short frame_type; u_short hw_type; u_short prot_type; u_char hw_addr_size; u_char prot_addr_size; u_short op; u_char sndr_hw_addr[eth_hw_addr_len]; u_char sndr_ip_addr[ip_addr_len]; u_char rcpt_hw_addr[eth_hw_addr_len]; u_char rcpt_ip_addr[ip_addr_len]; u_char padding[18]; } ; void leave(); char * hwaddr (unsigned char *,char *); void writearpbuf(file *,char *,int);//写一个arpbuf到fd中 void writetcpbuf(file *,char *,int); void writeudpbuf(file *,char *,int); void writeigmpbuf(file *,char *,int); void writeicmpbuf(file *,char *,int); int fd_recv = -1 ; time_t one,two,temptime; char arpbufone[packet_size]; char tcpbufone[packet_size]; char udpbufone[packet_size]; char igmpbufone[packet_size]; char icmpbufone[packet_size]; int arpcounter=0,tcpcounter=0,igmpcounter=0,icmpcounter=0,udpcounter=0; char writebuf[packet_size]; file * waringfd; unsigned int total=0,totalarp=0,disarp=0,totaltcp=0,distcp=0, totaludp=0,disudp=0,totalicmp=0,disicmp=0,totaligmp=0,disigmp=0; struct ifreq ifr,ifr_old; | | |
|