使用 Wireshark 或 Python 监控特定 WiFi 流量?

Monitor Specific WiFi Traffic with Wireshark or Python?

我想要捕获家庭网络上的特定 WiFi 流量数据。

我想收集的是数据量、时间和涉及的设备。这是我的一项研究,希望根据收集的数据量(可能是每秒数据包或数据包长度)、时间和设备(因此,如果设备是笔记本电脑、移动设备 phone 来监控 WiFi 流量或使用 WiFi 的台式电脑)。

但是,出于道德原因,我想过滤掉 WireShark 通常会收集的某些详细信息(例如,我不想捕获 DNS 信息或有关用户正在做什么的任何详细信息)。

WireShark 是否允许配置它捕获的内容?或者,如果没有,是否可以 运行 一个 Python 脚本,其中 'cleans up' WireShark 捕获的数据,所以我只收集我想要的?

或者,我研究了 运行ning 一个 Python 脚本来收集网络流量(使用 scapy),但不确定这是否允许我收集 WiFi 流量或相关设备(这理想情况下是我正在寻找的)。

有没有人对方法有任何建议,或者可以从我的选择中推荐最 sensible/feasible/easiest?

谢谢

Wireshark 允许您在输出到当前捕获之前进行过滤 Capture Options -> Capture Filter。过滤器 can include a plethora of options 并将确保只保存匹配的数据包。


顺便提一下,我建议查看 tsharkWiresharktshark 一起提供(尽管它在某些 distros/OSes 上作为单独的软件包捆绑在一起)。 tshark 几乎是一个命令行 wireshark.

默认情况下 tshark 以人类可读的格式(不是 PCAP 格式)输出到 STDOUT。

如果您只需要某种类型的数据包数量,您可以使用tshark进行过滤并即时计算,永远不要自己保存数据包。例如:

counter=1;
tshark tcp src port 80 2>/dev/null |
while read x; do
    counter=$((counter + 1));
    echo $counter;
done

从脚本启动到您中断它,将输出来自端口 80 的 TCP 数据包的数量。

(tshark 使用与 wireshark 相同的过滤器语法)