计算机网络个人项目设计:java实现,基于Jnetpcap的网络嗅探抓取,发送数据包单机程序(模仿wireshark)

开发环境

java
javaFX(fxml加控制器的那种,用到图形化的JavaFX Scene Builder设计界面)
用到封装好的jar包:Jnetpcap,需安装winpcap
idea开发

基本功能及效果

扫描网卡
分析包头
GUI窗口
接收和发送包
抓包
发送


接下来是我机翻的自己写的的英文report并截取了一部分较有用的。
并且插入一些学习链接。
文末有 程序,可用的jnetpcap 32位和64位的jar包和API文档和report。in 1pkg


引言

该程序基于JnetPcap,是指著名的软件包捕获软件Wireshark。它是捕获软件包的一种实现,这些软件包通过选择的网络接口卡传递,并发送任何软件包输入。我选择了许多最有用的功能,例如以太网MAC,IP4地址,端口,并直接在Javafx编码的简洁漂亮的UI中显示它们。而且,可以执行通过NIC发送带有我们输入的所有内容的契约。该项目还利用了多个线程,以确保一切顺利且同时运行。

理论

参考链接
jnetpcap简介
手动制图:在这里插入图片描述

协议和层以及配置环境

a)WinPcap
公认Windows环境中用于链路层网络访问的行业标准工具,只需下载安装程序并运行即可。
b)JnetPcap
Java平台不提供较低级别的访问权限,因此我们需要特殊的SDK来提供帮助。
JnetPcap是Sly Technologies生产的一种广泛使用的开源SDK。它使用Java本机接口封装Libpcap,WinPcap等。这样,通过JnetPcap,我们可以处理从帧头到实际数据的整个程序包。
要安装JnetPcap,我们需要:首先,将JnetPcap.dll放在系统环境中的Java.library.path下。然后将jar导入我们的项目依赖项。
我们必须注意的是,Jnetpcap的版本(dll和jar)都必须与Java版本相对应:32位或64位,否则我们将无法正确使用Jnetpcap。

jnetpcap配置链接

项目结构

我将整个项目分为三个级别:数据,服务,视图。这符合设计模式。
在这里插入图片描述
思路参考 我只参考了他的MVC结构图,而且还不太一样,但是值得一看。

i。服务层:
1.解析器
解析器将原始程序包拆分为我们需要的部分。我主要在JnetPcap中调用该接口。由于时间有限,我选择了最常用的协议:Frame + Ethernet + IP4 / 6 + TCP / UDP + Data(+ Http)。IP源分离如图:
在这里插入图片描述
分割和格式化的数据暂时存储在解析器中,等待使用。

2.运行器
Runner具有扫描NIC端口并获取设备信息并将信息存储到公共位置的功能,我将在后面解释。
运行时,Runner最初设置端口,并且使用混杂模式和超时(这是等待新程序包的最大时间限制)。然后,它打开一个端口供使用。我们有一个内部类jpacketHandler,它覆盖了nextPacket函数供循环使用,该循环是JnetPcap内部的一个函数,当每次使用不可更改的循环函数时,都会将jpacketHandler作为参数传递。
在这里插入图片描述
在内部jpackethandler中,覆盖功能将更新静态解析器并根据新鲜的解析器创建一个新的记录对象,然后将此记录追加到列表中,以刷新我们的ui场景。
坑:我定义了一个包括旧循环的新循环,该循环一旦使用就设置一次或多次。这样做的原因是我们必须等待片刻而不是保持刷新数据,而不是一直循环,否则写入和读取的不对称会导致错误。
3.发送器
在发送方中,我打开了另一个端口,如果与同一设备进行处理,则与运行程序同时运行时不会导致错误。
首先,创建一个默认的帧头,然后创建一个字节类型的数组,这是我们在帧上方的数据,根据协议,我们可以通过如右图所示按位设置来生成所需的任何数据包。该数组的长度应与创建帧头时使用的参数相同,该参数指示数据部分的长度。
将头和数据合并后,应将整个打包的软件包放入发送队列,然后发送或添加更多要发送的软件包。这次,如果发送方和运行方位于同一NIC,则运行方可以看到已发送的数据包。

