编写自己的网络嗅探器_第1页
编写自己的网络嗅探器_第2页
编写自己的网络嗅探器_第3页
编写自己的网络嗅探器_第4页
编写自己的网络嗅探器_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编写自己的网络嗅探器1国家计算机网络入侵防范中心陈深龙、刘奇旭主要内容2实验介绍开发前准备工作配置开发环境用WinPcap捕获数据包分析数据包实验过程中可能遇到的问题实验要求一、实验介绍3实验目的实验内容当前流行的嗅探器以前学生开发的嗅探器实验目的通过开发基于WinPcap的嗅探器,掌握嗅探器的工作原理,熟悉WinPcap的使用,掌握基于WinPcap网络嗅探器的开发过程。4实验内容开发出一个Windows平台上的Sniffer工具,能显示所捕获的数据包并能做相应的分析和统计。主要内容如下:列出监测主机的所有网卡,选择一个网卡,设置为混杂模式进行监听。捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则。分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示。将所开发工具的捕获和分析结果与常用的Sniffer进行比较,完善程序代码。5当前流行的嗅探器当前公认的比较好的嗅探器有WiresharkSniffer

Pro6Wireshark主界面7控制列封包总览封包内容十六进制码Sniffer

Pro主界面8控制列封包总览封包内容十六进制码以前学生的嗅探器优秀作品1主界面设置过滤器优秀作品29优秀作品1—主界面10优秀作品1—设置过滤器11作秀作品212数据包统计信息数据包分析十六进制码数据包列表二、开发前准备工作13开发工具不可或缺的环境WinPcap简介WinPcap功能WinPcap架构WinPcap入门参考资源WinPcap经典论文开发工具开发语言:C++集成开发环境vc6.02003~201014不可或缺的环境WinPcapV4.1.2:/install/bin/WinPcap_4_1_2.exe驱动程序、Dll文件WinPcapV4.1.2Developer’sPack:/install/bin/WpdPack_4_1_2.zip库文件、头文件、简单的示例程序代码和帮助文件15WinPcap简介WinPcap(WindowsPacketCapture)是Windows平台下的链路层网络访问工具,其目的在于为Windows应用程序提供访问网络底层的能力。官方网站:当前的版本Stablerelease

WinPcap4.1.2Latestrelease

WinPcap4.1.2

16WinPcap的功能获得网卡设备列表及其高级信息打开一个网卡适配器并将其设置成混杂模式捕获数据包设置过滤器将数据包存储为文件并处理离线文件发送数据包收集网络通信流量的统计信息但是,WinPcap不能修改数据包或者拦截数据包17WinPcap架构NPF,NetgroupPacketFilter,内核级的数据报过滤器packet.dll,底层的动态连接库wpcap.dll,架构在packet.dll之上,提供了更方便、更直接的编程方法18架构图

