Ответ 1
Tcpdump может сообщить вам PID/процесс, из которого приходит пакет /.
В ваших вариантах введите "-k NP".
Поддерживается версия: tcpdump version 4.3.0 - Apple version 56
Кто-нибудь знает простой способ попросить Linux "отображать каждый интернет-пакет в/из google chrome" или "отображать каждый интернет-пакет в/из telnet-процесса с помощью PID 10275"?
Пример telnet не слишком полезен, так как я могу просто использовать wirehark или tcpdump, чтобы увидеть все TCP-разговоры, связанные с портом 23. Это и никто больше не использует telnet. Но обнюхивание всех пакетов в/из сложных приложений, использующих многие порты, кажется полезным.
Я нашел некоторые связанные ответы, исследуя различные способы подтверждения портов и PID (или имен программ) и т.д., но ничего о пакетах
Похоже, кто-то, возможно, готов был заплатить за этот ответ некоторое время назад:
NetHogs полезно для быстрого просмотра того, какие программы создают трафик по интерфейсу, но у него нет способа захвата пакеты.
Tcpdump может сообщить вам PID/процесс, из которого приходит пакет /.
В ваших вариантах введите "-k NP".
Поддерживается версия: tcpdump version 4.3.0 - Apple version 56
Я бы использовал lsof -i
, чтобы получить номера портов, связанные с приложением, которое я хочу.
Код будет выглядеть следующим образом:
process=firefox for _port in `lsof -i | grep $process | cut -d' ' -f18 | cut -d: -f2 | cut -d'-' -f1` do port=$_port [[ "$_port" == +([a-zA-Z]) ]] && port=`cat /etc/services | grep '^$_port' | cut -d' ' -f12 | cut -d'/' -f1 | uniq | head -n 1` echo "tcpdump -w ${port}.pcap port $port &" tcpdump -w ${port}.pcap port $port & done
Обратите внимание, что вывод команд может отличаться для разных версий/распределений. Поэтому вам лучше проверить, что правильные обрезки разрезаются перед использованием script.
Кроме того, этот script не отслеживает открытые порты. Для этого я бы рассмотрел более сложный script, который регулярно проверяет порты (используя что-то вроде watch
)
И не забудьте впоследствии удалить все процессы tcpdump.