2012-06-03 15 views
5

Ich verwende tcpdump, um einen SSDP-Dienst zu debuggen.Überspringen Sie die IP-Header mit tcpdump

$ sudo tcpdump -Aq udp port 1900 

Wenn die UDP-Pakete drucken, erhalte ich eine Menge Kauderwelsch vor dem HTTP-Header nehme ich an dem IP und UDP-Header zu sein. Wie kann ich das Drucken unterdrücken und nur die Daten auf Anwendungsebene im Paket (einschließlich der HTTP-Header) drucken?

Hier ist ein Beispiel, das, was ich nicht will, ist vor NOTIFY in der zweiten Zeile:

14:41:56.738130 IP www.routerlogin.com.2239 > 239.255.255.250.1900: UDP, length 326 
[email protected] * HTTP/1.1 
HOST: 239.255.255.250:1900 

Antwort

2

Leider gibt es keine tcpdump oder sogar tshark Verknüpfungen zu tun, was Sie wollen ... die besten wir können STDOUT durch einen Textfilter ausgeführt tun ...

Einige perl oder sed Kerl wahrscheinlich hinter mir kommen und diese verkürzen, aber es wird die Arbeit erledigt ...

[[email protected] ~]$ sudo tcpdump -Aq udp port 1900 | perl -e 'while ($line=<STDIN>) { if ($line!~/239.255.255.250.+?UDP/) { if ($line=~/(NOTIFY.+)$/) {print "$1\n";} else {print $line;}}}' 
NOTIFY * HTTP/1.1 
HOST: 239.255.255.250:1900 

[[email protected] ~]$ 

Wenn Sie Zeilenumbrüche hinzufügen, die perl STDIN Filter der oben aufgeführt ist ...

while ($line=<STDIN>) { 
    if ($line!~/239.255.255.250.+?UDP/) { 
     if ($line=~/(NOTIFY.+)$/) { 
      print "$1\n"; 
     } else { 
      print $line; 
     } 
    } 
} 
+0

Der Typ kam nie :( – NathanChristie