mihome-binary-protocol协议实战:使用pcap-decrypt.py工具解密小米设备通信的完整指南
mihome-binary-protocol协议实战:使用pcap-decrypt.py工具解密小米设备通信的完整指南
【免费下载链接】mihome-binary-protocol项目地址: https://gitcode.com/gh_mirrors/mi/mihome-binary-protocol
想要深入了解小米智能家居设备如何通信吗?本文将带你深入探索mihome-binary-protocol协议,并详细讲解如何使用pcap-decrypt.py工具解密小米设备的通信数据。无论你是智能家居爱好者、安全研究人员还是开发者,这份终极指南都将为你揭开小米设备通信的神秘面纱!🚀
什么是mihome-binary-protocol协议?
mihome-binary-protocol协议是小米智能家居设备使用的加密专有网络协议,设备通过UDP端口54321与官方手机应用进行通信。这个二进制协议确保了设备与云端、设备与手机应用之间的安全数据传输。
该协议的主要目标是摆脱对专有软件的依赖,让用户重新获得对自己设备的完全控制权。项目最初基于Yeelight RGBW智能灯泡开发,但协议设计支持多种小米智能家居设备。
为什么需要解密mihome-binary-protocol?
了解设备通信协议有以下几个重要原因:
- 安全性分析🔒 - 发现潜在的安全漏洞
- 设备控制🎛️ - 创建自定义控制应用
- 数据隐私🛡️ - 了解设备发送了哪些数据
- 协议研究🔬 - 学习物联网设备通信设计
pcap-decrypt.py工具快速入门
安装依赖环境
首先确保你的系统已安装必要的依赖:
# 安装tshark(Wireshark命令行工具) apt-get install tshark # 安装Python依赖库 pip3 install pyshark pip3 install cryptography获取项目代码
克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/mi/mihome-binary-protocol cd mihome-binary-protocol核心文件结构
- pcap-decrypt.py- 主要的解密工具脚本
- miio.py- 核心的MiHoBi协议解析库
- doc/PROTOCOL.md- 详细的协议文档
- img/yeelight-exploded.jpg- 设备示意图
捕获小米设备通信数据
准备工作
- 设置网络环境- 确保你的计算机与小米设备在同一局域网
- 启动Wireshark捕获- 开始监听UDP端口54321的通信
- 触发设备通信- 通过手机应用控制设备,生成通信数据
捕获命令示例
# 使用tshark捕获特定端口的数据 tshark -i eth0 -f "udp port 54321" -w mi_device_capture.pcapng使用pcap-decrypt.py解密通信数据
基本使用方法
最简单的解密命令:
./pcap-decrypt.py capture.pcapng.gz解密过程详解
pcap-decrypt.py工具的工作原理:
- 读取pcap-ng文件- 使用PyShark库解析网络数据包
- 过滤小米设备- 基于MAC地址前缀识别小米设备
- 解析协议头- 提取magic number、设备ID、时间戳等信息
- 尝试解密- 使用设备token解密加密的payload数据
解密输出示例
工具会输出类似以下格式的解密结果:
### 192.168.13.2 => 192.168.13.1 (xx:xx:xx:xx:xx:xx => yy:yy:yy:yy:yy:yy) META: Hello ### 192.168.13.1 => 192.168.13.2 (yy:yy:yy:yy:yy:yy => xx:xx:xx:xx:xx:xx) META: device yy:yy:yy:yy:yy:yy has token: abcdef1234567890abcdef1234567890 ### 192.168.13.2 => 192.168.13.1 (xx:xx:xx:xx:xx:xx => yy:yy:yy:yy:yy:yy) {"id":1234567890,"method":"miIO.config_router", "params":{"ssid":"WiFi name","passwd":"WiFi password","uid":987654321}} ### 192.168.13.1 => 192.168.13.2 (yy:yy:yy:yy:yy:yy => xx:xx:xx:xx:xx:xx) {"result":["ok"],"id":1234567890}mihome-binary-protocol协议结构解析
协议头格式
根据doc/PROTOCOL.md文档,协议头包含以下字段:
- Magic number(16位) - 固定为0x2131
- Packet length(16位) - 包括头部的整个数据包长度
- Unknown1(32位) - 通常为0,Hello包中为0xFFFFFFFF
- Device ID(32位) - 唯一设备标识符
- Stamp(32位) - 连续递增的计数器
- MD5 checksum- 整个数据包的校验和
加密机制
协议使用AES加密保护通信内容,设备token作为密钥。在初始化过程中,设备会交换token信息,后续通信都使用这个token进行加密解密。
高级使用技巧
查看原始数据包
使用--print-headers参数查看协议头信息:
./pcap-decrypt.py capture.pcapng.gz --print-headers查看原始字节数据
使用--print-raw参数查看未解密的原始数据:
./pcap-decrypt.py capture.pcapng.gz --print-raw自动化脚本示例
你可以编写Python脚本自动化解密过程:
import subprocess import json def decrypt_pcap(file_path): result = subprocess.run( ['./pcap-decrypt.py', file_path], capture_output=True, text=True ) return result.stdout # 解析解密结果 decrypted_data = decrypt_pcap('mi_device_capture.pcapng.gz')安全注意事项 ⚠️
已知安全问题
根据项目文档,截至2017年2月10日,初始化过程("SmartConnect")存在WiFi凭证泄露的风险,这是由于弱加密导致的。文档明确建议:
不要将MiHome设备连接到你的主WiFi网络
最佳实践建议
- 隔离网络- 为智能设备创建独立的网络
- 定期更新- 关注设备固件更新
- 监控通信- 定期检查设备通信模式
- 使用防火墙- 限制设备的网络访问权限
常见问题解答
Q: 支持哪些小米设备?
A: 项目最初基于Yeelight RGBW智能灯泡开发,但理论上支持所有使用相同协议的小米智能家居设备。
Q: 需要什么版本的Python?
A: 需要Python 3.5或更高版本。
Q: 解密失败怎么办?
A: 确保捕获的数据包包含完整的握手过程,检查设备token是否正确获取。
Q: 这个工具合法吗?
A: 工具仅用于教育和研究目的,请遵守当地法律法规和设备的服务条款。
总结
通过本文的完整指南,你已经掌握了使用pcap-decrypt.py工具解密mihome-binary-protocol协议的核心技能。从环境搭建到数据捕获,从基础解密到高级分析,你现在可以:
✅理解小米设备通信协议的基本原理
✅使用pcap-decrypt.py工具解密通信数据
✅分析设备通信的安全性和隐私性
✅创建自定义的设备控制方案
记住,技术的力量在于如何正确使用它。在探索智能家居设备通信的同时,始终要尊重隐私和安全边界。🔐
免责声明: 本文内容仅供教育和研究目的。Xiaomi是小米公司的注册商标,与本文作者无关,也不认可、服务或保证本程序的功能。
【免费下载链接】mihome-binary-protocol项目地址: https://gitcode.com/gh_mirrors/mi/mihome-binary-protocol
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
