steam给手机发验证码,Steam是一款广受欢迎的游戏平台,玩家在注册账号或登陆时常需要通过手机收到的验证码进行验证。然而很多玩家在使用令牌手机验证器或收到短信验证码时,会遇到验证码乱码的情况,导致无法正常完成验证流程。这种情况很常见,主要原因是手机操作系统或输入法的兼容性问题。不过没有必要过于担心,有一些简单有效的方法可以解决这个问题。在本文中我们将为大家介绍解决Steam验证器和短信验证码乱码的方法,帮助玩家享受更好的游戏体验。
Steam 令牌手机验证器短信验证码乱码怎么办?
事情的起因是笔者前段时间将自己用了三年多的小米 MIX 2S 换成了 iPhone 14 Pro,因此需要将旧设备中的应用、账户等信息迁移到新设备中。
笔者的 steam给手机发验证码 的手机应用中一般会选择添加一个令牌验证器作为 2FA 的动态口令生成器。在点击「Add authenticator」之后,steam给手机发验证码 会向待验证的手机号发送一条带 PIN 码的短信,输入 PIN 码就可以添加成功。而笔者就是在这一步遇到了乱码的问题。
令牌验证器添加界面在点击「Add authenticator」之后大约一两分钟,笔者的手机收到了一条短信,短信的内容如下:
很明显,这是乱码。
乱码恢复的基本思路很简单,只要能够判断出编解码端分别使用的 codec 方案,然后按照相应的顺序还原就行了。(但由于笔者没有做过 iOS 的开发,故而并不清楚 iOS 采用的编码方案,因此在解决这个问题的过程中绕了弯路)
考虑到 Valve 是一家美国公司,而笔者设置的系统语言是简体中文,因此笔者猜想可能两端分别是 UTF-8 和 GBK。但实际验证下来发现并不是如此。
一次失败后笔者尝试从侧面,也就是字符的编码规律上去推断两边的编码方式。考虑到发送的短信内容应该会是固定模板+验证码的组成方式,那么只要比较多条乱码短信的内容,彼此相同的部分就是模板,不同的部分就是验证码。于是笔者又重新让其发送了一条短信,短信内容如下:
比较前后两条短信,很明显,「子䥎嵃潮晩牭摤楮朠愠却敡洠䅵瑨敮瑩捡瑯爠睩瑨」的部分是无用的固定模板,而「‹㐹㤸」和「′㐷㈸」则分别是两次验证码的内容。
考虑到 steam给手机发验证码 的短信验证码是 5 位数字的组合,而数字 0-9 在各主流编码下的非零部分的内容是完全一致的(0x30-0x39)。因此只要检查上述验证码内容在何种编码下仅包含 0x30-0x39 就可以知道解码端采用的解码方案(同时也可以立刻知道对应的验证码内容)。
经过比较,可以得知在 UTF-16BE 下,「‹㐹㤸」和「′㐷㈸」的编码分别是 0x20 39 34 39 39 38 和 0x20 32 34 37 32 38(0x20代表空格)。那么两则短信的验证码内容也就分别是 94998 和 24728。
当然,用这种方式。我们也可以恢复短信的原始内容如下:
似乎有很多朋友误解了笔者的意思,不同的人收到的短信模板是不同的,而笔者所要表达的并不是「转码后字符序列后五组的分别最后一位是验证码内容」。实际上,转码后的字符序列本质是两位一组的 ASCII 码。
笔者的验证码内容为 2039 3439 3938,查表可知,内容为 94998(SP 是空格 space 的意思)。
评论区有朋友的验证码内容为 3431 3836 355B,同理查表可知内容为 41865[。其他的模板也可以同样的方式恢复。
ASCII 码表提供一个傻瓜式方案,进入 Python3 在线编辑器,复制下面的代码(字符串部分替换成自己乱码的短信内容)并运行,就可以得到原始的信息。
# 替换成自己乱码的短信内容 # 如果出错,可以删除末位字符后再运行 s = "子䥎嵃潮晩牭摤楮朠愠却敡洠䅵瑨敮瑩捡瑯爠睩瑨‹㐹㤸" print(s.encode("utf-16be"))
保护账户安全是每一位Steam用户的重要任务,而令牌手机验证器则是一项十分有用的工具,可确保用户账户不会被黑客攻击。当收到短信验证码乱码时,建议用户尝试重新发送验证码或更新手机应用程序来解决问题。在任何情况下,用户都应保持警惕,及时更改密码并更新账户信息,以保护自己的账户安全。