Я был бы рад, если бы в Linux был один инструмент командной строки для перехвата пакетов одной команды. что-то вроде sniff dumpfile command
того, чтобы вы могли просто запустить команду, которую вы хотите, чтобы сниффинг пакетов в терминале и получить дамп пакетов в другом месте.
Я хотел бы сбросить / сохранить / увидеть только сетевой трафик одной введенной команды, а не весь трафик TCP на моем едином сетевом интерфейсе. Так что, если бы я вошел в свой компьютер и в фоновом режиме работал IRC, и sniff somefile wget http://www.google.com
я бы хотел увидеть весь сетевой трафик, который команда wget сделала для загрузки http://www.google.com . Я не хочу, чтобы у «somefile» трафик в сети IRC сбивал с толку.
Есть много команд linux / unix, которые принимают другую команду и делают что-то другое. С sudo
(запускать с правами суперпользователя), nice
изменить хороший уровень trickle
(ограничить пропускную способность команды)
Ответы:
Я не знаю ни одного, но теоретически не должно быть трудно получить нечто подобное. Strace может использоваться для перехвата системных вызовов.
Это даст вам информацию о данных, передаваемых между ядром и процессом. Вывод strace не совсем то, что вы хотели бы. Однако strace использует системный вызов ptrace для перехвата системных вызовов. Возможно, можно написать программу для вывода данных более полезной.
Кроме того, вы также можете перехватить полезные сокеты, связать и прослушивать системные вызовы. Можно было бы написать небольшую программу, которая использовала бы ptrace для этих вызовов и libpcap для динамического изменения фильтра захвата каждый раз, когда открывается новый сокет.
источник
Tracedump
Скачать и описание здесь: http://mutrics.iitis.pl/tracedump
источник
Попробуй Wireshark - команда будет
tshark
Или ты действительно хочешь LSOF?
Я не думаю, что есть инструмент, который будет динамически фильтровать все коммуникации, связанные с процессом. Тем не менее, вы можете попытаться отследить взаимодействие процессов с помощью таких инструментов, как,
lsof
и если у вас есть хороший фильтр, который может изолировать взаимодействие этого процесса от всего остального трафика, работающего в вашей системе, вы можете получить правильный перехват.Например,
wget
обычно IP-адрес назначения отличается от другого трафика, связанного с процессом. Даже если вы берете что-то подобное,skype
диапазон портов назначения обычно фиксирован для экземпляра.Это немного похоже на принцип неопределенности. Обычно вы можете знать, что происходит с набором коммуникационных путей (с помощью снифферной фильтрации по идентифицированной группе потоков) или где создаются разные коммуникационные каналы (с помощью lsof).
Я действительно хотел бы знать, могут ли оба быть сделаны для заявления. Я думаю, что это должно быть осуществимо. Но, еще не видел, чтобы какой-либо инструмент сделал это.
источник
Научитесь использовать выражения фильтра.
Хотя это не будет делать то, что вы просите.
Это позволит вам удалить почти все «запутанные вещи, такие как IRC» из захвата.
Кроме того, очень полезно знать синтаксис фильтра для быстрого ознакомления в будущем.
источник
Специально для веб-браузера / веб-страницы что-то вроде плагина Firebug для Firefox может дать вам некоторую информацию, которую вы ищете: http://getfirebug.com/net.html
В более общих приложениях вам может понадобиться использовать netstat для определения порта (-ов), используемого приложением, а затем Wireshark / tshark / dtrace с фильтром для захвата только этого трафика. Не один ответ, который вы искали, хотя ...
источник
Одна идея, попробуйте VMWare
-установить vm
-конфигурировать этот vm для использования определенного интерфейса
-sniff на этом интерфейсе с хоста (это похоже на человека в середине атаки)
Если вы изолируете, какие сетевые приложения работают на этом виртуальном компьютере, у вас может быть свой ответ
Я полагаю, что более идеальным решением будет сделать то, что делает VMWare, с точки зрения того, как он определяет, как он выбирает интерфейс для общения. Я думаю, что его магия исходит от используемых им модулей ядра, в данном случае, вероятно, модуля ядра vmnet.
Насколько мне известно, приложения не знают, с каким интерфейсом они общаются, и я считаю, что это сделано специально; им не нужно беспокоиться о таких вещах.
Кроме того,
возможно, программа уже существует, я не знаю. Но если кто-то написал, вы могли бы назвать это Nettrace (например), и использование может быть как
интерфейс программы nettrace
затем прослушайте интерфейс, который он использует, и добавьте маршруты (возможно, автоматически) в ваш реальный интерфейс
источник
Предполагая, что вы единственный человек на коробке, который пытался подключиться к Google в то время, я думаю, что-то вроде этого должно сработать:
tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80
Если вы не единственное соединение, пытающееся подключиться к Google на коробке, то, если вы можете определить IP / порт, с которого вы подключаетесь, вы также можете указать src port / src ip.
Идентификация порта src может быть проблемой, если вы не можете указать его на клиенте, который вы используете. Я не уверен, если вы можете с Wget.
Я сильно подозреваю, что вы можете указать оба порта src и dst,
netcat
поэтому, если вас заинтересовал действительно Google, вы можете выполнить GET (вручную) через netcat.Конечно, на странице руководства вы найдете подробности
источник
Страница man tcpdump и многие веб-сайты содержат подробные примеры фильтров, и есть даже несколько онлайн-репозиториев выражений фильтра tcpdump. Он должен иметь возможность делать практически все, о чем вы можете мечтать, предполагая, что вы знаете что-то о сетевом трафике (источник, пункт назначения, порты, протоколы и т. Д.) За пределами того, какая программа его генерирует.
Если вы работаете на сервере или в автономном режиме, вы всегда можете заставить tcpdump написать файл дампа, а затем открыть его в Wireshark на вашей рабочей станции и получить расширенную фильтрацию и графический интерфейс.
источник
Возможно, этот скрипт будет делать то, что вы хотите, с соответствующими изменениями команды tshark:
Прочитайте файл дампа позже:
источник
Dtrace должен допустить это, хотя я пока не знаю, полностью ли он сделан в Linux.
источник