jpcap网络流量监控

来源:互联网 发布:淘宝 鸟枪暗语 编辑:程序博客网 时间:2024/05/01 22:33

    网络流量统计类型大概有三种:1、监听网络抓取数据包。2、分析服务器的日志文件。3、植入脚本文件

   根据第一类做了一个小案例:

   语言:java 

   首先配置好java运行环境。安装winPcap,然后将jacap.dll放在jdk安装目录的bin下。

   winPcap,jacap.dll,jacap.jar下载地址:http://download.csdn.net/detail/can_not_find/9186939

   创建一个java本地项目,导入jacap.jar在网上找的代码(亲测可用),代码如下:

   

  1. import java.io.IOException;  
  2. import java.util.Scanner;  
  3. import jpcap.*;  
  4. import jpcap.packet.*;  
  5. public class NetFetcher implements PacketReceiver{  
  6.   
  7.     @Override  
  8.     public void receivePacket(Packet arg0) {  
  9.           
  10.         //将抓取的包进行输出  
  11.         System.out.println(arg0);  
  12.         TCPPacket tcp = (TCPPacket) arg0;
  13.         System.out.println("请求ip:" + tcp.src_ip + ",目标ip:" + tcp.dst_ip);
  14.         System.out.println("数据:");
    System.out.println("**********************************");
    for (int i = 0; i < tcp.data.length; i++) {
    System.out.print((char) tcp.data[i]);
    }
    System.out.println(new String(tcp.data));
  15.     }  
  16.       
  17.     public static void main(String[] args){  
  18.           
  19.         //获得网卡设备列表  
  20.         NetworkInterface[] devices = JpcapCaptor.getDeviceList();  
  21.         if(devices.length==0){  
  22.               
  23.             System.out.println("无网卡信息!");  
  24.             return;  
  25.         }  
  26.         //输出网卡信息  
  27.         for(int i=0;i<devices.length;i++){  
  28.               
  29.             System.out.println("网卡"+i+"信息:"+devices[i].name);  
  30.             for(NetworkInterfaceAddress address:devices[i].addresses){  
  31.                   
  32.                 System.out.print(address.address+" ");  
  33.             }  
  34.             System.out.println("\n");  
  35.         }  
  36.           
  37.         Scanner scan = new Scanner(System.in);  
  38.         System.out.println("请选择您要监听的网卡序号:");  
  39.         int index = scan.nextInt();  
  40.           
  41.         //监听选中的网卡  
  42.         try {  
  43.             JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000false20);  
  44.             jpcapCaptor.loopPacket(-1new NetFetcher());  
  45.         } catch (IOException e) {  
  46.             // TODO Auto-generated catch block  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50. }  

   运行以上代码即可监听网卡, 获取的信息可以查看jpcap帮助文档。将该项目导出jar文件,在需要监听的服务器中运行。则可监听访问数据
      二、cmd中如何运行jar文件
       将该项目导出的jar文件放在服务器的某文件夹下,将jpcap.jar放在其同一目录下
       导出后的jar文件中的META-Info下会自动生成MANIFEST.MF文件,在其中增加运行入口main方法所在的类,和所有关联的jar包(此处仅关联jpcap.jar)
       Manifest-Version: 1.0
      Class-Path: jpcap.jar 
      Main-Class: MyTest 
  
     第一行为自动生成。第二行为关连架包,架包之间空格区分。第三行为运行主方法
     cmd下跳转到项目目录下,键入 java  -jar   **.jar   (**为改项目jar名称)
   

   



0 0