Перейти к содержимому

как заставить tcpdump отображать ip и номер порта, но не имя хоста и протокол

30

Я использую tcpdump для некоторых тестов, я хочу увидеть IP и номер порта, но вывод tcpdump похож на

IP pl1snu.koren.kr.http > kitch.pl.sophia.inria.fr.dnp: Flags [P.], seq 54:72, ack 1, win 5792, length 18 

он показывает только имя хоста и протокол для http, легко узнать, что это 80, но для dnp мне нужно искать

так можно ли заставить tcpdump отображать ip и номер порта, а не имя хоста и протокол, если так, то как? Спасибо

69 781 просмотр
misteryes спросил 13 лет назад
M 1 035

5 ответов

30
Принятый ответ

Добавьте -nк своей tcpdumpкомандной строке.

Из справочной страницы tcpdump :

-n Don't convert addresses (i.e., host addresses, port numbers, etc.) to names. 

Также следует отметить, что в Fedora (и, возможно, других производных: RHEL, CentOS и т. Д.) Они исправили исходную версию tcpdump, чтобы включить отдельную опцию -nnдля удаления номеров портов. Из справочной страницы :

-n Don't convert host addresses to names. This can be used to avoid DNS lookups.  -nn Don't convert protocol and port numbers etc. to names either. 

номер порта по-прежнему преобразуется в имя протокола с помощью -n

misteryes · 13 лет назад · 0

"номер порта по-прежнему преобразуется в имя протокола с помощью -n" Не, например, с tcpdump 4.1.1, который поставляется с OS X Mountain Lion или с tcpdump, созданным из верхней части транка Git tcpdump.org. В какой версии tcpdump вы видите -n * not * подавление преобразования номеров портов в имена протоколов?

· 12 лет назад · 0
heavyd ответил 13 лет назад
H 49 887
5

Я использую -nnпараметр.

-nnНе разрешайте имена хостов или портов.

Запустите это как:

tcpdump -nn 
ATMc ответил 12 лет назад
A 51
2

-n works only for hostnames, but doesn't work for port numbers. -nn does the trick for both. This is running tcpdump version 4.5.1 on Fedora 20 gnu/linux. Downvoted answer of @ATMc is the only correct. I sadly can neither upvote it nor write a comment below it because of low karma.

Adam Kurkiewicz ответил 11 лет назад
A 177
1

Я думаю, что лучший подход это:

sudo tcpdump -ni any 

Шаги для тестирования:

  1. Откройте консоль и введите:

    sudo nc -l -p 6666 
  2. Откройте другую консоль и введите:

    sudo tcpdump -ni any 

    Если вывод слишком подробный, вы можете отфильтровать его ( | grep -v "patter1n|pattern2")

  3. Откройте третью консоль и введите:

    telnet localhost 6666 

Ожидаемый результат:

10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0 

Если вы используете, sudo tcpdump -i anyвы увидите что-то вроде этого:

10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0 

Это так же, как и другой ответ - -i любой не нужен, если вы хотите подавить преобразование адреса / порта в имя, важен только -n.

· 12 лет назад · 1
Javier ответил 12 лет назад
J 11
-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '' | sed 's/://' 

Я не понимаю этого

Pierre.Vriens · 7 лет назад · 1

Хотя в вопросе говорится «отображать ip и номер порта, но не имя хоста и протокол», я сомневаюсь, что это означает «отображать ip и номер порта, но не * любую * другую информацию». (Я могу ошибаться, но, похоже, никто не интерпретировал вопрос так, как вы.) Таким образом, ваш ответ сводится к двум частям: (1) используйте -nn для отображения сервисов, таких как« http »и« dnp ». »В качестве номера порта вместо имени (которое было представлено в трех предыдущих ответах), и (2) используйте« awk »для отбрасывания данных о содержимом пакета (что, вероятно, нежелательно).

Scott · 7 лет назад · 1
anon ответил 7 лет назад
A 1