使用jnetpcap捕获数据包进行流量检测

本文介绍了如何使用jnetpcap库,一个Java对libpcap的封装,来监听网络接口并捕获数据包,以此进行流量检测。通过CaptureCore.java示例代码,详细阐述了jnetpcap的使用方法。
摘要由CSDN通过智能技术生成

jnetpcap是用java对libpcap的一个封装,它可以用来监听网卡,捕获数据包


CaptureCore.java

package nssa.nm.capture;
 
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import org.jnetpcap.Pcap;
import org.jnetpcap.PcapIf;
 
public class CaptureCore {
     
    public static List<PcapIf> getDevs() {//获取机器上的网卡列表
        List<PcapIf> devs = new ArrayList<PcapIf>();
        StringBuilder errsb = new StringBuilder();
        int r = Pcap.findAllDevs(devs, errsb);
        if (r == Pcap.NOT_OK || devs.isEmpty()) {
            JOptionPane.showMessageDialog(null,errsb.toString(),"错误",JOptionPane.ERROR_MESSAGE);
            return null;
        } else {
            return devs;
        }
    }
     
    public static void startCaptureAt(int num) {//选择一个网卡开启抓包
        List<PcapIf> devs = new ArrayList<PcapIf>();
        StringBuilder errsb = new StringBuilder();
        int r = Pcap.findAllDevs(devs, errsb);
        if (r == Pcap.NOT_OK || devs.isEmpty()) {
            JOptionPane.showMessageDialog(null,errsb.toString(),"错误",JOptionPane.ERROR_MESSAGE);
            return;
        }
        PcapIf device = devs.get(num);
        int snaplen = Pcap.DEFAULT_SNAPLEN;//长度65536
        int flags = Pcap.MODE_PROMISCUOUS;//混杂模式
        int timeout = 10 * 1000;
        //S
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值