我怎样才能在Java中嗅探网络流量?
作者:互联网
我只是四处寻找如何制作一个可以用Java嗅探网络流量的程序,但我找不到任何东西.我想知道是否有任何方法可以查看网络流量.我听说有一个Socket的想法,但我不明白这是怎么回事.所以无论如何,只是寻找API或自己编写它的方法.
编辑:
我很乐意喜欢API,但我还想澄清一下使用Socket嗅探流量的方法.
解决方法:
jpcap,jNetPcap – 这些是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);
}
}
标签:sniffing,java,sockets 来源: https://codeday.me/bug/20190929/1830503.html