编程语言
首页 > 编程语言> > 我怎样才能在Java中嗅探网络流量?

我怎样才能在Java中嗅探网络流量?

作者:互联网

我只是四处寻找如何制作一个可以用Java嗅探网络流量的程序,但我找不到任何东西.我想知道是否有任何方法可以查看网络流量.我听说有一个Socket的想法,但我不明白这是怎么回事.所以无论如何,只是寻找API或自己编写它的方法.

编辑:
我很乐意喜欢API,但我还想澄清一下使用Socket嗅探流量的方法.

解决方法:

jpcap,jNetPcap – 这些是Java中的pcap包装项目.

Kraken – 类似的项目,有大量的例子.

来自Kraken网站的简单示例:

public static void main(String[] args) throws Exception {
    File f = new File("sample.pcap");

    EthernetDecoder eth = new EthernetDecoder();
    IpDecoder ip = new IpDecoder();
    TcpDecoder tcp = new TcpDecoder(new TcpPortProtocolMapper());
    UdpDecoder udp = new UdpDecoder(new UdpPortProtocolMapper());

    eth.register(EthernetType.IPV4, ip);
    ip.register(InternetProtocol.TCP, tcp);
    ip.register(InternetProtocol.UDP, udp);

    PcapInputStream is = new PcapFileInputStream(f);
    while (true) {
        // getPacket() will throws EOFException and you should call is.close() 
        PcapPacket packet = is.getPacket();
        eth.decode(packet);
    }
}

标签:sniffing,java,sockets
来源: https://codeday.me/bug/20190929/1830503.html