Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java利用Jpcap实现抓包

java利用Jpcap实现抓包

原创
作者头像
dizhiguo
发布于 2022-09-05 11:33:22
发布于 2022-09-05 11:33:22
1.8K00
代码可运行
举报
文章被收录于专栏:java面试交流java面试交流
运行总次数:0
代码可运行

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
代码运行次数:0
运行
AI代码解释
复制
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到1用java再造tcpip协议栈:使用jpacap模拟数据链路层
我们上一节成功使用jpcap获得了网卡硬件,我们要重新构造tcp/ip协议栈,那么就需要做两部分工作。一部分由上层协议完成,他们的工作是将要发送的数据进行封装,主要是在数据包上添加包头数据结构,包头里有很多控制字节,用于不同节点间进行数据传送时对传送过程的控制和调整,了解,掌握,实现每层数据协议的包头结构以及数据控制流程是我们系列课程的重点和难点。
望月从良
2018/12/20
1.4K0
从0到1用java再造tcpip协议栈:使用jpacap模拟数据链路层
使用java自造TCP/IP协议栈:使用JPCAP实现数据发包
从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱,分别是操作系统,编译器,和网络协议,我们完成了前面三者,还剩第三者一直孤悬在那,直到今天我终于下定决心,尝试着把tcp/ip协议栈也重新实现一遍。
望月从良
2018/12/20
2.5K0
使用java自造TCP/IP协议栈:使用JPCAP实现数据发包
从0到1用java再造tcpip协议栈:实现ARP协议层
经过前两节的准备,我们完成了数据链路层,已经具备了数据包接收和发送的基础设施,本机我们在此基础上实现上层协议,我们首先从实现ARP协议开始。先简单认识一下ARP协议,ARP是一种寻址协议,它要找寻目标的物理地址,连接在互联网上的设备有两种地址,一种叫IP,也就是我们常见的192.168.2.1这类地址,另一种叫物理地址,例如我们电脑上的mac地址。
望月从良
2018/12/20
1.7K0
从0到1用java再造tcpip协议栈:实现ARP协议层
18.1 Socket 原生套接字抓包
原生套接字抓包的实现原理依赖于Windows系统中提供的ioctlsocket函数,该函数可将指定的网卡设置为混杂模式,网卡混杂模式(Promiscuous Mode)是常用于计算机网络抓包的一种模式,也称为监听模式。在混杂模式下,网卡可以收到经过主机的所有数据包,而非只接收它所对应的MAC地址的数据包。
王 瑞
2023/10/25
4980
18.1 Socket 原生套接字抓包
【java网络】IO编程
Prequirement 在继续阅读这篇文章之前,请务必先阅读前面这篇Java IO概述,因为Java把所有的IO都统一成流(Stream)了。 TCP/IP协议栈。知道IP、端口、DNS、Socket、URL、TCP、UDP、HTTP等网络相关知识。 IP地址: InetAddress java.net.InetAddress类是Java对IP地址(包括IPv4和IPv6)的封装。一般来说,它同时包含主机名(hostname)和IP地址。 1. 创建方式(工厂方法) public static InetA
程序员互动联盟
2018/03/16
1.3K0
Java UDP的简单实例以及知识点简述
  Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类。
