Как вы шифруете свое устройство под управлением CyanogenMod 12.1?


9

Настройка CyanogenMod 12 и 12.1 «Зашифровать телефон» не работает и используется уже довольно давно. Есть ли способ зашифровать телефон другим способом? Можно ли загрузить CM на телефон с зашифрованным каталогом / каталогом данных? Есть ли другие способы сохранить ваши данные в целости и сохранности? Устройство, над которым я работаю, это Verizon LG G3.

Ответы:


6

Существуют команды низкого (er) уровня, которые можно использовать в оболочке для шифрования раздела пользовательских данных. Отказ от ответственности / Предупреждение: следующие инструкции уничтожат ваши данные , при необходимости сделайте резервную копию.

После этих шагов, вы должны быть в состоянии уничтожить ваш раздел данных и он зашифрован впоследствии ( по аналогии с возвратом к заводским):

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

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

Приведенная выше vdcкоманда («Клиент Volume Daemon»), с которой связывается 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 (кодовое имя молоток, работает cm-12.1-20150814), который имеет отдельный раздел для хранения метаданных. Это важно , что пользовательские данные раздела имеют encryptableустановленный флаг , за которой следует либо пути к разделу или специальной строкой footer. (Сокращенная) строка из моего /fstab.hammerheadфайла:

/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., проверьте, 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

Вау @Lekensteyn спасибо, что нашли время, чтобы написать это. Мне придется потратить некоторое время в эти выходные, пытаясь настроить это. В случае, если я не справлюсь, я могу просто стереть все с TWRP и попробовать еще раз, верно?
Златты

1
Да, это просто раздел данных. Я намеренно вытер мой несколько раз, когда я экспериментировал.
Лекенштейн

2
LPT: Начиная с версии 6.0 (Marshmallow) vdc использует пароль, не закодированный как параметр (= открытый текст). Было довольно приятно попрактиковаться с таблицей ASCII, когда я узнал об этом - через несколько минут после того, как меня попросили ввести свой пароль и загрузчик. Я должен был поставить свой пароль в ASCII по моей вине LOL
Денис Витали

4

Для меня оригинальный ответ не сработал, как ожидалось. Выглядело, как будто оно успешно зашифровано, но пользовательский интерфейс вернулся очень быстро, и настройка «Шифрование» не показала, что устройства были зашифрованы. Затем я применил команды, приведенные в обновлении , но они все еще не работали. Затем я уменьшил размер раздела данных, и он успешно зашифрован. Т.е.

mount | grep dataнайти фактическое блочное устройство раздела данных. Давайте предположим, что это так /dev/block/mmcblk0p26.

umount /data для работы ext-tools.

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 shell
  3. Сетенфорс 0
  4. mount -oremount, rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto стереть пароль 666f6f

2

Очередное обновление - сборка CM13 9 января 2016 года с использованием телефона Nubia Z7 Max, NX505J

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

Эта команда больше не должна быть в HEX, и если вы введете hex, ваш PW будет hex.
cryptfs enablecrypto wipe password 666f6f- Это буквально создало пароль для меня 666f6fнеfoo

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

Прямо сейчас я шифрую, и он работает нормально, и я загружаюсь в первый раз, и это говорит, что телефон зашифрован. Используя TWRP, я могу подтвердить / данные зашифрованы, но пароли HEX и ASCI, которые я пробую в TWRP, не работают. При следующей перезагрузке ОС Android не может полностью загрузить CM13. Это подтверждает, что у меня правильный пароль шифрования, и тогда я получаю только 1 зашифрованную загрузку. После первого успешного зашифрованного запуска после этого он блокируется на этапе анимации цикла загрузки. Рекомендации по безопасности теперь рекомендуют шифрование телефона AES256.


Насколько надежна система с шифрованием телефона AES256 в CM13? Я открыл тему об этом здесь android.stackexchange.com/q/134981/9897
Лео Леопольд Херц 준영

2

Имея Moto X 2013 с Cyanogenmod 12.1, я также не смог зашифровать его. Наконец, мне это удалось:

  1. Включите root в настройках разработчика на телефоне и откройте оболочку (приложение терминала, также можно включить в настройках разработчика)
  2. Введите suи подтвердите root-доступ
  3. Войти setenforce 0
  4. Теперь откройте « Настройки» , зайдите в « Безопасность» и выберите « Зашифровать телефон» . Android перезагрузится и начнет шифрование телефона.

Я пришел к этому решению, объединив ответ Арта и эту ветку форума .


Не работал для меня Кстати, вы можете установить статус SELinux обратно на 1 после этого?
23 марта 3077 г.

1

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

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

Вот как я это сделал:

  1. Я включил отладку Android и рут-доступ к ADB только в Настройках разработчика .

  2. В командной строке ADB я использовал команду adb rootand adb shell. После этого я открыл другую командную строку ADB и использовал adb logcatкоманду.

  3. В первой оболочке ADB я пошел вперед 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 (Вторая часть руководства).
  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.