ก่อนอื่นเลย ขอประกาศเป็นทางการว่า Blog ในเว็บนี้ โพสนี้เป็นโพสที่ 100 แล้ว เย่~!!
ผมเองก็ไม่มีอะไรจะให้ นอกเสียจากความรู้ที่สั่งสมมา โดยวันนี้จะมาสอนวิธีการล่า OTA URL สำหรับ Nexus Device และผองเพื่อน ซึ่งได้รับการอัพเดตมาจาก Google โดยตรง
ซึ่งวิธีการนั้นก็มีอยู่หลากหลายวิธี และเกือบทุกวิธี ได้ถูกใส่เป็นฟีเจอร์อยู่ใน App Nexus Update Checker ที่หลาย ๆ คนรู้จักกันดีอยู่แล้ว (เหรออออ) เพื่อคอยตรวจสอบค้นหา OTA ทั้งที่ผ่านมา และที่เพิ่งจะได้รับเข้ามาใหม่ และส่งกลับมายัง Server ของผมเอง (ขอบคุณผู้ใช้งาน App ทุกท่านนะครับ) ซึ่งข้อมูลที่ได้ ก็จะถูกส่งต่อให้กับผู้ที่ใช้ App ในรุ่นเดียวกัน เพื่อไปลัดคิวอัพเดตผ่าน App นั่นเอง
นอกจากนี้ ข้อมูลทั้งหมด จะอัพเดตอยู่ในหน้า Google Nexus OTA Download ในเว็บนี้นี่แหล่ะ
ยังไม่หมด… ข้อมูลที่ได้ ก็ได้นำไปเผยแพร่ต่อที่เว็บ XDA Developers ตามกระทู้รวม Link สำหรับ OTA URLs เพื่อที่จะได้เป็นคลังข้อมูล ซึ่งในกระทู้เหล่านั้น มีเหล่า OTA Hunter คอยแจ้ง OTA URL ที่ดักมาได้ เช่นกระทู้รวม OTA URLs ของ Galaxy Nexus (จิ้มซิจิ้ม) ที่โพส #4 จะเห็นรายชื่อเหล่า OTA Hunter ยาวเป็นหางว่าว

เอ๊ะ~!! ชื่อคนแรกใครล่ะนั่น (อย่าบอกนะว่าไม่รู้
)
ไหน ๆ ก็เอามาโชว์ละ อีกหน่อยละกัน
จากกระทู้รวม OTA URLs ของ Nexus 7 (2013) ที่ #1
จากกระทู้รวม OTA URLs ของ Nexus 6 ที่ #1
จากกระทู้รวม OTA URLs ของ Nexus 9 ที่ #1
จากกระทู้รวม OTA URLs ของ HTC One M8 (Google Play edition) ที่ #1
จากกระทู้รวม OTA URLs ของ Motorola Moto 360 (Android Wear) ที่ #1
อยากดักของ Google Glass ได้บ้าง แต่ไม่มี Device อ่า
List of contents
- Unfold OTA Flow
- OTA URL Pattern
- Capture OTA URL with Bug Report
- Capture OTA URL with LogCat
- Capture OTA URL with dumpsys
- Capture OTA File from cache
- Capture OTA Filename from Recovery Log
- OTA Filename to OTA URL
ก่อนอื่นขอติดเรตให้กับ blog นี้นิดนึง เพราะมัน Geek มว๊ากกกก
Unfold OTA Flow
ก่อนอื่น ขอแฉวิธีการอัพเดตระบบ ของเหล่า Google Nexus กันก่อนละกัน เพราะนี่คือจุดเริ่มต้นของสายอาชีพ OTA Hunter เลยล่ะ
เมื่อ Google ทำการปล่อย OTA ให้กับ Nexus ในแต่ละรุ่นนั้น จะเริ่มจากการทดลองปล่อยให้กับ 1% ของเครื่องที่ถูกสุ่มมาจากรุ่นเดียวกันทั้งหมด เพื่อเป็นการทดสอบ หากไม่พบปัญหาใด ๆ ภายใน 48 ชั่วโมงแรก ก็จะเริ่มทะยอยปล่อยเพิ่มขึ้น เป็นเหตุให้ผู้ใช้งานในแต่ละรุ่น จะได้รับการอัพเดตไม่พร้อมกัน
ใน XDA เหล่า OTA Hunter ทั้งหลาย จึงรวมตัวกันออกล่า URL กันเป็นบ้าเป็นหลัง เพื่อให้ได้ OTA URL มาก่อนใคร (เว่อมาก) โดยก็มีเหล่า OTA Hunter มือฉกาจ ได้เผยวิธีออกล่าเอาไว้มากมาย แต่กระจัดกระจายอยู่หลายแห่ง และมีส่วนที่ผมค้นพบด้วยตัวเองด้วย จึงเกิดเป็น blog นี้ขึ้นมา เพื่อหวังจะฝึกอาชีพให้กับท่านที่สนใจ เผื่อว่าเครื่องของท่าน อาจเป็นหนึ่งใน 1% แรกที่ถูก Google เลือก เหมือนครั้งนึงที่ผมเคยได้ OTA URL คนแรก ๆ กับ Nexus 7 2012 มาแล้ว (ตื่นมาล่า OTA URL กลางดึกเลยทีเดียว)
เมื่อมี OTA มาถึงเครื่องเรานั้น ในหน้า System Update ก็จะแจ้งเตือนแบบในรูปนี้ (คงเคยเห็นกันแล้วล่ะเน๊อะ)

