本软件的主要目的与用途是提供一个轻量化的并附带有图形化界面的抓包工具,可以抓取流经网络适配器的报文信息,并将报文详细信息展示保存在本地文件内。
软件依赖于Maven 导入外部依赖Jar,主要依赖模组包含:
-
JavaFx 一个开源的Java应用程序前端框架与工具包
-
pcap4j 开源Java函数库,提供包含抓包、探测报文与发送报文的函数接口
pcap4j使用winpcap或者Npcap(目前windows使用的工作在link layer抓捕网络流量的API,使用C语言进行编写,操作系统会维护一个缓存,pcap4j调用npcap的API,当缓存满了之后就将报文抓回,或者设置一个抓取间隔,每隔一段时间从缓存中抓取并清空报文)
软件将自动检测主机当前可用的适配器,并获取适配器名称与ip地址,用户可直接在配置GUI中选择适当的适配器,此适配器将作为抓包的对象。除此之外,软件还需要以下配置项:
-
适配器工作模式(混杂模式/非混杂模式),关于混杂模式与非混杂模式可以看这里
-
探测报文最大长度(0~65536)(单位:Byte)
-
探测周期(1~20000)(单位:毫秒)
所有的配置都可以在GUI内完成,也可以修改软件根目录下的config文件以达到修改目的。
配置完成后,便可以运行软件的主线程,主线程将在每个探测周期内从目标适配器抓取报文并读到内存并存储在特定数组中,前端线程也将每隔20ms从数组中抓取报文信息并刷新界面。除此之外,软件提供的其他抓包辅助功能包括
- 显示报文的协议信息,软件将从以太网帧中获取帧类型片段,并以此对报文进行分组。对IPv4格式的报文,软件还将检测其IPv4报文头部的协议字段,以确定其传输层协议;
- 确定报文的目的IP地址与源IP地址,展示特定报文的目的端口与源端口;
- 显示报文的应用层信息,并使用UTF-8编码对其转码显示,对于特殊协议如HTTP协议,将进行特殊标注;
- 保存至文件,软件将每一千条报文保存在一个txt文件内;
- 过滤器,可以根据协议类型、源IP地址、目的IP地址、源端口、目的端口等信息对所有报文进行过滤。
- ARP
- IPv6/IPv4
- TCP
- UDP
- ICMPv4/ICMPv6
- IGMP
- IPv6Hop-top
- DNS
- HTTP(S)
- OICQ
本软件应用JavaFx的标准MVC模式进行构造,具体框架如下,详情可参考src/:
src
com
sniffer
net
snifferThread 后端主线程
UI
fxml css controller
util
本软件仅作为东南大学本科课程设计的验收项目提交,从未抄袭与盗用任何代码,也不会用作商业用途,如有任何问题可联系[email protected]