Sniff pakietów UDP na lokalnym porcie

13

Chciałbym wiedzieć, jaka jest zawartość pakietu, który jedna aplikacja „APM Planner” wysyła do innej „MAVProxy”. Wiem, że komunikują się przez port UDP 14550. Próbowałem użyć tcpdump , uruchamiając następujące polecenia

tcpdump -u port 14550

i

tcpdump udp

i

netstat -uanpc | grep 14550

ale żaden z nich nie pokazał mi, czym te dwie aplikacje są naprawdę wymieniane. Potrzebuję czegoś takiego jak cutecom do monitorowania połączenia UDP. Czy jest coś takiego? Kiedy uruchamiam polecenie

netstat -lnpuc

, pokazuje następujące wyniki

udp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2 
Salahuddin Ahmed
źródło
Czy bierzesz pod uwagę program GUI wireshark? Podzieli pakiety i pokaże informacje wysyłane przez każdy z nich, a następnie możesz użyć polecenia udp.port == 14550lub podobnego jako polecenia filtrowania, aby pokazać tylko ten ruch. Problem polega na tym, że musisz poskładać to, co się tam i z powrotem w zależności od zawartości pakietu. Ale wygląda na to, że to jest to, co ostatecznie chcesz zrobić sam ... (Wystarczy wąchać lointerfejs, jeśli to zrobisz - to jest zakres „lokalny” 127. *. *. * I lokalny IPv6 wewnętrznie w twoim systemie)
Thomas Ward
Dzięki za komentarz. Mam zainstalowany Wireshark i wpisane udp.port == 14550w Apply a display filterzłożony, ale nic nie pojawił. Próbowałem też udp port 14550w Enter a capture filterterenie. Również po uruchomieniu polecenia netstat -lnpuc, to pokazuje, co następuje między jego wyjściuudp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2
Salahuddin Ahmed
Brzmi dla mnie tak, jakby niekoniecznie słuchał lokalnie. próbowałeś śledzić na innych interfejsach, aby sprawdzić, czy komunikuje się wychodząco?
Thomas Ward
1
Teraz działa. Musiałem uruchomić wiresharkz sudo. Wielkie dzięki
Salahuddin Ahmed

Odpowiedzi:

18

tcpdump obsługuje przechwytywanie UDP . przykładowe użycie:

tcpdump -n udp port 14550

Edytować

Ponieważ twoje aplikacje komunikują się z interfejsem lo , musisz określić interfejs w następujący sposób:

tcpdump -i lo -n udp port 14550

to polecenie drukuje tylko nagłówki. jeśli chcesz wydrukować część danych w postaci szesnastkowej i ASCII, użyj tego:

tcpdump -i lo -n udp port 14550 -X

lub jeśli chcesz zapisać pakiety do pliku i zobaczyć jego zawartość w Wireshark, użyj tego:

tcpdump -i lo -n udp port 14550 -w packets.pcap
Ghasem Pahlavan
źródło
Próbowałem tego polecenia, ale nie przechwytuje pakietów. Wykazuje następujące listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 bytesi nic więcej!
Salahuddin Ahmed
@SalahuddinAshraf Naprawiłem to :)
Ghasem Pahlavan
dzięki, teraz działa. Wyświetla źródło, miejsce docelowe i długość przesyłanych danych. Czy jest możliwe, aby wyświetlał same przesłane dane?
Salahuddin Ahmed
@SalahuddinAshraf tak. musisz dodać opcję -A do tcpdump, aby zobaczyć dane. również możesz wysłać pakiet do pliku i zobaczyć pakiety w Wireshark przez-w packets.pcap
Ghasem Pahlavan
Pahlvan, świetnie. Teraz widzę dane. Czy możliwe jest, aby dane były wyświetlane w postaci szesnastkowej? Wielkie dzięki
Salahuddin Ahmed
1

Możesz użyć ngrep . Przykład:

# Any UDP from any local interfaces to 91.22.38.4:12201
ngrep -W byline -d any udp and host 91.22.38.4 and dst port 12201
Alexander Yancharuk
źródło