Wednesday, June 19, 2013

Pattern Lock ေမ့ေနလုိ႕ Android ဖုန္းLock ျဖဳတ္နည္း

ပုိ႕စ္ေရးသားသူ- ကုိေဇာ္သူရိန္ထြန္း
Pattern Lock ေမ့ေနလုိ႕ Android ဖုန္းပုိင္ရွင္ေတြအတြက္ Pattern Lock ျဖဳတ္နည္းေလးကုိတင္ဆက္ေပးလုိက္ပါတယ္။
ေျဖရွင္းနည္းမေရးခင္ သေဘာတရားကို အရင္ရွင္းျပပါရေစ။ Android ဖုန္းေတြမွာ ကၽြန္ေတာ္တို႔ သတ္မွတ္ထားတဲ့ Setting ေတြအားလံုးဟာ Database ထဲမွာ သိမ္းထားတာ ျဖစ္ပါတယ္။ Ringtone ကအစ ဘယ္ဖိုင္ကို Ringtone အေနနဲ႔သတ္မွတ္ထားတယ္၊ Volume ကို ဘယ္ေလာက္အထိ တင္ထားတယ္အဆံုး အားလံုးဟာ Database ထဲမွာ ရွိေနပါတယ္။
အခု Pattern Lock ျပႆနာဟာ ဖုန္းရဲ႕ Lock Screen ကို Pattern နဲ႔ဖြင့္လို႔ရေအာင္ လုပ္မိၿပီးကာမွ Pattern ကို ေမ့သြားၿပီးမွ အခါခါႀကိဳးစားရင္းနဲ႔ မရတဲ့ေနာက္ဆံုးမွာ ဖုန္းက အလိုလို Lock ခ်ပစ္လိုက္ျခင္းပဲ ျဖစ္ပါတယ္။ ေနာက္ကြယ္မွာ တကယ္တမ္းေတာ့ ဖုန္းရဲ႕ Database ထဲမွာ ရွိတဲ့ lockscreen.lockoutpermanently ရဲ႕ တန္ဖိုးဟာ အရင္ 0 ကေန 1 ကို ေျပာင္းလဲသြားျခင္းပဲ ျဖစ္ပါတယ္။ ကၽြန္ေတာ္တို႔က အဲဒီ 1 ကို 0 ျပန္ေျပာင္းႏိုင္ရင္ ေျပလည္သြားမွာ ျဖစ္ပါတယ္။
ဒါေပမယ့္ Android ဖုန္းေတြမွာ အဲဒီလို Database အတြင္းပိုင္းကို ျပဳျပင္ခြင့္ေပးမထားပါဘူး။ Root လုပ္ထားတဲ့ ဖုန္းေတြမွာသာ ျပဳျပင္ခြင့္ ရပါတယ္။ ဒါေၾကာင့္ ေအာက္ပါနည္းလမ္းဟာ Root လုပ္ထားတဲ့ဖုန္းေတြမွာသာ အက်ံဳး၀င္ပါတယ္။ ေနာက္ၿပီး ADB နဲ႔ Command ေတြသံုးၿပီး ျပဳျပင္မွာမို႔ ကိုယ့္ဖုန္းဟာ အဲဒီလို ကြန္ပ်ဴတာက Command ေတြနဲ႔တစ္ဆင့္ ခိုင္းေစခြင့္ကို ခြင့္ျပဳထားဖို႔လိုပါတယ္။ တစ္နည္းအားျဖင့္ USB Debugging ကို အမွန္ျခစ္ ထားဖို႔ လိုပါတယ္။ Lock က်သြားၿပီမွ USB Debugging ကို ဖြင့္ေပးဖို႔ဆိုတာေတာ့ မျဖစ္ႏိုင္ေတာ့ဘူး။ အစကတည္းက USB Debugging ကုိ ဖြင့္ထားတဲ့
ဖုန္းေတြမွာသာ ရပါလိမ့္မယ္။ ကံေကာင္းတာက အေတာ္မ်ားမ်ားဟာ USB Debugging ကို ဖြင့္ထားတတ္ၾကပါတယ္။
အေပၚကအဆင့္ေတြနဲ႔ ကိုက္ညီၿပီဆိုရင္ အဆင္ေျပပါၿပီ။ အရင္ဆံုး သူ႔ရဲ႕ settings.db လို႔ေခၚတဲ့ setting database ႀကီးကို ကြန္ပ်ဴတာထဲမွာ ေကာ္ပီကူးယူမယ္။ lockoutpermanently တန္ဖိုးကို 1 ကေန 0 ေျပာင္းမယ္။ ၿပီးရင္ ျပဳျပင္ထားတဲ့ settings.db ကို ဖုန္းထဲကို ျပန္ထည့္မယ္။ ဒါေလးပါပဲ။ ဘယ္ေဆာ့ဖ္၀ဲလ္ေတြလိုလဲ
Android Debug Bridge(ADB) လို႔ေခၚတဲ့ Android ဖုန္းေတြကို Command နဲ႔ အမိန္႔ေပးခိုင္းေစ ျပဳျပင္ႏိုင္တဲ့ Tool တစ္ခုလိုပါတယ္ (အဲဒါက Google က
ထုတ္ေပးထားပါတယ္)။ ေနာက္ၿပီး Database ထဲက အခ်က္အလက္ေတြကို ဝင္ၿပီးျပင္မွာမို႔ Database Management Tool တစ္ခုလည္း လိုပါ့မယ္။ Android
က SQLite Database ကို သံုးထားတာမို႔ sqlite ဆိုတဲ့ Database Management Tool တစ္ခု လိုပါတယ္။ ေနာက္ၿပီး ဖုန္းနဲ႔ကြန္ပ်ဴတာ ဆက္သြယ္ႏိုင္ဖို႔အတြက္ ဖုန္းရဲ႕ Driver ကို ကြန္ပ်ဴတာထဲမွာ ထည့္သြင္းထားဖို႔ လိုပါမယ္။
ဘယ္လိုအရည္အခ်င္းေတြလုိလဲ
Command Prompt သံုးစြဲနည္းကို သိထားဖို႔လိုသလို ADB သံုးစြဲနည္းကို အနည္းငယ္သိထားဖို႔လိုပါတယ္။ Database အေၾကာင္းကိုလည္း တီးမိေခါက္မိ ရွိဖို႔လိုပါတယ္။
ေအာက္က link မွာေပးထားတာကုိ download အရင္ဆြဲထားပါ။
https://dl.dropboxusercontent.com/u/17993536/adb.zip က zip
Download လုပ္ဆြဲျပီးျပီဆုိရင္ ဇစ္ဖုိင္ကုိ Extract လုပ္ပါ။ အဲဒီထဲမွာ adb ရယ္၊ sqlite ရယ္ ပါဝင္ပါတယ္။
ေျဖရွင္းနည္း
၁။ ဖုန္းနဲ႔ကြန္ပ်ဴတာ ဆက္သြယ္ပါ။ (Driver မရွိရင္ေတာ့ Driver ကို ႀကိဳတင္ၿပီး Install လုပ္ထားပါ)
၂။ Command Prompt ကိုဖြင့္ပါ။ adb ရွိတဲ့လမ္းေၾကာင္းဆီသြားပါ။ (ဥပမာ C:\adb) ကိုယ့္ဖုန္းကို adb က သိမသိ စမ္းဖို႔လိုပါမယ္။ အဲဒီအတြက္ adb devices ဆိုၿပီး ရိုက္ထည့္လိုက္ပါ။ devices attached ေအာက္မွာ ID တစ္ခု ေပၚလာရင္ ဖုန္းကို adb က သိေနၿပီ ျဖစ္ပါတယ္။
၃။ adb shell ဆိုၿပီး ရိုက္ထည့္ပါ။
၄။ shell@android:/$ ဆိုၿပီး ေပၚလာပါလိမ့္မယ္။ အတြင္းပိုင္းေတြကို ၀င္ျပင္မွာျဖစ္တာမို႔ root access ေျပာင္းဖို႔လိုပါမယ္။ su ဆိုၿပီး ရိုက္ထည့္လိုက္ပါ။
၅။ shell@anroid:/# ဆိုၿပီး ေျပာင္းသြားပါလိမ့္မယ္။ အဲဒီလိုမေျပာင္းရင္ေတာ့ root မလုပ္ရေသးလို႔ ျဖစ္ႏိုင္ပါတယ္။
၆။ ဖုန္းထဲမွာရွိတဲ့ Database ေတြသိမ္းထားတဲ့ Folder ဟာ ပံုမွန္အားျဖင့္ ဖတ္လို႔မရေအာင္ ကာကြယ္ထားပါတယ္။ ဒါေၾကာင့္မို႔ chmod command ကို
သံုးၿပီး Permission ကို ေျပာင္းလဲဖို႔ လိုပါတယ္။ ေအာက္က Command သံုးၿပီး လုပ္လိုက္ပါ။
chmod 0777 /data/data/com.android.providers.settings/databases
ဒါဆို data/data/com.android.providers.settings ထဲက databasese ဆိုတဲ့ folder က Permission ေတြ ျပဳတ္သြားၿပီျဖစ္ပါတယ္။ ဖ်က္ပစ္တာ၊ ေကာ္ပီကူးယူတာေတြ လုပ္ခြင့္ရွိသြားပါၿပီ။ shell ကေန Control+C ႏွိပ္ၿပီး ထြက္လိုက္ပါ။
၇။ အဲဒီ databases ထဲက settings.db လို႔ေခၚတဲ့ settings database ဖိုင္ကို ကြန္ပ်ဴတာထဲကို ကူးယူပါမယ္။ အဲဒီအတြက္ ေအာက္က command ကို သံုးပါ။
adb pull /data/data/com.android.providers.settings/databases/settings.db C:\adb
ဒါဟာ settings.db ဖိုင္ကို C:\adb ထဲကို ကူးယူလိုက္ျခင္းပဲ ျဖစ္ပါတယ္။
၈။ sqlite ကိုသံုးၿပီး settings.db ကို ျပဳျပင္ပါေတာ့မယ္။
sqlite3 settings.db လို႔ ရိုက္ထည့္လိုက္ပါ။
command prompt ဟာ sqlite> ဆိုၿပီး ေျပာင္းလဲသြားပါလိမ့္မယ္။ sqlite စအလုပ္လုပ္ေနပါၿပီ။ .tables ဆိုၿပီး ရိုက္ထည့္ၾကည့္ပါ။ settings.db ထဲမွာရွိတဲ့
table ေတြရဲ႕ နာမည္ေတြ ေတြ႕ပါလိမ့္မယ္။
အဲဒီမွာ pattern lock တန္ဖိုးက secure ဆိုတဲ့ table အထဲမွာ သိမ္းထားပါတယ္။ တစ္ခ်ိဳ႕ဖုန္းေတြမွာေတာ့ system ဆိုတဲ့ table ထဲမွာ သိမ္းထားပါတယ္။
အခု ကၽြန္ေတာ္စမ္းသပ္ခဲ့တဲ့ ဖုန္းဟာ secret ဆိုတဲ့ table ထဲမွာ သိမ္းထားတာမို႔ အဲဒီ table ထဲမွာရွိတဲ့ lockscreen.lockedoutpermanently ရဲ႕ တန္ဖိုးကို 0 လို႔ ေျပာင္းလဲဖို႔အတြက္ အခုလို command ကို သံုးလိုက္ပါတယ္။
update secret set value=0 where name=’lockscreen.lockedoutpermanently’;
autolock ျဖစ္ေနတာကိုလည္း အခုလို command သံုးၿပီး ျဖဳတ္ပစ္ပါတယ္။
update system set value=0 where name=’lock_pattern_autolock’;
Database ကို ျပဳျပင္ျခင္း ၿပီးဆံုးသြားပါၿပီ။ .quite လို႔ ရိုက္ထည့္ၿပီး ထြက္လိုက္ပါ။ အခု ျပဳျပင္ထားတဲ့ settings.db ကို ဖုန္းထဲကို ျပန္ထည့္ပါ့မယ္။
အဲဒီအတြက္ ေအာက္ပါ command ကို သံုးလိုက္ပါ။
adb push settings.db /data/data/com.android.providers.settings/databases/
ၿပီးဆံုးပါၿပီ။ ကိုယ့္ဖုန္းကို restart လုပ္ၾကည့္ပါ။ Patter Lock က်ေနတာ ေပ်ာက္ကြယ္သြားပါလိမ့္မယ္။ အဆင္ေျပၾကပါေစ။