Rekent
2018/09/04
7520
Java UDP的简单实例以及知识点简述
基于Go Packet实现网络数据包的捕获与分析
Packet capture is a computer networking term for intercepting a data packet that is crossing or moving over a specific computer network.Once a packet is captured, it is stored temporarily so that it can be analyzed. The packet is inspected to help diagnose and solve network problems and determine whether network security policies are being followed.
RiboseYim
2018/01/20
6.6K0
[golang] 抓包注入分析
Packet Capture, Analysis, and Injection with Go by John Leon at GopherCon 2016
landv
2019/08/01
3.4K0
运用Npcap库实现SYN半开放扫描
Npcap 是一款高性能的网络捕获和数据包分析库,作为 Nmap 项目的一部分,Npcap 可用于捕获、发送和分析网络数据包。本章将介绍如何使用 Npcap 库来实现半开放扫描功能。TCP SYN 半开放扫描是一种常见且广泛使用的端口扫描技术,用于探测目标主机端口的开放状态。由于这种方法并不完成完整的 TCP 三次握手过程,因此具有更高的隐蔽性和扫描效率。
王 瑞
2024/08/10
2360
运用Npcap库实现SYN半开放扫描
计网 - TCP 实战:如何进行 TCP 抓包调试?
Wireshark 是世界上应用最广泛的网络协议分析器,它让我们在微观层面上看到整个网络正在发生的事情。
小小工匠
2021/08/17
7310
计网 - TCP 实战:如何进行 TCP 抓包调试?
对IM的一点小思考
最近在做IM(即时通讯:Instant Messaging)项目(基于网易云信)的升级改造, 虽然核心的通讯采用第三方SDK,但是对于即时通讯这一块还是产生了不少疑惑, 这篇文章主要记录自己对于实现聊天双方的即时通讯的思考。
每天学Java
2020/06/01
8710
研究网卡地址注册时的一点思考
我曾经写过一篇和本文标题类似的文章《研究优雅停机时的一点思考》,上文和本文都有一个共同点:网卡地址注册和优雅停机都是一个很小的知识点,但是背后牵扯到的知识点却是庞大的体系,我在写这类文章前基本也和大多数读者一样,处于“知道有这么个东西,但不了解细节”的阶段,但一旦深挖,会感受到其中的奇妙,并有机会接触到很多平时不太关注的知识点。
kirito-moe
2019/05/14
1K0
研究网卡地址注册时的一点思考
如何在交换机上抓包,以H3C、华为、锐捷、Arista、Cisco为例
具体操作可查看这:https://www.h3c.com/cn/d_202009/1327093_30005_0.htm
网络技术联盟站
2021/04/27
15.9K0
Go每日一库之117:gopacket(网络数据抓包)
gopacket是google出品的golang三方库,质量还是靠的住,项目地址为:github.com/google/gopacket gopacket到底是什么呢?是个抓取网络数据包的库,这么说可能还有点抽象,但是抓包工具大家可能都使用过。 Windows平台下有Wireshark抓包工具,其底层抓包库是npcap(以前是winpcap); Linux平台下有Tcpdump,其抓包库是libpcap; 而gopacket库可以说是libpcap和npcap的go封装,提供了更方便的go语言操作接口。
luckpunk
2023/09/30
4.6K0
数据通信网络之IPv6基础
如图 1 所示,路由器 R1 通过两个物理接口分别连接物联网终端 R4(通过一台路由器 模拟)及计算机 PC1。其中,路由器 R1 和 R4 推荐使用 AR2220 及以上设备。
timerring
2023/10/13
6820
数据通信网络之IPv6基础
java:获取本机IP,Linux环境下使用InetAddress.getLocalHost()方法获得127.0.0.1
在windows环境: 使用InetAddress.getLocalHost()方法看似正常能获得本地ip,实际也有不确定性(多网卡协同工作环境下是不准确的)
鲲志说
2025/04/07
1610
java:获取本机IP,Linux环境下使用InetAddress.getLocalHost()方法获得127.0.0.1
C/C++ 运用Npcap发送UDP数据包
Npcap 是一个功能强大的开源网络抓包库,它是 WinPcap 的一个分支,并提供了一些增强和改进。特别适用于在 Windows 环境下进行网络流量捕获和分析。除了支持通常的网络抓包功能外,Npcap 还提供了对数据包的拼合与构造,使其成为实现 UDP 数据包发包的理想选择。本章将通过Npcap库构造一个UDP原始数据包,并实现对特定主机的发包功能,通过本章的学习读者可以掌握如何使用Npcap库伪造特定的数据包格式。
王 瑞
2023/11/26
1.2K0
C/C++ 运用Npcap发送UDP数据包
android获取Mac地址和IP地址
(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法)
程思扬
2022/01/10
9.7K0
数据通信网络之OSPFv3基础
如图1 所示,三台路由器R1、R2 和R3 分别通过相应物理接口进行连接,其中,R1 及 R3 各自下联一个网段,简单起见,此处只体现了这些网段中的两台计算机PC1 和PC2,PC1 与PC2 分别使用R1 及R3 作为自己的默认网关。其中,路由器R1、R2 和R3 推荐使用 AR2220 及以上设备。
timerring
2023/10/13
4400
数据通信网络之OSPFv3基础
Rust pnet库的使用
可以理解为, pcap是一种文件格式(其实是一种接口格式),其名称来源于“抓包”(packet capture)
fliter
2024/01/15
1.2K0
Rust pnet库的使用
推荐阅读
相关推荐
从0到1用java再造tcpip协议栈:使用jpacap模拟数据链路层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验