?? jpcaptip.java
字號(hào):
import java.io.*;
import jpcap.*;
import jpcap.packet.*;
import java.lang.*;
public class JpcapTip implements PacketReceiver
{
static long p=0,q=0;
IPPacket ip;
String s,s1;
Long s2;
int count=1;//定義抓包次數(shù)記錄
public void receivePacket(Packet packet) //實(shí)現(xiàn)接口PacketReceiver類中的receivePacket方法
{
if(packet instanceof IPPacket) //判斷是否為IP數(shù)據(jù)包(只對(duì)IP數(shù)據(jù)包進(jìn)行處理)
{
count++;
System.out.println("ok"+count); //屏幕輸出IP數(shù)據(jù)包的信息
ip=(IPPacket)packet;
try
{
System.out.println(ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.protocol+"\t"+
ip.length+"\t"+ip.version+"\t"+ip.ident+"\t"+
ip.rsv_frag+"\t"+ip.offset+"\t"+ip.hop_limit+"\t"+ip.rsv_tos+ip.data+"\r\n");
RandomAccessFile rf = new RandomAccessFile("packet.txt", "rw"); //把IP數(shù)據(jù)包寫入到文本文件
rf.seek(rf.length()); //定位文件指針在文件中的最后
rf.writeBytes(ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.protocol+"\t"+
ip.length+"\t"+ip.version+"\t"+ip.ident+"\t"+
ip.rsv_frag+"\t"+ip.offset+"\t"+ip.hop_limit+"\t"+
ip.rsv_tos+ip.data+"\r\n"); /*向txt文件寫入IP的源地址,目標(biāo)地址,高層協(xié)議,長(zhǎng)度, 版本號(hào),標(biāo)識(shí)符(序號(hào)),標(biāo)志,段偏移量,數(shù)據(jù)報(bào)的壽命數(shù)值,服務(wù)型號(hào),數(shù)據(jù)*/
rf.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws java.io.IOException
{
NetworkInterface[] devices = JpcapCaptor.getDeviceList(); //獲取設(shè)備列表名
NetworkInterface deviceName = devices[1]; // 打開網(wǎng)卡設(shè)備
JpcapCaptor jpcap = JpcapCaptor.openDevice(deviceName, 1028, true, 100);
/*即將打開的設(shè)備名 從設(shè)備上一次讀取的最大字節(jié)數(shù) 說明是否將設(shè)備設(shè)為混雜模式的Boolean值
超時(shí)值 */
jpcap.loopPacket(100000, new JpcapTip()); //循環(huán)獲取100000個(gè)數(shù)據(jù)包
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -