有一台年久失修的红米突然需要找回里面的一些资料,需要重新开机,但因为设置了锁屏密码,已经想不起来是啥了,想重新factory reset但因为资料是在APP里的,不确定只备份SD卡有用所以也不敢贸然清除,以下为绕过的整个流程。
这台红米1刷的是4.2.1的系统,比较老,但没有打开调试模式,锁屏情况下adb也进不去,甚至连SD卡都没办法打开。寻思想着先把sd卡给显示出来先再想办法,想着就从recovery里入手。
因为机器使用的是默认的recovery,啥都没,就只能想着刷个cwm或者twrp了,找了一通总算是找到一个能用的(实在太老了)
重启后按电源和音量下键,进入到工厂模式。
(顺便吐槽一下选择方式是单向的,只能向上,音量上是确认键)选择fastboot模式后,电脑就能直接发现设备了,此时就直接从上面的链接中下载到twrp的recovery.img,然后刷进去就好了。
sudo fastboot flash recovery recovery.img
刷完后重启再次进入工厂模式,这次要选择进入recovery模式,此时就能进入到twrp的界面了。
因为sd卡应该是恢复出厂也不会清的,所以主要的目标应该放到data下,先进行一次备份,选择Backup,只选择Data,然后选择存储目录为外置sd卡,滑动就能备份了,备份后的路径在sd卡的
/twrp/BACKUPS/{device}/{time}
以下是我备份后的信息,我把data,boot,system都备了
备份的结构很简单,一个.win的文件,一个是校验文件,拿data.ext4.win为例,这只是一个简单的归档文件
$ file data.ext4.win
data.ext4.win: POSIX tar archive (GNU)
使用
tar xvf data.ext4.win
就能顺利解包。
而校验文件则更简单,只是数据文件的md5校验值。
接下来就是比较重要的一步了,因为比较老,在4.x的系统上(x小于多少不知道,但起码4.2以下的都是这样)锁屏密码是放在一个固定的位置的
/data/system
而手势密码则放在
/data/system/
如果想要绕开锁屏密码,则只需要把这个文件删掉,或者替换成我们知道手势的文件即可,最终的效果是画手势时系统不再校验我画得对不对,随便画都能进;同时,因为一开始就会锁我两个小时的时间,我不能等两个小时后再解锁,这个问题也需要一并解决。
首先解压掉data.ext4.win,解压出来其实就是整个原来系统上的/data目录下的所有文件了,因为我没法在进入系统后对文件进行操作,所以我只能先对备份文件进行操作,然后再通过recovery写回去。
先去到/data/system目录下,果然有一个gesture.key,同时也看到旁边就有一个locksettings.db文件,怀疑里面就有对开机就锁我两小时的设置。
先把gesture.key删了,然后使用sqlite3打开locksettings.db,先查看有什么表
就只有一个是自定义的,把数据都select出来
虽然还没看这个表的结构,但很容易就能看出最后一行7262157这个数字很熟悉,按毫秒一算,大概就两个小时,想必没错了,这个值就是锁我屏幕用的,那么知道后就可以直接更新这条记录的这个值就行了。
先看一下这个表的结构
sqlite> select * from sqlite_master where type=”table”
table|locksettings|locksettings|4|CREATE TABLE locksettings (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,user INTEGER,value TEXT)
于是就能直接得出update的sql语句了
update locksettings set value = 0 where name = ‘lockscreen.lockoutattemptdeadline’
如此,就能修改好了,然后重新打包
tar cvf data.ext4.win *
再使用md5sum重新算一下这个新包的md5值并更新到校验文件里,写回到SD卡上的备份目录即可。
最后重新回到recovery,这次选择restore,然后勾选Data,滑动就行了。
因为是整个目录wipe掉然后重新释放的,然后就是漫长的等待。。。。
完成后重启即可。