• 大小: 2.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-05
  • 语言: C/C++
  • 标签: 数据包  捕获  

资源简介

数据包捕获程序,C++编写的WinPcap下的网络数据包捕获程序

资源截图

代码片段和文件信息

#include “pcap.h“
#include “string.h“
char *p[200001];
int amount=0;
#pragma comment(lib“wpcap.lib“)
#pragma comment(lib“Packet.lib“)
#pragma comment(lib“WS2_32.LIB“)
void packet_handler(u_char *param const struct pcap_pkthdr *header const u_char *pkt_data); 
char *temp;
int sign=0;
long sum=0;
/* 32位ip地址 */
typedef struct ip_address
{
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
}ip_address;

/* IPv4 header */
typedef struct ip_header
{
u_char ver_ihl; // Version (4 bits) + Internet header length (4 bits)
u_char tos; // Type of service 
u_short tlen; // Total length 
u_short identification; // Identification
u_short flags_fo; // Flags (3 bits) + Fragment offset (13 bits)
u_char ttl; // Time to live
u_char proto; // Protocol
u_short crc; // Header checksum
ip_address saddr; // Source address
ip_address daddr; // Destination address
u_int op_pad; // Option + Padding
}ip_header;

/* UDP header*/
typedef struct udp_header
{
u_short sport; // Source port
u_short dport; // Destination port
u_short len; // Datagram length
u_short crc; // Checksum
}udp_header;


pcap_if_t *alldevs; 
pcap_if_t *d; 
int inum;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *adhandle;
int main()
{
 
int i=0; 

 printf(“start“);

/* 获取设备列表 */ 
if (pcap_findalldevs(&alldevs errbuf) == -1) 

//fprintf(stderr“Error in pcap_findalldevs: %s\n“ errbuf); 
exit(1); 


char *pstr=“hello world“;
//for(int k=0;k<200001;k++)
//{
// p[i]=new char[strlen(pstr)+1];
// strcpy(p[i]pstr);

//}


/* 数据列表 */
for(d=alldevs; d; d=d->next) 

//printf(“%d. %s“ ++i d->name); 
++i;
if (d->description) 
//printf(“ (%s)\n“ d->description)


else 
//printf(“ (No description available)\n“)



 
if(i==0) 

// printf(“\nNo interfaces found! Make sure WinPcap is installed.\n“); 
return -1; 


//printf(“Enter the interface number (1-%d):“i); 
//scanf(“%d“ &inum); 
inum=1;

if(inum < 1 || inum > i) 

//printf(“\nInterface number out of range.\n“); 
/* 释放设备列表 */ 
pcap_freealldevs(alldevs); 
return -1; 


/* 转到选择的设备 */ 
for(d=alldevs i=0; i< inum-1;d=d->next i++); 

/* 打开设备 */ 
if ( (adhandle= pcap_open_live(d->name //设备名 
65536 // 捕捉完整的数据包 
1 // 混杂+模式 
1000 // 读入超时 
errbuf // 错误缓冲 
) ) == NULL) 

/* Y- 打开失败*/ 
// fprintf(stderr“\nUnable to open the adapter. %s is not supported by WinPcap\n“); 
/* 释放列表 */ 
//pcap_freealldevs(alldevs); 
return -1; 

//fp=adhandle;
//printf(“\nlistening on %s...\n“ d->description); 

/* 我们已经不需要设备列表了 释放它 */ 
//pcap_freealldevs(alldevs); 

/* 开始捕捉 */ 
pcap_loop(adhandle 0 packet_handler NULL); 


//pcap_read_ex(adhandle 0 packet_handler NULL);

printf(“The sniffer is stop“);
return 0; 
}

/* 处理数据包的回调函数*/ 
void packet_handler(u_char *param const struct pcap_pkthdr *header const u_char *pkt_data) 

sign++;
struct tm 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5710  2010-01-30 15:07  catch_packet\catch_packet 1-30.cpp

     文件       5760  2010-01-30 00:00  catch_packet\catch_packet.cpp

     文件       4202  2010-01-26 00:00  catch_packet\catch_packet.dsp

     文件        547  2010-01-18 00:00  catch_packet\catch_packet.dsw

     文件        207  2010-01-26 00:00  catch_packet\catch_packet.h

     文件      66560  2011-01-20 12:33  catch_packet\catch_packet.ncb

     文件      48640  2011-01-20 12:33  catch_packet\catch_packet.opt

     文件        803  2010-03-19 00:00  catch_packet\catch_packet.plg

     文件    1999872  2010-01-21 00:00  catch_packet\Debug\catch_packet.bsc

     文件     213066  2010-03-19 00:00  catch_packet\Debug\catch_packet.dll

     文件        884  2010-01-30 00:00  catch_packet\Debug\catch_packet.exp

     文件     285144  2010-03-19 00:00  catch_packet\Debug\catch_packet.ilk

     文件       2572  2010-01-30 00:00  catch_packet\Debug\catch_packet.lib

     文件      19306  2010-03-19 00:00  catch_packet\Debug\catch_packet.obj

     文件    3698372  2010-01-26 00:00  catch_packet\Debug\catch_packet.pch

     文件     705536  2010-01-30 00:00  catch_packet\Debug\catch_packet.pdb

     文件     983196  2010-01-21 00:00  catch_packet\Debug\catch_packet.sbr

     文件     164864  2010-03-19 00:00  catch_packet\Debug\vc60.idb

     文件      77824  2010-01-30 00:00  catch_packet\Debug\vc60.pdb

     目录          0  2015-05-29 18:50  catch_packet\Debug

     目录          0  2015-05-29 18:50  catch_packet

----------- ---------  ---------- -----  ----

              8283065                    21


评论

共有 条评论