Jak sprawić, by tcpdump nie drukował nagłówków tcp?

28

Próbowałem tego:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

Potrzebuję tylko części ascii. Jak usunąć resztę?

koder
źródło
1
z tshark możesz to zrobić za pomocą: tshark -l -i eth0 -f 'port 6667 i większe pole 74' -T -e danych
Marcin
Mówi o przechwyceniu 28 pakietów, ale nie drukuje niczego do STDOUT.
programista
Masz na myśli ASCII7?
Mircea Vutcovici,

Odpowiedzi:

15

Jak sugeruje Josh, tcpflow może wydrukować tylko dane pakietu TCP do pliku lub STDOUT. Możesz potokować tcpdump do tcpflow w następujący sposób:

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

Aby wyświetlić tylko jedną stronę konwersacji, możesz użyć filtrów dla tcpdump, np dst port 23.

jwmullally
źródło
4
Dlaczego miałbyś zacząć tcpflowjako root?
Ruslan
5

Nie jestem pewien dokładnej składni tcpdump... w rzeczywistości zaznaczyłem to pytanie jako ulubione, ponieważ chciałbym wiedzieć! Ale jako alternatywne rozwiązanie możesz spróbować użyć tcpflowzamiast tego. Działa zasadniczo w ten sam sposób, ale drukuje dane wyjściowe ASCII znacznie lepiej; wykluczył nagłówki i drukuje pakiety sekwencyjnie jako przepływ, dzięki czemu łatwiej jest je czytać i śledzić czasami niż tcpdump.

Josh
źródło
5

Wydaje mi się, że najbardziej eleganckim rozwiązaniem jest porzucenie tcpdump. Żadnych rur jakiegokolwiek rodzaju:

tcpflow -c port 6667

I to wszystko.

BarsMonster
źródło
Uratowałeś mi życie, chcę ci kupić ciasteczko
gdaras,
4

Szybkim i brudnym sposobem na to jest filtrowanie danych wyjściowych przez ciągi:

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

Czasami nie masz innych narzędzi i wystarczy rzucić okiem na ładowność. Oczywiście nie jest dobrze, jeśli potrzebujesz dokładnego ładunku do wstrzyknięcia lub dokładnej analizy.

Eduardo Ivanec
źródło
1

Jeśli potrzebujesz tylko części ASCII, możesz użyć: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'lub z ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'

Mircea Vutcovici
źródło
1

W zeszłym tygodniu miałem ten sam problem - zamiast tego użyłem GUI Wireshark i zrobiłem „ascii do odczytu” dla interesujących pakietów.

Próbowałem (z powodzeniem) zidentyfikować problem z żądaniem HTTP do usługi internetowej i jej odpowiedzią XML.

Nils
źródło