資源簡介
基于winpcap協(xié)議分析器源代碼 網(wǎng)絡(luò)課程設(shè)計題目 需要的拿去吧

代碼片段和文件信息
#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;
/*這個步驟是在轉(zhuǎn)載IP報的時候進(jìn)行的
//將校驗和字段值置為0
u_short?check=temp->crc;
temp->crc=0x0000;
*/
//計算IP首部長度,并將其轉(zhuǎn)換為字個數(shù)
ipL=(header->ver_ihl&0x0f);
nword=(ipL*4)/2;
//構(gòu)建存儲ip首部數(shù)據(jù)的緩沖數(shù)組
//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;???//用于判斷用戶是否繼續(xù)解析。
int?e=0;
time_t?local_tv_sec;??//時間
/*
?*?unused?parameter
?*/
(VOID)(param);//??這有什么用?
/*?將時間戳轉(zhuǎn)換成可識別的格式?*/
local_tv_sec?=?header->ts.tv_sec;
ltime=localtime(&local_tv_sec);
strftime(?timestr?sizeof?timestr?“%H:%M:%S“?ltime);
/*?打印數(shù)據(jù)包的時間戳和長度?*/
printf(“%s.%.6d?len:%d?\n“?timestr?header->ts.tv_usec?header->len);
/*?獲得IP數(shù)據(jù)包頭部的位置?*/
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(“區(qū)分服務(wù):%d\n“ih->diff_services);
????printf(“總長度:%d\n“ntohs(ih->total_length));?
// printf(“總長度:%d\n“ih->total_length);?//區(qū)別?為什么把網(wǎng)絡(luò)序轉(zhuǎn)換到主機(jī)序?
????printf(“標(biāo)識:%d\n“ih->identification);?
????printf(“片偏移:%d\n“);
????printf(“生存時間:%d\n“ih->time_to_live);?
????printf(“首部檢驗和:%d\n“ih->header_checksum);
????printf(“高層協(xié)議類型:%d\n“ih->protocol);?
switch(ih->protocol)
{
case?17:
printf(“(高層協(xié)議類型為UDP協(xié)議!)\n“);
????case?6:
printf(“(高層協(xié)議類型為TCP協(xié)議!)\n“);
//開始進(jìn)行TCP?頭部結(jié)構(gòu)的相應(yīng)的處理.
default:
printf(“(其他協(xié)議)\n“);
break;
}
}
else
{
printf(“經(jīng)計算檢驗和不為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個文件信息
評論
共有 條評論