# Sniffer(嗅探器)
### 课程设计的目的及要求
主要目的是巩固网络编程技术基本知识,加深对相关概念和原理的理解,提高综合应用所学知识开发较为实用的网络应用程序的能力。通过一个较为综合的网络应用程序的开发训练,加深学生对网络通信程序开发的基本方法、基本技术和基本概念以及相关原理的理解,同时进一步提高学生编写较为复杂应用程序的能力,为学生将来从事实际应用开发打下坚实的理论和实践基础。
要求第17周一周时间内集中在网络中心的指定机房内完成,逾期实在不能完成的可延期一周利用业余时间完成。结束后在规定时间前需提交:
### 课程设计报告。
所开发程序的源代码,要求程序能编译运行,且功能符合基本要求。
课程设计内容
- 利用所学的网络编程技术,独立完成一个较为复杂的实用型的网络应用程序的设计开发。可从以下各题中选择一个完成:
- 编写一个图形界面的网络嗅探软件,界面模仿WireShark,协议分析层次包括网络层、传输层、应用层(能识别出DNS、FTP和WEB等几种常见应用则可)。模仿QQ完成一套即时通信软件。要求:①包含一个客户软件和一个服务器软件;服务器软件负责客户的注册、登陆、在线客户管理等;客户软件包含注册、登录、根据服务器返回的在线客户信息与在线的其他客户进行聊天等功能;②客户软件工作在P2P模式,所有客户均试运行同一个软件的不同副本,两个客户软件的聊天信息是直接发送给对方的,不能经由服务器转发;③客户软件和服务器软件均采用图形界面。
- 自选题目,满足:基于WinSock编程、功能实用且程序较为复杂。
## 实践背景介绍
Sniffer(嗅探器),是一种利用以太网特性将网络适配卡置为混杂模式状态的工具,一旦将网卡设置为混杂模式,其就能接收传输在网络上的每一个信息包,因此利用Sniffer可以监听网络状态、获取数据流动情况、得到网络上传输的信息等。
Sniffer分为软件和硬件两种,软件的Sniffer有 Sniffer Pro、Network Monitor、PacketBone等,其优点是易于安装部署,也易于学习交流,但缺点是无法抓取网络上传输的所有信息包,因此在某些情况下也就无法真正了解网络的故障和运行情况;硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较昂贵,但会具备支持各类扩展的链路捕获能力以及高性能的数据实时捕获分析的功能。
本次实践就是编写一个基于WinPcap与MFC结合的软件的Sniffer,实现的功能包括:
- 列出监测主机的所有网卡,选择一个网卡,在混杂模式下进行监听;
- 捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则;
- 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示;
支持协议:TCP、UDP、ARP、ICMP、HTTP、IPv4、IPv6
- 可以本地文件的形式来保存、读取已捕获的数据包信息。
本次实践所需工具:
```c++
Microsoft Visual Studio 2017
WinPcap V4.1.2
```
## 实践进程概述
本次实践进程分为七个阶段,分别是:
1. 配置WinPcap开发环境
2. 利用VS2017的MFC设计GUI
3. 搭建WinPcap抓包框架
4. 各层网络协议相关数据结构的实现
5. 数据包解析函数
6. 数据包接收线程
7. GUI数据更新函数
8. 消息处理函数
## 实践内容
### 配置WinPcap开发环境
#### WinPcap基本介绍
Windows Packet Capture,WinPcap是Windows平台下的数据链路层的网络访问工具,其目的在于为Windows应用程序提供访问网络底层的能力,其只能将数据包从网络中抓取过来,并不能修改数据。
要使用WinPcap,要安装其dll文件,此外还要下载相关的开发者工具包,包含库文件、头文件、简单示例程序与帮助文件,本次实践采用的都是V4.1.2版本的。
WinPcap V4.1.2 dll:http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe
WinPcap V4.1.2 Developer’s Pack:http://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
#### 配置过程
将WinPcap的开发者工具包解压后,放到合适位置,然后打开VS2017,新建一个MFC项目。
在新建项目的项目->属性->VC++目录中,配置包含目录,即将WinPcap开发包中的Include目录添加进去:
![](https://www.writebug.com/myres/static/uploads/2022/4/15/df3b5a6b3eb874fe6dfcfca249824f30.writebug)
配置完包含目录后,再配置库目录,即将WinPcap开发包的Lib目录添加进去。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/4ee5c6864bd61533dda11e017e36e555.writebug)
然后设置与WinPcap有关的预处理定义:在项目->项目属性->配置属性->C/C++->预处理器页面的预处理器定义中,添加WPCAP与HAVE_REMOTE。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/4735e671d63bf24e0153889b8f22f46b.writebug)
最后添加wpcap.lib库文件:在项目->项目属性->配置属性->链接器->命令行页面中的其他选项,添加wpcap.lib。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/6180254ca9aa17fa6c6aac9804881f6a.writebug)
#### GUI设计
添加两个下拉框,一个用于选择网卡,一个用于选择过滤规则,同时在属性页将Type设为下拉列表(DropList)。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/b414e8bf2f2bfdbc3862c0ac43854078.writebug)
添加两个按钮(Button),用于开始和结束。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/a20fea8d4f5781db1497061d0f87db3c.writebug)
添加列表(List Control),用于显示接收到的包的信息,同时在属性页将view设为Report,Sort与Single Selection设为True。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/8cdf31069a0c35c56b58f4afaf102ddc.writebug)
添加树形列表(Tree Control),用于显示每一个包的具体字段信息,同时在属性页将Full Row Select、Has Buttons、Info Tip、Lines At Root均设为True。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/e6d09fa47af267b1f2d3cbdfc6dc8dca.writebug)
添加文本框(Edit Control),用于显示数据包的二进制信息,同时在属性页将Multiline、Read only、Auto V Scroll、Horizon Scroll、Vertical Scroll 均设置为 True。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/d58c273a88b079d99e6cee2cff5e35ed.writebug)
添加若干文本框(Edit Control)和静态框(Static Text),用于显示统计数据,最后再加一个组合框(Group Box),方便使用框内的控件。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/1ba662ab79d18379ce69a1631399c109.writebug)
添加两个按钮(Button),用于保存和读取捕获的数据包信息。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/ef73b9a588a01860633f379e5c7c19a2.writebug)
添加控件变量:在类向导中,为下拉框、列表、树形框、编辑框等添加控件。
![](https://www.writebug.com/myres/static/uploads/2022/4/15/8750f3f478dcd1fe20388a1a9c5859d3.writebug)
添加完后,可在SnifferDlg.h中看到添加的控件变量,在SnifferDlg.cpp中看到相应的资源关联。
控件变量:
![](https://www.writebug.com/myres/static/uploads/2022/4/15/fe4b95f93f1b7581266b0bbab0eeca1e.writebug)
资源关联:
![](https://www.writebug.com/myres/static/uploads/2022/4/15/f11a019f4a3f7c1d242d8b5618aacc3f.writebug)
列表控件设计:在SnifferDlg.cpp的OnInitDialog() 方法中对列表控件进行初始化设置。
```c++
//列表表项初始化设置
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_listCtrl.InsertColumn(0, "编号", 2, 130);//1右对�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本次实践就是编写一个基于WinPcap与MFC结合的软件的Sniffer,实现的功能包括: 列出监测主机的所有网卡,选择一个网卡,在混杂模式下进行监听; 捕获所有流经网卡的数据包,并利用WinPcap函数库设置过滤规则; 分析捕获到的数据包的包头和数据,按照各种协议的格式进行格式化显示; 支持协议:TCP、UDP、ARP、ICMP、HTTP、IPv4、IPv6 可以本地文件的形式来保存、读取已捕获的数据包信息。
资源推荐
资源详情
资源评论
收起资源包目录
100011972-基于C语言实现网络Sniffer(嗅探器).zip (63个子文件)
sniffer-winpcap-and-mfc
LICENSE 1KB
Sniffer
Sniffer.aps 108KB
stdafx.h 2KB
protocol.h 4KB
Sniffer.vcxproj.filters 2KB
Sniffer.vcxproj 10KB
Sniffer.vcxproj.user 225B
SnifferDlg.cpp 33KB
Sniffer.cpp 3KB
resource.h 1KB
Sniffer.rc 15KB
res
Sniffer.ico 66KB
Sniffer.rc2 670B
Sniffer.h 464B
analysis.h 8KB
stdafx.cpp 168B
targetver.h 291B
Data
20200113 191036.lix 154KB
20200113 163431.lix 24B
20200113 191755.lix 36KB
20200113 193300.lix 5KB
20200113 151812.lix 99KB
20200113 161214.lix 1KB
20200113 162223.lix 37KB
20200113 193846.lix 243B
20200113 192107.lix 9KB
20200113 151330.lix 1KB
20200113 161410.lix 21KB
20200113 151213.lix 18KB
20200113 192604.lix 11KB
20200113 192820.lix 313B
20200113 192558.lix 3KB
20200113 163424.lix 25KB
20200113 195708.lix 2KB
20200113 161345.lix 5KB
20200113 193524.lix 389B
20200113 192748.lix 393B
20200113 161302.lix 13KB
20200113 192428.lix 588B
20200113 192610.lix 6KB
20200113 192510.lix 891B
20200113 204634.lix 35KB
20200113 194129.lix 40KB
20200113 194831.lix 46KB
20200113 160124.lix 29KB
20200113 195847.lix 38KB
20200113 205504.lix 237KB
20200113 191423.lix 312KB
20200113 192534.lix 24B
20200113 162432.lix 544B
20200113 193202.lix 380B
20200113 161327.lix 489B
20200113 193759.lix 7KB
20200113 160435.lix 1.04MB
20200113 164947.lix 946B
20200113 194030.lix 582B
SnifferDlg.h 3KB
注意事项.txt 514B
Sniffer.sln 1KB
实验报告.doc 2.6MB
Debug
Sniffer.exe 259KB
Sniffer.pdb 7.45MB
README.md 53KB
共 63 条
- 1
资源评论
- qq_399955642023-11-01资源很实用,对我启发很大,有很好的参考价值,内容详细。
- 2301_766486072024-04-24发现一个宝藏资源,赶紧冲冲冲!支持大佬~
神仙别闹
- 粉丝: 2674
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功