นั่นคือ Google ได้ Push ข้อมูลว่ามีการอัพเดตมาถึงเครื่องเราแล้ว ซึ่งข้อมูลที่ส่งมานั้น จะบอกรายละเอียดการอัพเดต ตามที่แสดงให้เห็นบนหน้าจอ และแนบ OTA URL มาแล้วด้วย…
และด้วยตัวระบบของ Android จะมีการเขียน Log อยู่ตลอดเวลา (เรียกว่า LogCat) เพื่อไว้สำหรับให้ Developer ไว้ Debug และ Google ก็ได้ทำการเขียน Log ในส่วนของ System Update ไว้ด้วย โดยจะเขียน OTA URL ที่ได้รับมา และชื่อไฟล์ที่จะทำการ Download ไว้ด้วย
นอกจาก LogCat ที่เขียนข้อมูลจาก System Update แล้ว ในระบบ จะมีการเขียน Log ไว้อีกอย่างนึง ที่เราสามารถดึงข้อมูลเก่า ๆ ขึ้นมาดูได้ ไม่ว่าจะอัพเดตมานานแค่ไหนแล้วก็ตาม ด้วยการ shell เข้าไปในระบบ แล้วใช้คำสั่ง dumpsys เพื่อแสดงข้อมูลออกมาได้
เมื่อเรากด Download ในหน้า System Update ระบบจะทำการเขียนไฟล์ที่ Download มาไว้ที่ /cache หรือ Cache Partition โดยไม่มีการเปลี่ยนชื่อไฟล์ (บางทีเราเรียกไฟล์นี้ว่า Update Package, OTA Package หรือ OTA File)
เมื่อระบบ Download ไฟล์ Update Package เสร็จแล้ว จะทำการ Verify ว่าไฟล์ที่ Download มาถูกต้องหรือไม่ โดยจะใช้ Certificate ที่อยู่ในเครื่อง (/system/etc/security/otacerts.zip) มาร่วมในการตรวจสอบ เพื่อให้มั่นใจว่าไฟล์ที่ Download มาถูกต้อง ครบถ้วน สมบูรณ์

ถึงตรงนี้ ในหน้า System Update จะมีปุ่ม Restart & Install ขึ้นมาให้เรากด…

เมื่อเรากดปุ่ม Restart & Install ระบบจะทำการเขียนไฟล์คำสั่งไว้ที่ไฟล์ /cache/recovery/command แล้วทำการ Reboot ระบบ เข้าสู่ Recovery Mode
เมื่อ Recovery Mode ถูกเปิดขึ้นมา และพบคำสั่งที่เขียนไว้ จะทำการอ่านคำสั่งขึ้นมา ซึ่งในคำสั่งนั้น จะบอกว่าให้ทำการติดตั้งไฟล์ Update Package ที่ Download มาจากที่ /cache แล้วก็จะเริ่มทำการติดตั้ง Update Package โดยทำตามคำสั่งที่เขียนไว้ใน Update Package อีกที (ไว้จะเขียนเจาะลึกในส่วนนี้แยกไปต่างหากให้อ่านกันนะ)

