首頁 > 美食

java利用Jpcap實現抓包

由 Hacker歲月 發表于 美食2023-01-28

簡介}public static void main(String[] args){獲得網絡卡裝置列表NetworkInterface[] devices = JpcapCaptor

什麼是java抓包

## Jpcap簡介和環境搭建

Jpcap是一個可以監控當前網路情況的中介軟體,彌補了java對網路層以下的控制,

可以達到抓包的效果。

Jpcap執行需要依賴winCap和Jpcap的dll動態庫和Jpcap。jar包。

獲取winCap和Jpcap安裝包

docs。qq。com/doc/DUE9lT2l2SHB2b3pG

一 一安裝後

jdk–>bin目錄會多了一個Jpcap。dll

java利用Jpcap實現抓包

jre–>bin目錄會多了一個Jpcap。dll

java利用Jpcap實現抓包

jre–>lib–>ext會多一個Jpcap的jar包

java利用Jpcap實現抓包

## 常用類

* 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

java利用Jpcap實現抓包

## Jpcap實現抓包demo

```java

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

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();

}

}

}

```

Tags:Jpcap網絡卡資料包importSystem