KerbalSpace/gamesir-connect-codec
GitHub: KerbalSpace/gamesir-connect-codec
一个用于解码和编码 GameSir Connect 控制器配置分享码的工具,让手柄配置文件可以以 JSON 形式备份、检查、编辑和重新分享。
Stars: 0 | Forks: 0
# gamesir-connect-codec
解码与编码 **GameSir Connect** 控制器配置文件的*分享码* —— 即
当你导出配置文件时,应用放入你剪贴板的
`GAMESIR:…` 字符串。
将这段内容:
```
GAMESIR:ydTB0FPOmgsgM8zU7dw7m5gq6YGJOIhjHySYuruai+T6xx…
```
……转换为可读的 JSON,你可以对其进行备份、检查、diff、编辑和重新分享 ——
并且将编辑后的 JSON 转换回你可以导入的有效代码。
## 为什么使用
- **备份** 你的配置文件,以纯文本形式保存在 git 中,而不只是依赖单个应用的安装。
- **Diff** 对比两个配置文件,准确查看具体更改了什么。
- **编辑** 那些在 UI 中难以操作的设置,然后重新导入。
- **构建工具** —— 配置文件生成器、跨平台配置工具、可分享的预设。
## 安装
```
pip install -r requirements.txt # just: cryptography
```
## 用法
### CLI
```
# 将 code 解码为 JSON(参数、文件或 stdin)
python gamesir_codec.py decode "GAMESIR:ydTB0F…"
python gamesir_codec.py decode -i code.txt -o profile.json
pbpaste | python gamesir_codec.py decode # macOS; use clip/xclip elsewhere
# 将 JSON 重新编码为 code
python gamesir_codec.py encode profile.json
python gamesir_codec.py encode profile.json -o code.txt
```
### 作为库使用
```
from gamesir_codec import decode, encode
packet = decode("GAMESIR:ydTB0F…")
print(packet["productType"], packet["diff"]["Sticks"]["Left"]["deadzone"])
packet["diff"]["Sticks"]["Left"]["deadzone"]["beginDeadzone"] = 30
code = encode(packet) # paste this back into GameSir Connect → Import
```
## 输出内容
解码后的数据包:
```
{
"v": 1,
"appVer": "1.11.3",
"productType": "G7ProCE",
"ts": 1700000000000,
"diff": { "...only the settings you changed from default..." }
}
```
`diff` 是控制器默认配置文件上的一个稀疏覆盖层,因此一个代码仅包含
你实际自定义的内容。请参阅 [`examples/`](examples/) 获取示例。
## 支持的控制器
密码和格式是**全应用范围硬编码**的,因此这适用于 **GameSir Connect** 支持
的任何控制器。`productType` 字段仅在*导入*时作为
兼容性门槛(你不能将 G7 配置文件导入到不同的
手柄上),而不是使用不同的密钥。
目前已在 **GameSir G7 Pro** (`G7ProCE`) 上进行过实测。欢迎反馈其他
型号是否可用(或不可用)—— 请提交一个附带 `productType` 的 issue。
## 工作原理
```
GAMESIR: + base64( AES-256-CBC( base64( gzip( JSON ) ) ) )
```
密钥和 IV 来自 OpenSSL 的 `EVP_BytesToKey(MD5, password, no salt)`,这正是
Node 旧版 `crypto.createCipher('aes-256-cbc', password)` 底层使用的
方式。完整的说明请参阅 [FORMAT.md](FORMAT.md)。
## 许可证
[MIT](LICENSE)。
标签:AES加密, Python, 无后门, 游戏外设, 编解码, 逆向工具, 配置工具