ใน Recovery Mode จะทำการเขียน Log การทำงานไว้ที่ /cache/recovery/ ซึ่งไฟล์ทั้งหมดที่อยู่ภายในนี้ จะมีชื่อไฟล์ Update Package อยู่ด้วย
เมื่อ Recovery Mode ทำงานตามคำสั่งใน Update Package เสร็จแล้ว ก็จะ Reboot ระบบ แล้วเข้าสู่ขั้นตอนการอัพเดตระบบในส่วนที่เหลือในการ Boot ครั้งแรกต่อไป
สำหรับการอัพเดตระบบ ของ Nexus คร่าว ๆ ก็มีเท่านี้ครับ ใน Android รุ่นอื่น ๆ ก็มีทั้งเหมือนกัน และคล้ายกันนะ อย่าง Nokia X ที่เป็น Android Fork นี่ ผมก็ยังเคยดักมาแล้วนะ
ทั้งหมดที่ผมแฉให้ฟัง สามารถดักข้อมูล OTA ออกมาได้ทุกจุดเลย น่าสนใจกันแล้วใช่ม๊าาาาา~!!
ยัง… ยังไม่จบ อ่านหัวข้อต่อไปก่อนนะ
OTA URL Pattern
OTA URL นั้น จะมีรูปแบบคล้าย ๆ กันหมด ซึ่งถ้าเรารู้ Pattern ของ OTA แล้ว จะช่วยเป็น Keyword ในการหา OTA URL ได้ง่ายขึ้น
เคยมีครั้งนึงที่ได้ไฟล์ Update Package มา แต่คนที่อัพโหลดไว้ใจดี เปลี่ยนชื่อไฟล์ให้ซะ สงสัยกลัวชื่อไฟล์จะยาว ผมก็สามารถย้อนหา URL จากไฟล์ได้ เพราะเข้าใจ Pattern นี่ล่ะ จริง ๆ นะ ไม่ได้โม้~!!
สำหรับ OTA URL จะมี 2 รูปแบบ ดังนี้
1 2 3 |
1 - http://android.clients.google.com/packages/ota/[device path]/[file] 2 - http://android.clients.google.com/packages/data/ota/[device path]/[file] |
[device path] จะต่างกันไปในแต่ละรุ่น ตัวอย่างเช่น…
- Nexus Q จะเป็น tungsten
- Nexus 6 จะเป็น google_shamu_shamu
- Nexus 9 จะเป็น google_flounder_volantis
- HTC One M8 จะเป็น gpedogfood_htc_m8_generic
- Moto 360 จะเป็น motorola_minnow_metallica
สังเกตุว่า เราไม่สามารถเดาได้เลยว่าจะเป็นคำว่าอะไร เพราะไม่มีรูปแบบที่แน่นอน
ส่วน [file] เป็นชื่อไฟล์ Update Package จะมีหลายรูปแบบ ดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1 - [xxx].zip 2 - [sha1 12 digits].signed-[product code]-ota-[build number].[sha1 8 digits].zip 3 - [sha1 12 digits].signed-[product code]-[build number]-from-[build number].[sha1 8 digits].zip 4 - [sha1 40 digits].signed-[product code]-[build number]-from-[build number].[sha1 8 digits].zip 5 - [sha1 40 digits].signed-[product code]-ota-[build number]-from-[build number].[sha1 8 digits].zip 6 - [sha1 40 digits].signed-[product code]-ota-[build number]-from-[build number].[xxx].zip 7 - [sha1 40 digits].[xxx].zip |
แบบที่ 1 เลิกใช้ไปแล้วในช่วงที่ Android 4.0 ICS ออกมา ตัวอย่างเช่น
1 2 3 4 5 |
0dDgDain.zip VQ8PQk_V.zip BZ-Bqdau.zip |
โดยพบบน Nexus S เท่านั้น ซึ่งค่า [xxx] นั้น ไม่แน่ใจว่ามาจากไหน แต่มันเลิกใช้ไปแล้ว ข้ามไปละกันนะ แค่ให้รู้ไว้ว่าเคยมีละกัน
แบบที่ 2 นี่ ปัจจุบันเลิกใช้ไปแล้ว พบบน Nexus One เท่านั้น ซึ่งจะเป็น Full ROM คืออัพเดตทับเลย ไม่สนใจ Build number ก่อนอัพเดต โดยที่ [sha1 x digits] คือค่าความถูกต้องแบบ SHA-1 จำนวน x หลักแรก ส่วน [product code] คือรหัสของ ROM ในแต่ละรุ่น และ [build number] จะเป็นเลข Build number แบบเก่าที่เป็นตัวเลข ตัวอย่างเช่น
1 2 3 |
656099b119f8.signed-passion-ota-102588.656099b1.zip b90257ed8cd3.signed-passion-ota-121341.b90257ed.zip |
แบบที่ 3-4 ปัจจุบันก็เลิกใช้ไปแล้วเช่นกัน มีต้นแบบมาจากแบบที่ 2 และเปลี่ยนมาใช้แบบที่ 5-6 ในช่วง Android 5.1 นี่เอง ซึ่งก็จะคล้าย ๆ กันหมดนั่นแหล่ะ โดยที่ [build number] จะเป็นเลข Build number แบบตัวอักษร เพื่อบอกว่า อัพเดตเป็น Build number ไหน จาก Build number ไหน ส่วน [xxx] ปัจจุบัน พบอยู่ 2 คำ คือ radio-restricted และ fullradio ตัวอย่างเช่น
1 2 3 4 5 6 7 8 9 |
d323ca384aaa.signed-passion-GRK39F-from-GRJ22.d323ca38.zip // Nexus One a71a2082d553.signed-soju-GRH78-from-GRH55.a71a2082.zip // Nexus S 27cf68843edd148704efc343491a164a62605d38.signed-metallica-LWX48T-from-KNX01S.27cf6884.zip // Moto 360 - Android Wear 9f163586073265c54d86679efd63513a4477cfd8.signed-nakasi-LMY47D-from-LRX22G.9f163586.zip // Nexus 7 2012 Wi-Fi 90bd789f499ea5ad33510c568ec920aae7214d34.signed-hammerhead-ota-LMY47I-from-LRX22C-radio-restricted.zip // Nexus 5 |
สำหรับแบบที่ 7 จะพบบนตระกูล Google Play editions เท่านั้น โดย [xxx] จะแตกต่างกันไปตามแต่ละรุ่น ตัวอย่างเช่น
1 2 3 4 5 |
8d616f8c9b3ad4bd6f94ac50456531ebbbe0ed42.USER_I9505G_XAR_UCNF3_to_UDNL3_Update_FWD.zip // Samsung Galaxy S4 GPe a4520bd9f2218367fdd0548ee779c89ed9118b66.live_update_1278-8069_R3C-R3C_KTU84P.S1.3061-LRX21P.S3.4201_Sony-Ericsson-E-Application-Signing-Live-864f-1.zip // Sony Z Ultra GPe 0a1c9c635fd807beef4db8b5356ed82c820de9a2.incremental-LRX21Z.M002_15-LMY47M.M001_6.zip // Motorola Moto G GPe |
ส่วนแบบอื่น ๆ นอกจากนี้ มักจะไม่มีรูปแบบแน่นอน แต่จะคล้าย ๆ กับแบบที่ 3-6 นั่นแหล่ะ ส่วนใหญ่จะเป็น Google ลืมใส่บางส่วน หรือเป็นการแก้ไขจากตัวที่มีปัญหา ก็ขอข้ามไปละกันนะ ไม่ได้เกิดขึ้นบ่อย ๆ
ชักจะคันไม้คันมือกันแล้วใช่ไม๊ มาดูแต่ละวิธี ที่จะล่า OTA URL กันต่อเลย
บอกไว้ก่อนนะว่า รูปตัวอย่างในแต่ละวิธีต่อจากนี้ ทำขึ้นจากอุปกรณ์หลายตัว มีทั้งที่ทำไว้นานแล้ว และเพิ่งทำใหม่ ข้อมูลที่เห็นในแต่ละรูปจึงไม่ได้สอดคล้องกัน อย่าไปสนใจมันนะ จะได้ไม่สับสน
Capture OTA URL with Bug Report
ความต้องการ
- เครื่องที่ไม่ได้ root
- Internet
- เครื่องที่ root แล้ว
- App File Explorer ที่ใช้สิทธิ์ root ได้ หรือ
- App Terminal
วิธีแรกนี้ เป็นวิธีที่ง่ายที่สุดในการล่า OTA (แต่ผมไม่ชอบเท่าไหร่) นั่นก็คือการใช้ Bug Report
อย่าเพิ่งเกาหัวกันครับ ว่ามันเกี่ยวอะไรกับ Bug Report มันยังไม่มีอะไร Force Close แล้วจะกด Bug Report ยังไง… ถูกแล้วครับ ไม่ใช่ Bug Report ตรงนั้น หากแต่เป็นตรงนี้ ตรงนั้น และตรงโน้นนนนนนน (อะไรของมันฟระ)
วิธีนี้ ใช้ได้หลังจากมีการแจ้งเตือนใน System Update หรือกด Download ใน System Update แล้ว แต่ยังไม่ได้กด Restart & Install
ก่อนอื่นให้ลองเปิดเข้าไปในเมนู Setting เลื่อนลงไปล่างสุด จะเห็นเมนู Developer options จิ้มเข้าไปเลยยยย (จิ้มซิจิ้ม จะรออะไรอยู่)

