導航:首頁 > 文件目錄 > java篩選pcap文件內容

java篩選pcap文件內容

發布時間:2023-08-25 05:24:53

網路嗅探器的設計與實現 全代碼 最簡單的就行 最好用java 可以用的加分

主要原理是利用網卡的混雜模式,和乙太網自身的特點進行的。
java寫的話用 JPACAP

Jpcap是一個能夠抓取與發送網路數據包的Java組件。可以使用Jpcap從一個網路介面獲取數據包,然後在Java中對它們進行分析和顯示。同樣也可以通過一個網路介面發送任意數據包。Jpcap當前能夠 捕獲乙太網,IPv4,IPv6,ARP/RARP,TCP,UDP和ICMPv4數據包。
Jpcap實際上並非一個真正去實現對數據鏈路層的控制,而是一個中間件,Jpcap調用wincap/libcap,而給Java語言提供一個公共的介面,從而實現了平台無關性。在官方網站上聲明,Jpcap支持FreeBSD3.x,Linux RedHat6.1, Fedora Core4,Solaris,and Microsoft Windows 2000/XP等系統
Jpcap的整個結構大體上跟wincap/libpcap是很相像的,例如NetworkInterface類對應wincap的 typedef struct_ADAPTER ADAPTER,getDeviceList()對應pcap_findalldevs()等等。
Jpcap主要的類有如下幾個:
1.NetworkInterface
該類的每一個實例代表一個網路設備,一般就是網卡。這個類只有一些數據成員,除了繼承自java.lang.Object的基本方法以外,沒有定義其它方法。
2.JpcapCaptor
該類提供了一系列靜態方法實現一些基本的功能。該類一個實例代表建立了一個與指定設備的鏈接,可以通過該類的實例來控制設備,例如設定網卡模式、設定過濾關鍵字等等。
3.JpcapSender
該類專門用於控制數據包的發送。
4.Packet
這個是所有其它數據包類的父類。Jpcap所支持的數據包有:
ARPPacket、DatalinkPacket、EthernetPacket、ICMPPacket、IPPacket、TCPPacket、UDPPacket。

Ⅱ SplitCap的使用

來源:http://www.netresec.com/?page=SplitCap

SplitCap是免費的開源pcap文件分割器。SplitCap根據TCP和UDP會話將一個大型pcap文件拆分為多個文件,每個會話一個pcap文件。SplitCap還可以用於將pcap文件拆分為每個主機對的pcap文件,而不是會話。

SplitCap最好的特點之一就是它的速度非常快!

SplitCap中的TCP和UDP會話概念被定義為雙向流,即所有具有相同5-touple(源主機、目標主機、源埠、目標埠、傳輸協議)的幀/數據包,不管包方向是同一會話的一部分。

SplitCap是使用NET framework 2.0用c#編寫的。在運行SplitCap之前,請確保安裝了它。大多數版本差檔的MS Windows默認設置NET framework 2.0框架。

SplitCap是由Erik Hjelmvik提供的統計協議識別研究項目的一部分,該項目由瑞典互聯網基礎設施基金會(the Swedish Internet Infrastructure Foundation)提供。

SplitCap可以從版本1.5中使用,以便有效地過濾基於一個或多個IP地址或udp埠號的大型PCAP文件。虛指亂簡單地使用「-s nosplit」選項和一個或多個「-埠」或「-ip」開關來指定從大型pcap文件中保留哪些流量。SplitCap執行這種類型的過濾的速度要快得多,而且與tshark相比,它的內存使用更少。

警告:當使用「- yl7」SplitCap提取應用層數據(L7)時,不執行任何適當的TCP會話重新組裝。逗仔這意味著TCP重新傳輸和重疊部分將導致相同的數據寫入兩次。無序的TCP包也會導致應用程序層數據以無序的順序存儲。

可以進行適當的TCP會話重新組裝的應用程序是NetworkMiner和Wireshark。

在我們的博客文章「拆分或過濾您的PCAP文件與SplitCap」中,您可以閱讀更多關於如何使用SplitCap。

使用GUI應用程序分割大型pcap。

是否需要根據流/會話篩選大型pcap文件?那麼請看看我們的CapLoader工具吧。CapLoader可以有效地提取來自大型pcap文件的單個或多個流的完整內容數據。請訪問我們的CapLoader頁面獲取更多信息:

