2014-10-28 258 views
5

我正在玩iLoot,這是一款開源應用程序,讓您下載iCloud備份,我在想如何實現雙因素身份驗證。setup.icloud.com兩步驗證

我已經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 

如果有人知道下一個電話會是什麼輸入兩步驗證碼,它可以幫助弄明白。

+0

您是否找到解決方案? – 2015-07-24 19:06:05

+0

@BenyBoariu這是我的一個週末項目,所以我在此之後不再尋找解決方案,如果我回到了這裏,會在這裏發佈。請讓我知道如果你以後發現任何東西:) – Shayan 2015-07-25 22:26:20

回答

4

我是一個iOS人,不是後端人,但我的後端團隊通過使用應用程序特定的密碼而不是令牌來解決此問題。

這是用戶如何生成應用專用密碼:Generate App-Specific Password

然後簡單地使用電子郵件和這個密碼,而不是通過dsPrsID形成的令牌:mmeAuthToken。正如我爲我的隊友所瞭解的,你不需要做base64編碼,只需使用這個新密碼,並且url:'https://caldav.icloud.com/'

希望這會有所幫助。這對我們來說是一場噩夢,在互聯網上毫無幫助。

UPDATE

欲瞭解更多信息,這些都是我在我身邊(IOS)中使用的步驟:

  1. 我叫https://setup.icloud.com/setup/authenticate/[email protected],通過設置「基本電子郵件:密碼」作爲base64字符串到「授權」http頭字段。

  2. 我檢查響應狀態碼。如果是401,則表示您要發送的密碼是特定於應用程序的密碼,因此我通過內部API將此密碼(和電子郵件)直接發送到我的服務器,並且它們正在使用它來調用iCloud API,並將我的日曆

  3. 如果響應狀態碼是409,表示用戶試圖用正常密碼登錄,但他的帳戶已啓用2fa,並且顯示錯誤,警告用戶去檢索他的應用程序,特定的密碼,並使用該密碼,這將導致上面的第2步。

我不是說這是唯一的方法,但這對我有效。另外,我並不完全知道服務器端發生了什麼,但他們直接使用特定於應用程序的passwrod(可能是電子郵件)來完成這項工作。

+0

這真是太好了,我不知道蘋果還提供特定於應用程序的密碼。謝謝你的回答:) – Shayan 2015-07-29 03:07:40

+0

歡迎,我希望它可以幫助別人,因爲對我們來說這太糟糕了,到處尋找解決方案,幾乎什麼都沒有。蘋果肯定應該改善他們的文檔。 – 2015-07-29 06:37:52

+0

@BenyBoariu你能提供更多細節嗎?我只嘗試將dsPrsID:mmeAuthToken更改爲appleId:密碼元組,並且它不起作用。 – idog 2015-11-04 11:27:15

1

你有你的AppleID更換$ appliid $ ... 那麼你得到mmeAuthToken,dsPrsID

HTTPS setup.icloud.com/setup/get_account_settings dsPrsID:mmeAuthToken爲基本身份驗證 回報: mmeAuthToken (新/另一!!)

的備份信息的下一個請求並沒有爲我工作... 我不是那麼遠,現在...

文檔我WO

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

感謝您的文章:與前rked!帶我到iLoot。

+0

對不起,沒有讀到那麼遠關於2fa。不要以爲在論文中描述的是2fa – relascope 2015-03-20 14:36:09