Funkenstrahlen Podcasting, Netzpolitik, App-Entwicklung

iOS 6 Restriction Pin Bruteforce

Ich habe über die iOS Restriction die InAppPurchases gesperrt, damit ich nicht versehentlich für irgendeinen Mist in einem Spiel Geld ausgebe. Leider habe ich an diesen Einstellungen so lange nichts geändert, dass ich nun mein Pincode vergessen hatte, der nötig ist, um an diesen Einstellungen etwas zu ändern. Doof.

Apple empfiehlt: Das iPhone komplett zurücksetzen oder ein Backup einspielen, das noch keine solche Pin gesetzt hat. Solch ein Backup hatte ich leider nicht und komplett zurücksetzen war mir zu viel Arbeit. Schließlich müsste ich dann alles wieder von vorne einstellen.

Ich bin dann auf den iPhone Backup Extractor gestoßen, der ab Version 4.1.1 die Restriction Pin in einem iOS Backup auf 1234 zurücksetzen kann. Falls man sein Backup verschlüsselt hat (hatte ich), dann geht das nur unter Windows. Um allerdings die Pin Reset Funktion nutzen zu können, muss man die Software kaufen. Das macht etwa 18 EUR. Hmpf.

Ich habe dann versucht von Hand an die Settings zu kommen. Man findet die entsprechende Einstellung unter \Library\Preferences\com.apple.springboard.plist, wobei das iPhone Backup unter /Users/stefan/Library/Application Support/MobileSync/Backup liegt. In dieser Datei kann man nun eine feste PIN setzen (das macht auch der iPhone Backup Extractor so):

<key>SBParentalControlsEnabled</key>
<true/>
<key>SBParentalControlsPIN</key>
<string>1234</string>

Wenn man dieses modifizierte Backup wieder zurück auf das iPhone spielt, dann kann man mit der Pin 1234 wieder eine neue Pin setzen, oder die Restrictions deaktivieren.

Das funktioniert aber wieder nur bei unverschlüsselten Backups. Ich wollte so ein Backup allerdings nicht anlegen, da dann alle Passwörter für WLANs etc. nicht mit gesichert werden und ich die alle wieder neu hätte eintippen müssen.

Die beste Lösung

Die einfachste Lösung war für mich am Ende eine simple Bruteforce Attacke auf das Passwort. Wenn man am iPhone zu oft das falsche Passwort eintippt, dann wird die erneute Eingabe verzögert - um eben eine Bruteforce Attacke zu verhindern. Leider hat Apple hier nicht weit genug gedacht! Wenn man nämlich eine Bluetooth Tastatur mit dem iPhone koppelt, dann kann man munter weiter Passwörter probieren, ohne dass die Zeitsperre zuschlägt.

Das lässt sich wunderbar ausnutzen: Man installiert die Mac App Type2Phone und probiert mit einem Applescript alle Passwörter durch. Das sind bei 10 Ziffern und 4 Stellen gerade mal 10000 Kombinationen. Bei etwa 3 Passwörtern pro Sekunde kommt man auf etwa eine Stunde, bis man alle möglichen Codes durchprobiert hat. Solange kann man durchaus warten :)

Gesagt getan:

Ich bin gespannt ob Apple diesen Bug unter iOS7 behoben hat. Ich war jedenfalls total froh, dass ich das so lösen konnte. Die Idee habe ich übrigens aus diesem Youtube Video.