https://www.netresec.com/?page=CapLoader

SplitCap中流保存的信息:

在一個流提取文件中包含了雙向通信中的所有流數據信息,以上是訪問某網站時的雙向流信息.

以下是用wireshark展看的截獲的流數據信息:

Ⅲ java怎麼解析Wireshark抓包文件

注意:

  1. 如果鏈接另一個Web站點時,客戶端將再次對下一個站點進行DNS查詢(156、157幀),TCP三次握手(158、159、160幀)。

  2. 31幀是客戶端請求網路,通過DNS伺服器解析IP地址的過程。標識為「A」記錄。

  3. 32幀是DNS伺服器回應客戶端請求的過程。標識為response。

Ⅳ java如何編程實現,獲取固定IP發來所有的數據包

額。。。初看到你的問題的時候嚇了一跳。還以為是用java實現網路嗅探呢。
你問的是socket編程?
那麼socket 均分為兩個,
一部分是服務端,
一部分是客戶端,
服務端一直開啟著監聽,
現在你的情況和平時不太一樣的是,平時,是服務端的ip不變化,而客戶端的變化。而是客戶端給服務端進行發送。
你的情況是相反。客戶端經常變動ip或者埠,而要求服務端發送。
其實轉換一下思路就好了。
有點類似於現在網頁在線聊天工具里的「長連接」思想。
你的那個固定ip伺服器,可以完全不管,你是什麼埠。因為,如果你的電腦准備好接受數據了。那麼你就向服務端發起請求。而服務端將結果發送給你。就是說,不是說伺服器一直給你發送,而是,你這個客戶端只要准備好接受數據,就向伺服器發送請求。這樣,不是沒有問題了么。。

如果還按你那個思路就是,你的電腦,需要實現網路嗅探的部分功能。但是

Java是網路層以上的。
你通過Java的Socket得到的數據包嗅探不出什麼敏感的東東了。
所以Java不適合做網路嗅探。

不過還好,現在有了叫jpcap的工具。你可以搜一下,
下面是一個簡單的實現,裡面獲得了來源的ip和埠 你可以加一個判斷,如果來源ip是固定的ip的話,那麼,你可以獲取對應的數據包

本程序用eclipse編輯在J2SDK6.0+WinPcap 3.1+Jpcap 0.5下編譯運行

/*******************
* JpcapTip.java
*/
package m;

import jpcap.PacketReceiver;
import jpcap.JpcapCaptor;
import jpcap.packet.*;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
//import java.net.InetAddress;
//import java.net.UnknownHostException;

