Note:
that this method is tested on Stock Android 4.2.1 and Stock CM 12.0 (Android 5.0) , both devices having custom Recovery (ADB always enabled as default) . If your Stock Recovery allows ADB shell access then you may also consider this solution.
Instructions:
- You should try your pattern-cracking software (or whatsoever the genre it has) from inside the Stock Recovery to see whether it works with the former's environment (ADB shell available there or not).
- Since I would never try step 1., I would do the following:
For Jellybean 4.2.1:
- Boot into Recovery and mount Data partition.
- Open a shell on PC and type:
adb pull /data/property/persist.sys.usb.config ~/Repace~/with home directory of your OS. - Open that file in a text editor and you would possibly see
mtpwritten there. Change it tomtp,adb.Note that sometimes Android doesn't understand the text file changes if the line terminator is "DOS Terminators" which Notepad would probably do on Windows (mine is Linux so no issue here).In that case, I would suggest not usingadb pullbut doing:adb shell echo 'mtp,adb' > /data/property/persist.sys.usb.configYou may verify that theechocommand overwrote the file by using:adb pull /data/property/persist.sys.usb.config ~/and seeing the file's content in some text editor. - Unmount
Dataand reboot into Android OS. USB Debugging would probably be enabled.
For Lollipop 5.0:
JB 4.2.1 users can also follow this method if the previous one didn't work for them.
- Boot into Recovery and mount Data partition.
- Repeat step 2 and 3 used in JB 4.2.1 method.
- We need to tweak some parameters in
settings.db. Type:adb pull /data/data/com.android.providers.settings/databases/settings.db ~/ - Back it up at some other location too, and open the file in an SQLITE editor. I'm running Linux and DB Browser for SQLite works well. It's also available for Windows OS/OSX.
- In the
globaltable, change the value for:adb_enabledto1development_settings_enabledto1
- Check that
verifier_verify_adb_installsis set to1in theglobaltable. - Check that as default, in the
securetable:adb_notifyis1adb_portis-1
These checks in step 6 and 7 are not necessary but should be done so that troubleshooting becomes rather easy if the solution doesn't work for you. - Save the changes in
settings.dband copy it back into Android by typing:adb shell rm /data/data/com.android.providers.settings/databases/settings.db exit adb push ~/settings.db /data/data/com.android.providers.settings/databases/That delete (rm) command is not necessary sinceadb pushshould overwrite the file, but I executed it for my peace of mind. - Unmount
Dataand reboot into Android OS. ADB probably would be enabled.
This is how it actually worked out when tested on my devices.