Skip to content

基于MFC和WinPcap库开发的网络抓包和协议分析软件

Notifications You must be signed in to change notification settings

Chentingz/SnifferUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 

Repository files navigation

SnifferUI

Release Downloads Stars Forks

这是一款基于MFC和WinPcap库开发的网络抓包和协议分析软件,你可以用它来采集本机网络流量并在线分析协议,或者读取pcap文件进行离线协议分析,快下载试试吧。

开发环境:Win7 + Visual Studio 2015
依赖:WinPcap 4.1.3
技术细节:

  • MFC搭建前端界面
  • WinPcap实现本地网络接口抓包及pcap文件存储
  • 利用STL的map容器实现内存中数据包管理
  • 基于Windows消息队列实现线程间通信(抓包线程通知窗口线程解析和打印数据包或通知结束抓包释放资源)
  • 从0到1自写了9种网络协议解析器

目录

功能

  • 本地网络接口上数据包实时捕获与在线协议分析

  • 提供pcap文件存储

  • 支持pcap文件读取与离线协议分析

  • 提供显示过滤器,选择指定协议的数据包进行显示

  • 支持常见网络协议解析

    层次 协议
    应用层 DNS / HTTP / DHCP
    传输层 UDP / TCP
    网络层 IPv4 / ICMP
    数据链路层 Ethernet / ARP
    ICMP报文类型 ICMP报文类型值 支持解析
    目的地不可达 3
    源端抑制 4
    重定向 5
    超时 11
    Echo请求 8
    Echo响应 0
    DNS资源记录类型 作用 支持解析
    A 根据域名查询IP地址
    NS 指定一个DNS服务器解析该域名
    CNAME 查询域名的别名
    PTR 根据IP地址查询域名
    DHCP报文选项 DHCP报文选项代码 支持解析
    填充 0
    子网掩码 1
    网关地址 3
    DNS服务器地址 6
    域名 12
    请求IP地址 50
    IP地址租约时间 51
    DHCP消息类型 53
    DHCP服务器标识 54
    厂商标识 60
    客户端标识 61
    结束 255
  • 支持快捷键

    快捷键 功能
    Ctrl + G 光标定位到当前选中数据包
    Ctrl + O 打开pcap文件
    Ctrl + W 关闭pcap文件
    Ctrl + S 另存为新的pcap文件
    Alt + F4 退出程序

运行截图

v2.0

v1.0

更新说明

  • 2021/4/11
    • 修复【点击'清除'按钮,不恢复显示所有数据包问题】
    • 修复【选择网卡与实际抓包网卡不一致问题】
    • 修复【进行新一轮抓包时,状态栏仍显示上一轮数据包捕获数量的问题】
    • 修复【在Win10上运行程序时报wpcap.dll出错问题】
  • 2021/4/10
    • 新增【程序启动后自动创建tmp文件夹】
      • tmp文件夹用于存放实时抓包生成的pcap缓存文件
    • 修复【实时抓包时界面卡顿问题】
      • 抓包线程由原来的实时发送改为延时发送WM_PKTCATCH消息
  • 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

  • v2.0中DHCP,DNS,HTTP解析的实现
  • 根据协议名过滤数据包
  • 数据包保存为.pcap格式文件
  • 鼠标移开list控件,保持选中行高亮
  • 添加菜单栏
  • 优化内存占用率(目前抓取数据包数量很大时,内存占用率高)
  • 添加工具栏

Known Issues

  • 过滤后原来位置的底色保持不变
  • DNS协议无法正确解析回答、授权回答、附加信息区域
  • 数据包16进制字节流格式不对齐
  • 按下结束后再开始,界面卡死
  • 使用过滤器后,若线程仍在抓包,新抓到的的数据包没有过滤就打印
  • 读取大pcap文件时,内存占用率高甚至出现程序崩溃 #2

参考资料

Stargazers over time

Stargazers over time

回到顶部