ถ้าไม่มีเมนู Developer options แสดงว่ายังไม่ได้เปิดมันขึ้นมา ต้องเปิดขึ้นมาก่อน โดยเข้าไปที่เมนู About phone/tablet แล้วจิ้มรัว ๆ ที่ Build number 7 ที
ในเมนู Developer options จะมีเมนู Take bug report (1) อันนี้แหล่ะ จิ้มเลย ก็จะพบหน้าต่าง Take bug report ก็กด REPORT (2) ได้เลย

เงียบ………………
ไม่ต้องตกใจว่า ทำไมจิ้มไปแล้วเงียบ เพราะจะใช้เวลาประมวลผลราว 1-3 นาที แล้วจะแจ้งออกมาทาง Notification

เมื่อจิ้มไปที่ Notification จะพบว่า ระบบจะให้ทำการ Share bug report ออกไป โดยจะต้องแชร์ไปทาง Email หรือ Cloud Drive ทั้งหลายเท่านั้น ไม่สามารถเซฟข้อมูลไว้ในเครื่องได้ (ที่เห็นว่ามี ES Save to… ลองดูแล้ว ไม่สามารถเซฟได้)

ผมไม่ชอบวิธีนี้ก็ตรงนี้ล่ะ
แต่ถ้าใครเจอว่าเซฟลงเครื่องผ่าน App ไหนได้ แนะนำด้วยครับ
ถ้าเลือกส่ง Email ก็ส่งให้ตัวเองโลด หรือจะลง Cloud Storage ก็ไม่ว่ากัน ซึ่งเราจะเห็นว่า จะได้ไฟล์รูป 1 ไฟล์ และ Text 1 ไฟล์

