前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java利用Jpcap实现抓包

java利用Jpcap实现抓包

原创
作者头像
dizhiguo
发布2022-09-05 19:33:22
1.6K0
发布2022-09-05 19:33:22
举报
文章被收录于专栏:java面试交流

Jpcap简介和环境搭建

Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制,

可以达到抓包的效果。

Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包。

获取winCap和Jpcap安装包

一 一安装后

jdk–>bin目录会多了一个Jpcap.dll

jre–>lib–>ext会多一个Jpcap的jar包

常用类

* JpcapHandler :这个接口用来定义分析被捕获数据包的方法

* ARPPacket :这个类描述了ARP/RARP包,继承了Packet类

* DatalinkPacket :这个抽象类描述了数据链路层

* EthernetPacket :这个类描述了以太帧包,继承DatalinkPacket类

* ICMPPacket :这个类描述了ICMP包,继承了IPPacket类

* IPAddress :这个类描述了IPv4和IPv6地址,其中也包含了将IP地址转换域名的方法

* IPPacket :这个类描述了IP包,继承了Packet类,支持IPv4和IPv6

* IPv6Option :这个类描述了IPv6选项报头

* Jpcap :用来捕获数据包

* Jpcap.JpcapInfo :Jpcap的内部类, 它包含被捕获数据包的信息(在jpcap0.4修改部分BUG之后不再使用这个类)

* JpcapSender :它用来发送一个数据包

* JpcapWriter :它用来将一个被捕获的数据包保存到文件

* Packet :这个类是所有被捕获的数据包的基类

* TCPPacket :这个类描述TCP包,继承了IPPacket类

* UDPPacket :这个类描述了UDP包,继承了IPPacket类

 常用api

Jpcap实现抓包demo

代码语言:javascript
复制
import java.io.IOException;

import java.util.Scanner;

import jpcap.JpcapCaptor;

import jpcap.NetworkInterface;

import jpcap.NetworkInterfaceAddress;

import jpcap.PacketReceiver;

import jpcap.packet.Packet;

/**

 * Jpcat实现抓包

 */

public class NetCapture implements PacketReceiver{

  @Override

  public void receivePacket(Packet arg0) {

    System.out.println(arg0);

  }

  public static void main(String[] args){

//获得网卡设备列表

    NetworkInterface[] devices = JpcapCaptor.getDeviceList();

    if(devices.length==0){

      System.out.println("无网卡信息!");

      return;

    }

//输出网卡信息

    for(int i=0;i<devices.length;i++){

      System.out.println("网卡"+i+"信息:"+devices[i].name);

      for(NetworkInterfaceAddress address:devices[i].addresses){

        System.out.print(address.address+" ");

      }

      System.out.println("\n");

    }

    Scanner scan = new Scanner(System.in);

    System.out.println("请选择您要监听的网卡序号:");

    int index = scan.nextInt();

//监听选中的网卡

    try {

      JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);

      jpcapCaptor.loopPacket(-1, new NetFetcher());

    } catch (IOException e) {

// TODO Auto-generated catch block

      e.printStackTrace();

    }

  }

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jpcap简介和环境搭建
  • 常用类
  •  常用api
  • Jpcap实现抓包demo
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档