2014-10-02 2 views
7

저는 Java에서 네트워크 트래픽을 감지하는 프로그램을 만드는 방법을 찾으려고했지만 아무 것도 찾을 수 없었습니다. 나는가는 네트워크 트래픽을 볼 방법이 있는지 알고 싶었습니다. 내가 Socket이라는 아이디어를 들었지만 어떻게 작동하는지 알지 못합니다. 어쨌든, API 또는 API를 직접 작성하는 방법을 찾고 있습니다.Java에서 네트워크 트래픽을 스니핑 할 수 있습니까?

편집 : API가 좋겠지 만 소켓을 사용하여 트래픽을 스니핑하는 방법에 대한 설명도 나와 있습니다.

+0

당신은 자바'Socket.'로 할 수 없습니다. – EJP

+0

@EJP, bjlee는 분명히 그가 C++의 원시 소켓을 가지고 그렇게 말한 것입니다. 그냥 지적 해. –

답변

6

jpcap, jNetPcap- 이들은 Java의 pcap wrapper 프로젝트입니다.

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); 
    } 
} 
+0

이것은 도움이되었지만 Socket으로 처리하는 방법을 명확히 할 수 있다면 좋을 것입니다. –

+0

@ JavaIsCool, 나는 소켓을 사용한다는 생각이 구현하기가 매우 어렵다고 생각한다. RAW 소켓을 포함한 많은 네트워킹 지식이 필요합니다. 일단 비슷한 솔루션을 C++에서 RAW 소켓을 통해 구현했지만 유사한 단계를 따르지 않는 것이 좋습니다. –

+0

좋습니다! 의견을 보내 주셔서 감사합니다! –

1

당신은 패킷 스니퍼 API를 필요 어쩌면 netutils는 당신이 필요로하는 무엇을 :

'netutils'패키지는 낮은 수준 자바 네트워크 라이브러리를 제공합니다. 에는 스니핑, 주입, 빌드 및 이더넷/IP/TCP/UDP/ICMP 패킷 구문 분석을위한 광범위한 인프라가 포함되어 있습니다.

4

또 다른 자바 libpcap의 래퍼 https://github.com/kaitoy/pcap4j

Pcap4J이 캡처 공예 패킷을 전송하는 자바 라이브러리입니다. Pcap4J는 JNA를 통해 원시 패킷 캡처 라이브러리 (libpcap 또는 WinPcap)를 래핑하고 Java 지향 API를 제공합니다.

+0

이것은 여전히 ​​유지되는 유일한 것이다. – Vangel

0

API 또는 Java와 관련된 사항은 없지만 분석 목적으로 데이터를 스니핑하고 싶다면 WireShark을 사용해보십시오. 네트워크 분석에 사용되는 응용 프로그램입니다.

누군가가 알지 못하는 경우 유용합니다.

관련 문제