我是靠谱客的博主 大气灯泡,最近开发中收集的这篇文章主要介绍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了。。。a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

(话说貌似在vista和win7下,在真正的网卡上会有个虚拟网卡,就是上图的编号0)

最后

以上就是大气灯泡为你收集整理的java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序的全部内容,希望文章能够帮你解决java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部