?? jpcaptip.java
字號(hào):
import java.io.*;
import jpcap.*;
import jpcap.packet.*;
import java.lang.*;
import java.sql.*;
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é)議,長度, 版本號(hào),標(biāo)識(shí)符(序號(hào)),標(biāo)志,段偏移量,數(shù)據(jù)報(bào)的壽命數(shù)值,服務(wù)型號(hào),數(shù)據(jù)*/
rf.close();
String src_ip=ip.src_ip.toString(); //定義幾個(gè)變量用來存放數(shù)據(jù)包的相應(yīng)的信息
String dst_ip=ip.dst_ip.toString();
int protocol=ip.protocol;
int length=ip.length;
int version=ip.version;
int ident=ip.ident;
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver"; //驅(qū)動(dòng)程序名
String conURL="jdbc:odbc:du"; //du為一個(gè)已經(jīng)建好的數(shù)據(jù)源
try
{
Class.forName(JDriver); //獲取驅(qū)動(dòng)程序并加載
}
catch(java.lang.ClassNotFoundException e) //異常處理
{
System.out.println("ForName:"+e.getMessage());
}
Connection con=DriverManager.getConnection(conURL);//建立和數(shù)據(jù)庫的連接
Statement s=con.createStatement();
String query="insert into message1 values('"+src_ip+"','"+dst_ip+"','"+protocol+"','"+length+"','"+version+"','"+ident+"')";
s.executeUpdate(query);//執(zhí)行SQL語句命令
s.close();
con.close(); //關(guān)閉操作
}
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 + -