ii。数据层
1.普通
作为解析器,公共类是静态的,这意味着我们只有一个公共类。通用类维护总体数据,例如NIC范围,消息,场景中显示的列表等。解析器和运行器刷新列表中的记录,而javaFX场景的控制器维护用户的输入,例如,要使用的设备编号。
更重要的是,它保持并行运行的线程ID。而且我们内部有一堆控制线程的方法,以确保它们正确运行和结束。
图8通用类,线程控制部分
2.记录
在内部记录中,数据结构与直接在场景中显示的表中的数据结构完全对应,并且提供了表中显示的最终数据,因此在初始化时会修改某些数据。

iii。查看层
1.主要场景
主场景的控制器在初始化时会更新NIC信息,并继续监听事件。单击开始按钮后,将创建一个新线程来运行运行程序,并继续捕获程序包。同时,还创建了另一个线程,该线程不断刷新显示给用户的表。我们可以随时启动和停止。
当单击另一个按钮时,将创建发送者的新阶段,该阶段在运行时也是独立的,这意味着用户可以同时捕获和发送。
2.发件人场景
这部分将控制发送契约,该契约被设计为对象和线程。我们可以同时发送许多内容,以后的内容将保留并在系统中等待。
我还设置了一个100000次循环演示的演示。

运行

收发都需要先设置有效网卡序号,然后收发,发的部分只有example。没有做输入收发。
由于对任何输入的异常处理得到了广泛使用,以及多线程,

只要不是疯狂点击,都可以正常运行。

在这里插入图片描述
单击“发送示例100000次”后的捕获窗口部分

说一下本项目一个小小的不足

看代码中可以知道我是重写了他内置的方法来不断读取信息的,其实是有很微小的时间间隔的,不然它会持续在写入状态,在无间隔嗅探期间如果我们的控制器进行读取,可以运行但是输出会出错,我试过用一个cache但是好像没什么效果。就是本程序可能会漏掉一些包,如果有大神有解决办法可以评论一些。

Jnetpcap官方样例整理

整理的别人的文章,是几个经典案例。@薛昭君 值得参考,对于本项目建议参考前面几个

关于使用手册

请大家学会查询使用手册,从第一手资料了解这个jar包提供什么API以及其功能

Jnetpcap官方文档

在线文档

下面下载链接里面的使用手册

界面更友好,可能是以前的官方手册,就是标题部分可能出现乱码,但是不影响使用
./jnetpcap内含32位和64位jar包
./jnetpcap/doc/index.html进入目录(主界面),左上角是大一点的目录,点击之后左下有这个包下的分目录,点击之后右边是具体封装的方法以及说明。

仅供大家参考,学习,请勿原封不动使用

下载本project:

CSDN下载

https://github.com/FrankYJY/Little-Package-Catcher

有用的话给颗星星否?

GitHub:如果您可以添加更多功能,欢迎成为我的合作者。如果您符合后述条件(确实做了一些事情),则可以在此程序的基础上提交您的工作。否则,它仅供一般学习和参考。
G.未来工作
a)更多协议
可以解析和分析许多协议,例如ARP,ICMP和许多更高级别的网络。
b)功能复杂
可以执行许多更高级别的应用程序,如统计,分析。
c)专业用法
由于我们可以制作和发送任何程序包,因此可以进行任何使用和攻击。最容易使用的可能是伪造的UDP软件包攻击。一旦我们设置了目标IP,并向其发送了伪造的随机程序包,它将被折叠并且受害者无法找到我们的地址或任何有用的信息。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于c语言的个人网络嗅探器源码+项目说明+exe可执行程序.zip 个人网络嗅探器 ## 系统功能模块 ![image-20230605224830415](/README.assets/image-20230605224830415.png) ## 流程图 ### WinPcap系统处理流程 ![image-20230605224924616](./README.assets/image-20230605224924616.png) ### 程序总流程 ![img](./README.assets/clip_image002.png) ### 包重组 ![img](./README.assets/clip_image002-1685976588529.png) ## 主要数据结构 ![img](./README.assets/clip_image002-1685976606544.png) ## analyz_frame数据包分析 ![image-20230605225126677](./README.assets/image-20230605225126677.png) ## 界面设计 ![image-20230605225041233](./README.assets/image-20230605225041233.png) ## 测试 ### 抓包设置 #### 网卡选择 ![img](./README.assets/clip_image002-1685976744013.png) #### 过滤器设置 过滤规则样例:ether src 源MAC地址 ​ ether dst 目的MAC地址 ​ ip src 源IP地址 ​ ip dst 目的IP地址 ​ udp and (ip src 源IP地址 or ip dst 目的IP地址) ​ port 443 or port 80 ![img](./README.assets/clip_image004.png) 图 8 侦听指定来源IP 地址的数据包 ......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值