public class JpcapTip implements PacketReceiver {

public void receivePacket(Packet packet) {
System.out.println("********************************************");
/*IP數據報報文頭*/
byte[] l=packet.header;
/*
for (int t=0;t<21;t++){
System.out.print(l[t]+" *** ");
}
*/
String str="";
System.out.print("報文頭 : ");
for (int i=0;i<l.length;i++) {
//str=str+l;
int m=0;
m=l[i];
m=m<<24;
m=m>>>24;
str=str+Integer.toHexString(m);
//System.out.print(" *** "+l[i]);
}
System.out.println(str);
int d=l.length;
System.out.println("首部長度 :"+(d*8)+"bit");

/*分析源IP地址和目的IP地址*/
/*分析協議類型*/
/**
if(packet.getClass().equals(IPPacket.class)) {
IPPacket ipPacket=(IPPacket)packet;
byte[] iph=ipPacket.option;
String iphstr=new String(iph);
System.out.println(iphstr);
}
*/
if(packet.getClass().equals(ARPPacket.class))
{
System.out.println("協議類型 :ARP協議");
try {
ARPPacket arpPacket = (ARPPacket)packet;
System.out.println("源網卡MAC地址為 :"+arpPacket.getSenderHardwareAddress());
System.out.println("源IP地址為 :"+arpPacket.getSenderProtocolAddress());
System.out.println("目的網卡MAC地址為 :"+arpPacket.getTargetHardwareAddress());
System.out.println("目的IP地址為 :"+arpPacket.getTargetProtocolAddress());

} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(UDPPacket.class))
{
System.out.println("協議類型 :UDP協議");
try {
UDPPacket udpPacket = (UDPPacket)packet;
System.out.println("源IP地址為 :"+udpPacket.src_ip);
int tport = udpPacket.src_port;
System.out.println("源埠為:"+tport);
System.out.println("目的IP地址為 :"+udpPacket.dst_ip);
int lport = udpPacket.dst_port;
System.out.println("目的埠為:"+lport);
} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(TCPPacket.class)) {
System.out.println("協議類型 :TCP協議");
try {
TCPPacket tcpPacket = (TCPPacket)packet;
int tport = tcpPacket.src_port;
System.out.println("源IP地址為 :"+tcpPacket.src_ip);
System.out.println("源埠為:"+tport);
System.out.println("目的IP地址為 :"+tcpPacket.dst_ip);
int lport = tcpPacket.dst_port;
System.out.println("目的埠為:"+lport);
} catch( Exception e ) {
e.printStackTrace();
}
}
else
if(packet.getClass().equals(ICMPPacket.class))
System.out.println("協議類型 :ICMP協議");
else
System.out.println("協議類型 :GGP、EGP、JGP協議或OSPF協議或ISO的第4類運輸協議TP4");

/*IP數據報文數據*/
byte[] k=packet.data;
String str1="";
System.out.print("數據 : ");
for(int i=0;i<k.length;i++) {
//int m=0;
//m=k[i];
//m=m<<24;
//m=m>>>24;
//str1=str+Integer.toHexString(m);
str1 = new String(k);
//str1=str1+k[i];
//System.out.print(" *** "+k[i]);
}
System.out.println(str1);
System.out.println("數據報類型 : "+packet.getClass());

System.out.println("********************************************");
}

public static void main(String[] args) throws Exception{
// TODO 自動生成方法存根

NetworkInterface[] devices = JpcapCaptor.getDeviceList(); //.getDeviceList();.
//for (int i =0; i<devices.length;i++) {
int a=0;
//try {
/*本地網路信息*/
byte[] b=devices[1].mac_address; //網卡物理地址
//}
//catch() {}
System.out.print("網卡MAC : 00");
for (int j=0;j<b.length;j++){
//a=a<<8;
a=b[j];
a=a<<24;
a=a>>>24;
System.out.print(Integer.toHexString(a));
}
System.out.println();
NetworkInterfaceAddress[] k=devices[1].addresses;

//System.out.println("網卡MAC : "+Integer.toHexString(a));
for(int n=0;n<k.length;n++) {
System.out.println("本機IP地址 : "+k[n].address); //本機IP地址
System.out.println("子網掩碼 : "+k[n].subnet); //子網掩碼
}
System.out.println("網路連接類型 : "+devices[1].datalink_description);
//}
NetworkInterface deviceName = devices[1];
/*將網卡設為混雜模式下用網路設備deviceName*/
JpcapCaptor jpcap =JpcapCaptor.openDevice(deviceName, 2000, false, 1); //openDevice(deviceName,1028,false,1);
jpcap.loopPacket(-1,new JpcapTip());
}

}

加油~~

閱讀全文

與java篩選pcap文件內容相關的資料

熱點內容
下載編程貓後哪裡有客服 瀏覽:13
如何編輯歌曲文件格式 瀏覽:638
cf無限領取cdk工具 瀏覽:350
如何讓手機文件保存到電腦上 瀏覽:459
sa資料庫默認密碼是多少 瀏覽:191
電腦正在查找文件 瀏覽:541
一個文件盒省內寄順豐多少錢 瀏覽:41
誅仙62坐騎怎麼升級到63 瀏覽:926
linux以日期查看日誌記錄 瀏覽:446
工業大數據是什麼東西 瀏覽:881
魅族note3怎麼重置網路 瀏覽:510
c語言程序設計模 瀏覽:92
兒童怎麼做可編程機 瀏覽:603
數據計算屬於什麼統計學 瀏覽:921
07word怎麼去掉標記 瀏覽:979
qq緩存的數據是什麼 瀏覽:348
LED主Kv文件多少兆 瀏覽:856
蘋果edge怎麼刪除下載文件 瀏覽:471
sas邏輯回歸代碼 瀏覽:572
用於keil下的stc器件資料庫 瀏覽:400

友情鏈接