Bagaimana Anda mengenkripsi perangkat Anda yang menjalankan CyanogenMod 12.1?

9

CyanogenMod 12 dan 12.1 Pengaturan 'Enkripsi telepon' rusak , dan sudah cukup lama. Apakah ada cara untuk mengenkripsi ponsel dengan cara lain? Apakah CM dapat di-sideload ke ponsel dengan direktori data / terenkripsi? Apakah ada cara lain untuk menjaga data Anda tetap aman dan sehat? Perangkat yang saya gunakan adalah Verizon LG G3.

Zlatty
sumber

Jawaban:

6

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):

  1. Boot ponsel Anda secara normal (salah satu pemulihan tidak berfungsi lagi, atau saya mengalami masalah lain).
  2. Pastikan mode debugging USB (adb) dan akses Root untuk ADB diaktifkan.
  3. Masukkan shell root dengan adb rootdiikuti oleh adb shell.
  4. Opsional: perhatikan log dengan menggunakan adb logcatshell lain.
  5. 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"')
    
  6. Jika semuanya berjalan baik-baik saja, perangkat Anda akan mengatur kunci dan reboot untuk menyelesaikan enkripsi.

vdcPerintah di atas ("Volume Daemon Client") dikomunikasikan dengan vold(Volume Daemon) memiliki beberapa sub perintah seperti cryptfsuntuk enkripsi. enablecryptoSub - perintah memiliki dua mode: wipe(hapus /datasepenuhnya) dan inplace(seharusnya menerapkan enkripsi saat menyalin dokumen asli Anda /datadi dalam wadah).

Kemudian, empat opsi tersedia mulai dengan Android 5.0, salah satunya adalah passwordyang menerima urutan heksadesimal tunggal sebagai kunci. Jadi jika password Anda foo, maka representasi heksadesimal adalah 666f6f( fadalah 66di hex, oadalah 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 encryptableset bendera diikuti oleh path ke partisi atau string khusus footer. Baris (disingkat) dari /fstab.hammerheadfile 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
Lekensteyn
sumber
Wow @Lekensteyn terima kasih telah meluangkan waktu untuk menulis ini. Saya harus meluangkan waktu akhir pekan ini untuk mencoba mengaturnya. Jika saya berhasil, saya bisa menghapus semuanya dari TWRP dan coba lagi, kan?
Zlatty
1
Ya, itu hanya partisi data. Saya sengaja menghapus milik saya beberapa kali ketika saya sedang bereksperimen.
Lekensteyn
2
LPT: Pada 6.0 (Marshmallow) vdc tidak menggunakan kata sandi yang tidak dikodekan sebagai parameter ascii (= cleartext). Itu cukup bagus untuk berlatih dengan tabel ASCII setelah saya mengetahui hal ini - hanya beberapa menit setelah saya diminta untuk memasukkan boot om password saya. Saya harus memasukkan kata sandi saya di ASCII karena kesalahan saya lol
Denys Vitali
4

Bagi saya, jawaban asli tidak bekerja seperti yang diharapkan. Tampaknya berhasil dienkripsi, tetapi UI kembali dengan sangat cepat dan pengaturan "Enkripsi" tidak menunjukkan bahwa perangkat dienkripsi. Saya kemudian menerapkan perintah yang diberikan dalam pembaruan , tetapi masih tidak berhasil. Saya kemudian mengurangi ukuran partisi data dan berhasil dienkripsi. Yaitu

mount | grep datauntuk menemukan perangkat blok aktual dari partisi data. Mari kita asumsikan demikian /dev/block/mmcblk0p26.

umount /data agar alat-alat luar berfungsi.

e2fsck -f -p /dev/block/mmcblk0p26 untuk tidak mengalami kesulitan untuk mengubah ukuran yang akan datang.

tune2fs -l /dev/block/mmcblk0p26 untuk mendapatkan jumlah Blok. Mari kita asumsikan demikian 3057395.

resize2fs /dev/block/mmcblk0p26 3057375, yaitu kurangi jumlah yang cukup seperti 20 dari jumlah blok asli.

e2fsck -f -p /dev/block/mmcblk0p26 menemukan inode yang salah tempat bagi saya.

Saya juga perlu me-mount /systempartisi untuk mendapatkan resize2fs. Di sistem saya, biner itu ditautkan dengan versi libc versi 64bit, tetapi TWRP yang saya gunakan sepertinya tidak menyediakan itu. Jadi saya perlu awalan perintah dengan env LD_LIBRARY_PATH=/system/lib64.

Frederick Nord
sumber
Untuk sistem file F2FS: android.stackexchange.com/questions/146081/…
Marc.2377
2

Pada CM12.1 2015/10/15 yang jawabannya oleh Lekensteyn tidak lagi bekerja.

Rupanya mkfs.f2fs yang diperlukan untuk membuat sistem file, telah dipindahkan dari /system/bin/ke/sbin/

Kami juga harus bersaing dengan SELINUX. Ini berarti bahwa kita perlu melakukan beberapa langkah tambahan:

  1. adb root
  2. adb shell
  3. setenforce 0
  4. mount -oremount, rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs memungkinkan untuk menghapus kata sandi 666f6f
Seni
sumber
2

Pembaruan lain - CM13 9 Jan 2016 build, menggunakan Nubia Z7 Max, telepon NX505J

Perintah ini ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) tidak lagi diperlukan karena file tinggal di sini lagi. Tidak perlu membuat tautan simbolik.

