Як зашифрувати пристрій під керуванням CyanogenMod 12.1?


9

Налаштування CyanogenMod 12 і 12.1 "Шифрувати телефон" порушено , і це вже досить довго. Чи є спосіб іншим способом зашифрувати телефон? Чи можна CM завантажувати на телефон із зашифрованим каталогом / даними? Чи є інші способи зберегти ваші дані безпечними та надійними? Пристрій, над яким я працюю, є Verizon LG G3.

Відповіді:


6

Існують команди низького рівня (er) рівня, які можна використовувати в оболонці для шифрування розділу користувачів даних. Відмова / попередження: наведені нижче інструкції видалять ваші дані , гарантують, що ви зробите резервну копію, якщо це потрібно.

Після цих кроків, ви повинні бути в змозі знищити ваш розділ даних і він зашифрований згодом ( по аналогії з поверненням до заводських):

  1. Завантажте телефон нормально (або відновлення більше не працює, або я зіткнувся з іншою проблемою).
  2. Переконайтеся, що ввімкнено режим налагодження через USB (adb) та кореневий доступ для ADB.
  3. Введіть кореневу оболонку з adb rootнаступним adb shell.
  4. Необов’язково: дивитися журнали, викликаючи adb logcatіншу оболонку.
  5. Введіть цю команду, введіть свій пароль і натисніть Enter. Це фактично встановить ваш пароль. Ця команда зчитує один рядок введення ( head -1), знімає новий рядок від Enter ( tr -d '\n') і перетворює його в шістнадцяткове подання ( hexdump ...). Якщо це виглядає страшно або якщо ви не впевнені, що робить ця команда, дивіться нижче.

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. Якщо все піде нормально, ваш пристрій встановить клавіші та перезавантажиться для завершення шифрування.

Наведена вище vdcкоманда ("Клієнт об'єму демонів"), що передається vold(Volume Daemon), має деякі підкоманди, такі як 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 (кодова назва hammerhead, працює cm-12.1-20150814), який має окремий розділ для зберігання метаданих. Це важливо , що призначені для користувача дані розділу мають encryptableвстановлений прапор , за якої слід або шляху до розділу або спеціальним рядком footer. Рядок із мого /fstab.hammerheadфайлу (скорочений) :

/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., check, encryptable = /dev/block/platform/msm_sdcc.1/by-name/metadata

Якщо присутній спеціальний рядок footer( encryptable=footer), то 16 КіБ в кінці розділу даних використовується для зберігання метаданих шифрування.

Для подальшого читання дивіться:


Додаток: уривок 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

Вау @ Лекенштейн дякую, що знайшли час, щоб написати це. Мені доведеться витратити трохи часу на ці вихідні, намагаючись це налаштувати. У випадку, якщо я зникну, я можу просто стерти все з TWRP і спробувати ще раз, правда?
Златті

1
Так, це лише розділ даних. Я навмисно витирав міну кілька разів, коли експериментував.
Лекенштейн

2
LPT: Станом на 6.0 (Marshmallow) vdc використовує пароль, не кодированний як параметр (ascii), кодований як параметр (= cleartext). Було досить приємно попрактикуватися з таблицею ASCII, як тільки я дізнався цю річ - лише через кілька хвилин після того, як мене попросили ввести свій пароль про завантаження пароля. Мені довелося ввести свій пароль в ASCII з моєї вини лол
Denys Vitali

4

Для мене оригінальна відповідь не спрацювала так, як очікувалося. Схоже, він був зашифрований успішно, але інтерфейс користувача повернувся дуже швидко, і налаштування "Шифрування" не показало, що пристрої зашифровані. Потім я застосував команди, наведені в оновлення , але це все ще не спрацювало. Потім я зменшив розмір розділу даних, і він успішно зашифрований. Тобто

mount | grep dataзнайти власне блоковий пристрій розділу даних. Припустимо, це так /dev/block/mmcblk0p26.

umount /data для роботи інструментів ext.

e2fsck -f -p /dev/block/mmcblk0p26 щоб не виникнути проблем з майбутніми змінами розміру.

tune2fs -l /dev/block/mmcblk0p26 щоб отримати кількість блоків. Припустимо, це так 3057395.

resize2fs /dev/block/mmcblk0p26 3057375, тобто субстратуйте достатню кількість, як 20, від початкового блоку.

e2fsck -f -p /dev/block/mmcblk0p26 знайшов для мене неправильно розміщену іноду.

Також мені потрібно було змонтувати /systemперегородку, щоб отримати доступ resize2fs. У моїй системі цей двійковий файл був пов'язаний із 64-бітовою версією libc, але, схоже, TWRP, який я використовував, цього не передбачав. Тому мені потрібно було префіксувати команди env LD_LIBRARY_PATH=/system/lib64.


Для файлової системи F2FS: android.stackexchange.com/questions/146081/…
Marc.2377,

2

Чи не На CM12.1 2015-10-15 відповідь на Lekensteyn більше не працює.

Очевидно mkfs.f2fs, який потрібен для створення файлової системи, переміщено з /system/bin/до/sbin/

Крім того, ми повинні боротися з SELINUX. Це означає, що нам потрібно зробити кілька додаткових кроків:

  1. корінь adb
  2. оболонка adb
  3. setenforce 0
  4. mount -помір, rw / система
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto wipe password 666f6f

2

Ще одне оновлення - CM13, 9 січня 2016 року, побудуйте, використовуючи Nubia Z7 Max, телефон NX505J

Ця команда ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) більше не потрібна, оскільки файл знову живе тут. Не потрібно створювати символічне посилання.

