我只是四处寻找如何制作一个能用Java嗅探网络流量的程序,但我找不到任何东西。我想知道是否有任何方法可以查看网络流量。我听说过一个Socket的想法,但我不明白这是怎么回事。所以无论如何,只是寻找API或自己编写它的方法。
修改 我很乐意喜欢API,但我还想澄清使用Socket嗅探流量的方法。
答案 0 :(得分:6)
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);
}
}
答案 1 :(得分:4)
另一个Java libpcap包装器是https://github.com/kaitoy/pcap4j
Pcap4J是一个用于捕获,制作和发送数据包的Java库。 Pcap4J通过JNA包装本机数据包捕获库(libpcap或WinPcap),并为您提供面向Java的API。
答案 2 :(得分:1)
你需要一个数据包嗅探器api,你可能需要netutils:
' netutils' package提供了一个低级java网络库。它 包含广泛的嗅探,注射,建筑基础设施 并解析以太网/ IP / TCP / UDP / ICMP数据包。
答案 3 :(得分:1)
没有告诉任何API或java相关的事情,但如果你真的只想嗅探数据用于分析目的,那么请尝试:WireShark
。它是一个用于网络分析的应用程序。
如果有人不知道,它会很有用。