【问题标题】:setup.icloud.com two-step verificationsetup.icloud.com 两步验证
【发布时间】:2014-12-23 16:16:42
【问题描述】:

我正在玩 iLoot,这是一个开源应用程序,可让您下载 iCloud 备份,我想知道如何实现双因素身份验证。

我在我的帐户上启用了 2fa,我在第一个请求中得到的是:

第一个请求:

        auth = "Basic %s" % base64.b64encode("%s:%s" % (login, password))
authenticateResponse = plist_request("setup.icloud.com", "POST", "/setup/authenticate/$APPLE_ID$", "", {"Authorization": auth})

plist_request 只是一个普通的 python (request) 函数,它从 url 请求并返回解析的 xml。

第一反应(xml格式):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>protocolVersion</key>
    <string>2</string>

    <key>title</key>
    <string>Verification Required</string>

    <key>localizedError</key>
    <string>MOBILEME_TERMS_OF_SERVICE_UPDATE</string>

    <key>message</key>
    <string>This Apple ID is protected with two-step verification. To sign in, you must verify your identity.</string>

</dict>
</plist>
Request /setup/authenticate/$APPLE_ID$ returned code 409

如果有人知道输入两步验证码的下一个电话会是什么,这可能会有所帮助。

【问题讨论】:

  • 您找到解决方案了吗?
  • @BenyBoariu 这是我的一个周末项目,所以在那之后我不再寻找解决方案,如果我回到它会在这里发布。如果您以后发现任何东西,请告诉我:)

标签: python ios backup icloud


【解决方案1】:

我是 iOS 人,不是后端人,但我的后端团队通过使用应用专用密码而不是令牌解决了这个问题。

这是用户生成应用专用密码的方式:Generate App-Specific Password

然后只需使用电子邮件和此密码,而不是 dsPrsID:mmeAuthToken 形成的令牌。正如我为我的队友了解到的,您不必进行 base64 编码,只需使用新密码和 url:'https://caldav.icloud.com/'

希望这会有所帮助。这对我们来说是一场噩梦,在互联网上根本没有帮助。

更新

有关更多信息,这些是我在我这边(iOS)使用的步骤:

  1. 我调用 https://setup.icloud.com/setup/authenticate/"email@email.com",将“基本电子邮件:密码”设置为 base64 字符串到“授权”http 标头字段。

  2. 我检查响应状态代码。如果 401,这意味着您发送的密码是应用程序特定的密码,所以我通过我们的内部 API 直接将此密码(和电子邮件)发送到我的服务器,他们使用它来调用 iCloud API,并返回我的日历等。

  3. 如果响应状态码为 409,则表示用户尝试使用普通密码登录,但他的帐户已启用 2fa,我显示错误,警告用户去检索他的应用程序特定-密码,然后使用该密码,这将导致上面的第 2 步。

我并不是说这是唯一的方法,但这对我有用。另外,我不完全知道服务器端发生了什么,但他们直接使用该应用程序特定的密码(可能还有电子邮件)来完成这项工作。

【讨论】:

  • 这太好了,我不知道 Apple 还提供 App-Specific 密码。谢谢你的回答:)
  • 欢迎,我希望它对其他人有所帮助,因为对我们来说这太糟糕了,到处挖掘以找到解决方案,但几乎一无所获。 Apple 绝对应该改进他们的文档。
  • @BenyBoariu 你能提供更多细节吗?我只尝试将 dsPrsID:mmeAuthToken 更改为 appleId:password 元组,但它不起作用..
  • @idog 我更新了答案,如果现在更清楚,请告诉我。我仍然想念服务器端,我不确定那里到底发生了什么,但正如我被告知的那样,他们使用应用程序特定密码从 iCloud 检索所需的任何内容。
  • @BenyBoariu 感谢您的快速回复,您是否有办法知道服务器端发生了什么?这是我缺少的部分。
【解决方案2】:

您必须将 $appliid$ 替换为您的 appleid... 然后你得到 mmeAuthToken, dsPrsID

https setup.icloud.com/setup/get_account_settings dsPrsID:mmeAuthToken 作为基本身份验证 返回: mmeAuthToken (新的/其他的!!)

下一个备份信息请求对我不起作用... 我现在没那么远……

我之前合作过的文档:

https://www.elcomsoft.com/PR/recon_2013.pdf https://deepsec.net/docs/Slides/2013/DeepSec_2013_Vladimir_Katalov_-_Cracking_And_Analyzing_Apple_iCloud_Protocols.pdf

感谢您的帖子!带我去 iLoot。

【讨论】:

  • 抱歉,关于 2fa 的内容没有读到那么远。不要认为论文中描述的是2fa
猜你喜欢
  • 2019-10-31
  • 2012-09-07
  • 2015-07-16
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多