Skip to content

Two factor authentication zh CN

ArchiBot edited this page Feb 13, 2024 · 39 revisions

两步验证

Steam 支持被称作“Escrow”的两步验证系统,在进行各种与帐户相关的操作时,需要额外的确认。 您可在此处此处了解更多详情。 本页主要介绍这种两步验证系统本身,以及我们对此系统的集成方案,即 ASF 两步验证(ASF 2FA)。


ASF 逻辑

无论您是否使用 ASF 两步验证,ASF 都包含正确逻辑且完全了解如何处理由标准两步验证器所保护的帐户。 它将在有需要的时候(如登录时)向您请求所需的详细信息。 然而,通过使用 ASF 两步验证,我们可以自动生成所需的令牌,使这类请求自动化,为您免除麻烦并启用额外功能(下文所述)。


ASF 两步验证

ASF 2FA 是为 ASF 进程提供 2FA 特性支持的内部模块,包括生成令牌和确认交易。 它的工作原理是复制您已有验证器的密钥,所以您可以同时使用原有验证器和 ASF 2FA。

您可以执行 2fa 命令来验证机器人帐户是否已经启用 ASF 2FA。 除非您已经将验证器导入为 ASF 2FA,否则所有标准 2fa 命令都是无效的,这意味着您的帐户没有启用 ASF 2FA,因此一些需要此模块的 ASF 高级功能也无法正常运行。


建议

