欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JPCAP:使用Java來(lái)sniffer網(wǎng)絡(luò )數據包

JPCAP:使用Java來(lái)sniffer網(wǎng)絡(luò )數據包

 

前幾天在CSDN社區上看到有人提到用JPCAP可以實(shí)現Java抓包的功能,也就是sniffer的功能,很是激動(dòng),就下載了一個(gè)。發(fā)現網(wǎng)上到處流傳的那個(gè)版本無(wú)法使用,就自己實(shí)驗了一下,把我的例子給貼出來(lái)共享一下。

我這個(gè)例子只用了基本的功能,由于我發(fā)現JPCAP本身帶的例子選擇網(wǎng)絡(luò )接口卡時(shí)有問(wèn)題,前面一大部分是選擇用本機的哪個(gè)網(wǎng)絡(luò )接口卡來(lái)抓包, Windows 2000下調試通過(guò),可以通過(guò)修改相應的端口號抓到關(guān)注的某種應用層協(xié)議的包,也可以把相應的注釋打開(kāi)看到Raw Packet, 并把抓到的包的內容同時(shí)顯示在控制臺上和保存在capture.txt 文件里,每次抓包的結果用“****”號作了分割。呵呵,發(fā)現這是進(jìn)行網(wǎng)絡(luò )實(shí)驗很好的素材。

    JPCAP可以從http://www.sf.net/projects/jpcap上下載,在不同操作系統平臺上上運行需要本地庫支持,即Windows下需要安裝WinPCAP(到http://www.winpcap.org下載),Linux下需要libcap。

編譯和運行下面程序的批處理文件run.bat內容

javac -cp lib\jpcap.jar;. CapturePacketTest.java

java -Djava.library.path=lib -cp lib\jpcap.jar;. CapturePacketTest

 

下面是測試程序:

// CapturePacketTest.java

import net.sourceforge.jpcap.capture.*;

import net.sourceforge.jpcap.net.*;

import java.util.*;

import java.io.*;

 

public class CapturePacketTest implements RawPacketListener,PacketListener{

   

    //public Vector<String> CaptureVec = new Vector<String>();

    public static FileOutputStream  fos = null;

   

    public static void main(String[] args)throws Exception{

              // Print copyright info

              System.out.println();

              System.out.println("Capture Ethernet packet Ver 0.01, author yanqlv(maomao).");

              System.out.println("Copyright (c) 2005 yanqlv of Luoyang Normal College, all Rights Reserved.");

              System.out.println();

       

        // Determin which capture device to use      

        PacketCapture pcap = new PacketCapture();

              String defaultDevice = pcap.findDevice();

        StringTokenizer st1 = new StringTokenizer(defaultDevice,"\n");

        String defaultDeviceStr = st1.nextToken();

        int default_num = 1;       

       

        String[] capDevices = pcap.lookupDevices();

        int capdevice_num = capDevices.length;

        System.out.println("There"+ (capdevice_num>1?"are":"is") + " "+ capdevice_num +"device"+(capdevice_num>1?"s":"")+" found!");

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

        for (int i=0; i<capdevice_num; i++){

            //System.out.println("*****capture device["+ i +"]="+capDevices[i]);

            StringTokenizer st = new StringTokenizer(capDevices[i],"\n");

            String capStr = st.nextToken();

            String capDesc = st.nextToken();

            if( defaultDeviceStr.equals(capStr) ) default_num = i+1;

            System.out.println( "[" + (i+1) + "] " + capStr + "\n(" + capDesc + ")");

        }

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

     

        System.out.println("(default to use "+ default_num +")");       

      

        int selectn = 1;

        if(capdevice_num > 1 ){

            System.out.print("Please select [");

            for(int i=0; i<capdevice_num;i++) {

                System.out.print(i+1);

                if(i!=capdevice_num-1) System.out.print(" or ");

            }

            System.out.print("]:");          

            String readstr = new DataInputStream(System.in).readLine();

            selectn = Integer.parseInt( new String( readstr ) );

        }

        //System.out.println("selectn="+selectn);

               

        // Want to save capture result to file

        fos = new FileOutputStream("capture.txt");

 

        // Begin capture

        pcap.open( (new StringTokenizer(capDevices[selectn-1],"\n")).nextToken(),true );               

        CapturePacketTest t1= new CapturePacketTest();

        pcap.addRawPacketListener(t1);

        pcap.addPacketListener(t1);

        pcap.capture(-1);

 

    }

   

    public void rawPacketArrived(RawPacket rawPacket){

        //System.out.println("rawPacket="+rawPacket);

    }

   

    public void packetArrived(Packet packet) {

        try{

            if( packet instanceof TCPPacket){

                TCPPacket tcppacket = ((TCPPacket)packet);

                //System.out.println("Packet="+packet);

                //System.out.println("window size="+tcppacket.getWindowSize());

                //System.out.println("Packet="+((TCPPacket)packet).toColoredVerboseString(true));

                //if( tcppacket.getDestinationPort()==110 || tcppacket.getSourcePort() ==110) // pop3

                if( tcppacket.getDestinationPort()==80 || tcppacket.getSourcePort() ==80){ // http

                    String captureStr = new String( tcppacket.getTCPData() );

                    System.out.println( ">>"+ captureStr);

                    fos.write(tcppacket.getTCPData());

                    fos.write(new String("**********************************************************\n").getBytes());

                    //fos.close();

                    //CaptureVec.addElement(captureStr);

                }

            }

        }catch(Exception ioe){

            System.out.println("Exception ocurred:"+ioe);

        }

    }

   

}

 

JPCAP也提供了生成網(wǎng)絡(luò )數據包的功能,正在探索中,有時(shí)間想做個(gè)能發(fā)Magic Packet網(wǎng)卡遠程喚醒主機的程序,等完成后再貼上來(lái)大家共享。

 

(上述文章是yanqlv原創(chuàng ),轉貼請注明出處,謝謝關(guān)注)



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=547402


[收藏到我的網(wǎng)摘]   yanqlv發(fā)表于 2005年12月08日 20:56:00

相關(guān)文章:
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用jpcap編寫(xiě)抓包程序
jpcap:Java如何處理ICMP報文的收發(fā)
使用SharpPCap在C#下進(jìn)行網(wǎng)絡(luò )抓包 - armyao - 博客園
java常用集合類(lèi)詳解(有例子,集合類(lèi)糊涂的來(lái)看?。?.
JAVA網(wǎng)絡(luò )編程,基本概念與開(kāi)發(fā)
Arduino Modbus RTU
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久