Perintah ini tidak perlu lagi dalam HEX dan jika Anda memasukkan hex PW Anda akan hex.
cryptfs enablecrypto wipe password 666f6f- Ini benar-benar membuat kata sandi bagi saya untuk 666f6ftidakfoo

Saya masih meneliti masalah ini karena saya berhasil melewati blok tambahan yang diperlukan untuk data meta. Saya sekarang harus melewati kenyataan GUI dan perintah manual untuk mengenkripsi keduanya menghasilkan enkripsi yang hanya dapat dilakukan melalui satu siklus boot. Saya akan melaporkan kembali ketika saya memiliki enkripsi yang berhasil.

Saat ini saya mengenkripsi dan berfungsi dengan baik dan saya boot pertama kali dan dikatakan telepon terenkripsi. Menggunakan TWRP saya dapat mengonfirmasi / data dienkripsi tetapi kata sandi HEX dan ASCI yang saya coba di TWRP keduanya tidak berfungsi. Pada reboot berikutnya OS Android tidak dapat sepenuhnya mem-boot CM13. Ini mengkonfirmasi saya memiliki kata sandi enkripsi yang benar dan kemudian saya hanya mendapatkan 1 boot terenkripsi. Setelah startup terenkripsi pertama yang sukses itu mengunci pada tahap animasi dari siklus boot sesudahnya. Praktik terbaik keamanan sekarang merekomendasikan enkripsi telepon AES256.

George Davey
sumber
Seberapa andalkah sistem dengan enkripsi telepon AES256 di CM13? Saya membuka utas tentang hal ini di sini android.stackexchange.com/q/134981/9897
Léo Léopold Hertz 준영
2

Memiliki Moto X 2013 yang menjalankan Cyanogenmod 12.1 saya juga tidak bisa mendapatkannya dienkripsi. Akhirnya, saya berhasil dengan langkah-langkah ini:

  1. Aktifkan root di Pengaturan Pengembang di telepon dan buka shell (aplikasi Terminal, juga dapat diaktifkan di Pengaturan Pengembang)
  2. Masukkan su, dan konfirmasi akses root
  3. Memasukkan setenforce 0
  4. Sekarang buka Pengaturan , buka Keamanan dan pilih Enkripsi Telepon . Android kemudian akan reboot dan mulai mengenkripsi ponsel.

Saya datang ke solusi ini dengan menggabungkan jawaban Art dan utas forum ini .

Bob
sumber
Tidak bekerja untuk saya. Btw, bisakah Anda mengatur status SELinux kembali ke 1 setelah ini?
Marc.2377
1

