PcapNetworkInterface возвращает значение null для данного IP-адреса

Я пытаюсь захватить пакеты. В моем «исследовательском» примере я использую IP-адрес веб-сайта, который я посещаю в браузере. Я использую PCAP4J для сбора информации о пакете.

Основываясь на шаге 3 https://www.pcap4j.org/, у меня сложилось впечатление, что я могу просто получить интернет-адрес и начать его слушать:

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

Однако, когда я меняю этот ip на свой личный пример (185.57.10.32), ниф возвращает ноль.

Я распечатал следующий список 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

В этом смысле я понимаю, что ниф возвращает null, поскольку его нет в списке. Однако это заставляет меня не понимать, почему пример, приведенный автором, не работает, как я ожидал.

Поэтому я думаю, что первым вопросом будет: можно ли прослушивать определенный ip через Pcap4J? В этом случае IP-адрес веб-сайта. Или веб-сайты невозможны, и я должен сделать еще один тестовый пример?

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
363
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IP-адрес, который вы должны передать Pcaps.getDevByAddress(), есть у NIF. Вы можете захватывать пакеты с любых IP-адресов с помощью NIF.

Когда я использую адрес любого устройства из списка устройств, nif не равен нулю. Таким образом, у меня сложилось впечатление, что я просто не могу слушать какой-либо IP. Например, если я использую 8.8.8.8 в качестве IP-адреса, значение nif равно нулю, как и ожидалось?

Crittje 18.03.2018 18:04

Да, это ожидаемо, потому что у вас нет NIF с 8.8.8.8. IP-адрес, переданный Pcaps.getDevByAddress(), ни в коем случае не будет использоваться при захвате пакетов.

kaitoy 19.03.2018 00:17

Хорошо, ясно, я понял. Действительно, если я использую IP-адрес интерфейса, который также использует tcpdump, я получаю пакеты. Спасибо за разъяснение! Я приму ответ!

Crittje 19.03.2018 08:21

Другие вопросы по теме