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抓包程序相关推荐

  1. 实现ip数据包抓取并分析_一些网站https证书出现问题的情况分析

    20200326下午,有消息说[1]github的TLS证书出现了错误告警.证书的结构很奇怪,在其签发者信息中有一个奇怪的email地址:346608453@qq.com.明显是一个伪造的证书. 为了 ...

  2. java写的股票技术分析_基于Java语言开发的个性化股票分析技术:量能突破模型(Energe-Break)...

    基于Java语言开发的个性化股票分析技术: 量能突破模型(Energe-Break) 一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给 ...

  3. 【Netty】入门Netty官方例子解析(三)处理一个基于流的传输 TCP粘包和拆包问题分析和解决

    关于 Socket Buffer的一个小警告 基于流的传输比如 TCP/IP, 接收到数据是存在 socket 接收的 buffer 中.不幸的是,基于流的传输并不是一个数据包队列,而是一个字节队列. ...

  4. java jpcap 抓包并分析_java利用Jpcap实现抓包

    1.准备工作 Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制, 可以达到抓包的效果. Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包 ...

  5. java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流

    1. Java 流式输入/输出原理: a. 在JAVA程序中,对于数据的输入/输出操作以"流"(stream)方式进行:J2SDK 提供了各种各样的"流"类,用 ...

  6. java模拟内存溢出并分析_模拟内存溢出通过MAT分析

    构建一个简单的Springboot应用,模拟出OOM场景,再导出heap dump文件,通过Mat分析. 搭建简易Springboot,模拟OOM场景 搭建一个简易的springboot工程,在con ...

  7. java模拟内存溢出并分析_本地模拟内存溢出并分析Dump文件

    java Dump文件分析 前言 dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程. 配置虚 ...

  8. java 实现气泡 源码分析_冒泡排序算法原理及JAVA实现代码

    冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底. 算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底, ...

  9. python抓包检测入侵_如果你喜欢python爬虫,不妨看看这篇验证码的抓包技巧与识别!...

    今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型. 注:想学习Python的小伙伴们进群:984632579领取从0到1完整学习资料 视频 源码 精品 ...

最新文章

  1. 百度搜索_如何打开Intellij IDEA的代码提示功能?
  2. 映射date类型_JPA 日历映射到日期示例
  3. java instanceof 原理_java-在现代JVM实现中如何实现instanceof?
  4. 如何在C中为一个数组分配空间?
  5. Druid 在spring中的配置
  6. 【codeforces 534D】Handshakes
  7. 以太坊代币事件监控_以太坊:什么是ERC20标准?
  8. M1 macbook值得购买吗?关于M1芯片macbook的三点购买建议
  9. 東方 project 联机版开发日记(1)
  10. 解决方案:SpringBoot分布式项目跨域
  11. 大整数乘法--leetcode Multiply Strings
  12. Oracle 官方文档地址
  13. Java内存模型基础知识
  14. Sphinx制作htmlhelp手册文档(Manual-chm)
  15. 有向图的深度优先遍历
  16. Protel DXP 使用教程 - 自定义集成库
  17. 为什么优秀的管理者不能显得自己太能干?
  18. String,无所不在的数据类型
  19. 门户、论坛、博客、SNS,网站模式的辨析
  20. 【矩阵论】内积空间与等距变换(1)

热门文章

  1. 零至三个月的婴儿终极工具清单
  2. getchar的使用
  3. android 融云数据库路径,融云开发者文档
  4. Python 数学函数模块(Math)
  5. c语言字节范围,C语言各种数据类型在系统中占的字节和取值范围
  6. 简单人脸识别一之使用opencv+cnn网络实现人脸识别
  7. DIV横向排列的方法:float/inline-block/flex
  8. Github每日精选(第58期):自建手机照片和视频备份immich
  9. GRE作文模板——临时抱佛脚
  10. MySQL登录密码忘记怎么办