# SnifferUI
**Repository Path**: yp_93/SnifferUI
## Basic Information
- **Project Name**: SnifferUI
- **Description**: 基于MFC和WinPcap库开发的网络抓包和协议分析软件
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2019-11-21
- **Last Updated**: 2022-02-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
SnifferUI
这是一款基于MFC和WinPcap库开发的网络抓包和协议分析软件,你可以用它来抓取本机网络流量,或者读取pcap文件离线分析流量。
开发环境:Win7 + Visual Studio 2015
依赖:WinPcap 4.1.3
## 目录
- [功能](#功能)
- [运行截图](#运行截图)
- [v2.0](#v20)
- [v1.0](#v10)
- [更新说明](#更新说明)
- [ToDoList](#todolist)
- [Known Issues](#known-issues)
- [参考资料](#参考资料)
## 功能
* 实时网络数据包捕获和协议解析
* 支持实时、离线解析 *(实时:边抓包边解析 离线:读取pcap文件)*
* 提供显示过滤器
* 支持常见协议解析
* ICMP只支持解析类型为3、4、5、11、8、0的报文
* DNS只支持解析类型A、NS、CNAME、PTR的报文
* DHCP只能解析选项0、1、3、6、12、50、51、53、54、60、61、255
| 层次 | 协议 |
| ------------------ | -----|
| 应用层 | DNS / HTTP / DHCP |
| 传输层 | UDP / TCP |
| 网络层 | IPv4 / ICMP |
| 数据链路层 | Ethernet / ARP |
* 支持快捷键
| 快捷键 | 功能 |
| ------| -----|
| Ctrl + G | 获得数据包列表中选中项焦点 |
| Ctrl + O | 打开文件 |
| Ctrl + W | 关闭文件 |
| Ctrl + S | 另存为 |
| Alt + F4 | 退出 |
## 运行截图
### v2.0
### v1.0
## 更新说明
* 2019/6/24
- 完善菜单栏
- 新增”清理缓存文件“菜单项
- 新增”快捷键一览“菜单项
- 新增工具栏
- 原网卡列表、过滤器列表、按钮等移动至工具栏上
- 用图标代替按钮文本
- 完善数据包列表控件
- 调整各列初始宽度
- 允许拖拽列表的列
- 完善状态栏
- 调整各栏宽度
- 新增“已显示”数据包个数
- 完善“关于”窗口
* 2019/5/23
* 代码重构
* 新增PacketCatcher类、PacketDumper类、PacketPool类,降低抓包与界面之间耦合
* PacketCatcher类:实现数据包捕获,底层使用winpcap库函数
* PacketDumper类:实现捕获数据包转储到文件,仅支持转储.pcap文件
* PacketPool类:实现数据包管理,底层使用stl关联容器map存储数据包
* 新增菜单栏
* 新增状态栏
* 删除“暂停”按钮
* 新增快捷键
* 2019/1/22
* 新增Packet类封装数据包,解决内存泄露问题
* 界面更换为Win7风格
* 2019/1/14
* 新增显示过滤器
* 2017/2/15 - 2017/3/12
* 完成v1.0开发
* 实现数据包实时捕获和常见协议解析
## ToDoList
- [x] v2.0中DHCP,DNS,HTTP解析的实现
- [x] 根据协议名过滤数据包
- [x] 数据包保存为.pcap格式文件
- [x] 鼠标移开list控件,保持选中行高亮
- [x] 添加菜单栏
- [ ] 优化内存占用率(目前抓取数据包数量很大时,内存占用率高)
- [x] 添加工具栏
## Known Issues
- [x] 过滤后原来位置的底色保持不变
- [ ] DNS协议无法正确解析回答、授权回答、附加信息区域
- [x] 数据包16进制字节流格式不对齐
- [x] 按下结束后再开始,界面卡死
- [x] 使用过滤器后,若线程仍在抓包,新抓到的的数据包没有过滤就打印
## 参考资料
* [一步一步开发sniffer(Winpcap+MFC)(一)工欲善其事,必先配环境——配置winpcap开发环境](https://blog.csdn.net/litingli/article/details/5950962)
* [一步一步开发sniffer(Winpcap+MFC)(二)掀起你的盖头来,让我来画你的脸——用MFC开发GUI](https://blog.csdn.net/litingli/article/details/6098654)
* [一步一步开发sniffer(Winpcap+MFC)(三)安得广厦千万间,先画蓝图再砌砖——搭建winpcap抓包框架](https://blog.csdn.net/litingli/article/details/7315699)
* [一步一步开发sniffer(Winpcap+MFC)(四)要想从此过,留下协议头——各层网络协议头的实现](https://blog.csdn.net/litingli/article/details/7315789)
* [一步一步开发sniffer(Winpcap+MFC)(五)莫道无人能识君,其实我懂你的心——解析数据包](https://blog.csdn.net/litingli/article/details/7315914)
* [一步一步开发sniffer(Winpcap+MFC)(六)千呼万唤始出来,不抱琵琶也露面——将解析数据写到GUI上](https://blog.csdn.net/litingli/article/details/7316173)
* [RFC792 ICMP](https://www.rfc-editor.org/rfc/rfc792.txt)
* [RFC1257 ICMP Router Discovery Messages](https://www.rfc-editor.org/rfc/rfc1256.txt)
* [RFC1035 DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION](https://www.rfc-editor.org/rfc/rfc1035.txt)
* [RFC2132 DHCP Options and BOOTP Vendor Extensions](https://www.rfc-editor.org/rfc/rfc2132.txt)
* [WinPcap 4.0.1中文技术文档](http://www.ferrisxu.com/WinPcap/html/index.html)
* [1184893257/SimpleSniffer](https://github.com/1184893257/SimpleSniffer)
* [(鸡啄米) VS2010/MFC编程入门教程之目录和总结](http://www.jizhuomi.com/software/257.html)
[回到顶部](#snifferui)