Ця команда більше не повинна бути в HEX, і якщо ви введете шістнадцятковий, ваш PW буде шістнадцятковим.
cryptfs enablecrypto wipe password 666f6f- Це буквально створило для мене пароль 666f6fнеfoo

Я все ще досліджую це питання, тому що я пройшов додаткові блоки, необхідні для метаданих. Мені зараз потрібно подолати той факт, що графічний інтерфейс та ручні команди для шифрування обох призводять до шифрування, життєздатного лише через один цикл завантаження. Я отримаю звіт після успішного шифрування.

Зараз я шифрую, і це працює чудово, і я завантажуюся перший раз, і він говорить про те, що телефон зашифрований. Використовуючи TWRP, я можу підтвердити / дані зашифровані, але паролі HEX ​​та ASCI, які я пробую в TWRP, обидва не працюють. При наступному перезавантаженні ОС Android не може повністю завантажувати CM13. Це підтверджує, що я маю правильний пароль шифрування, і тоді я отримую лише 1 зашифроване завантаження. Після першого успішного зашифрованого запуску він блокується на етапі анімації циклу завантаження після цього. Зараз найкращі практики безпеки рекомендують шифрування телефону AES256.


Наскільки надійною була система з шифруванням телефону AES256 в CM13? Я відкрив нитку про річ тут android.stackexchange.com/q/134981/9897
Лео Леопольд Герц 준영

2

Маючи Moto X 2013 під керуванням Cyanogenmod 12.1, я також не зміг його зашифрувати. Нарешті, мені вдалося виконати наступні кроки:

  1. Увімкніть корінь у Налаштуваннях розробника на телефоні та відкрийте оболонку (додаток Terminal, також можна включити в Налаштуваннях розробника)
  2. Введіть suі підтвердьте кореневий доступ
  3. Введіть setenforce 0
  4. Тепер відкрийте Налаштування , перейдіть у розділ Безпека та виберіть Шифрувати телефон . Потім Android перезавантажиться і почне шифрувати телефон.

Я прийшов до цього рішення, поєднавши відповідь Art та цю тему на форумі .


Не працювало для мене. Btw, чи можете ви після цього повернути статус SELinux до 1?
Марк.2377

1

Після 6 годин душевного болю і поту я, можливо, натрапив на рішення, що працювало на мене. І це також було випадковістю. Я зробив це для Samsung S4 Mini з CyanogenMod 13.0 та Android 6.0.1. Важливим ключовим фактором тут є те, що я почав його з чистого телефону (свіжої прошивки та без коріння), тому що коли телефон раніше був укорінений, тоді телефон взагалі не хотів працювати.

Я використав рішення проблеми Firelord та Lekensteyn, але мені вдалося забути один рядок з команд.

Ось як я це зробив:

  1. Я ввімкнув налагодження Android та кореневий доступ до ADB лише у параметрах розробника .

  2. У командному рядку ADB я використав команду " adb rootі" adb shell. Після цього я відкрив ще один командний рядок ADB і застосував adb logcatкоманду.

  3. У першій оболонці АБР я пішов уперед setenforce 0і після цього vdc cryptfs enablecrypto wipe password YOUR-PASSWORD.

ВАЖЛИВО ВІДПОВІДЬ: Команда пароля може залежати від версії Android, яку ви використовуєте. Якщо ви використовуєте Android 5.X , ви повинні використовувати шістнадцяткову систему (У рядку Chr - символ у вашому паролі, шістнадцяткове значення - у рядку Hx). Якщо ви використовуєте Android 6.X , ВАШЕ ПАРОЛЬ буде паролем того, що ви там ввели.

Як ви помітили, тоді я забув використовувати mount -oremount,rw /systemкоманду. Після цього екран стане чорним. Коли я побачив, що оболонка ADB із журналом зупинилась і закінчила, то перезавантажила телефон. Але як для всіх, проблема полягає в тому, що CyanogenMod не буде завантажуватися. І мені вдалося виправити це досить легко:

  1. Утримуйте Vol Up & Home & Power до тих пір, поки TWRP не завантажиться. Він попросить вас отримати пароль шифрування.
  2. Виконайте CyanogenMod встановити частина з додатковим Google Apps (Друга частина керівництва).
  3. Після цього перезавантажте пристрій. Коли він завантажиться, тоді пройде деякий час. Спочатку він запустить телефон, потім запитає пароль шифрування, а потім пройде деякий час, поки він не завантажиться.

Там ви йдете, це має працювати. Спочатку, коли з’явиться налаштований телефон, тоді нехай це буде хвилина. Майстер установки може мати невеликий збій, якщо ви будете занадто швидко поспішати, але він автоматично перезапуститься, коли він вийде з ладу.

Наскільки я знаю, як CyanogenMod та Android Encryption працює, я думаю, що під час формату він видаляє деякі важливі файли Cyanogen або Android, що не дозволяє йому завантажуватися.


1

Шифрування не працювало на моєму телефоні (SGS5; CM13, TWRP 3.0.2-2) - у мене завжди був чорний екран.

Я не хотів використовувати команди оболонки, тому знайшов інший спосіб:

У мене був встановлений SuperSU, я видалив його в додатку, а потім прошив SU-Remover .

Після цього я зміг використати шифрування з меню.

Увага:

  • Шифрування видалило всі мої дані та додатки (включаючи файли на внутрішній SD), тому спочатку зробіть резервну копію !
  • Після шифрування у мене залишилося лише 2 Гб внутрішнього простору (як правило, 11 ГБ) - мені довелося зробити повне стерти (також видаливши сам Cyanogenmod), перевстановити Cyanogenmod та ще одну спробу шифрування, щоб повернути мій простір.
  • Ви також повинні активувати root, і для цього я використовував BETA-SuperSU-v2.68-20160228150503 (спалах із twrp).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.