Como poderia cheirar o tráfego de rede em Java?
editar: Eu gostaria de ter uma API, mas também gostaria de um esclarecimento sobre o caminho para farejar trânsito com uma tomada.
4 answers
Jpcap, jNetPcap -- esses são projetos de envoltórios pcap em Java.
Kraken -- projecto semelhante, bem documentado com muitos exemplos.
Um exemplo simples do site do 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);
}
}
Outra embalagem Java libpcap é https://github.com/kaitoy/pcap4j
Pcap4J é uma biblioteca Java para capturar, elaborar e enviar pacotes. O Pcap4J envolve uma biblioteca nativa de captura de pacotes (libpcap ou WinPcap) através da JNA e fornece-lhe APIs orientados para Java.
Precisas de uma api de sniffer pacotes, talvez netutils é o que precisas:
O pacote 'netutils' dá uma biblioteca de rede java de baixo nível. Ele contém uma extensa infra-estrutura para cheirar, injectar, construir e a analisar os pacotes Ethernet/IP/TCP/UDP / ICMP.
Não dizer qualquer coisa relacionada com API ou java, mas se você realmente quiser apenas cheirar dados para fins de análise, então dê tentativa: WireShark
. É uma aplicação utilizada para análise em rede.