仅捕获主机名

Capture the hostname only

我只需要捕获我连接的网络的主机名。我不需要全部流量。 e. G。我希望只获得 "www.google.com"、"facebook.com"、"plus.google.com" 等名称。 并将它们保存在一个文件中。 在 Android 4.4.2 中我应该 运行 什么 TCPDUMP 命令? N.B。我将 tcpdump 二进制文件安装为 /system/bin/tcpdump

最适合您的 tcpdump 命令可能是 tcpdump -q ip or ip6

没有没有tcpdump命令只会显示与数据包的IP源地址和目标地址相对应的主机名-你'您将获得其他信息,例如数据包时间戳和至少尝试剖析数据包的内容,即使使用 -q 标志 - 因此您必须进行一些 post 处理以提取域名,但 tcpdump 文本输出的格式不太难解析 - 您可能会看到像

这样的数据包
18:12:01.344016 IP www.sonic.net > 192.168.42.66: ICMP echo reply, id 61009, seq 1, length 64

18:13:02.576498 IP 192.168.42.66.60726 > www.sonic.net.http: tcp 0
18:13:02.611576 IP www.sonic.net.http > 192.168.42.66.60726: tcp 0
18:13:02.611653 IP 192.168.42.66.60726 > www.sonic.net.http: tcp 0
18:13:06.235021 IP 192.168.42.66.60726 > www.sonic.net.http: tcp 16

所以您需要删除时间戳和 "IP"(或 "IP6"),删除冒号及其后的所有内容,并且对于 TCP 或 UDP 数据包删除最后一个“ .XXX" 来自源地址和目标地址(除非你想要 源端口和目标端口numbers/names;这就是 TCP 或 UDP 数据包的最后一个组成部分)。 “>”分隔源地址和目标地址。

这意味着您可能需要安装 sed 等程序,或者 AWK、Perl 或 Python 等脚本语言的 n 解释器,才能使用它来完成post-处理。

如果您想要源和目标 IP 地址的域名,您可能需要自己编写。