java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序
Jpcap是一个能够抓取与发送网络数据包的Java组件。 你可以使用Jpcap从一个网络接口获取数据包,然后在Java中对它们进行分析和显示。同样也可以通过一个网络接口发送任意数据包。Jpcap当前能够捕获以太网,IPv4,IPv6,ARP/RARP,TCP,UDP和ICMPv4数据包。Jpcap是一个中间件,调用的是winpcap/libpcap,提供给Java调用的接口。
下面就是程序的主要部分,由于Jpcap把要用的东西都封装好了,所以要做的就是调用几个函数,比如getDeviceList()取得网络设备,openDevice()建立与网络设备的链接,建立实例才控制网络设备,接着就是getPacket()啦,然后拿get到的包去instanceof一下jpcap.packet.TCPPacket,看看是不是TCP包,是的话就取出来输出。
主要代码:
public class Capture
implements Runnable {
private NetworkInterface[]
devices;//存放网络的接口设备的数组
private JpcapCaptor
captor;//用于与网络设备进行连接,通过该类实例来控制网络设备
boolean stopth;//线程的控制信号
int pMaxnum;//获取到数据包的最大上限
Thread time;//线程
int count;//计数器
Capture(){
devices =
JpcapCaptor.getDeviceList();
stopth=false;
pMaxnum=9999;
count=0;
for(int
i=0;i
windowView.jTextArea1.append(i+":
"+devices[i].name +"\n" );
windowView.jTextArea1.append("(" +
devices[i].description+")\n");
windowView.jTextArea1.append("
datalink: "+devices[i].datalink_name + "(" +
devices[i].datalink_description+")\n");
}
}
public void getPacket() throws
IOException{
int
index=devices.length-1;
captor=JpcapCaptor.openDevice(devices[index],
65535, false, 20);//打开网卡
TCPPacket p[]=new
TCPPacket[pMaxnum];//用于保存TCP包
while(stopth){
Packet
tmp=captor.getPacket();//获取数据包
if(tmp instanceof
jpcap.packet.TCPPacket){//判断是否为TCP包
p[count]=(TCPPacket)tmp;
System.out.println(count+":"+p[count].toString());
System.out.println("本机地址:"+p[count].src_ip);
System.out.println("目标地址:"+p[count].dst_ip);
System.out.println("ack:"+p[count].ack_num+"
dst_port:"+p[count].dst_port+"
src port:"+
p[count].src_port+"
seq:"+p[count].sequence+"
win:"+p[count].window);
DefaultTableModel
model=(DefaultTableModel)windowView.jTable1.getModel();
String
sum="TCP:本机端口:"+p[count].src_port+"目标端口:"+p[count].dst_port+"ack("+p[count].ack_num+")seq("+p[count].sequence+")"+"win("+p[count].window+")";
Object[]
a={count,p[count].src_ip,p[count].dst_ip,sum,p[count].len};
model.addRow(a);
count++;
}
}
}
……
}
把界面做出来,一共花了不到两小时,不过比较杯具的是,在我做好之后,学校正好断电,我一开始还以为是我的程序有问题取不到包呢,百思不得其解啊~后来发现,是停电了,路由shutdown了。。。
(话说貌似在vista和win7下,在真正的网卡上会有个虚拟网卡,就是上图的编号0)
java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序相关推荐
- 实现ip数据包抓取并分析_一些网站https证书出现问题的情况分析
20200326下午,有消息说[1]github的TLS证书出现了错误告警.证书的结构很奇怪,在其签发者信息中有一个奇怪的email地址:346608453@qq.com.明显是一个伪造的证书. 为了 ...
- java写的股票技术分析_基于Java语言开发的个性化股票分析技术:量能突破模型(Energe-Break)...
基于Java语言开发的个性化股票分析技术: 量能突破模型(Energe-Break) 一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给 ...
- 【Netty】入门Netty官方例子解析(三)处理一个基于流的传输 TCP粘包和拆包问题分析和解决
关于 Socket Buffer的一个小警告 基于流的传输比如 TCP/IP, 接收到数据是存在 socket 接收的 buffer 中.不幸的是,基于流的传输并不是一个数据包队列,而是一个字节队列. ...
- java jpcap 抓包并分析_java利用Jpcap实现抓包
1.准备工作 Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制, 可以达到抓包的效果. Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包 ...
- java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
1. Java 流式输入/输出原理: a. 在JAVA程序中,对于数据的输入/输出操作以"流"(stream)方式进行:J2SDK 提供了各种各样的"流"类,用 ...
- java模拟内存溢出并分析_模拟内存溢出通过MAT分析
构建一个简单的Springboot应用,模拟出OOM场景,再导出heap dump文件,通过Mat分析. 搭建简易Springboot,模拟OOM场景 搭建一个简易的springboot工程,在con ...
- java模拟内存溢出并分析_本地模拟内存溢出并分析Dump文件
java Dump文件分析 前言 dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程. 配置虚 ...
- java 实现气泡 源码分析_冒泡排序算法原理及JAVA实现代码
冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底. 算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底, ...
- python抓包检测入侵_如果你喜欢python爬虫,不妨看看这篇验证码的抓包技巧与识别!...
今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型. 注:想学习Python的小伙伴们进群:984632579领取从0到1完整学习资料 视频 源码 精品 ...
最新文章
- 百度搜索_如何打开Intellij IDEA的代码提示功能?
- 映射date类型_JPA 日历映射到日期示例
- java instanceof 原理_java-在现代JVM实现中如何实现instanceof?
- 如何在C中为一个数组分配空间?
- Druid 在spring中的配置
- 【codeforces 534D】Handshakes
- 以太坊代币事件监控_以太坊:什么是ERC20标准?
- M1 macbook值得购买吗?关于M1芯片macbook的三点购买建议
- 東方 project 联机版开发日记(1)
- 解决方案:SpringBoot分布式项目跨域
- 大整数乘法--leetcode Multiply Strings
- Oracle 官方文档地址
- Java内存模型基础知识
- Sphinx制作htmlhelp手册文档(Manual-chm)
- 有向图的深度优先遍历
- Protel DXP 使用教程 - 自定义集成库
- 为什么优秀的管理者不能显得自己太能干?
- String,无所不在的数据类型
- 门户、论坛、博客、SNS,网站模式的辨析
- 【矩阵论】内积空间与等距变换(1)