2023/03/03

Lineage OS 18.1でのパターンロック解除(Nexus 6)

Lineage OSの入ったNexus 6があるが、パターンロックがわからなくなっていた。設定されているパターンを無効にする方法を見つけたのでメモ。


前提

環境はWindows 11(過去にこのPCで、当該Nexus6をUSB接続したことはない)。Nexus6のRecoveryイメージは、TWRP等ではなく、Lineage OSのもの。

事前準備

Windows PCにPlatform-toolsとadbで必要になるGoogle USB Driverはインストールしておく。

作業手順

Nexus6をFastbootモードで起動(電源Off状態から「Volume-Down + 電源ボタン」の長押し)し、VolumeボタンでRecovery modeを選択し、電源ボタンで確定。

※ この状態(Recovery modeになってすぐの状態)では、「adb shell」をやっても「This adb server's $ADB_VENDOR_KEYS is not set」と言われてadb接続できない。

PS D:\platform-tools> .\adb devices
List of devices attached
ZX1G525H5Q      unauthorized

PS D:\platform-tools> .\adb shell
adb.exe: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.

Nexus6の画面で、「Advanced」⇨「Enable ADB」をタップ。(不要だと思うが、念のため「Advanced」⇨「Mount/unmount system」もタップして/mnt/systemをマウントしておいた)

USBでPCとNexus6を接続。コマンドプロンプトやターミナルを立ち上げ(念のため、管理者で実行しておいた)、以下のようにコマンドを実行する。

PS D:\> cd D:\platform-tools\

PS D:\platform-tools> .\adb shell

shamu:/ # mount /data

shamu:/ # cd /data/system

shamu:/data/system # ls -l locksettings.db*
-rw-rw---- 1 system system 20480 2023-03-03 08:50 locksettings.db
-rw-rw---- 1 system system 32768 2023-03-03 09:04 locksettings.db-shm
-rw-rw---- 1 system system     0 2023-03-03 09:04 locksettings.db-wal

shamu:/data/system # mv locksettings.db locksettings.db.orig

shamu:/data/system # mv locksettings.db-shm locksettings.db-shm.orig

shamu:/data/system # mv locksettings.db-wal locksettings.db-wal.orig


ここまでできたら、Nexus6の画面で「Reboot system now」をしてLineage OSを起動させると、パターンロックの入力画面は表示されず、利用できるようになる。

上記でmvしたlocksettings.db等のファイルは自動的に生成されていた。


参考情報 

※/dataパーティションはマウントされていないので、そのままでは空フォルダ

shamu:/ # cd /data
shamu:/data # ls -l
total 0
shamu:/data #


sqlite3を使って、locksettings.dbを書き換えるという手順(後述)もあるが、そもそも利用できるsqlite3コマンドが存在しない。

/mnt/system/system/bin/sqlite3に存在するもののライブラリがなくて実行できない。(/mnt/system/system/lib/libsqlite.so にあるが呼び出せていない)

shamu:/ # /mnt/system/system/bin/sqlite3
CANNOT LINK EXECUTABLE "/mnt/system/system/bin/sqlite3": library "libsqlite.so" not found: needed by main executable
linker: CANNOT LINK EXECUTABLE "/mnt/system/system/bin/sqlite3": library "libsqlite.so" not found: needed by main executable

 

locksettings.dbを削除する方が楽なので、削除で対応。

 

locksettings.dbを書き換えるという手順

sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '1' WHERE name = 'lockscreen.disabled'"
sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '0' WHERE name = 'lockscreen.password_type'"
sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '0' WHERE name = 'lockscreen.password_type_alternate'"
echo "" > /data/system/password.key

 

なお、上記の/data/system/password.keyは存在しなかった。

 

また、/data/system/gesture.keyを削除するという手法もあるが、そのファイルは存在しなかった。

 

locksettingsというコマンドがあり、それを使って設定変更できるとの情報もあったが、通常使いそうなパスにそのコマンドはなかったし、実行しようとしても実行ができなかった。

shamu:/ # /mnt/system/system/bin/lock
lockagent_crasher   locksettings

shamu:/ # /mnt/system/system/bin/locksettings --help
/mnt/system/system/bin/locksettings[6]: app_process: inaccessible or not found

shamu:/ # /mnt/system/system/bin/locksettings
/mnt/system/system/bin/locksettings[6]: app_process: inaccessible or not found

shamu:/ #

 

ちなみに、locksettings.dbの中身はこんな感じでした。(adb pullでPCに持ってきて中身を確認した)

PS D:\platform-tools> .\adb pull /data/system/locksettings.db
/data/system/locksettings.db: 1 file pulled, 0 skipped. 10.8 MB/s (20480 bytes in 0.002s)
PS D:\platform-tools>

PS D:\platform-tools> .\sqlite3.exe .\locksettings.db.hiroaki "select * from locksettings"
1|lockscreen.disabled|0|0
2|migrated|0|true
3|migrated_user_specific|0|true
4|lockscreen.password_type_alternate|0|0
5|migrated_biometric_weak|0|true
6|migrated_lockscreen_disabled|0|true
7|migrated_frp|0|1
8|lockscreen.enabledtrustagents|0|com.google.android.gms/.auth.trustagent.GoogleTrustAgent,org.lineageos.profiles/.ProfilesTrustAgent
9|lock_pattern_size|0|3
13|sp-handle|0|644085608932140144
14|prev-sp-handle|0|-6935917000520150992
15|sp-handle-ts|0|1669295729754
16|lockscreen.profilechallenge|0|1
17|lockscreen.patterneverchosen|0|1
20|lock_pattern_visible_pattern|0|0
21|lock_pattern_show_error_path|0|0
27|lockscreen.istrustusuallymanaged|0|1

PS D:\platform-tools>

0 件のコメント:

コメントを投稿