有多种方法使 ASF 2FA 正常工作,我们在此列出根据您当前情况提供的建议:

  • 如果您已经在使用 SteamDesktopAuthenticator、WinAuth 或其他任何可以方便导出 2FA 信息的第三方应用,则只需导入到 ASF。
  • 如果您正在使用官方应用,并且不在意是否重置 2FA 凭据,则最好的方式是禁用 2FA,然后通过联合身份验证器创建新的 2FA 凭据,这将允许您同时使用官方应用和 ASF 2FA。 此方法不需要 root 或进阶知识,只需要按指示操作。
  • 如果您正在使用官方应用,并且不想重新创建您的 2FA 凭据,则您的选项是非常有限的,通常您需要 root 环境,以及一些额外操作来导入信息,甚至某些情况下是完全不可能做到的。
  • 如果您还没有使用 2FA,并且不在意由什么应用管理,则可以用独立身份验证器来管理 ASF 2FA,或将第三方应用导入到 ASF(推荐 #1),或将联合身份验证器与官方应用结合起来使用(推荐 #2)。

我们将在下面讨论所有可能的选项和已知的方法。


创建

一般来说,我们强烈建议复制您现有的验证器,因为这就是 ASF 2FA 的主要设计目标。 但是,ASF 官方提供了 MobileAuthenticator 插件,进一步扩展了 ASF 2FA 的功能,允许您从头开始绑定新验证器。 这是为了以防万一您不能或不愿意使用其他工具,并且不介意以 ASF 2FA 作为您的主验证器(可能也是唯一的验证器)。

借助 MobileAuthenticator 插件,目前有两种场景来添加两步验证器:独立验证器或与官方手机应用联合的验证器。 在第二种场景中,您将在 ASF 和手机应用中使用相同的验证器,两者会生成相同的代码,两者都能确认交易报价,完成 Steam 社区交易等。

所有场景下的相同步骤

无论您打算使用 ASF 作为独立验证器还是想使用和官方 Steam 手机应用相同的验证器,您都需要进行这些初始步骤:

  1. 为目标帐户创建 ASF 机器人,启动它并登录,您可能已经这样做过了。
  2. 可选地,在这里为机器人的帐户绑定能够正常使用的手机号码。 这将允许您接收短信代码,并在需要时恢复帐户,但这一步不是必须的。
  3. 确保帐户上没有绑定 2FA,如果有,请先禁用。
  4. 执行 2fainit [Bot] 命令,其中的 [Bot] 应替换为您指定机器人的名字。

假设您得到了成功的回复,就会发生以下两件事:

  • ASF 会在 config 文件夹下生成一份新的 <Bot>.maFile.PENDING 文件。
  • Steam 会向您绑定的手机号码发送一条短信。 如果您没有设置手机号码,则会向您的帐户邮箱发送一封电子邮件。

此时验证器还不能正常工作,但如果您愿意,可以看看生成的文件。 如果您希望获得双保险,可以在这时就记下恢复码。 接下来的步骤取决于您选择的场景。

独立身份验证器

如果您想以 ASF 作为主要的(甚至是唯一的)验证器,现在您需要完成以下收尾步骤:

  1. 执行 2fafinalize [Bot] <ActivationCode> 命令,其中的 [Bot] 应替换为您指定机器人的名字,<ActivationCode> 应替换为您在之前步骤中通过短信或邮件收到的代码。

联合身份验证器

如果您想在 ASF 中和官方 Steam 手机应用中使用相同的验证器,现在您需要进行这些步骤:

  1. 忽略您在之前步骤中收到的短信或邮件。
  2. 如果您尚未安装 Steam 手机应用,请安装并打开它。 前往 Steam 令牌页面,并按照应用的提示添加一个新的身份验证器。
  3. 在手机应用中添加身份验证器并可以正常使用后,回到 ASF。 您现在需要告诉 ASF 已完成创建,您可以使用下列命令之一:
  • 等待 Steam 手机应用中显示新 2FA 代码,然后执行命令 2fafinalized [Bot] <2fa_code_from_app>,其中 [Bot] 应替换为您的机器人名字,而 <2fa_code_from_app> 应替换为您此时在 Steam 手机应用上看到的代码。 如果 ASF 生成的代码与您提供的代码相同,ASF 会认为身份验证器已正确添加,并继续导入您新建的验证器。
  • 我们强烈推荐您使用上面的方法来确保凭据信息是有效的。 然而,如果您不想或不能检查二者的代码是否相同,并且您清楚自己要做什么,您可以改用 2fafinalizedforce [Bot] 命令,其中 [Bot] 应替换为您的机器人名字。 ASF 会认为已经正确添加身份验证器,并继续导入您新建的验证器。

完成之后

假设一切都正常工作,之前生成的 <Bot>.maFile.PENDING 会被重命名为 <Bot>.maFile.NEW。 这表示您的 2FA 凭据现在是有效并正常工作的。 我们建议您复制一份文件,保存在安全的位置。 除此之外,我们还建议您用文本编辑器打开它,并记下其中的 revocation_code(恢复码),顾名思义,如果您丢失了验证器,可以通过此代码移除。

至于其中的技术细节,生成的 maFile 包含了我们绑定验证器时从 Steam 服务器获取到的所有信息,包括其他验证器可能需要的 device_id 字段。 这份文件与 SDA 完全兼容,可以直接用于导入。

一旦完成上述流程,ASF 就会自动导入您的验证器,因此,2fa 等相关命令此时应该已经对您绑定的机器人生效。


导入

导入过程需要您已拥有且绑定了受 ASF 支持的可用验证器。 除了允许您手动提供所需的凭据之外,ASF 还支持导入不同来源的、或官方或非官方的两步验证——Android、SteamDesktopAuthenticator 和 WinAuth。 如果您还没有任何验证器,就需要选择上述可用的验证器之一,并首先设置好它。 如果您不知道选择哪个更好,我们推荐 WinAuth,但只要您正确按照说明操作,上述的任何一个验证器都可以正常工作。

以下所有指南都需要您在指定的工具/应用中已有正常工作的验证器。 如果导入了无效数据,ASF 2FA 将无法正常运行,因此在尝试导入之前,请确保您的验证器正常工作。 这包括测试和验证以下验证器功能是否正常工作:

  • 您可以生成令牌,并且 Steam 网络接受这些令牌
  • 您可以获取交易确认,并且您的手机验证器也可以收到这些确认
  • 您可以接受这些交易确认,并且 Steam 网络能够正确将它们识别为已接受/已拒绝

检查上述操作是否正常来确保您的验证器正常工作——如果不正常,它们也不会在 ASF 中正常运作,不仅浪费您的时间,还会带来其他麻烦。


Android 手机

一般情况下,从 Android 手机导入验证器需要您拥有 root 权限。 下面的步骤要求您对 Android 刷机领域有一定程度的了解,我们显然不会详细解释每一步,您可以访问 XDA 或其他网站获取更多信息和帮助。

准备工作:

  • 如果还没有,则在应用商店安装官方 Steam 应用
  • 为您的帐户绑定身份验证器,并确保它能正常工作——可以生成有效的令牌,并能确认交易。

提取(需要 root 您的设备):

  • 安装 Magisk 并在设置中启用 Zygisk。
  • 为 Zygisk 安装 LSPosed,并确保它能正常工作。
  • 安装 SteamGuardExtractor LSPosed 模块,并在 LSPosed 设置中启用。
  • 强制退出 Steam 应用,然后重新打开,此时应该会弹出一个包含提取信息的窗口,点击复制。

现在您已成功提取所需信息,可以禁用模块以免每次都会弹窗,提取您要添加到 ASF 2FA 的帐户信息后,复制该帐户 shared_secretidentity_secret 的值到一个空的文本文件中,其格式为:

{
  "shared_secret": "STRING",
  "identity_secret": "STRING"
}

用提取出来的对应私钥值替换其中的 STRING。 完成这一步之后,将此文件重命名为 BotName.maFile,其中 BotName 是您需要导入 ASF 2FA 的机器人名称,然后,将它放到 ASF 的config 文件夹内。 之后,运行 ASF——它将会发现 .maFile 文件并导入。

[*] INFO: ImportAuthenticator() <1> 正在将 .maFile 转换为 ASF 格式……
[*] INFO: ImportAuthenticator() <1> 成功导入手机验证器!

假如您导入了含有有效密钥的正确文件,一切都应该正常工作,您可以使用 2fa 命令来验证。 如果您不小心做错了,也可以随时删除 Bot.db 文件以重新开始这个过程。


SteamDesktopAuthenticator

如果您已有运行于 SDA 中的验证器,您应该已经注意到 maFiles 文件夹下有 steamID.maFile 文件。 确保 maFile 是未加密形式,因为 ASF 无法解密 SDA 文件——未加密的文件内容应该以 { 符号开头,以 } 结尾。 如果需要,您可以先在 SDA 设置中移除加密,然后在导入后重新启用。 文件解密之后,将它复制到 ASF 的 config 文件夹。

现在您可以将 steamID.maFile 文件重命名为 BotName.maFile 并将其放入 ASF 配置文件夹,其中 BotName 是您需要导入 ASF 2FA 的机器人名称。 或者,您可以将其保持原样,ASF 将会在登录帐户后自动选择此文件。 如果您在这一步帮助 ASF 重命名,ASF 就可以在登录之前使用 ASF 2FA,否则,ASF 就只能在成功登录之后导入文件(因为 ASF 在登录之前无法获取您帐户的 steamID)。

如果一切正确,启动 ASF,您将会看到:

[*] INFO: ImportAuthenticator() <1> 正在将 .maFile 转换为 ASF 格式……
[*] INFO: ImportAuthenticator() <1> 成功导入手机验证器!

从现在开始,此帐户的 ASF 2FA 功能已经可用。


WinAuth

首先在 ASF 的配置文件夹内新建一个空的 BotName.maFile 文件,其中 BotName 是您需要导入 ASF 2FA 的机器人名称。 记住,文件名应该为 BotName.maFile 而不是 BotName.maFile.txt,Windows 默认会隐藏文件的扩展名。 如果您提供的文件名错误,ASF 将无法识别它。

现在像平常一样启动 WinAuth。 右键单击 Steam 图标,选择“Show SteamGuard and Recovery Code”。 然后勾选“Allow copy”。 您应该能在窗口底部找到熟悉的以 { 开头的 JSON 结构。 将完整文本复制到上一步创建的 BotName.maFile 文件中。

如果一切正确,启动 ASF,您将会看到:

[*] INFO: ImportAuthenticator() <1> 正在将 .maFile 转换为 ASF 格式……
[*] INFO: ImportAuthenticator() <1> 成功导入手机验证器!

从现在开始,此帐户的 ASF 2FA 功能已经可用。


完成导入

从此,所有的 2fa 命令将会像原有的 2FA 设备一样正常工作。 您可以用 ASF 2FA 和其他验证器(Android、SDA 或 WinAuth)生成令牌或者接受确认。

如果您的手机上有验证器,也可以选择移除 SteamDesktopAuthenticator 和/或 WinAuth,因为我们不再需要它了。 不过,我建议保留它们以防万一,而且它们比官方的 Steam 验证器更好用。 需要注意的是,ASF 2FA 不是通用的验证器,它不包括验证器所需的所有数据,而只记录了原始 maFile 的部分内容。 无法将 ASF 2FA 转换成原始的验证器,因此请始终确保您在其他地方(如 WinAuth、SDA 或手机)有完整功能的通用验证器或者 maFile


常见问题

ASF 的两步验证模块的作用是?

如果 ASF 2FA 可用,ASF 将会使用它来自动确认 ASF 所发送/接受的交易报价。 它还能够在需要时自动生成两步验证令牌,例如在登录时。 除此之外,拥有 ASF 2FA 也会为您启用 2fa 命令。 如果我没记错的话,这就是目前的所有功能——基本上 ASF 会按需使用 2FA 模块。


如果我需要一份两步验证令牌该怎么做?

您需要两步验证令牌才能访问受两步验证保护的帐户,这也包括启用了 ASF 2FA 的帐户。 您应该在原有的身份验证器中生成令牌,但您也可以通过聊天向指定机器人发送 2fa 命令,生成临时令牌。 您也可以使用 2fa <BotNames> 命令为指定的机器人实例生成临时令牌。 在浏览器等环境中访问机器人帐户时,这种方法应该足够用了,但如上文所述——您应该使用更友好的验证器(Android、SDA 或 WinAuth)来代替。


将验证器导入 ASF 2FA 之后,我原来的验证器还能用吗?

是的,您原有的验证器会保留所有功能,并且可以与 ASF 2FA 一起使用。 整个过程的重点是——我们将您的验证器凭据导入 ASF,使 ASF 可以利用它们代表您接受选定的交易确认。


ASF 将验证器数据存放在哪里?

ASF 验证器数据被保存在配置文件文件夹的 BotName.db 文件里,这个文件中也包含指定帐户的其他关键数据。 如果您希望移除 ASF 2FA,请阅读下文。


如何移除 ASF 2FA?

只需要关闭 ASF 并移除指定机器人的 BotName.db 文件。 此选项将会移除 ASF 与导入的两步验证的关联,但不会解绑您的身份验证器。 如果您打算解绑验证器,除了将其从 ASF 删除外,还需要在您原有的验证器设备上(Android、SDA 或 WinAuth)解绑,或者,如果您已无法使用验证器,则应该在 Steam 网站上使用绑定验证器时保存的恢复代码。 您无法通过 ASF 解绑您的验证器,这也是您已拥有的一般用途验证器的目标。


我在 SDA/WinAuth 中启用了验证器,然后将它导入了 ASF。 我现在可以解绑原来的验证器,然后重新绑定我的手机吗?

。 ASF 是为了使用目的导入您的验证器数据。 如果您解绑了验证器,无论您是否像上文所述移除了它,ASF 2FA 都会失效。 如果您想在手机和 ASF 上(包括 SDA/WinAuth)同时使用身份验证器,您需要从手机中导入验证器,而不是在 SDA/WinAuth 中创建新的验证器。 您只能绑定一个验证器,这也是 ASF 导入您的验证器及其数据的原因——它们是同一个验证器,只是在两个不同的位置。 如果您决定解绑您的手机验证器凭据——无论以何种方式,ASF 2FA 都会停止工作,因为之前复制的手机验证器凭据将会失效。 若要同时使用 ASF 2FA 和您手机上的验证器,您必须如上所述从 Android 导入。


使用 ASF 2FA 批量确认交易比 WinAuth/SDA/其他验证器更好吗?

从几个方面来说,是的。 第一点也是最重要的一点——使用 ASF 2FA 会显著增强安全性,因为 ASF 2FA 模块会确保 ASF 只自动接受它自己的确认,所以即使攻击者向您发送了有害的交易请求,ASF 2FA 也不会接受此交易,因为它并非来自 ASF。 除了更安全,使用 ASF 2FA 也会对性能/优化有帮助,因为 ASF 2FA 会且只会在生成交易报价之后立刻获取并确认交易请求,而不是像 SDA 或者 WinAuth 那样低效地每隔 X 分钟拉取一次交易确认。 简而言之,如果您计划自动确认来自 ASF 的报价,就没有理由使用其他第三方验证器代替 ASF 2FA——这正是 ASF 2FA 的作用,并且这与您使用其他验证器确认其他交易并不冲突。 我们强烈建议您为所有 ASF 活动启用 ASF 2FA——这比其他的解决方案更安全。


高级

如果您是高级用户,也可以手动生成 maFile。 如果您希望从上述其他来源导入验证器,则可能需要这样做。 它的有效 JSON 结构如下:

{
  "shared_secret": "STRING",
  "identity_secret": "STRING"
}

标准的身份验证器数据含有更多字段——在导入过程中,ASF 会完全忽略这些字段,因为 ASF 不需要它们。 您不必删除它们——只要 JSON 中有上述强制要求的 2 个字段就可以,ASF 会忽略额外提供的字段(如果存在)。 当然,您需要将上述示例中的 STRING 占位符替换为与您的帐号关联的实际内容。 每个 STRING 都应该是构成对应私钥的字节的 Base64 编码形式。

Clone this wiki locally