资源简介
基于winpcap协议分析器源代码 网络课程设计题目 需要的拿去吧
代码片段和文件信息
#include
#include
#include
#include“ip.h“
#define _W64
#include “pcap.h“
#pragma comment(lib“wpcap.lib“)
#pragma comment(lib“ws2_32“)
int ip_Check_SUM(netp_ip_header *header) //ip首部检验和。
{
netp_ip_header *temp=header;
unsigned long sum;
int ipLnword;
/*这个步骤是在转载IP报的时候进行的
//将校验和字段值置为0
u_short check=temp->crc;
temp->crc=0x0000;
*/
//计算IP首部长度,并将其转换为字个数
ipL=(header->ver_ihl&0x0f);
nword=(ipL*4)/2;
//构建存储ip首部数据的缓冲数组
//u_short buffer[nword]=temp;
//计算校验和
for(sum = 0; nword > 0; nword--){
//printf(“狂%04x \n“*((unsigned short *) temp));
sum +=*((unsigned short *) temp)++;
//if (sum&0x00000000) /* if high-order bit set fold */
//sum = (sum & 0xFFFF) + (sum>> 16)
//printf(“校验和为:%04x\n“sum);
}
//printf(“低16位%04x\n“sum&0xFFFF);
//printf(“高位%04x\n“sum>>16);
sum = (sum>>16) + (sum&0xFFFF);
sum += (sum>>16);
//sum=~sum;
if(sum==0xFFFF)
{
return 1;
}
else
return -1;
}
/* prototype of the packet handler */
void packet_handler_ip(u_char *param const struct pcap_pkthdr *header const u_char *pkt_data)
{
struct tm *ltime;
char timestr[16];
netp_ip_header *ih; //定义ip头部指针
int i=0; //用于判断用户是否继续解析。
int e=0;
time_t local_tv_sec; //时间
/*
* unused parameter
*/
(VOID)(param);// 这有什么用?
/* 将时间戳转换成可识别的格式 */
local_tv_sec = header->ts.tv_sec;
ltime=localtime(&local_tv_sec);
strftime( timestr sizeof timestr “%H:%M:%S“ ltime);
/* 打印数据包的时间戳和长度 */
printf(“%s.%.6d len:%d \n“ timestr header->ts.tv_usec header->len);
/* 获得IP数据包头部的位置 */
ih = (netp_ip_header *) (pkt_data +14); //length of ethernet header
e=sizeof(ih);
if(ip_Check_SUM(ih)==1)
{
printf(“源ip地址:“);
printf(“%d.%d.%d.%d\n“
ih->source_address.byte1
ih->source_address.byte2
ih->source_address.byte3
ih->source_address.byte4);
printf(“目的ip地址:“);
printf(“%d.%d.%d.%d\n“
ih->destination_address.byte1
ih->destination_address.byte2
ih->destination_address.byte3
ih->destination_address.byte4);
printf(“版本号:%d\n“ih->ver_ihl>>4);
printf(“首部长度:%d\n“ih->ver_ihl&0x0F);
printf(“区分服务:%d\n“ih->diff_services);
printf(“总长度:%d\n“ntohs(ih->total_length));
// printf(“总长度:%d\n“ih->total_length); //区别?为什么把网络序转换到主机序?
printf(“标识:%d\n“ih->identification);
printf(“片偏移:%d\n“);
printf(“生存时间:%d\n“ih->time_to_live);
printf(“首部检验和:%d\n“ih->header_checksum);
printf(“高层协议类型:%d\n“ih->protocol);
switch(ih->protocol)
{
case 17:
printf(“(高层协议类型为UDP协议!)\n“);
case 6:
printf(“(高层协议类型为TCP协议!)\n“);
//开始进行TCP 头部结构的相应的处理.
default:
printf(“(其他协议)\n“);
break;
}
}
else
{
printf(“经计算检验和不为0,丢弃该包!“);
}
printf(“\n“);
printf(“\n“);
}
int IP_AnalyTest()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-22 10:25 PCAP\
目录 0 2012-03-22 10:25 PCAP\Debug\
目录 0 2012-03-20 19:07 PCAP\Include\
文件 3928 2009-10-07 01:20 PCAP\Include\bittypes.h
文件 5756 2009-10-07 01:19 PCAP\Include\ip6_misc.h
文件 16958 2008-11-18 12:26 PCAP\Include\Packet32.h
目录 0 2012-03-20 19:07 PCAP\Include\pcap\
文件 2393 2009-10-07 01:20 PCAP\Include\pcap-bpf.h
文件 2125 2009-10-07 01:20 PCAP\Include\pcap-namedb.h
文件 2873 2012-03-19 13:01 PCAP\Include\pcap-stdinc.h
文件 2320 2009-10-07 01:20 PCAP\Include\pcap.h
文件 2016 2009-10-07 01:20 PCAP\Include\pcap\bluetooth.h
文件 29111 2009-10-07 01:20 PCAP\Include\pcap\bpf.h
文件 3421 2009-10-07 01:20 PCAP\Include\pcap\namedb.h
文件 14058 2010-06-25 09:44 PCAP\Include\pcap\pcap.h
文件 5567 2009-10-07 01:20 PCAP\Include\pcap\sll.h
文件 2925 2009-10-07 01:20 PCAP\Include\pcap\usb.h
文件 2155 2009-10-07 01:20 PCAP\Include\pcap\vlan.h
文件 14945 2007-09-27 11:32 PCAP\Include\remote-ext.h
文件 4033 2006-08-09 17:16 PCAP\Include\Win32-Extensions.h
文件 5195 2012-03-21 23:24 PCAP\ip.c
文件 1878 2012-03-21 23:23 PCAP\ip.h
目录 0 2012-03-20 19:07 PCAP\Lib\
文件 20814 2010-06-25 10:01 PCAP\Lib\libpacket.a
文件 54276 2010-06-25 10:02 PCAP\Lib\libwpcap.a
文件 8450 2010-06-25 09:47 PCAP\Lib\Packet.lib
文件 19320 2010-06-25 09:47 PCAP\Lib\wpcap.lib
目录 0 2012-03-20 19:07 PCAP\Lib\x64\
文件 8290 2010-06-25 09:49 PCAP\Lib\x64\Packet.lib
文件 18892 2010-06-25 09:49 PCAP\Lib\x64\wpcap.lib
文件 3476 2012-03-21 23:24 PCAP\mac.c
............此处省略11个文件信息
相关资源
- 修复WinPcap安装失败批处理
- Winpcap 开发包 4.1.2
- WinPcap_4_1_3安装程序
- winpcap发送TCP数据包
- Jpcap 64位,完整一套包括WinpcapJpcapjp
- 利用winpcap库解析pcap文件
- VS2008CWinpcap网络嗅探器中科院课设.r
- 基于winpcap的解析以太网帧头部和ip头
- winpcap SDK开发包头文件sdk(pcap.hPacke
- 基于winpcap综合网络数据包扫描程序源
- delphi调用winpcap截取网卡数据
- WinPCap包Delphi代码
- 基于WinPcap的抓Http包控制台程序
- 使用WinPcap抓取ipv4和ipv6数据包
- libpcapwinpcap捕获数据包与存储和读取
- Delphi下WinPCap开发基础 一个简单的Ht
- winPcap实现的网络嗅探器设计与实现
- 绿色版winpcap4.1.0
- winpcap4.0.1
- Winpcap3.1完整安装包
- Winpcap中文文档
- Winpcap 解析TCP、IP报文
- winpcap源文件
- 编程实现简单的IP协议分析器课程设计
- 基于WinPcap的网络流量在线分析系统的
- 如何使用winpcap抓包分析网络协议
- WinPcap解决安装失败问题.zip
- WinPcap_4.1.2
- 利用WipCap捕获网络数据包并分析数据
- Qt-WinPcap发送和接收Arp包
评论
共有 条评论