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

时间:2014-10-02 00:52:33

标签: java sockets sniffing

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

修改 我很乐意喜欢API,但我还想澄清使用Socket嗅探流量的方法。

4 个答案:

答案 0 :(得分:6)

jpcapjNetPcap - 这些是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);
    }
}

答案 1 :(得分:4)

另一个Java libpcap包装器是https://github.com/kaitoy/pcap4j

  

Pcap4J是一个用于捕获,制作和发送数据包的Java库。 Pcap4J通过JNA包装本机数据包捕获库(libpcap或WinPcap),并为您提供面向Java的API。

答案 2 :(得分:1)

你需要一个数据包嗅探器api,你可能需要netutils

  

' netutils' package提供了一个低级java网络库。它   包含广泛的嗅探,注射,建筑基础设施   并解析以太网/ IP / TCP / UDP / ICMP数据包。

答案 3 :(得分:1)

没有告诉任何API或java相关的事情,但如果你真的只想嗅探数据用于分析目的,那么请尝试:WireShark。它是一个用于网络分析的应用程序。

如果有人不知道,它会很有用。