⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 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 + -