linkapiotr/bb10deploy

GitHub: linkapiotr/bb10deploy

一个无外部依赖的单文件 Python CLI 工具,通过逆向还原的 BB10 开发者协议实现从终端远程部署 BAR 应用包到 BlackBerry 10 设备。

Stars: 0 | Forks: 0

# bb10deploy 一个单文件 Python 3 CLI 工具,用于通过开发者模式 HTTPS 协议将 BAR 文件部署到 BlackBerry 10 设备。无外部依赖 — 仅使用 stdlib。 该协议是通过逆向 [BB10/PlayBook App Manager](https://github.com/zhetengbiji/bb10-app-manager) Chrome 扩展源码得出的。 ## 环境要求 - **Python 3.6+**(已在 3.12 版本上测试) - BB10 设备上已启用 **开发者模式** - **仅限 OpenBSD:** 来自 ports 的 `eopenssl35`(`pkg_add openssl`) 各系统上的 Python 安装方法: | 系统 | 命令 | |--------|---------| | OpenBSD | `pkg_add python%3.12 openssl` | | Debian/Ubuntu | `apt install python3` | | macOS | 内置或 `brew install python3` | | FreeBSD | `pkg install python311` | ## 准备 BB10 设备 1. 进入 **设置 → 安全性和隐私 → 开发模式** 2. 启用开关。如果您没有设备密码 — 请设置一个。 3. 记下 **IP 地址**: - **USB**:始终为 `169.254.0.1` - **Wi-Fi**:在 设置 → 关于 → 网络 → IPv4 中查看 4. 使用 USB 线连接 BB10,或确保电脑和手机处于同一 Wi-Fi 网络。 ## 使用方法 ``` # 安装 BAR 文件 python3 bb10deploy.py # 安装并启动 python3 bb10deploy.py --launch # 列出已安装应用 python3 bb10deploy.py --list # 设备信息 python3 bb10deploy.py --info ``` 如果是无线连接,请将 `169.254.0.1` 替换为 Wi-Fi IP, 并将 `mypassword` 替换为开发模式中设置的密码。 ## TLS 兼容性 BB10 开发模式仅支持 TLS 1.0/1.1。脚本在启动时检测操作系统并使用相应的 TLS 策略: - **Linux/macOS**:Python 原生 `ssl` 模块。如果您的 OpenSSL 支持 TLS 1.0 即可工作(OpenSSL 1.1.x 默认支持;OpenSSL 3.x 可能需要启用 `legacy` 提供者)。如果握手失败,脚本会打印详细的诊断信息和解决方案。 - **OpenBSD**:`eopenssl35 s_client` 隧道(`pkg_add openssl`)。这是必需的,因为 LibreSSL 4.x 已在库级别移除了 TLS 1.0/1.1。 ## 故障排除 | 症状 | 可能原因 | 解决方案 | |---------|---------------|----------| | 超时 / 无连接 | 开发模式已禁用 | 在 设置 → 安全性 中启用 | | `Denied` | 密码错误 | 检查开发模式密码 | | `Error: User...` | 会话已过期 | 重新运行脚本 | | 缺少 `result::` | 安装未完成 | 重新运行脚本 | | SSL / TLS 握手失败 | 系统不支持 TLS 1.0/1.1 | 查看错误输出以获取解决方案 | ## 已知限制 - **密码在 `ps` 中可见。** 密码是一个 CLI 参数。在多用户系统上,考虑通过环境变量传递。 ## 工作原理 BB10 开发者服务器通过 HTTPS(端口 443)公开两个 CGI 端点: 1. **`/cgi-bin/login.cgi`** — 使用基于迭代 SHA-512 的非标准 KDF 进行挑战-响应认证 2. **`/cgi-bin/appInstaller.cgi`** — 通过 multipart/form-data POST 执行所有应用操作(安装、列表、设备信息) 认证使用两遍 KDF: 1. `pass_hash = KDF(password, salt, icount)` 2. `response = KDF(challenge + pass_hash, salt, icount)` 请参阅 [BB10_PROTOCOL.md](BB10_PROTOCOL.md) 获取完整的协议规范,其中包含与原始 JavaScript 源码的逐行映射。 ## 文件 | 文件 | 描述 | |------|-------------| | `bb10deploy.py` | 工具本身 — 单文件,无依赖 | | `BB10_PROTOCOL.md` | 完整的协议文档 | ## 许可证 BSD-2-Clause。参见 [LICENSE](LICENSE)。 该协议是通过逆向 BB10 / PlayBook App Manager(George J (gridbook.org) 开发的 Chrome 扩展)得出的。源代码获取自 zhetengbiji 的 [Electron 移植版](https://github.com/zhetengbiji/bb10-app-manager)。 未复制原项目的任何代码 — bb10deploy 是 BB10 开发者模式协议的独立重新实现。
标签:BAR文件, BlackBerry 10, CLI, HTTPS协议, Python, TLS, WiFi技术, 云资产清单, 安装工具, 应用部署, 开发模式, 无依赖, 无后门, 特权提升, 目录枚举, 移动安全, 移动开发, 移动设备管理, 自动化部署, 设备管理, 逆向工程, 遗留系统, 防御工具, 黑莓