【问题标题】:Skip the IP headers with tcpdump使用 tcpdump 跳过 IP 标头
【发布时间】:2012-06-03 06:48:46
【问题描述】:

我正在使用tcpdump 来调试 SSDP 服务。

$ sudo tcpdump -Aq udp port 1900

在打印 UDP 数据包时,在我认为是 IP 和 UDP 标头的 HTTP 标头之前出现了很多乱码。如何禁止打印这些,只打印数据包中的应用程序级数据(包括 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

【问题讨论】:

    标签: python udp tcpdump ssdp


    【解决方案1】:

    遗憾的是,没有 tcpdump 甚至 tshark 快捷方式来做你想做的事......我们能做的最好的事情就是通过文本过滤器运行 STDOUT......

    一些perlsed 的人可能会在我身后缩短它,但它可以完成工作......

    [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;
            }
        }
    }
    

    【讨论】:

    • 那家伙没来过 :(
    • 还有其他工具可以做到这一点吗?我需要一些比 perl 脚本更通用的东西
    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2012-06-03
    相关资源
    最近更新 更多