Life Log Library

心の病と向き合う人の保管庫

iPhoneの機能制限パスコードを忘れた場合の対処法

四桁の数字が思い出せない!

iPhoneの機能制限パスコードを忘れてしまいました。いろいろと入力を試みるも全てダメで、一定回数入力に失敗するとリトライできるまで間隔をあけろとiPhoneに怒られてしまいます。

これは困ったぞという事でいろいろと調べてみたら対処法が見つかりました。

 ファイルは削除しないぞ!

偉大なGoogle先生に聞いてみると以下のような対処法がヒットします。

  1. /var/Keychains/keychain-2.dbを削除しろ
  2. /var/mobile/Library/Preferences/com.apple.restrictionpassword.plistを削除しろ

ファイルを削除しちゃえば簡単なんですが、脱獄経験者の人は分かると思うんですけど、ファイルの削除って躊躇います。バックアップとってリネームして別のフォルダに格納して削除したように見せかける事はできますけど。まぁ、システムの中を弄っているわけですから、出来るだけそのままの状態にしておきたい。

さらに調べるとファイルを削除する事によってそれぞれのような不具合が発生する可能性が高い事が分かりました。

  1. このファイルはiPhone内の全てのアプリや設定に関するパスコードが暗号化されて格納されているデータベースファイルのため、削除する事で全てのパスコードに関係するデータが消えるため挙動がおかしくなる可能性が非常に高い
  2. このファイルは機能制限だけを管理しているファイルだが、削除して再び機能制限をかけた際に、再作成されるファイルが壊れる可能性があり機能制限全般が機能しなくなる可能性がある

うーん、2.はともかくとして、1.は非常にまずい。機能制限のためにiPhone全体を犠牲にするのは本末転倒な気がする。まぁ、退避させて機能制限を弄った後でファイルを元に戻せばいいんだけど、この方法だと機能制限パスコードは分からないままなので、解決方法としては除外する。

何とか機能制限のパスコードを抜き出したい。そこで注目するのが2.です。

鍵はrestrictionpasswordにある

脱獄している人前提で話をしますが、iFileでcom.apple.restrictionspassword.plistをテキストビューアで見ると、答えがのっています。そう、機能制限パスコードが何なのか、欲しかった四桁の数字の答えが、このファイルの中に記述があるんです。暗号化された状態で。

中を見るとこんな感じの記述があります。

<dict>
 <key>RestrictionsPasswordKey</key>
 <data>
 M/p4734c8/SOXZnGgZot+BciAW0=
 </data>
 <key>RestrictionsPasswordSalt</key>
 <data>
 aSbUXg==
 </data>
</dict>

 はい。懐石料理をされた方はピンときませんか。RestrictionsPasswordKeyとRestrictionsPasswordSaltの表示の仕方。

Saltのdataの中には暗号化された四桁の数字と、そのSaltの中を暗号化するキーがKeyのdataの中にハッシュ値として格納されています。

機能制限パスコードはbase64で暗号化されている

ここまできたら後は簡単です。base64で暗号化されている四桁の数字をデコードして平文を抜き出せば、欲しかった四桁の数字がついに我が手中に!

その筋の方々は、懐かしのツールが手元にあると思うので、使い慣れたツールで計算するだけ。そうじゃない人はCrack iOS7 Restrictions Passcodeで計算できます。

ちなみに上のコードはサンプルで0001が暗号化された状態で格納されているとこう見えてるよってだけです。

 

※脱獄していようが、脱獄していなかろうが、一応システムファイルを弄るので自己責任で。結局パスコードが分からないとか、iPhone壊れた!とか言われても責任はとれませんのであしからず。