PcapNetworkInterface在给定IP上返回null

时间:2018-03-15 11:54:55

标签: java packet-capture network-interface pcap4j

我正在尝试捕获包。在我的“探索”示例中,我使用我在浏览器中访问的网站的IP。我正在使用PCAP4J来捕获包信息。

基于https://www.pcap4j.org/的第3步,我的印象是我可以简单地拥有互联网地址并开始收听它:

InetAddress addr = InetAddress.getByName("192.168.10.100");
PcapNetworkInterface nif = Pcaps.getDevByAddress(addr);

但是,当我将此ip更改为我的个人示例(185.57.1​​0.32)时, nif 将返回null。

我打印出一个PcapNetworkInterfaces列表,如下所示:

System.out.println("#### LIST OF DEVS ####");

List<PcapNetworkInterface> devices = Pcaps.findAllDevs();

for (PcapNetworkInterface device : devices) {
    System.out.println(device.getName());
}
System.out.println("###############");

返回以下内容:

wlp2s0 任何 罗 docker0 enp3s0f1 BR-df16c72d2764 bluetooth0 nflog nfqueue usbmon1 usbmon2

所以从这个意义上讲,我明白 nif 会返回null,因为它不在列表中。但是,这让我不明白为什么作者给出的例子不符合我的预期。

所以我认为第一个问题是:可以通过Pcap4J听一个特定的ip吗?在这种情况下,一个网站的IP。或者网站不可能,我应该制作另一个测试用例吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你应该传递给Pcaps.getDevByAddress()的IP地址是NIF所拥有的。 您可以使用NIF从任何IP地址捕获数据包。