Как найти PID процесса, который владеет пойманным пакетом с libpcap в c?

Необходимо найти pid процесса, которому принадлежит пойманный пакет.

Есть ли способ сделать это без долгого разбора /proc/net/tcp и /proc/<PID>/fd/ ? Может быть, нужно понюхать пакеты по-другому? Я должен найти самый быстрый способ сопоставить пакет и его мастер-процесс в C.

One Solution collect form web for “Как найти PID процесса, который владеет пойманным пакетом с libpcap в c?”

Я не думаю, что существует какой-либо другой способ, /proc/net/* и /proc/*/fd/ похоже, что lsof и netstat -p читаются. Наличие уникального отображения из сокетов (или портов TCP) для процессов также было бы невозможным, поскольку несколько процессов могут иметь копии одного и того же сокета. netstat -p кажется, показывает только один из них, конечно же, перечисляет все. Кроме того, поскольку вы начинаете с пакета, у него может отсутствовать исходный сокет: он может поступать извне системы или из сырого / пакетного сокета

  • Debian только распознает eth0 при установке
  • Как получить доступ к одному IP-адресу с использованием разных сетевых интерфейсов
  • ping не получает пакетов, но tcpdump может видеть, как они попадают
  • «TeamViewer не готов. Пожалуйста, проверьте свою связь "ошибка в Fedora 25
  • OpenSSH зависает после входа в систему без приглашения для входа в систему
  • Как вы добавляете IP-адрес виртуальной сети из командной строки ядра?
  • ifconfig показывает неверный IP-адрес
  • Сетевые адаптеры с поддержкой OpenVZ не будут работать из конфигураций примеров
  • Очень низкая производительность диска на Samba
  • Как установить статический IPv6 IP-адрес на встроенную плату Linux, используя ifconfig (busybox)?
  • Wi-Fi подключен, но нет пинга (сужается до интерфейса Ethernet, каким-то образом мешающего функциям Wifi)
  • Linux и Unix - лучшая ОС в мире.