tcpdump:始终显示数字端口号

tcpdump:始终显示数字端口号

-n中的选项tcpdump很有用。有时我更喜欢查看 IP 地址,有时我更喜欢将 IP 地址解析为主机名。

但我从来不想将端口号翻译成“名称”。

我怎样才能始终将端口号显示为数字,即53而不是domain

如果这是不可能的,我该如何修补tcpdump以使端口号始终以数字形式显示?

tcpdump 4.9.3-1~deb10u2我在 Debian 10 上使用。

答案1

-nnLinux 附带的中可能有一个标志tcpdump(该标志不可移植†;Centos Linux Stream 有 4.9.3,希望与 Debian 相同)以防止显示.22.ssh,但这也会禁用主机名查找。所以您可能正在查看源代码补丁。

如果您查看源代码 (),该-n标志可用于各种用途,addrtoname.c因此最简单的事情可能是发明一个新标志,在处理发生的tcpdump.c地方getopt和其他地方获得对此的支持(有一个结构,但您可能可以如果你愿意的话,只需在全局中进行克鲁格int Flag_Myflag;),然后addrtoname.c修改端口转换,使其在存在自定义标志时不会发生(有很多不同的方式可以将其与-n-nn或其他方式组合,具体取决于你想要的)。

            if (Flag_Myflag) {
                    (void)snprintf(buf, sizeof(buf), "%d", port);
                    table->name = strdup(buf);
            } else
                    table->name = strdup(sv->s_name);

缺点:您现在可以手动更新和修补您的自定义tcpdump安全漏洞等,或不这样做,这有风险。

† 一位同事曾经试图让我输入 Linuxtcpdump标志;他们不知道我的桌面系统是 OpenBSD。进展并不顺利。

相关内容