arn-c0de/fritzdump

GitHub: arn-c0de/fritzdump

FritzDump是一款用于捕获和分析FRITZ!Box网络流量的工具。

Stars: 1 | Forks: 0

# FritzDump 从FRITZ!Box捕获的实时数据包。 FritzDump登录到FRITZ!Box的隐藏数据包捕获页面,并将所选接口(LAN、Wi-Fi或WAN)的实时流量直接流式传输到Wireshark、ntopng、`.pcap`文件或stdout,让您可以实时查看和分析您自己网络的连接。无需通过Web UI点击:它为您处理登录并开始捕获。 支持旧MD5登录和当前PBKDF2登录(FRITZ!OS 7.24+ / 8.x)。 作者:arn-c0de · 许可证:MIT ## 工作原理 1. 对`login_sid.lua`(MD5或PBKDF2挑战/响应)进行身份验证。 2. 为所选接口打开盒子的内部`capture_notimeout`端点。 3. 将原始pcap流实时传输到您选择的目标。 ## 设置 ``` cp .env.example .env chmod 600 .env ``` 使用您的FRITZ!Box登录编辑`.env`: ``` FRITZ_HOST=192.168.178.1 FRITZ_USER=fritz-capture-user FRITZ_PW=your-password FRITZ_HTTPS=true # 登录API仅在盒子的局域网IP上响应,其自签名证书没有 # IP SAN -> 验证无法通过那里,因此在受信任的局域网中请使用: # FRITZ_HTTPS_INSECURE=true (加密,未认证;见下文安全部分) ``` 提示:创建一个仅具有**"FRITZ!Box设置"**权限的专用FRITZ!Box用户。对于仅密码登录(无用户名),设置`FRITZ_USER=dslf-config`。 ## 使用方法 检查登录并列出可用的接口ID: ``` ./run.sh test ``` 将默认设置(LAN + Wi-Fi 5 GHz + Wi-Fi 2.4 GHz)捕获到`./dumps/`: ``` ./run.sh ``` 使用`Ctrl-C`停止。 ### 其他模式 ``` ./run.sh file 1-lan # write one interface to a .pcap file ./run.sh wireshark 1-lan # stream live into Wireshark ./run.sh ntopng 1-lan # stream live into ntopng ./run.sh raw 1-lan # raw pcap to stdout (pipe into your own tool) ``` 您还可以直接调用Python工具: ``` ./fritzdump.py --list # list interfaces ./fritzdump.py --iface 2-1 --to wireshark # WAN live into Wireshark ./fritzdump.py --iface 1-0 --to capture.pcap # write to a file ./fritzdump.py --iface 2-1 --to - | your-tool # raw pcap to stdout ./fritzdump.py --iface 2-1 --filter 'host 1.2.3.4' # pcap filter ./fritzdump.py --iface 2-1 --to cap.pcap --redact # headers only, no payload ``` ### 红acted捕获(仅元数据) 传递`--redact`(或在`.env`中设置`FRITZ_REDACT=true`)以记录流量**不存储数据包内容**。每个帧被截断到其L2–L4头部:保留以太网(MAC地址)、IPv4/IPv6(IP地址、协议)和TCP/UDP/ICMP(端口、标志),丢弃应用程序有效负载。记录中保留原始帧长度,因此您仍然可以看到消息的**长度**和**流动方向**——只是不包含内容。 输出仍然是一个有效的pcap,可以在Wireshark/ntopng中正常打开(它显示"[捕获期间数据包大小受限]"以显示剥离的有效负载)。适用于每个目标(`--to wireshark | ntopng | file | -`)。 ``` ./run.sh file 1-lan # full capture (default) FRITZ_REDACT=true ./run.sh file 1-lan # redacted: headers only ``` 接口ID取决于您的型号/固件——运行`./run.sh test`以找到它们。以下默认值是FRITZ!Box 6591报告的: - LAN桥接:`1-lan` - Wi-Fi 5 GHz:`4-133` - Wi-Fi 2.4 GHz:`4-135` - WAN(示例):`2-1` ## 导出 捕获写入到`./dumps/`。当新的默认捕获开始时,首先删除旧的`dump_*`文件夹。`dumps/`文件夹以及所有`*.pcap`、`*.pcapng`和`*.eth`文件都是git忽略的。 ## 安全注意事项 - 仅捕获您拥有或明确授权检查的网络上的流量。 - 永远不要提交`.env`或任何数据包捕获。 - **使用HTTPS**。纯HTTP以明文发送会话令牌和每个捕获的数据包,通过您的LAN/Wi-Fi;当您这样做时,工具会打印警告。 - **TLS验证,首次运行注意事项**。登录API(`login_sid.lua`)仅在盒子的**LAN IPv4**上响应——`fritz.box`主机名(IPv6/MyFRITZ)不返回登录挑战。在该LAN IP上,盒子提供一个**自签名证书,没有IP SAN**,因此HTTPS验证+主机检查永远无法通过,`--cacert`也不会有所帮助(主机名检查仍然在裸IP上失败)。因此,使用`--https`和验证,您将获得`CERTIFICATE_VERIFY_FAILED`,捕获将无法开始。您的选择: - **受信任的有线LAN(常用选择):** `--https-insecure`(或`FRITZ_HTTPS_INSECURE=true`)。链接保持**加密**(凭据和数据包永远不会以明文形式存在)但**未认证**,因此LAN上的活动MITM可以冒充盒子。仍然比纯HTTP好。工具会大声警告并拒绝与`--cacert`结合使用。 - **Pin + verify**仅当您通过**在证书SAN中**(例如`fritz.box`)并且在该LAN上解析到该名称的主机名到达盒子时才有效;然后设置该名称为`FRITZ_HOST`,将`--cacert`/`FRITZ_CACERT`指向盒子的PEM,并保持验证。注意,盒子可能在其主机名上提供公开受信任的(Let's Encrypt)证书,在这种情况下不需要固定——但是该证书会旋转,因此不要固定其叶子。 - 导出在LAN IP上提供的证书(用于固定+验证情况): openssl s_client -connect 192.168.178.1:443 -showcerts /dev/null | openssl x509 > fritzbox.pem - 捕获过滤器(`--filter`)限制为BPF字符白名单。 - 当盒子提供时,始终使用当前PBKDF2登录。旧7.24之前的**MD5登录较弱,默认拒绝**以阻止强制降级;仅对于真正旧的固件,使用`--allow-legacy-login` / `FRITZ_ALLOW_LEGACY=true`启用它,理想情况下通过HTTPS。 - Pcap导出包含您的真实流量(包括来自任何未加密站点的凭据)。它们在`./dumps/`下以`chmod 600`写入,并且是git忽略的——分析完毕后删除它们。如果您只需要流量元数据(谁与谁交谈,消息大小),请使用`--redact` / `FRITZ_REDACT=true`,这样有效负载永远不会写入磁盘。
标签:FRITZ!Box, MD5, ntopng, PBKDF2, pcap文件, VivaGraphJS, Wireshark, 内核驱动, 句柄查看, 实时流量分析, 情报分析, 环境变量, 用户认证, 系统分析, 系统设置, 网络优化, 网络分析, 网络协议, 网络安全, 网络开发, 网络性能, 网络抓包, 网络故障排除, 网络数据, 网络流量, 网络编程, 网络诊断, 网络配置, 脚本工具, 逆向工具, 隐私保护