⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receive.c~

📁 抓取数据包
💻 C~
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <sys/socket.h>#include <sys/types.h>//#include <linux/in.h>#include <linux/if_ether.h>#include <netinet/ip.h>#include <netinet/tcp.h>#define SERVER_IP "192.168.0.106"#define PWORD(addr) \        ((unsigned char *)&addr)[0],\        ((unsigned char *)&addr)[1]int main(int argc,char **argv){int sock,n;char buffer[2048];unsigned char *iphead,*ethhead,*tcphead,*datahead;struct ip *ip;struct tcphdr * tcp;char *ptr1,*ptr2;struct sockaddr_in serv_addr;int addr_len =sizeof(struct sockaddr_in);serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);//serv_addr.sin_addr.s_addr = htonl(SERVER_IP);	if((sock=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)))<0)	//if((sock=socket(PF_INET,SOCK_STREAM,0))<0)  	{		perror("socket");		exit(1);   	}	printf("\n Now analysis the packets !\n");	while(1)	{		  printf("============================================\n");	  //n=recvfrom(sock,buffer,2048,0,NULL,NULL);	  //n=recvfrom(sock,buffer,2048,0,(struct sockaddr *)&serv_addr,(socklen_t *)&addr_len);	n=recvfrom(sock,buffer,2048,0,NULL,NULL);	  printf("%d bytes read : \n",n);	  if(n<42)	    {		perror("recvfrom():");		printf("Incomplete packet(errorno is %d)\n",errno);		close(sock);		exit(0);	    }	  ethhead=(unsigned char *)buffer;	  printf("DST MAC address:%02x:%02x:%02x:%02x:%02x:%02x\n",ethhead[0],ethhead[1],ethhead[2],ethhead[3],ethhead[4],ethhead[5]);	  printf("SOURCE   MAC address:%02x:%02x:%02x:%02x:%02x:%02x\n",ethhead[6],ethhead[7],ethhead[8],ethhead[9],ethhead[10],ethhead[11]);/*-----------------IP Head-------------------------*/iphead=(unsigned char *)(buffer+14);//	  ip=(struct ip *)(buffer+14);	  if(*iphead==0x45)	   {		ip=(struct ip *)iphead;				//printf("Source host %d.%d.%d.%d\n",iphead[12],iphead[13],iphead[14],iphead[15]);		//printf("Dest host %d.%d.%d.%d\n",iphead[16],iphead[17],iphead[18],iphead[19]);		printf("IP Header IP->ip_v        : %d\n",ip->ip_v);		printf("IP Header IP->ip_hl       : %d\n",ip->ip_hl);		printf("IP Header IP->ip_tos      : %d\n",ip->ip_tos);		printf("IP Header IP->ip_total_len: %d\n",ntohs(ip->ip_len));		printf("IP Header IP->ip_ident    : %d\n",ntohs(ip->ip_id));		printf("IP Header IP->ip_offset   : %d\n",PWORD(ip->ip_off));		printf("IP Header IP->ip_ttl      : %d\n",ip->ip_ttl);		printf("IP Header IP->ip_proto    : %d\n",ip->ip_p);		printf("IP Header IP->ip_checksum : %d\n",PWORD(ip->ip_sum));		printf("IP Header IP->ip_SRC_IP   : %s\n",inet_ntoa(ip->ip_src));		printf("IP Header IP->ip_DST_IP   : %s\n",inet_ntoa(ip->ip_dst));	    }printf("-------------------------------------------\n");/*-----------------TCP Head------------------------*/tcphead=(iphead+20);	tcp=(struct tcphdr *)tcphead;	printf("TCP Header TCP->sport      : %d\n",ntohs(tcp->source));	printf("TCP Header TCP->dport      : %d\n",ntohs(tcp->dest));	printf("TCP Header TCP->tcp-seq    : %u\n",ntohl(tcp->seq));	printf("TCP Header TCP->tcp-ack    : %u\n",ntohl(tcp->ack_seq));	printf("TCP Header TCP->date-offset: %d\n",tcp->doff);	printf("TCP Header TCP->tcp-res1   : %d\n",tcp->res1);	printf("TCP Header TCP->URG        : %d\n",tcp->urg);	printf("TCP Header TCP->ACK        : %d\n",tcp->ack);	printf("TCP Header TCP->PSH        : %d\n",tcp->psh);	printf("TCP Header TCP->RST        : %d\n",tcp->rst);	printf("TCP Header TCP->SYN        : %d\n",tcp->syn);	printf("TCP Header TCP->FIN        : %d\n",tcp->fin);	printf("TCP Header TCP->tcp-res2   : %d\n",tcp->res2);	printf("TCP Header TCP->Window     : %d\n",ntohs(tcp->window));	printf("TCP Header TCP->Checksum   : %d\n",PWORD(tcp->check));	printf("TCP Header TCP->urp        : %d\n",ntohs(tcp->urg_ptr));//	printf("Source,Dest ports %d,%d\n",(iphead[20]<<8)+iphead[21],iphead[22]<<8+iphead[23]);//	 printf("Layer-4 protocol %d\n",iphead[9]);printf("-------------------------------------------\n");/*-----------------Data Parse----------------------*/datahead=(unsigned char *)((int)tcp+(int)(tcp->doff*4));printf("The Packet data buf : %s\n",datahead);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -