printf("%3c [%3x]", UdpData[i], UdpData[i]);
else printf(" [%3x]", abs(UdpData[i]));
}
printf("\n [DATA END]\n\n\n");
}
return true;
}
ICMP解包函数
int DecodeIcmpPack(char * IcmpBuf, int iBufSize)
{
ICMP_HEADER * pIcmpHeader;
pIcmpHeader = (ICMP_HEADER * )IcmpBuf;
int iIcmpType = pIcmpHeader->i_type;
int iIcmpCode = pIcmpHeader->i_code;
//对类型进行过滤
if ((iPortFilter) && (iIcmpType!=iPortFilter)) return true;
printf("%s ", szProtocol);
printf("%15s ->%15s ", szSourceIP, szDestIP);
printf("TTL=%3d ", iTTL);
printf("Type%2d,%d ",iIcmpType,iIcmpCode);
printf("bytes=%4d", iBufSize);
printf("\n");
//对于包含数据段的包进行数据分析
if ((ParamDecode) && (iBufSize>28))
{
char * IcmpData=IcmpBuf+4;
//分析ICMP数据段
printf(" [DATA]");
for(unsigned int i=0;i<(iBufSize-sizeof(ICMP_HEADER));i++)
{
if (!(i%8)) printf("\n");
if ( (IcmpData[i]>33) && (IcmpData[i]<122) )
printf("%3c [%3x]", IcmpData[i], IcmpData[i]);
else printf(" [%3x]", abs(IcmpData[i]));
}
printf("\n [DATA END]\n\n\n");
}
return true;
}
5 功能测试
数据包截获程序设计完成后,在Windows平台下进行运行调试,修改错误,使其能完成截获数据包和分析数据包的功能。现在用开发出的数据包截获程序作几个功能演示。
5.1截获UDP数据包
截获局域网中IP为192.168.1.102的计算机发出的UDP数据包,如图9:
图9 显示UCP数据包解析的结果
如图9中显示,截获了192.168.1.102发出的UDP数据包,并分析出了协议类型,源地址,源端口,目的地址,目的端口和生存时间,UDP长度,数据包大小等信息。
5.2截获TCP包
截获并分析网络中本机(IP为192.168.1.7)的TCP数据包.如图10:
图10 显示TCP数据包解析的结果
如图10中显示,截获了经过本机的TCP数据包,分析出了协议类型,源地址,源端口,目的地址,目的端口和生存时间,标志位,数据包大小,数据段。
5.3截获ICMP包
在局域网中, IP为192.168.1.7的计算机S1,IP为192.168.1.102的计算机S2,计算机S2运用PING命令PING计算机S1,在计算机S1上截获到的ICMP数据包,演示如图11:
图11 显示ICMP数据包解析的结果
如图11显示,截获到了经过192.168.1.7上的ICMP数据包,并分析出了协议类型,源地址,目的地址,和生存时间,类型,数据包大小,数据段。
数据包截获程序能完成预期的要求,进行数据包截获、分析,显示出分析结果。由上面3个图可以观察到截获模块能够实现将网络接口设置为混杂模式,同时截获局域网内的数据包,在这里还可以观察到网络状态及网络数据的流动情况,供网络分析之用。
结 论
数据包截获技术是开发网络管理工具软件的重要基础之一,因为许多故障及入侵判断都是建立在网络流量或数据的分析基础上的。具体来说,数据包截获可以应用在检测网络流量,分析网络故障;网络协议工作原理及过程分析;非法数据截获与入侵检测;网络设备开发。
本文首先介绍了TCP/IP基础知识,以及数据包截获的基本原理,研究了数据包截获的机制。其后说明了本设计的设计思想和具体实现,本设计是以原始套接字方式对网络数据进行截获,实现起来比较简单,尤其是不需要编写VxD虚拟设备驱动程序就可以实现截获数据包,使得其编写过程变的非常简便。设计完成后经测试能实现预期要求的功能。但是仍然存在一些不足之处,例如:
1.由于时间和所学知识有限,只对数据包作了简单分析,分析内容不太全面,所截获分析的数据包信息也未能存储下来。
2.本设计没有实现在MFC界面显示,操作不够简便。
通过对该课题的研究,让我对数据包截获有了进一步的了解,对其两面性在网络中产生的影响有了更深的认识,为了打破以上局限性,还需要结合已学知识对数据包截获技术方面的知识作进一步的学习。由于本人水平有限和时间仓促,很多问题考虑不周全甚至可能有错误。所以请老师多多指正。
 
免费数据包截获技术的研究与实现(八)由毕业论文网(www.huoyuandh.com)会员上传。