看到寶可夢配布伺服器解析的文章(密碼本文最下面提示),照著做之後一定會發現為啥電腦都連不上任天堂伺服器...原因很簡單,因為伺服器需要本地憑證才可以連上。所以這篇教學就是告訴你如何獲得任天堂伺服器的 SSL 本地憑證。
強烈建議不要先照做,把本文章看完,確定你有條件進行以下步驟再動作,不然最後可能浪費你一整天。
在這邊講個基礎觀念,3DS (其實任天堂一直沒學乖,從 Wii 開始一直是這樣,Switch 我沒研究,不知道有沒有改正)的韌體更新不是像我們手機的 iOS 或者 Android 一樣有個完整的 ROM,或者 OTA 包所有差異部分上去,而是一個一個組件下載的,例如今天韌體 1.0 有組件 A、B、C、D、E,2.0 更新了 A、B 兩塊,那麼更新的時候就其實只是下載 A、B 然後安裝。
這樣對於想要亂搞的逆向工程專家來說,我們可以下載舊版(例如有漏洞)的某個組件,然後裝在新版韌體裡面,變成只降級部分的系統,達成某些特殊功能。或者我們可以只下載需要的部分來進行逆向工程,比起需要解開整個韌體來說,下載部分組件研究輕鬆多了。
下載憑證組件
所以,為了取得憑證,我們必須先知道憑證存在哪裡,看了一下 3DS Brew 網站,得知 ClCertA 的 TitleID (0004001b00010002)跟 Version(只有 v0)。這個就是系統存憑證的地方,用下載器下載(這裡推薦 3DNUS),並且打包成 CIA。
CIA 解密
接著,找一台可以執行 Decrypt9 的 3DS,如果你有裝 arm9loaderhax 的話應該都有,把剛剛下載的 CIA 丟到 sdmc:///files9/D9Game 底下,執行 Decrypt9。
依序選擇下列選項:Content Decrypter Options > CIA File Options... > CIA Decrypter (deep),檢查訊息是否 success。
接著在 D9Game 底下取回 CIA 檔案(對,解密後是直接覆蓋原始檔案的,然後拿到電腦中)
CIA 解包
接著下載 makerom & ctrtool,執行以下指令(教學參考這邊的):
1 2 |
ctrtool --contents=contents 0004001B00010002.cia ctrtool --exheader=exheader.bin --exefsdir=exefs --romfsdir=romfs --logo=logo.bcma.lz --plainrgn=plain.bin contents.0000.00000000 |
在 romfs 資料夾得到兩個檔案:ctr-common-1-cert.bin、ctr-common-1-key.bin,這兩個檔案,很幸運地,還是加密狀態...所以我們還要再丟回 SD 卡根目錄。
Cert 解密
解密工具要用 ccrypt 解密,需要自己編譯程式,這應該是本教學裡面最難的部分 XD。把 ccrypt 同樣放在 SD 根目錄,然後用 Spider 漏洞執行 code.bin。至於什麼是 Spider 漏洞呢...那是一個只在 3DS 9.2 韌體以下才有的漏洞,所以如果你在 9.2 以上就要降級你的 3DS 韌體。如果有人知道別的方法可以執行 code.bin 的話就跟我說,我用 A9LH 載入是失敗就是了,最後還是乖乖降級 9.2。
降級的時候記得用 CTR Transfer 的韌體,然後在降級前備份 3DS NAND,這樣解密之後可以還原 NAND(還原記得 keep A9LH),就完全不會有任何問題了。
如果降級成功的話,用 3DS 瀏覽器開啟 http://dukesrg.github.io/?code.bin ,這樣就會執行程式了,執行之後得到兩個解密檔案 ctr-common-1-cert.dec、ctr-common-1-key.dec,如果要在電腦使用的話,我們需要把它轉換成常見的格式。
轉換憑證
用以下指令即可
1 2 3 |
openssl x509 -inform der -in ctr-common-1-cert.dec -out ctr-common-1-cert.pem openssl rsa -inform der -in ctr-common-1-key.dec -out ctr-common-1-key.key openssl pkcs12 -export -in ctr-common-1-cert.pem -inkey ctr-common-1-key.key -out ctr-common-1.pfx |
最後,把 .pfx 開啟,你的電腦就可以安裝憑證了。
後記
現在任天堂學乖了,Switch 的憑證是綁定每一個不同的硬體的,所以可以直接 ban 你的憑證...
密碼提示:小寫,3DS 的任天堂內部代稱,三個字
發佈留言