Как я могу прослушивать сетевой трафик в Java?
Я просто искал вокруг, чтобы найти программу, которая могла бы прослушивать мой сетевой трафик на Java, но я ничего не мог найти. Я хотел знать, есть ли способ просмотреть проходящий сетевой трафик. Я слышал об идее с сокетом, но я не понимаю, как это будет работать. Так или иначе, просто ищу API или способ написать это сам.
РЕДАКТИРОВАТЬ: Я бы с удовольствием хотел API, но я также хотел бы получить разъяснения о том, как перехватить трафик с помощью сокета.
4 ответа
jpcap, jNetPcap - это проекты-обертки pcap на Java.
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);
}
}
Другая оболочка Java libpcap - https://github.com/kaitoy/pcap4j
Pcap4J - это библиотека Java для захвата, создания и отправки пакетов. Pcap4J оборачивает собственную библиотеку захвата пакетов (libpcap или WinPcap) через JNA и предоставляет вам Java-ориентированные API.
Не рассказывать ни об API, ни о Java, но если вы действительно хотите анализировать данные только для целей анализа, попробуйте: WireShark
, Это приложение, используемое для анализа сети.
Это полезно, если кто-то не знает.
Вам нужен пакетный сниффер api, возможно, вам нужен netutils:
Пакет netutils предоставляет сетевую библиотеку Java низкого уровня. Он содержит обширную инфраструктуру для прослушивания, внедрения, построения и анализа пакетов Ethernet/IP/TCP/UDP/ICMP.