Xiaomi-cloud-tokens-extractor开发者指南:自定义扩展与二次开发

【免费下载链接】Xiaomi-cloud-tokens-extractor This tool/script retrieves tokens for all devices connected to Xiaomi cloud and encryption keys for BLE devices. 【免费下载链接】Xiaomi-cloud-tokens-extractor 项目地址: https://gitcode.com/gh_mirrors/xia/Xiaomi-cloud-tokens-extractor

Xiaomi-cloud-tokens-extractor是一款功能强大的小米云设备令牌提取工具,能够帮助开发者轻松获取小米云连接设备的令牌和BLE设备的加密密钥。本文将详细介绍如何对该工具进行自定义扩展与二次开发,让你快速掌握扩展功能的核心方法。

快速了解项目结构

在开始二次开发前,先熟悉项目的核心文件结构,这将帮助你快速定位需要修改的模块:

开发环境搭建

基础环境准备

首先克隆项目仓库并安装依赖:

git clone https://gitcode.com/gh_mirrors/xia/Xiaomi-cloud-tokens-extractor
cd Xiaomi-cloud-tokens-extractor
pip install -r requirements.txt

关键依赖解析

requirements.txt 中定义了项目的核心依赖:

  • requests:处理HTTP请求,用于与小米云API通信
  • pycryptodome:提供加密解密功能,用于处理小米云的RC4加密数据
  • Pillow:图像处理库,用于验证码和QR码显示
  • colorama:实现跨平台终端彩色输出

如需添加新功能,可在此文件中添加额外依赖。

核心扩展点解析

1. 认证方式扩展

项目目前支持密码和QR码两种认证方式,你可以通过继承 XiaomiCloudConnector 抽象类添加新的认证方式:

class NewAuthXiaomiCloudConnector(XiaomiCloudConnector):
    def login(self) -> bool:
        # 实现新的认证逻辑
        pass

token_extractor.py 中,现有认证方式通过 PasswordXiaomiCloudConnectorQrCodeXiaomiCloudConnector 实现,你可以参考这些类的实现方式。

2. 设备数据处理扩展

设备数据获取主要通过 get_devices 方法实现(位于 XiaomiCloudConnector 类中)。如需扩展数据处理能力,可以:

  • 修改 get_devices 方法获取更多设备信息
  • 添加新的API调用方法,如获取设备历史数据
  • 实现自定义数据解析逻辑

例如,添加获取设备固件版本的功能:

def get_device_firmware(self, country, did):
    url = self.get_api_url(country) + "/v2/device/firmware_info"
    params = {"data": '{"did":"' + did + '"}'}
    return self.execute_api_call_encrypted(url, params)

3. 输出格式扩展

当前结果输出支持控制台打印和JSON文件保存。你可以扩展输出格式,如CSV、XML等,修改 token_extractor.py 中的 main 函数:

if args.output:
    if args.output.endswith('.csv'):
        save_as_csv(output, args.output)
    elif args.output.endswith('.xml'):
        save_as_xml(output, args.output)
    else:
        with open(args.output, "w") as f:
            f.write(json.dumps(output, indent=4))

高级功能开发

多线程设备数据获取

为提高设备数据获取速度,可以实现多线程并发请求。参考 token_extractor.py 中的线程使用方式(如图片服务器),为不同服务器或设备并行请求数据。

自定义服务器选择逻辑

默认服务器选择逻辑在 get_servers_to_check 函数中实现。你可以修改此函数,根据用户位置自动选择最佳服务器,或添加服务器可用性检测:

def get_servers_to_check() -> list[str]:
    # 添加服务器ping测试,选择响应最快的服务器
    servers_with_latency = measure_server_latency(SERVERS)
    return sorted(servers_with_latency, key=lambda x: x[1])[:3]  # 返回延迟最低的3个服务器

集成设备控制功能

利用获取的设备令牌,你可以进一步开发设备控制功能。通过小米云API发送控制命令:

def control_device(self, country, did, command):
    url = self.get_api_url(country) + "/v2/device/control"
    params = {"data": json.dumps({
        "did": did,
        "cmd": command
    })}
    return self.execute_api_call_encrypted(url, params)

调试与测试技巧

日志调试

项目使用自定义日志类 ColorLogger,可以通过调整日志级别获取更详细的调试信息:

python token_extractor.py -l DEBUG

单元测试编写

为确保扩展功能的稳定性,建议为新功能编写单元测试。可以在项目中创建 tests 目录,使用 pytest 框架编写测试用例。

常见问题排查

  • 认证失败:检查小米云账号密码是否正确,尝试使用QR码认证
  • API调用错误:检查网络连接,确认服务器地区选择正确
  • 依赖问题:确保所有依赖已正确安装,可使用 pip install --upgrade -r requirements.txt 更新依赖

打包与分发

完成扩展开发后,可以使用 pyinstaller 将脚本打包为可执行文件:

pyinstaller token_extractor.spec

打包后的可执行文件将位于 dist 目录中,可分发给其他用户使用。

总结

Xiaomi-cloud-tokens-extractor提供了灵活的扩展架构,通过本文介绍的方法,你可以轻松扩展其功能,满足特定需求。无论是添加新的认证方式、扩展数据处理能力,还是集成设备控制功能,都可以基于现有代码结构快速实现。

建议在开发过程中保持代码模块化,遵循项目现有的设计模式,确保扩展功能的可维护性和兼容性。如有疑问,可以参考项目源码中的注释和现有实现,或提交issue寻求社区帮助。

【免费下载链接】Xiaomi-cloud-tokens-extractor This tool/script retrieves tokens for all devices connected to Xiaomi cloud and encryption keys for BLE devices. 【免费下载链接】Xiaomi-cloud-tokens-extractor 项目地址: https://gitcode.com/gh_mirrors/xia/Xiaomi-cloud-tokens-extractor

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