PcapNetworkInterface returns 给定 IP 上为空
PcapNetworkInterface returns null on given IP
我正在尝试捕获包裹。在我的 "exploration" 示例中,我使用了我在浏览器中访问的网站的 IP。我正在使用 PCAP4J 来捕获包信息。
基于 https://www.pcap4j.org/ 的第 3 步,我的印象是我可以简单地拥有一个互联网地址并开始收听它:
InetAddress addr = InetAddress.getByName("192.168.10.100");
PcapNetworkInterface nif = Pcaps.getDevByAddress(addr);
但是,当我将此 ip 更改为我的个人示例 (185.57.10.32) 时,nif returns 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("###############");
其中returns以下:
wlp2s0
任何
罗
码头工人0
enp3s0f1
br-df16c72d2764
蓝牙0
nflog
非队列
usbmon1
USBmon2
所以从这个意义上说,我理解 nif returns null 因为它不在列表中。但是,这让我不明白为什么作者给出的例子没有达到我的预期。
所以我认为第一个问题是:可以通过 Pcap4J 收听特定的 ip 吗?在这种情况下,一个网站的 ip。或者网站是不可能的,我应该再做一个测试用例吗?
谢谢!
您应该传递给 Pcaps.getDevByAddress()
的 IP 地址是 NIF 拥有的 IP 地址。
您可以使用 NIF 从任何 IP 地址捕获数据包。
我正在尝试捕获包裹。在我的 "exploration" 示例中,我使用了我在浏览器中访问的网站的 IP。我正在使用 PCAP4J 来捕获包信息。
基于 https://www.pcap4j.org/ 的第 3 步,我的印象是我可以简单地拥有一个互联网地址并开始收听它:
InetAddress addr = InetAddress.getByName("192.168.10.100");
PcapNetworkInterface nif = Pcaps.getDevByAddress(addr);
但是,当我将此 ip 更改为我的个人示例 (185.57.10.32) 时,nif returns 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("###############");
其中returns以下:
wlp2s0 任何 罗 码头工人0 enp3s0f1 br-df16c72d2764 蓝牙0 nflog 非队列 usbmon1 USBmon2
所以从这个意义上说,我理解 nif returns null 因为它不在列表中。但是,这让我不明白为什么作者给出的例子没有达到我的预期。
所以我认为第一个问题是:可以通过 Pcap4J 收听特定的 ip 吗?在这种情况下,一个网站的 ip。或者网站是不可能的,我应该再做一个测试用例吗?
谢谢!
您应该传递给 Pcaps.getDevByAddress()
的 IP 地址是 NIF 拥有的 IP 地址。
您可以使用 NIF 从任何 IP 地址捕获数据包。