我正在使用tcpdump
来调试SSDP服务。
$ sudo tcpdump -Aq udp port 1900
打印UDP数据包时,我在HTTP标头之前得到了很多乱码,我认为它是IP和UDP标头。如何禁止打印这些打印,只打印数据包中的应用程序级数据(包括HTTP标头)?
这是一个例子,我不想要的东西在第二行NOTIFY
之前:
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
答案 0 :(得分:2)
可悲的是,没有tcpdump
甚至tshark
快捷方式可以做你想要的...我们能做的最好的事情是通过文本过滤器运行STDOUT ......
有些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 ~]$
如果您添加换行符,则上面列出的perl STDIN
过滤器为...
while ($line=<STDIN>) {
if ($line!~/239.255.255.250.+?UDP/) {
if ($line=~/(NOTIFY.+)$/) {
print "$1\n";
} else {
print $line;
}
}
}