สำหรับเครื่องที่ root แล้ว สามารถเข้าไปเอาไฟล์ได้ที่ /data/bugreports ซึ่งมันคือที่เดียวกับ /data/data/com.android.shell/files/bugreports นั่นเอง
ให้เปิด Text file ขึ้นมา แล้วไล่หาดู OTA URL อยู่ในนี้ล่ะ…
หาเจอมั๊ยยยยยย…
ถ้าเจอ แสดงว่าคุณสายตาดีมว๊ากกก แต่มันลำบากมิใช่น้อยเลย เพราะข้อมูลมันเยอะมาก ด้วยขนาดไฟล์เกือบ 10 MB~!!
วิธีจะหาเจอง่าย ๆ ให้ทำการ Search โดยค้นหาคำว่า system_update หรือ SystemUpdateService ก็เจอแล้วล่ะ
รูปข้างล่างนี้ ผมเก็บ Bug Report มาจาก Nexus 10 จะเห็นว่ามีทั้งแบบได้ OTA URL มาเลย และมีแบบได้เฉพาะชื่อไฟล์ (จะเห็นว่าไฟล์ถูกเขียนอยู่ที่ /cache)


ไม่สอนวิธี Search ละกันนะ เดี๋ยว blog จะยาวไป แต่ง่ายสุดก็คือใช้คอมพ์ทำ ถ้าบน Android ยังหา Text Editor ที่ค้นหาคำได้ และเปิดไฟล์ขนาดเกือบ 10 MB ดี ๆ ยังไม่ได้เลย หรือถ้าใครใช้ Command เป็น ใช้ App Terminal Emulator ได้เลย
Capture OTA URL with LogCat
ความต้องการ
- เครื่องที่ไม่ได้ root
- เปิด USB debugging
- PC ลง ADB Driver เรียบร้อย
- Android SDK Platform-tools
- เครื่องที่ root แล้ว
- App Terminal
วิธีนี้ เป็นวิธีแรกเลยที่ผมใช้ดัก OTA URL ได้ฟิลลิ่งของการเป็น Hacker (ก็ว่าไป) และใช้บ่อยที่สุด (เหล่า OTA Hunter ในยุคแรก ๆ มักใช้วิธีนี้) แต่จะต้องมีความรู้ทางด้าน IT นิดนึง เพราะเราจะใช้ Command ในการดักข้อมูล
วิธีนี้ ใช้ได้หลังจากมีการแจ้งเตือนใน System Update หรือกด Download ใน System Update แล้ว แต่ยังไม่ได้กด Restart & Install
ก่อนอื่นต้องต่อเครื่องเข้ากับ PC แล้วทำการเปิด dos (Command Prompt หรือ cmd นั่นแหล่ะ) ที่ Folder Platform-tools ของ Android SDK เพราะเราจะใช้โปรแกรม adb (Android Debug Bridge) ในการสั่งงาน
ทดสอบว่าการเชื่อมต่อเรียบร้อยดี ด้วยคำสั่งต่อไปนี้
1 |
adb devices |
ถ้าแสดง Serial Number ออกมา แสดงว่าการเชื่อมต่อเรียบร้อยดี พร้อมออกล่า OTA URL แล้ว
ต่อจากนั้นก็ ให้สั่ง adb shell เพื่อเข้าไปยัง shell command ในเครื่อง

