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

📄 jpcaptip.java

📁 可以抓取网络数据包
💻 JAVA
字号:
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;//定义抓包次数记录     
      public void receivePacket(Packet packet)   //实现接口PacketReceiver类中的receivePacket方法
      { 
          if(packet instanceof IPPacket) //判断是否为IP数据包(只对IP数据包进行处理)
          { 
              count++;
             System.out.println("ok"+count);    //屏幕输出IP数据包的信息   
              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数据包写入到文本文件
                      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的源地址,目标地址,高层协议,长度, 版本号,标识符(序号),标志,段偏移量,数据报的寿命数值,服务型号,数据*/
                      rf.close();
                     String src_ip=ip.src_ip.toString();        //定义几个变量用来存放数据包的相应的信息    
                     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";   //驱动程序名
                     String conURL="jdbc:odbc:du";      //du为一个已经建好的数据源
                     try
                       {
                        Class.forName(JDriver);           //获取驱动程序并加载
                       }
                     catch(java.lang.ClassNotFoundException e)    //异常处理
                       { 
    	                 System.out.println("ForName:"+e.getMessage());
    	               }
                     Connection con=DriverManager.getConnection(conURL);//建立和数据库的连接
                     Statement s=con.createStatement();
                     String query="insert into message1 values('"+src_ip+"','"+dst_ip+"','"+protocol+"','"+length+"','"+version+"','"+ident+"')";
                     s.executeUpdate(query);//执行SQL语句命令
                     s.close();
                     con.close();        //关闭操作  
                 }
                 catch (Exception e) {
                      e.printStackTrace();
                 }
 
          }
                   
      }     
      public static void main(String[] args) throws java.io.IOException
      {
    	  NetworkInterface[] devices =  JpcapCaptor.getDeviceList(); //获取设备列表名
    	  NetworkInterface deviceName = devices[1];    // 打开网卡设备
          JpcapCaptor jpcap =  JpcapCaptor.openDevice(deviceName, 1028, true, 100);
            /*即将打开的设备名 从设备上一次读取的最大字节数 说明是否将设备设为混杂模式的Boolean值
            超时值 */
        jpcap.loopPacket(100000, new JpcapTip()); //循环获取100000个数据包
      }
    
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -