jpcap安裝與配置、資料包攔截

atlantisholic發表於2011-12-06

一.JPCAP簡介

  眾所周知,Java語言雖然在TCP/UDP傳輸方面給予了良好的定義,但對於網路層以下的控制,卻是無能為力的。JPCAP擴充套件包彌補了這一點。

     JPCAP實際上並非一個真正去實現對資料鏈路層的控制,而是一箇中介軟體,JPCAP呼叫wincap/libpcap,而給JAVA語言提供一個公共的介面,從而實現了平臺無關性。在官方網站上宣告,JPCAP支援FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft windows 2000/XP等系統。

     使用Jpcap能做的事:

1.Jpcap是直接抓取經過資料鏈路層的資料包。 因此可以自己寫IP資料包直接傳送給資料鏈路層。

2.Jpcap會對抓取到的資料包進行一定程式的解析,根據資料包內容,將資料包封裝為對應的物件()。

3.根據使用者設定的資訊,過濾資料包(其實就是在解析的時候,對不需要的資料直接丟棄,不解析)

4.Jpcap 只是直接從資料鏈路層上讀取資料,並向資料鏈路層中傳送資料,因此,Jpcap並不能操作 其他程式從資料鏈路層中讀資料或者向網路卡中傳送資料。(IP層協議程式)

二.JpcapWinpcap下載

    Jpcap下載地址:

    http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html

    Wincap下載地址:

    http://www.winpcap.org/archive/,在VCVS上的配置不再敖述,本文重點介紹JAVA方法。下載後安裝winpcap

    JPCAP還有一個圖形介面的工具JpcapDumper。看起來很不錯:http://netresearch.ics.uci.edu/kfujii/jpcapdumper/doc/index.html

三.Jpcap包的安裝與配置(Eclipse環境下)
       1)
下載並安裝JRE(提供的JDK中就預設安裝JRE了,所以不要在下載其他版本的JRE了);
       2)
下載並安裝winpcap(儘量下載最新版本);
       3)
配置Jpcap路徑:這一步也是最重要的一步。具體路徑為,把Jpcap資料夾下lib資料夾裡的Jpcap.dll複製到"C:\Program Files\Java\jre1.6.0_07\bin"資料夾裡面(複製到你機器JRE資料夾放到bin資料夾裡面就可以了,其中JRE的版本一定要與Eclipse配置的版本一致),再把Jpcap資料夾下lib資料夾裡的Jpcap.jar複製到"C:\Program Files\Java\jre1.6.0_07\lib\ext"資料夾裡面(複製到你機器JRE資料夾->lib->ext放到ext資料夾裡面就可以了),
       4) 配置EclipseJRE環境,(一定需要),選擇Window->preferences->Java->Installed JREs,Installed JREs選擇框中選擇相應的JRE版本,點Edit

選擇Add External JARs…,選擇你的Jpcap.jar包("C:\Program Files\Java\jre1.6.0_07\lib\ext"資料夾裡),在Finish就配置全部完成了;

 5) 編寫,除錯,執行程式。

四.可能出現的問題

第一個錯誤:

    加進來後,死活提示專案有錯誤,明明一切包都放好了,還是不行。網上找了很多,都不靠譜,有的甚至寫的很深奧。最後把JRE刪掉再重新匯入,就好了。方法:右鍵點你的專案->properties->Java buildpath->remove,然後再匯入。

第二個錯誤:

    錯誤提示是“no dependence libray”,這個簡單,90%是你沒裝winpcap

第三個錯誤:

    這是最常見的, java.lang.UnsatisfiedLinkError: no jpcap in java.library.path。解決這個錯誤的辦法說實在的,估計有很多,在這裡我只說我的。

    這個錯誤提示是在javalibrary路徑裡找不到jpcap.dll,於是我System.out.println(System.getProperty("java.library.path"));發現路徑很多,包括system32,於是我把jpcap.dll複製到system32,還是不行。繼續複製到別的路徑,依然不行。我又在run配置里加入-Djava.library.path=C:/WINDOWS/system32,還是不行。就在我一籌莫展時,我發現那JRE包路徑是在“D:/Program Files/Genuitec/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/”,於是順藤摸瓜進去,發現有個jre資料夾,裡面有binlib,就又把dll之類的複製過去,這下可以了,順利編譯。根路徑不一定全部相同,自己找一下。

.API

    http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/javadoc/index.html?overview-summary.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-712804/,如需轉載,請註明出處,否則將追究法律責任。

相關文章