Ada perintah tingkat rendah (er) yang dapat digunakan dalam shell untuk mengenkripsi partisi data pengguna Anda. Penafian / Peringatan: instruksi berikut ini akan menghapus data Anda , memastikan bahwa Anda membuat cadangan jika diperlukan.
Dengan mengikuti langkah-langkah ini, Anda harus dapat menghapus partisi data Anda dan mengenkripsinya setelahnya (mirip dengan pengaturan ulang pabrik):
- Boot ponsel Anda secara normal (salah satu pemulihan tidak berfungsi lagi, atau saya mengalami masalah lain).
- Pastikan mode debugging USB (adb) dan akses Root untuk ADB diaktifkan.
- Masukkan shell root dengan
adb root
diikuti oleh adb shell
.
- Opsional: perhatikan log dengan menggunakan
adb logcat
shell lain.
Masukkan perintah ini, ketik kata sandi Anda dan tekan Enter. Ini sebenarnya akan mengatur kata sandi Anda. Perintah ini membaca satu baris input ( head -1
), menghapus baris baru dari Enter ( tr -d '\n'
) dan mengubahnya menjadi representasi heksadesimal ( hexdump ...
). Jika terlihat menakutkan atau jika Anda tidak yakin apa yang dilakukan perintah ini, lihat di bawah.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- Jika semuanya berjalan baik-baik saja, perangkat Anda akan mengatur kunci dan reboot untuk menyelesaikan enkripsi.
vdc
Perintah di atas ("Volume Daemon Client") dikomunikasikan dengan vold
(Volume Daemon) memiliki beberapa sub perintah seperti cryptfs
untuk enkripsi. enablecrypto
Sub - perintah memiliki dua mode: wipe
(hapus /data
sepenuhnya) dan inplace
(seharusnya menerapkan enkripsi saat menyalin dokumen asli Anda /data
di dalam wadah).
Kemudian, empat opsi tersedia mulai dengan Android 5.0, salah satunya adalah password
yang menerima urutan heksadesimal tunggal sebagai kunci. Jadi jika password Anda foo
, maka representasi heksadesimal adalah 666f6f
( f
adalah 66
di hex, o
adalah 6f
, melihat http://www.asciitable.com/ ). Perintah untuk ini adalah:
vdc cryptfs enablecrypto wipe password 666f6f
Ini diuji pada Nexus 5 (nama kode martil, menjalankan cm-12.1-20150814) yang memiliki partisi terpisah untuk menyimpan metadata. Adalah penting bahwa partisi data pengguna memiliki encryptable
set bendera diikuti oleh path ke partisi atau string khusus footer
. Baris (disingkat) dari /fstab.hammerhead
file saya :
/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., periksa, dienkripsi = /dev/block/platform/msm_sdcc.1/by-name/metadata
Ketika string khusus footer
( encryptable=footer
) hadir, maka 16 KiB di akhir partisi data digunakan untuk menyimpan metadata enkripsi.
Untuk bacaan lebih lanjut, lihat:
Lampiran: kutipan logcat dari saat saya mengeksekusi perintah enkripsi sampai selesai dan reboot (menghilangkan pesan grafik yang tidak berhubungan di akhir). Perhatikan bahwa Nexus 5 ini memiliki crypto yang dipercepat perangkat keras (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