web-dev-qa-db-ja.com

Javaでネットワークトラフィックをスニッフィングするにはどうすればよいですか?

Javaでネットワークトラフィックを盗聴するプログラムを作成する方法を見つけるために周りを見回していましたが、何も見つかりませんでした。経由するネットワークトラフィックを表示する方法があるかどうかを知りたいと思いました。 Socket のアイデアを聞きましたが、それがどのように機能するのかわかりません。とにかく、自分でAPIまたはそれを書く方法を探しているだけです。

編集:私はAPIが好きですが、ソケットでトラフィックをスニッフィングする方法についても説明をお願いします。

8
Java Is Cool

jpcapjNetPcap -これらはJavaのpcapラッパープロジェクトです。

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);
    }
}
6
Byungjoon Lee

別のJava libpcapラッパーは https://github.com/kaitoy/pcap4j

Pcap4Jは、Javaパケットをキャプチャ、作成、送信するためのライブラリです。Pcap4Jは、JNAを介してネイティブパケットキャプチャライブラリ(libpcapまたはWinPcap)をラップし、Java指向のAPIを提供します。

4
kervin

APIやJava関連することは何も伝えていませんが、分析目的でデータのみをスニッフィングしたい場合は、WireSharkを試してください。そのアプリケーションはネットワーク分析に使用されます。

誰かが知らない場合に役立ちます。

1
murtaza.webdev

パケットスニファAPIが必要です。多分 netutils が必要です。

「netutils」パッケージは、低レベルのJavaネットワークライブラリを提供します。これには、イーサネット/ IP/TCP/UDP/ICMPパケットをスニッフィング、注入、構築、解析するための広範なインフラストラクチャが含まれています。

1
Juned Ahsan