สำหรับเครื่องที่ root แล้ว สามารถใช้ App Terminal Emulator เข้าไปยัง shell ทำบนได้เลย แค่เปิด App ขึ้นมา ต่อจากนั้นก็พิมพ์ su เพื่อขอสิทธิ์ root รอไว้เลย (ถ้าได้สิทธิ์ root แล้ว Prompt จะเปลี่ยนจากตัว $ เป็น #)

ต่อจากนั้น ให้ไปกด Update ทีนึง แล้วรีบมาทำต่อก่อนที่ Log จะหายไป
กลับมาที่ shell ให้พิมพ์คำสั่งต่าง ๆ ดังนี้
1 2 3 |
logcat -d | grep system_update logcat -d | grep I/SystemUpdate |
ก็จะเห็น OTA URL หรือชื่อไฟล์แล้วล่ะ (รูปนี้ทำไว้นานแล้ว แต่ทำไว้แค่ตัวอย่างเดียว ไว้ถ้ามีดักอัพเดตอีก จะมาเติมให้นะครับ)
Capture OTA URL with dumpsys
ความต้องการ
- เครื่องที่ไม่ได้ root
- เปิด USB debugging
- PC ลง ADB Driver เรียบร้อย
- Android SDK Platform-tools
- เครื่องที่ root แล้ว
- App Terminal
วิธีนี้ เป็นหนึ่งในวิธีใหม่ ที่ได้ผลดีมาก และผมก็ชอบมากเช่นกัน เพราะว่าสามารถหาข้อมูล OTA URL ย้อนหลังไปได้นานมาก รู้สึกจะย้อนไปหาได้ตั้งแต่อัพเดตครั้งแรกเลย ถ้าไม่ Factory reset ไปซะก่อนนะ
วิธีนี้ ใช้ได้กับเครื่องที่เคยมีการอัพเดตแล้ว และยังไม่ได้ Factory reset
โดยเราจะใช้ shell command เหมือนกับวิธีที่แล้ว ไม่เขียนซ้ำละกันนะ
ให้พิมพ์คำสั่งต่าง ๆ ดังนี้
1 |
dumpsys dropbox --print | grep system_update |
ก็จะเห็น OTA URL ทั้งหมด ที่เคยได้รับมาแล้วล่ะ แจ๋วไปเล้ยยยย~!!
Capture OTA File from cache
ความต้องการ
- เครื่องที่ไม่ได้ root
- Unlock Bootloader
- Custom Recovery (TWRP)
- เครื่องที่ root แล้ว #1
- App File Explorer ที่ใช้สิทธิ์ root ได้ หรือ
- App Terminal
- เครื่องที่ root แล้ว #2
- เปิด USB debugging
- PC ลง ADB Driver เรียบร้อย
- Android SDK Platform-tools
วิธีนี้ เหมาะสำหรับเครื่องที่ root แล้ว ก็แค่เปิดไปหาชื่อไฟล์ที่ /cache ก็ได้แล้ว เพียงแต่เราจะไม่ได้เป็น URL นั่้นเอง
วิธีนี้ ใช้ได้หลังจากกด Download ใน System Update แล้ว แต่ยังไม่ได้กด Restart & Install
กรณีที่ใช้ File Explorer เปิดไปที่ /cache คงไม่ต้องสอนเน๊อะ ถ้าใช้ Terminal Emulator ก็ shell เข้าไป สั่ง su เพื่อขอสิทธิ์ root ตามด้วยคำสั่งค้นหาไฟล์ใน /cache ดังนี้
1 |
ls /cache/*.zip |
ส่วนรูปด้านล่างนี้ เป็นผลการ shell เข้าไปแล้วค้นหาไฟล์ แต่ทำบน PC นะ

ส่วนเครื่องที่ยังไม่ได้ root ถ้า Unlock Bootloader แล้ว เพียงแค่ใช้ TWRP ในการเข้าถึง /cache
ถ้าใคร Flash TWRP ลงไปแทน Stock Recovery อยู่แล้ว ก็เปิดเข้า Recovery Mode ได้เลย แต่ถ้าใครไม่ได้ Flash ให้เข้าไปที่ Bootloader แล้วทำการ boot ด้วย TWRP โดยสั่งจาก PC โดยมีคำสั่งประมาณนี้ (ขอไม่ลงรายละเอียดนะ)
1 |
fastboot boot twrp.img |
ใน TWRP ให้เลือกไปที่ Advanced แล้วเลือก File Manager เพื่อ Browse ไปยัง /cache เพื่อดูชื่อไฟล์ก็ได้ แต่ชื่อไฟล์อาจจะล้นจอนะ

หรือจะเลือก Advanced แล้วเลือก Terminal Command ก็จะเข้าถึงไฟล์ได้เหมือนกรณีเครื่องที่ root แล้วได้ละ

ก็จะได้ชื่อไฟล์ Update Package มาแร๊ววววววววว
Capture OTA Filename from Recovery Log
ความต้องการ
- เครื่องที่ไม่ได้ root
- Unlock Bootloader
- Custom Recovery (TWRP)
- เครื่องที่ root แล้ว #1
- App Terminal
- เครื่องที่ root แล้ว #2
- เปิด USB debugging
- PC ลง ADB Driver เรียบร้อย
- Android SDK Platform-tools
วิธีนี้ เหมาะสำหรับเครื่องที่ root แล้ว เช่นเดียวกับวิธีก่อนหน้า เพียงแต่เราจะหาข้อมูลจาก Log การทำงานของ Recovery Mode ที่ผ่านมานั่นเอง
วิธีนี้ ใช้ได้กับเครื่องที่เคยอัพเดตแล้วเท่านั้น แต่อัพเดตผ่าน/ไม่ผ่าน ไม่เกี่ยวนะ
กรณีที่ใช้ File Explorer เปิดไปที่ /cache/recovery ก็จะพบไฟล์ดังรูป

ไฟล์ last_install จะมีข้อมูลที่ Recovery Mode ทำการติดตั้งไฟล์ใดไว้ในครั้งล่าสุด และผลการติดตั้งเป็นอย่างไร
ถ้าใช้ Terminal Emulator ก็ shell เข้าไป สั่ง su เพื่อขอสิทธิ์ root ตามด้วยคำสั่งแสดงข้อมูลในไฟล์ last_install ดังนี้
1 |
cat /cache/recovery/last_install |
ส่วนไฟล์ last_log จะเป็น Log ที่ Recovery Mode ได้เขียนไว้ ซึ่งจะมีชื่อไฟล์ที่เคยติดตั้งอยู่เช่นกัน
ถ้าสังเกตุในรูปด้านบน จะเห็นไฟล์ชื่อ last_log.1 ซึ่งก็คือไฟล์ last_log ในครั้งก่อน ๆ ที่ ถูกเปลี่ยนชื่อมา และจะเพิ่มขึ้นเรื่อย ๆ เป็น .2 .3 ไป นั่นเอง
ถ้าเราสั่ง cat ชื่อไฟล์ตรง ๆ เหมือนกับการดูข้อมูลในไฟล์ last_install จะต้องมาสั่งทีละไฟล์ และข้อมูลในไฟล์ last_log จะค่อนข้างเยอะ จึงแนะนำคำสั่งต่อไปนี้ เพื่อดูข้อมูลในไฟล์ที่มีชื่อว่า last_log ทั้งหมด และสนใจเฉพาะบรรทัดที่มีชื่อไฟล์ที่นำมาติดตั้งเท่านั้น โดยใช้คำสั่งต่อไปนี้
1 |
cat /cache/recovery/last_log* | grep update_package= |
สังเกตุดี ๆ จะเห็นว่า ในรูปด้านบน มีชื่อไฟล์ที่เคยติดตั้งในอดีตอยู่หลายไฟล์เลย ซึ่งมาจากไฟล์ last_log แต่ละไฟล์นั่นเอง
ถ้าใครตาดี จะเห็นจุดแปลก ๆ อยู่ 2 จุด คือ… ไฟล์ /cache/xxx.zip ซึ่งอันนี้เป็นไฟล์ที่ผมทดสอบอะไรเล่น ๆ เอง ส่วนอีกจุด สังเกตุไฟล์ 4 ไฟล์แรก จะเห็นว่าไฟล์ที่ติดตั้ง ไม่ได้อยู่ที่ /cache หากแต่ไปอยู่ใน Path data ของ App Nexus Update Checker นั่นเอง เห็นไม๊ App ผมมันอัพเดตได้จริง ๆ นะ
ส่วนเครื่องที่ยังไม่ได้ root แต่ Unlock Bootloader แล้ว ก็ใช้ TWRP เข้าไป Copy ไฟล์ last_install และ last_log ออกมาก็ได้ หรือจะใช้ Terminal Command แล้วใช้คำสั่งแบบเดียวกับด้านบนก็ได้เช่นกัน

ก็จะได้ชื่อไฟล์ Update Package มาได้เหมือนกัน
OTA Filename to OTA URL
กรณีที่ได้ชื่อไฟล์มา ให้ไปหา OTA URL ของรุ่นเดียวกันใน Version ก่อน แล้วนำชื่อไฟล์ที่ดักมาได้ ไปแทน ก็จะได้ OTA URL แล้วล่ะ ไม่ต้องสอนก็ได้เน๊อะ~!!
ก่อนจบ…
เมื่อดัก OTA URL (หรือชื่อไฟล์) มาได้แล้ว อย่าลืมไปโพสบอกใน XDA ด้วยนะ จะได้มีชื่อติดใน Credit กะเค้าบ้างงง
ถ้าหากระทู้รวม OTA ของรุ่นต่าง ๆ ไม่เจอ มาถามก็ได้นะ หรือจะฝากผมไปโพสก็ได้
เอาละ ใครอ่านถึงตรงนี้แล้ว Level Up กันแล้วนะ แต่… จะเป็น OTA Hunter ตัวจริงได้ ต้องแสดงผลงานให้เห็นกันซักนิด ว่าแล้วก็… ลงมือทดลองดักข้อมูลในเครื่องตัวเอง แล้วมาโพสโชว์กันเลยยยย