Setelah 6 jam sakit mental dan keringat saya mungkin menemukan solusi yang berhasil untuk saya. Dan itu juga kecelakaan. Saya melakukan ini untuk Samsung S4 Mini dengan CyanogenMod 13.0 dan Android 6.0.1. Faktor kunci yang penting di sini adalah, bahwa saya memulainya dari telepon yang bersih (firmware baru dan tanpa root), karena ketika telepon sebelumnya di-root, maka telepon tidak mau bekerja sama sekali.

Saya menggunakan solusi Firelord dan Lekensteyn untuk masalah ini, tetapi saya berhasil melupakan satu baris dari perintah.

Inilah cara saya melakukannya:

  1. Saya mengaktifkan Android debugging dan akses Root ke ADB hanya di Opsi Pengembang .

  2. Dalam Prompt Perintah ADB saya menggunakan perintah adb rootdan adb shell. Setelah itu saya membuka Command Prompt ADB lainnya dan menggunakan adb logcatperintah itu.

  3. Dalam shell ADB pertama, saya maju bersama setenforce 0dan setelah itu vdc cryptfs enablecrypto wipe password YOUR-PASSWORD.

PEMBERITAHUAN PENTING: Perintah kata sandi mungkin berbeda dari versi Android apa yang Anda gunakan. Jika Anda menggunakan Android 5.X , Anda harus menggunakan sistem heksadesimal (Pada baris Chr adalah simbol dalam kata sandi Anda, nilai heksadesimal ada pada baris Hx). Jika Anda menggunakan Android 6.X , maka kata sandi ANDA akan menjadi kata sandi yang Anda masukkan di sana.

Seperti yang Anda perhatikan maka saya lupa menggunakan mount -oremount,rw /systemperintah. Setelah itu saya layar akan menjadi hitam. Ketika saya melihat, bahwa shell ADB dengan log berhenti dan selesai, kemudian saya reboot ponsel. Tetapi untuk semua orang, masalahnya adalah, bahwa CyanogenMod tidak akan memuat. Dan saya berhasil memperbaikinya dengan mudah:

  1. Tahan Vol Up & Home & Power turun sampai TWRP boot up. Ini akan menanyakan kata sandi enkripsi Anda.
  2. Lakukan bagian pemasangan CyanogenMod dengan Google Apps tambahan (Bagian kedua dari panduan ini).
  3. Setelah selesai, kemudian reboot perangkat. Saat booting, maka akan butuh waktu. Pertama akan menyalakan telepon, lalu akan meminta kata sandi enkripsi dan kemudian akan memakan waktu sampai boot.

Nah, itu harusnya berhasil. Pada awalnya, ketika telepon dihidupkan, maka biarkan sebentar. Mungkin ada sedikit kerusakan untuk Wisaya Penyetelan jika Anda mempercepatnya terlalu cepat, tetapi itu akan dimulai kembali secara otomatis saat macet.

Dalam pengetahuan saya yang sangat kecil tentang bagaimana CyanogenMod dan Enkripsi Android bekerja, saya pikir selama format itu menghapus beberapa file Cyanogen atau Android yang penting, apa yang menghentikannya dari booting.

Andrei Viitel
sumber
1

Enkripsi tidak berfungsi di ponsel saya (SGS5; CM13, TWRP 3.0.2-2) - Saya selalu mendapat layar hitam.

Saya tidak ingin menggunakan perintah shell, jadi saya menemukan cara lain:

Saya telah menginstal SuperSU, saya mencopotnya di App dan kemudian menginstal SU-Remover .

Setelah itu, saya bisa menggunakan enkripsi dari menu.

Peringatan:

  • Enkripsi menghapus semua Data & Aplikasi saya (termasuk File di SD internal), jadi buat cadangan terlebih dahulu !
  • Setelah Enkripsi, saya hanya memiliki 2 GB Ruang internal tersisa (biasanya 11 GB) - Saya harus melakukan penghapusan penuh (juga menghapus Cyanogenmod itu sendiri), instal ulang Cyanogenmod dan upaya enkripsi lain untuk mendapatkan Space saya kembali.
  • Anda juga harus mengaktifkan kembali root, saya menggunakan BETA-SuperSU-v2.68-20160228150503 untuk itu (flash dengan twrp).
hinneLinks
sumber