6

tcpdumpSSDPサービスのデバッグに使用しています。

$ sudo tcpdump -Aq udp port 1900

UDPパケットを印刷するとき、私がIPおよびUDPヘッダーであると推定するHTTPヘッダーの前に、私は多くのぎこちなさを感じています。これらの印刷を抑制し、アプリケーションレベルのデータをパケット(HTTPヘッダーを含む)に印刷するにはどうすればよいですか?

これが例です、私が望まないものNOTIFYは2行目の前にあります:

14:41:56.738130 IP www.routerlogin.com.2239 > 239.255.255.250.1900: UDP, length 326
E..b..@................l.N..NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
4

1 に答える 1

2

悲しいことに、あなたがやりたいことをするためのショートカットはありません...私たちができる最善のことは、テキストフィルターを通してSTDOUTを実行することですtcpdump...tshark

誰かperlまたはsed誰かがおそらく私の後ろに来てこれを短くするでしょう、しかしそれは仕事を成し遂げます...

[mpenning@Bucksnort ~]$ 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

[mpenning@Bucksnort ~]$

改行を追加すると、STDIN上記のperlフィルターは...

while ($line=<STDIN>) {
    if ($line!~/239.255.255.250.+?UDP/) {
        if ($line=~/(NOTIFY.+)$/) {
            print "$1\n";
        } else {
            print $line;
        }
    }
}
于 2012-06-03T12:10:21.320 に答える