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技术, 云资产清单, 安装工具, 应用部署, 开发模式, 无依赖, 无后门, 特权提升, 目录枚举, 移动安全, 移动开发, 移动设备管理, 自动化部署, 设备管理, 逆向工程, 遗留系统, 防御工具, 黑莓