19WinPcap架构之NPFNPF是WinPcap的核心部件,它处理网络传输的数据包,并向应用层提供捕捉、发送和分析数据包的服务20WinPcap架构之packet.dllpacket.dll是一个提供了一系列底层函数的动态链接库,功能包括:安装、启动和停止NPF驱动设备对网络数据包进行嗅探发送原始的数据报获取网卡列表和每一个网络的相关信息对网卡查询和设置底层参数21WinPcap架构之wpcap.dllWpcap.dll是一个含有WinPcap公共API的动态链接库,它导出一系列函数供捕获网络数据包和分析网络,功能包括:对网络数据包进行嗅探发送原始的数据报获取网卡列表和每一个网络的相关信息将数据包信息保存到磁盘在更高层上创建包过滤规则并应用到底层22WinPcap入门参考资源WinPcap技术手册V4.1.2(anofflineversioncanbefoundinthedeveloper'spack):/docs/docs_412/index.htmlWinPcap中文技术手册V4.01(翻译版):/WinPcap/23Winpcap经典论文[1]FulvioRisso,LorisDegioanni,AnArchitectureforHighPerformanceNetworkAnalysis.Proceedingforthe6thIEEESymposiumonComputersandCommunications(ISCC2001).HammmametJuly2001[2]LorisDegioanni,MarioBaldi,FulvioRisso,andGianlucaVarenn.ProfilingandOptimizationofSoftware-BasedNetworkAnalysisApplications24三、配置开发环境25在此我们用VC6.0所建的工程为例进行讲解添加头文件目录添加库文件目录增加与WinPcap有关的预处理定义添加pcap.h头文件添加wpcap.lib库文件编译并运行测试代码添加头文件目录添加头文件目录:ToolsOptionsDerectoriesIncludefiles添加WinPcap开发包中的Include目录26添加库文件目录添加库文件目录:ToolsOptionsDerectoriesLibraryfiles添加WinPcap开发包中的Lib目录27增加与WinPcap有关的预处理定义增加预处理定义:WPCAP和HAVE_REMOTEProjectSettingC/C++Preprocessor28添加pcap.h头文件在使用WinPcap函数的所有源文件中添加pcap.h“#include"pcap.h”29添加Wpcap.lib库文件添加wpcap.lib库文件Projectsettinglink加入wpcap.lib30编译并运行测试代码测试代码:/docs/docs_412/html/group__wpcapsamps.html(使用PacketDump代码)请根据你所建的工程类型修改这段代码如果建的是MFCApplication,那么请修改printf等函数如果建的是ConsoleApplication,那么可以不用修改31编译并运行测试代码(续)在ConsoleApplication下,运行结果如图所示,这说明环境已经配置成功。32四、用WinPcap捕获数据包33用WinPcap捕获数据包的流程打开网络接口设置过滤器捕获网络数据包释放该设备列表用WinPcap捕获数据包的流程34pcap_freealldevs打开网络接口35pcap_t*pcap_open_live(constchar*

device,int

snaplen,int

promisc,int

to_ms,char*

ebuf};设置过滤器intpcap_setfilter(

pcap_t*p, structbpf_program*fp )36intpcap_compile(

pcap_t*p, structbpf_program*fp, char*str, intoptimize, bpf_u_int32netmask )捕获网络数据包37intpcap_next_ex( pcap_t*p, structpcap_pkthdr**pkt_header, u_char**pkt_data};释放该设备列表38voidpcap_freealldevs(pcap_if_t*alldevsp);五、分析数据包39TCP/IP分层体系结构以太网中数据包的封装以太网帧格式IP数据报格式TCP数据报格式字节顺序以太网帧和IP数据报的结构定义例:提取源IP地址和目的IP地址TCP/IP分层体系结构40以太网中数据包的封装41Wireshark对数据包各层协议的分析:以太网帧格式目的地址:目的MAC地址 6Byte源地址:源MAC地址 6Byte类型:表示上层协议类型 2Byte0800H:IP0806H:ARP8035H:RARP数据字段:用于携带上层数据

长度可变CRC:帧校验字段 4Byte42以太网帧格式以下是Wireshark对数据包以太帧头的分析:43IP数据报格式441:ICMP;6:TCP;17:UDPIP数据报格式以下是Wireshark对数据包的IP数据报头的分析:45TCP数据报格式46TCP数据报格式以下是Wireshark对数据包的TCP数据报头的分析:47以太网帧和IP数据报的结构定义48typedefstructFrameHeader_t{//帧首部

BYTE DesMAC[6]; //目的地址

BYTESrcMAC[6]; //源地址

WORDFrameType; //帧类型}FrameHeader_t;typedefstructIPHeader_t{//IP首部

BYTE Ver_HLen; BYTE TOS; WORD TotalLen; WORD ID; WORD Flag_Segment; BYTE TTL; BYTE Protocol; WORD Checksum; ULONG SrcIP; ULONG DstIP;}IPHeader_t;typedefstructData_t{ //包含帧首部和IP首部的数据包

FrameHeader_t FrameHeader; IPHeader_t IPHeader;}Data_t;六、实验过程中可能遇到的问题多线程给窗口发送消息数据包分片重组嗅探到网页时,汉字的显示问题字节顺序网络序→主机序u_shortntohs(u_shortnetshort)u_longntohl(u_longnetlong)主机序→网络序u_shorthtons(u_shorthostshort)u_longhtonl(u_longhostlong)49例:提取源IP地址和目的IP地址50Data_t *IPPacket;ULONG SourceIP,DestinationIP;……IPPacket=(Data_t*)pkt_data;……SourceIP=ntohl(IPPacket->IPHeader.SrcIP);DestinationIP=ntohl(IPPacket->IPHeader.DstIP);……字节顺序网络序→主机序u_shortntohs(u_shortnetshort)u_longntohl(u_longnetlong)主机序→网络序u_shorthtons(u_shorthostshort)u_longhtonl(u_longhostlong)51七、实验要求52程序要求实验报告要求程序要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论