📄 jpcaptip wxy
字号:
import java.io.*;
import java.sql.*;
import jpcap.*;
import jpcap.packet.*;
import java.util.*;
import java.text.*;
public class JpcapTip implements PacketReceiver
{
static int num=0; //用来显示抓包数量。
IPPacket ip; //用来作为数据包存储对象。
public void receivePacket(Packet packet)
{
if(packet instanceof IPPacket)
{
System.out.println("ok");//编译通过,开始运行。
ip=(IPPacket)packet;//获取数据包。
long time1=System.currentTimeMillis();//获取数据包时间。
num++;
//往文件中写入数据包的信息。
try
{
RandomAccessFile rf = new RandomAccessFile("05124.txt", "rw");
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+"\r\n");
rf.close();
//往数据库中加数据
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";//加载数据库驱动。
String conURL="jdbc:odbc:wyx";//创建数据库连接
try
{
Class.forName(JDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.out.println("ForName:"+e.getMessage());
}
Connection con=DriverManager.getConnection(conURL);//连接数据库。
System.out.println("ok");//确认连接成功。
Statement s=con.createStatement();
//往数据库里面加数据。
String query="insert into packet values('"+ ip.src_ip +"','"+ ip.dst_ip +"', '"+ ip.protocol +" ', '"+ ip.length +" ', '"+ ip.version +" ', '"+ ip.ident +" ', '"+ ip.rsv_frag +" ', '"+ ip.offset +" ', '"+ ip.hop_limit +"', '"+ ip.rsv_tos +"')";
s.executeUpdate(query);//对前面语句的执行。
s.close();
con.close();//关闭连接。
}
catch (Exception e)
{
e.printStackTrace();
}
long time2=System.currentTimeMillis();//完成数据包写入时间。
//在运行窗口上显示数据包。
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+"\r\n");
//显示时间间隔和获取的数据包总数。
System.out.println("时间间隔:"+time2+"-"+time1+"="+(time2-time1)+"\n获取包数目:"+num);
//System.exit(0);
}
}
public static void main(String[] args) throws java.io.IOException
{
NetworkInterface[] devices = JpcapCaptor.getDeviceList();//获取计算机的设备名,并存放在数组里面。
NetworkInterface deviceName = devices[3];//得到网卡设备名。
JpcapCaptor jpcap1 = JpcapCaptor.openDevice(deviceName, 1028, true, 100);
//即将打开的设备名//
//从设备上一次读取的最大字节数//
//说明是否将设备设为混杂模式的Boolean值//
//超时值//
jpcap1.loopPacket(100000, new JpcapTip());//进行抓包。
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -