最近在Steam上各种倒货,经常需要把库存的里的东西在账号之间转移,并且还经常需要手机Steam来进行交易确认,加上一些众所周知的原因,手机交易确认经常会出现各种连接缓慢、无法加载等问题。于是我鼓捣了一下,将手机Steam令牌与交易确认迁移到PC上!

通常来说,安卓手机的应用数据受到了保护,不让恶意软件读取到应用存储的敏感信息,例如Steam的令牌数据就是如此。如果我们需要提取出它们的话,就必须要使用Root权限了。
注意,Steam令牌数据非常重要,泄露后很可能导致库存被盗取,请在完成全部操作后彻底删除所有未加密的文件!

前期准备

  1. 一台已经获得Root权限的安卓手机 (如果没有Root权限可以参见后文)
  2. 手机端安装一个可以访问根目录的文件管理器(例如Root Explorer
  3. PC端安装WinAuth客户端

提取Steam文件并绑定WinAuth

  1. 首先,在手机上安装Steam客户端,并激活验证器。

如果需要同时在手机和电脑上使用Steam验证其的话,就直接在绑定好验证器的手机上操作即可。如果只需要在电脑上使用而不需要在手机上使用的话,请直接跳过本段内容。

  1. 提取Steam的应用数据

打开 Root 文件管理器后,前往 /data/data 文件夹。然后,找到 com.valvesoftware.android.steam.community 文件夹,将它复制到 /sdcard 文件夹,也就是手机的内置存储设备,接着再将这个文件夹拷贝到你的电脑中.

  1. 在PC端启动并配置WinAuth

解压并启动之前下载好的WinAuth(虽然不解压也不会怎么样),选择 Add→Steam→Inport Android ,打开刚刚拷贝好的Steam数据文件夹,使用文本编辑器打开 shared_prefs 目录中的 steam.uuid.xml 文件,里面的内容大致如下(部分敏感数据已替换)。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="uuidKey">android:9caaaaaa-7fe5-aaaa-aaaa-aaaaaaaaaa9d</string>
</map>

将这段文本拷贝到WinAuth的第一个框中,接着使用文本编辑器打开 files 文件夹中的 Steamguard-NNNNNNNNNNNNNN 文件,里面的内容大致如下(部分敏感数据已替换)。

{
"steamguard_scheme":"2",
"steamid":"000000000000000",
"account_name":"paocai",
"status":1,
"shared_secret":"NNNNNNNNNNNNNNN",
"serial_number":"0000000000000000",
"revocation_code":"R0000",
"uri":"otpauth://NNNN/Steam:xxxxxx?secret=NNNNNNNNNNNNNNNNNNNNNNNNNNN&issuer=Steam",
"server_time":"000000000",
"token_gid":"0000000000000N",
"identity_secret":"NNNNNNNNNNNNNNNNNNNNNNN",
"secret_1":"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
}

再将这部分内容复制到WinAuth的第二个框中,点击 Add

  1. 设置WinAuth保护

由于Steam令牌密钥数据极为敏感,直接明文存放是非常危险的,所以WinAuth也自带了保护措施,在第一次添加令牌的时候会自动弹出这项设置

  • Protect with my own password(推荐启用)

    也就是使用密码对令牌密钥进行加密,每次启动WinAuth时都需要进行密码验证。

  • Encrypt to only useable in this computer(推荐启用)

    使用Windows密钥进行加密,如果把文件拷贝到其他电脑上或重装系统后,则无法再进行读取。开启后如果需要进行迁移操作,务必不要忘记先解除这项加密。

  • And only by the currect user on this computer(推荐启用)

    上一项的附加选项,开启后如果使用同一台电脑的其他User,也无法读取其中的数据。

  • Lock with a YubiKey

    一种实体2FA设备,没有买过所以不太了解。

设置完成后点击 OK 即可完成安全性设置,主界面会显示出刚刚添加的令牌,点击刷新按钮就可以显示目前的动态密码,此时本次存储的令牌数据是相对安全的,可以放心使用。

  1. 配置交易确认

右键点击刚刚绑定好的令牌,点击 Confirmations... ,进入交易确认页面。

登陆你的账户密码,就可以使用电脑来确认交易报价辣!

尝试确认交易报价

先在Steam上给司机先生发送一个交易报价!

Steam提示需要手机验证器确认

打开WinAuth的 Confirmations... 页面,就看到了刚刚发起的交易报价,点一下还能看到具体的交易信息,和在手机上确认一样。

点一下 Confirm ,交易就确认成功辣!

手机没有Root权限怎么办?

这几年手机的Root权限不像曾经那么好拿了,往往需要先解BL锁,再刷刷系统什么的,非常麻烦,包括我的手机也是如此,但我最后还是成功地绑定上去了,使用的方法很简单—————把Steam的数据转移到有Root权限的手机中。

我手头除了一台现在正在用的小米MIX2S外,还有一台以前用的小米5,并且因为以前比较喜欢鼓捣手机,这台米5是解BL锁+Root的。我使用MIUI自带的 本地备份 功能,将Steam数据打包,并把 /MIUI/Backup/AllBackup 目录中的文件拷贝到米5的对应文件夹中,再使用米5的本地备份进行恢复,再进行令牌提取就OK辣!

当然如果这样行不通的话,就只能放弃同时在手机和PC上绑定了,或者选择解绑手机上的令牌,然后绑定在电脑上。这种方法仅需要在添加令牌时选择 Login 选项卡,并按照提示登陆你的账户即可。

结语

除了WinAuth外,还有一款叫Steam Desktop Authenticator的软件也提供了相同功能,但是它要导入令牌必须使用ADB连接安卓的方法,但是这个软件有一些BUG,总是报错卡死,加上界面也没WinAuth好看,我比较推荐使用WinAuth进行操作。

很久之前就想这么搞了,可惜我的手机没Root权限,又没想到可以通过手机自带的备份恢复功能来搞,就一直拖到了现在。之后会尝试在iOS平台进行操作,思路大概是提取iTunes备份中的数据,并且还需要用到一款叫做ios SteamGuard Mobile Authenticator Data Extractor的小工具,那么就之后再说吧。

参考资料

ASFWiki : https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Two-factor-authentication-zh-CN

どうして俺が中心の女子高生美少女ハーレムサークルがないんだよ!