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

📄 nsxsniffer.java

📁 流量分析 可以对SNIFFER抓的包进行分析
💻 JAVA
字号:
/*
 * @(#)NSXSniffer.java
 * 网络捕包器,NSXSniffer
 */

package com.tianxun.NEI.sniffer;

import com.tianxun.NEI.sniffer.util.JAbstractApp;

import java.io.File;
import java.util.Collections;
import java.util.Map;
import java.util.List;
import java.util.LinkedList;
import java.util.Timer;
import com.tianxun.NEI.sniffer.util.GscDiag;
import com.tianxun.NEI.sniffer.util.Logger;

/**
 * @author 聂军
 * @version 1.0 2004-9-10
 */

public class NSXSniffer extends JAbstractApp {

    // 全局应用程序对象
    private static NSXSniffer theApp = null;

    // 缓冲原始数据包
    private List snifferDatas;

    // 原始数据包过滤器
    private Filter filter;

    // 调度发送UDP包的线程
    private Timer timer = null;

    // Sniffer数据解析器
    private SnifferParser parser;

    /**
     * 构造器.
     */
    public NSXSniffer() {
        super("NSXSniffer");
        loadConfig(".." + File.separator + "NSXSniffer.properties");
        snifferDatas = Collections.synchronizedList(new LinkedList());
        int logLevel = getConfigParam("logLevel",0);
        GscDiag.initialize(".." + File.separator + "log", "Sniffer", logLevel);
    }

    /**
     * 开始运行网络包的抓取, 并分析包.
     */
    public void snifferRun() {
        String name = getConfigParam("Filter.dir", "../filter");
        filter = new SnifferFilter(name);

        // 创建并启动获取网络数据包的线程
        Thread reciveSniffer = new SnifferReceiver(snifferDatas);
        reciveSniffer.start();

        parser = new SnifferParser(snifferDatas);
        String priority = getConfigParam("Parse.thread.priority", "norm");
        if (priority.equalsIgnoreCase("max")) {
            parser.setPriority(Thread.MAX_PRIORITY);
        }
        parser.start();

        timer = new Timer();
        int interval = getConfigParam("Send.flow.interval.time", 30000);
        timer.schedule(new SnifferSender(), interval, interval);
    }

    /**
     * 得到包过滤器.
     *
     * @return Filter.
     */
    public Filter getFilter() {
        return filter;
    }

    /**
     * @return 全局应用程序对象.
     */
    public static NSXSniffer getApp() {
        return theApp;
    }

    /**
     * 得到当前解析器使用的有效记录缓冲区.
     *
     * @return Map.
     */
    public Map getCurrentValidBuffer() {
        return parser.getCurrentValidBuffer();
    }

    /**
     * 运行起点.
     *
     * @param args - 命令行参数.
     */
    public static void main(String[] args) {
        System.out.println(
            "****************准备启动NSXSniffer****************\n");
        theApp = new NSXSniffer();

        // 获取动态连接库的位置
        String lib = getConfigParam("JSniffer.dll.position", "JSniffer");
        String[] libs = {lib};
        JSniffer.loadLibrary(libs);

        // 设置网卡为混杂模式, 并初始化抓包条件
        int port = getConfigParam("Netcard.raw.mode.port", 56734);
        if (!JSniffer.initSniffer(port)) {
            System.out.println(
                "****************NSXSniffer启动失败****************\n");
            getLogger().log(getLevel(0), "Init Sniffer Failed!");
            System.exit(0);
        }

        theApp.snifferRun();
        GscDiag.log(0, "begin sniffer");
        System.out.println(
            "          ......正在捕捉网络数据包......\n");
        System.out.println(
            "****************NSXSniffer启动成功****************\n");
    }

}

⌨️ 快捷键说明

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