Sha*_*yan 5 python backup ios icloud
我正在玩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})
Run Code Online (Sandbox Code Playgroud)
plist_request只是一个普通的python(请求)函数,它从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
Run Code Online (Sandbox Code Playgroud)
如果有人知道下一次调用将输入两步验证码的话,它可能有助于弄清楚.
我是一个iOS系统人员,不是后端人员,但是后端团队使用应用专用密码而不是令牌解决了这一问题。
用户可以通过这种方式生成特定于应用程序的密码:生成特定于应用程序的密码
然后,只需使用电子邮件和此密码,而不使用dsPrsID:mmeAuthToken形成的令牌。正如我为队友了解的那样,您不必进行base64编码,只需使用该新密码和url:' https : //caldav.icloud.com/ '
希望这可以帮助。这对我们来说是一场噩梦,互联网上根本没有帮助。
更新
有关更多信息,这些是我一边使用(iOS)的步骤:
我将https://setup.icloud.com/setup/authenticate/ “ email@email.com”称为“基本电子邮件:密码”,将base64字符串设置为“ Authorization” http标头字段。
我检查响应状态代码。如果为401,则表示您发送的密码是应用专用密码,因此我通过内部API直接将此密码(和电子邮件)发送到我的服务器,然后他们使用它来调用iCloud API,并返回我的日历等
如果响应状态代码为409,则表示该用户尝试使用普通密码登录,但是其帐户启用了2fa,并且显示了一个错误,警告用户继续获取其应用专用密码,然后使用该密码,这将导致上面的步骤2。
我并不是说这是唯一的方法,但这对我有用。另外,我也不完全知道服务器端发生了什么,但是他们直接使用特定于应用程序的密码(可能还有电子邮件)来完成这项工作。
| 归档时间: |
|
| 查看次数: |
2518 次 |
| 最近记录: |