Important
本课程设计在 Linux 系统中能够完美运行,但是在 Windows 和 MacOS 的运行能力不保证
在 Linux 上运行的时候,请使用 sudo 运行
- 安装 Astral uv
首先 clone 本仓库
$ git clone https://github.com/GDUTMeow/NetSniffer.git然后进入目录,同步一下轮子
$ cd NetSniffer
$ uv sync接着带上 sudo 运行即可
$ sudo uv run app.py运行后会出现网卡列表,选择需要监听的网卡,点击 Start 按钮
进入抓包页面,点击上方 Start 按钮即可抓包,左侧会显示当前抓到的列表,双击对应行即可查看此包的内容
首先需要先同步一下开发环境
$ uv sync --extra dev同步完成后运行 build.sh,或者直接运行
$ pyinstaller --onefile --name NetSniffer --clean -F app.py打包好的程序会在 ./dist 文件夹内,如果是 Linux 和 MacOS 应该为 NetSniffer,如果是 Windows 则为 NetSniffer.exe
目前程序可以拓展的地方在于应用层的解析,应用层的对应模型请放在 /models/application 文件夹内,其中明文解析器放入 plain 文件夹,数据流解析器放入 binary 文件夹,文件名字为对应的协议名字
完成模型封装后,在 /models/applications/__init__.py 中的 SERVICES_PORT_MAPPING 添加对应的服务端口映射和在 SERVICES_FEATURES_MAPPING 中添加对应的服务特征列表映射即可
编程实现简单的网络嗅探器——协议分析
- 利用原始套接字实现简单的网络嗅探器
- 系统功能
- 原始套接字与网卡绑定,并接收流经网卡的所有数据包
- 对数据包进行分析以获得源IP地址和目的IP地址
- 对数据包进行分析以获得运输层协议类型、源端口号和目的端口号
- 对数据包进行分析以获得数据包的长度
- 也可以只分析一种协议,比如IEEE802.3协议、IP协议、TCP协议、或UDP协议等。如果每层协议都分析,可获加分
- 显示分析结果
- 开发工具不限,建议使用VC++
- 学习原始套接字编程的基本机制
- 学习对数据包进行协议分析的基本方法
- 设计简单网络嗅探器的基本框架
- 设计并实现简单的网络嗅探器
- 课程设计任务说明书
- 原始套接字编程的基本机制(2h)
- 对数据包进行协议分析的基本方法(4h)
- 程序设计以及调试方法(2h)
- 简单网络嗅探器框架结构设计(4h)
- 简单网络嗅探器设计与实现(16h)
- 课程设计说明书(12h)
- 20260520 收尾,修复已选择行时进行重新抓包导致的状态量未清除而爆炸的问题,更新 README,添加开发指引
- 20260519 在欢迎页面添加了网卡选择功能,以在代码中解绑网卡;引入基于特征码的应用层识别
- 20260518 玩三角洲去了
- 20260517 修复了 DNS 无法解析 AAAA 的问题,完成 TUI 部分
- 20260516 完成了应用层 DNS、FTP、Redis、NTP 的数据解析,完成了解析器的逐层解析功能
- 20260515 适配 Windows 的端口绑定,完成了网络层、传输层和应用层的 HTTP 数据包格式解析
- 20260514 初始化项目,添加项目说明书,完成监听器绑定,完成数据链路层的数据包格式解析

