我正在尝试用一些 HTTP 数据来做个人项目实验。我想做的是捕获通过我家里的 Wifi 路由器的所有 HTTP 流量,并使用该数据进行一些分析。
仅捕获 HTTP 标头信息就足以完成此任务。我想监控笔记本电脑、手机、iPad 等所有设备的流量。我家里没有专用的服务器来捕获这些数据,所以我想使用亚马逊的云服务器。我有一个 AWS 帐户。
那么,我该怎么做呢?我猜我需要设置某种代理,但我对网络方面还很陌生。
我有 ISP 提供的 FTTH 调制解调器。Wifi 路由器连接到该调制解调器。
答案1
在路由器和调制解调器之间插入一些东西似乎是理想的选择。这可以通过 Raspberry Pi 实现。它只有一个以太网接口,但你可以得到一个 USB 网卡,这样你就有了一个传入和传出接口。
这些应该桥接起来,这样 pi 就不需要作为路由器参与。从一个接口进入 pi 的任何东西都会从另一个接口出去。您可能需要第三个 USB 网卡作为管理端口,您可以将其连接到网络内部。
一种方法是在 AWS 上运行 netcat,然后运行 tcpdump 过滤掉来自端口 80 的任何 http 标头,并将它们发送到 AWS。
tcpdump -s 0 -U -n -w - -i br0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | nc AWS_IP -p 10000
这就是说
-s 0 Get the whole packet
-U Send output immediately, don't buffer
-n No name conversion with dns etc
-w - write to standard output
-i br0 Listen for packets on the br0 interface (assumes the ethernet ports are bridged)
然后,过滤器会提取所有 http 标头。输出通过管道传输到 netcat,后者会将其发送到 AWS IP 地址的 10000 端口
在 AWS 上
nc -l -p 10000 > http.pcap
这会在端口 10000 上设置一个监听器,并将到达该端口的任何内容输出到名为 的文件中http.pcap
。
然后可以使用 wireshark 之类的工具打开该文件。
为了确保此流量的安全,请研究通过 ssh 传输数据。
答案2
有一个项目叫提琴手这可能适合你的需要,但又不会太过分。