📄 jpcaptip.java
字号:
import java.io.*;
import java.sql.*;
import jpcap.*;
import jpcap.packet.*;
import jpcap.JpcapCaptor;
import jpcap.PacketReceiver;
import jpcap.packet.Packet;
/*源地址 目的地址 协议 长度 标识 最大跳数 服务类型
src_ip dst_ip protocol length ident hop_limit rsv_tos
*/
public class JpcapTip implements PacketReceiver
{
static int max =200000;//最大抓包数量
static int IP_packet = 0;//ip数据包数量
static int Num_udp =0;
static int Num_tcp =0;
static int Num_icmp =0;
static int length_packet=0;
static int length_udp=0;
static int length_tcp=0;
static int length_icmp=0;
static int bhour,bminuters,bseconds;
static int ehour,eminuters,eseconds;
static int interval;
static StringBuffer str = new StringBuffer("");
static Connection con;
static Statement s ;
static IPPacket ip;
public void receivePacket(Packet packet)
{
if (packet instanceof IPPacket)
{
ip = (IPPacket) packet;
IP_packet++;
length_packet+=ip.length;
switch(ip.protocol)
{
case IPPacket.IPPROTO_TCP: Num_tcp++;break;
case IPPacket.IPPROTO_UDP: Num_udp++;break;
case IPPacket.IPPROTO_ICMP:Num_icmp++;break;
}
str.append(IP_packet+" :"+ip.src_ip.getHostAddress() + "-->" + ip.dst_ip.getHostAddress() + "\t\t" + ip.protocol
+ "\t" + ip.length + "\t" + ip.ident+ "\t" + ip.hop_limit + "\t" + ip.rsv_tos+"\n");
System.out.print(str);
writefile();//将信息写入文件
}
}
public static void init()//初始化连接,创建表,初始化字段
{
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";//驱动
String constr="jdbc:odbc:hejun";//packet 数据源
try{
Class.forName(JDriver);
}catch(java.lang.ClassNotFoundException e){
System.out.println("init():Driver"+e.getMessage());
}
try{
con= DriverManager.getConnection(constr);
s=con.createStatement();
String query="create table packetaccess ("
+"num integer,"
+"src_ip char(20),"
+"dst_ip char(20),"
+"protocol integer,"
+"length integer,"
+"ident integer,"
+"hop_limit integer,"
+"rsv_tos integer"
+")";
s.executeUpdate(query);
}catch(SQLException e){
System.out.println("init():SQL"+"\t"+e.getMessage() );
}
}
public static void over()//释放连接
{
try{
s.close();
con.close();
}catch(SQLException e){
System.out.println("over()"+"\t"+e.getMessage() );
}
}
public static void writetext()
{
try{
RandomAccessFile rf = new RandomAccessFile("packet.txt", "rw");
rf.seek(rf.length());
rf.writeBytes(str.toString());
rf.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void writeaccess()
{
String query="insert into packetaccess values("+IP_packet +",'"
+ip.src_ip.getHostAddress() +"','"
+ip.dst_ip.getHostAddress() +"',"
+ip.protocol +","
+ip.length +","
+ip.ident +","
+ip.hop_limit+","
+ip.rsv_tos +")";
try{
s.executeUpdate(query);
}catch(SQLException e){
System.out.println("writeaccess()"+"\t"+e.getMessage() );
}
}
public static void writefile()
{
writetext();
writeaccess();
str.delete(0, str.length() - 1); // 缓存内容清空//
}
public static void main(String[] args) throws java.io.IOException
{
NetworkInterface devices[] = JpcapCaptor.getDeviceList();
for (int i = 0; i < devices.length; i++)
System.out.println(i+" :"+"(" + devices[i].description+")");
System.out.println("请选择要使用的捕获设备:");
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
String name=keyin.readLine();
JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[Integer.valueOf(name)], 2000, true, 20);
init();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -