Coder Social home page Coder Social logo

snifferui's Introduction

SnifferUI

这是一款基于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只支持解析类型为3、4、5、11、8、0的报文
    • DNS只支持解析类型A、NS、CNAME、PTR的报文
    • DHCP只能解析选项0、1、3、6、12、50、51、53、54、60、61、255
  • 支持快捷键

    快捷键 功能
    Ctrl + G 光标定位到当前选中数据包
    Ctrl + O 打开pcap文件
    Ctrl + W 关闭pcap文件
    Ctrl + S 另存为新的pcap文件
    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

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

Known Issues

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

参考资料

回到顶部

snifferui's People

Contributors

chentingz avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.