java解析Pcap(io.pkts)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010889616/article/details/78360173

目前解析Pcap的第三方库有Pcap4j、JnetPcap等,这两个库需要调用Native代码,window下运行需要dll文件,linux下需要so包,跨平台特性不是很好,现在推荐使用io.pkts来解析Pcap网络报文,纯java代码就可以实现,使用起来非常方便,跨平台特性非常好。

下面简单介绍下如何使用:

1、新建Gradle工程,在build.gradle文件增加下面依赖

    // https://mvnrepository.com/artifact/io.pkts/pkts-streams
    compile group: 'io.pkts', name: 'pkts-streams', version: '3.0.1'

    // https://mvnrepository.com/artifact/io.pkts/pkts-core
    compile group: 'io.pkts', name: 'pkts-core', version: '3.0.1'

2、在F盘下面放置aa.pcap文件,使用下面的代码就可以进行解析。

package com.wzj.pcap;

import io.pkts.PacketHandler;
import io.pkts.Pcap;
import io.pkts.buffer.Buffer;
import io.pkts.packet.Packet;
import io.pkts.protocol.Protocol;

import java.io.IOException;

/**
 * Created by wzj on 2017/10/26.
 */
public class PcapParser
{
    public static void main(String[] args) throws IOException
    {
        final Pcap pcap = Pcap.openStream("f:\\aa.pcap");

        pcap.loop(new PacketHandler()
        {
            @Override
            public boolean nextPacket(final Packet packet) throws IOException
            {
                if (packet.hasProtocol(Protocol.TCP))
                {
                    Buffer payload = packet.getPacket(Protocol.TCP).getPayload();
                    if (payload != null)
                    {
                        System.out.println(payload);
                    }

                }

                return true;
            }
        });
    }
}


展开阅读全文

没有更多推荐了,返回首页