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

📄 jpcaptip.java

📁 进行网络抓包
💻 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 + -