33

Я использую 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 и номер порта, но не имя хоста и протокол, если так, то как? Спасибо

5 ответов5

32

Добавьте -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.
5

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

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

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

tcpdump -nn 
2

-n работает только для имен хостов, но не работает для номеров портов. -nn делает трюк для обоих. Это работает tcpdump версии 4.5.1 на Fedora 20 GNU / Linux. Пониженный ответ @ATMc является единственным правильным. К сожалению, я не могу ни объявить это, ни написать комментарий под ним из-за низкой кармы.

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
-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .