直接参考
- https://github.com/BeyondDimension/SteamTools/issues/2276
- https://art.dogcraft.top/archives/254/
操作环境: macos
失败的尝试
- 直接用miui的备份功能, 发现解压后没有对应的文件了
- 退回版本2.x, 登录不了, 一直转圈
- 用charles抓包, 过不了墙, 没法同时用clash (但是浏览器却可以)
需要安装的软件
adb apktool python
用homebrew
找不到keytool
, 直接用安卓手机上的mt管理器
进行签名
步骤
- 拆包:
apktool d steam.apk --frame-path ./fm
- 注入js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # 打开steam/assets/index.android.bundle
# 搜索 "GetSteamGuardInfo"
# 添加
this.m_mapGuardInfo.forEach(function (t, n) {
console.error(n);
console.error(JSON.stringify(t))
});
# 最终是这个样子
{
key: "GetSteamGuardInfo",
value: function (t) {
this.m_mapGuardInfo.forEach(function (t, n) {
console.error(n);
console.error(JSON.stringify(t))
});
return this.m_mapGuardInfo.has(t)
? this.m_mapGuardInfo.get(t)
: null;
},
},
# 原代码是压缩的, 自行去掉换行
|
- 重新打包
apktool b steam --frame-path ./fm
- 签名用安卓上的mt管理器, 因为 homebrew 没搜到
keytool
后面又搜了下, 是openjdk
自带的, 上面安装apktool
已经作为依赖安装了, 但是没有加入环境变量
这里记录下, 免得以后用到
1
2
| echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
|
生成密钥 key.keystore
1
2
3
4
5
6
7
8
9
| keytool -genkey -noprompt \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-storepass [YOUR PASSWARD] \
-keypass [YOUR PASSWARD] \
-keystore key.keystore \
-alias attemptone \
-dname "CN=explame.com, OU=dont, O=use, L=this, S=in, C=production"
|
1
2
3
4
5
6
7
8
| zipalign -v -f 4 steam/dist/steam.apk steam/dist/steam-aligned.apk
mv steam/dist/steam-aligned.apk steam/dist/steam.apk
apksigner sign \
--ks key.keystore \
--ks-key-alias attemptone \
--ks-pass pass:[YOUR PASSWARD] \
--key-pass pass:[YOUR PASSWARD] \
steam/dist/steam.apk
|
- 安装
先卸载
adb uninstall -k com.valvesoftware.android.steam.community
保留数据不知道有没有用
adb install steam/dist/steam.apk
我的手机系统是修改版, 下面d logcat获取不了数据, 所以装到mumu模拟器上了
在macos的上的端口是555
adb connect 127.0.0.1:5555
adb devices
adb -s xxx
正常登录添加二步验证
adb logcat ReactNative:V ReactNativeJS:V
, 不知道是不是版本不一样, 我这里显示不支持*:S
参数, 不过去掉不影响
获取到的数据是
1
| {"shared_secret":"GhaOI7A**********2X0=","identity_secret":"aX+WA************xj+r4=","secret_1":"M**********h0NA=","serial_number":"2*************0","revocation_code":"*****","account_name":"*****","token_gid":"*********","phone_number_hint":"8888"}
|
- 解码
shared_secret
1
2
3
4
5
| import base64
shared_secret = 'GhaOI7A**********2X0='
print("Secret:", base64.b32encode(base64.b64decode(shared_secret)).decode())
|
- 直接添加到keepassXC, 类型选择steam, 然后和安卓端的对比下, 一样就没问题了