资源简介
数据包捕获程序,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
- 上一篇:MFC教学管理系统
- 下一篇:学生学籍管理系统 数据库课程设计
相关资源
- sniffer 源码
- MFC网络数据包的捕获与分析
- 计算机网络课程设计 IP数据报的捕获
- IP数据包捕获解析程序
- C语言 tcp数据包重组
- C++ 基于数据包过滤的防火墙设计与实
- IP数据包的捕获与解析
- 基于WinPcap的网络数据包捕获与分析源
- TCP数据包转发程序
- 视频捕获代码
- C++使用protobuf 作为网络消息协议
- 数据包捕获与分析 端口扫描 流量统计
- 解析IP数据包 小程序C++实现
- 通信中数据分段与重组算法设计及其
- 原始套接字发送完整UDP数据包c语言实
- 计算机网络课设之解析ARP数据包
- 用MFC编写的数据包校验与常用校验算
- 发送tcp数据包实验设计
- 解析ip数据包源程序
- c++代码解析IP数据包
- C语言解析IP数据包程序
- ARP数据包的解析
- VC实现TCP数据包发送(挺好的源代码)
- 利用ICMP数据包探测网络中的活动主机
- 基于ICMP数据包的主机扫描
- 解析IP数据包课程设计
- C语言伪造TCP、UDP数据包.zip
- SEH异常捕获类,生成dump文件
- stm32 低电平捕获
- 用VC6.0编写的视频捕获程序
评论
共有 条评论