มีคำสั่งระดับต่ำ (เอ้อ) ที่สามารถใช้ในเชลล์เพื่อเข้ารหัสพาร์ติชันข้อมูลผู้ใช้ของคุณ คำเตือน / คำเตือน: คำแนะนำต่อไปนี้จะล้างข้อมูลของคุณให้แน่ใจว่าคุณทำการสำรองข้อมูลหากจำเป็น
ทำตามขั้นตอนเหล่านี้คุณควรจะสามารถล้างพาร์ติชันข้อมูลของคุณและทำการเข้ารหัสในภายหลัง (คล้ายกับการรีเซ็ตเป็นค่าจากโรงงาน):
- บูตโทรศัพท์ของคุณตามปกติ (ไม่สามารถกู้คืนได้อีกต่อไปหรือฉันพบปัญหาอื่น)
- ตรวจสอบให้แน่ใจว่าเปิดใช้งานโหมดการแก้ไขข้อบกพร่อง USB (adb) และ การเข้าถึงรูทสำหรับ ADB
- ใส่เปลือกรากที่มีตามมาด้วย
adb root
adb shell
- ทางเลือก: ดูบันทึกโดยเรียกใช้
adb logcat
ในเชลล์อื่น
ป้อนคำสั่งนี้พิมพ์รหัสผ่านของคุณแล้วกด Enter นี่จะเป็นการตั้งรหัสผ่านของคุณ คำสั่งนี้อ่านอินพุตหนึ่งบรรทัด ( head -1
) ตัดการขึ้นบรรทัดใหม่ต่อท้ายจาก Enter ( tr -d '\n'
) และแปลงเป็นการแสดงเลขฐานสิบหก ( hexdump ...
) ถ้ามันดูน่ากลัวหรือคุณไม่แน่ใจว่าคำสั่งนี้ทำอะไรดูด้านล่าง
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- หากทุกอย่างเรียบร้อยดีอุปกรณ์ของคุณจะตั้งค่าคีย์และรีบูตเพื่อทำการเข้ารหัสให้เสร็จสมบูรณ์
ดังกล่าวข้างต้นvdc
คำสั่ง (Volume "ภูตลูกค้า") สื่อสารกับvold
(เล่มภูต) มี subcommands บางอย่างเช่นcryptfs
การเข้ารหัส คำenablecrypto
สั่งย่อยมีสองโหมด: wipe
(เคลียร์/data
ทั้งหมด) และinplace
(ควรใช้การเข้ารหัสขณะคัดลอกต้นฉบับของคุณ/data
ภายในคอนเทนเนอร์)
จากนั้นมีสี่ตัวเลือกให้เริ่มต้นด้วย Android 5.0 หนึ่งในนั้นคือตัวเลือกpassword
ที่ยอมรับลำดับเลขฐานสิบหกเดียวเป็นกุญแจ ดังนั้นหากรหัสผ่านของคุณคือfoo
การแสดงเลขฐานสิบหกคือ666f6f
( f
เป็นเลขฐานสิบ66
หกo
คือ6f
ดูhttp://www.asciitable.com/ ) คำสั่งสำหรับสิ่งนี้คือ:
vdc cryptfs enablecrypto wipe password 666f6f
สิ่งนี้ได้รับการทดสอบบน Nexus 5 (ชื่อรหัสหัวค้อนเรียกใช้ cm-12.1-20150814) ซึ่งมีพาร์ติชันแยกต่างหากสำหรับการจัดเก็บข้อมูลเมตา มันเป็นสิ่งสำคัญที่พาร์ทิชัน UserData มีชุดธงตามด้วยเส้นทางไปยังพาร์ทิชันหรือสตริงพิเศษencryptable
footer
บรรทัด (ตัวย่อ) จาก/fstab.hammerhead
ไฟล์ของฉัน:
/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ... , ตรวจสอบ, เข้ารหัสได้ = /dev/block/platform/msm_sdcc.1/by-name/metadata
เมื่อมีสายอักขระพิเศษfooter
( encryptable=footer
) มีอยู่แล้วจะมี 16 KiB ที่ส่วนท้ายของพาร์ติชันข้อมูลเพื่อใช้ในการจัดเก็บข้อมูลเมตาของการเข้ารหัส
สำหรับการอ่านเพิ่มเติมโปรดดู:
ภาคผนวก: logcat ตัดตอนมาจากช่วงเวลาที่ฉันดำเนินการคำสั่งการเข้ารหัสจนกว่ามันจะเสร็จสิ้นและรีบูต (ละเว้นข้อความกราฟิกที่ไม่เกี่ยวข้องในตอนท้าย) โปรดทราบว่า Nexus 5 นี้มีการเข้ารหัสลับแบบเร่งด้วยฮาร์ดแวร์ (QSEECom)
--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager( 184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs ( 186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs ( 186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs ( 186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs ( 186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs ( 186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs ( 186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs( 186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs( 186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs( 186): Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs( 186): Block size: 4096
08-16 12:57:21.448 I/make_ext4fs( 186): Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs( 186): Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs( 186): Inode size: 256
08-16 12:57:21.448 I/make_ext4fs( 186): Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs( 186): Label:
08-16 12:57:21.449 I/make_ext4fs( 186): Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs( 186): Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs( 186): Block groups: 103
08-16 12:57:21.459 I/make_ext4fs( 186): Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs( 186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs( 186): Total files: 0
08-16 12:57:21.465 I/make_ext4fs( 186): Total bytes: 0
08-16 12:57:42.926 D/Cryptfs ( 186): Successfully created filesystem on /dev/block/dm-0