Existem comandos de baixo nível (er) que podem ser usados em um shell para criptografar sua partição de dados do usuário. Isenção de responsabilidade / aviso: as instruções a seguir limparão seus dados e , se necessário, faça um backup.
Após estas etapas, você deve ser capaz de limpar a sua partição de dados e tê-lo criptografado depois (semelhante a um reset de fábrica):
- Inicialize o telefone normalmente (a recuperação não funciona mais ou ocorreu um problema diferente).
- Verifique se o modo de depuração USB (adb) e o acesso raiz ao ADB estão ativados.
- Insira um shell raiz com
adb root
seguido de adb shell
.
- Opcional: observe os logs chamando
adb logcat
em outro shell.
Digite este comando, digite sua senha e pressione Enter. Isso realmente definirá sua senha. Este comando lê uma linha de input ( head -1
), retira a nova linha à direita de Enter ( tr -d '\n'
) e a converte em uma representação hexadecimal ( hexdump ...
). Se parecer assustador ou se você não tiver certeza do que esse comando faz, veja abaixo.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- Se tudo der certo, seu dispositivo definirá as chaves e reiniciará para concluir a criptografia.
O vdc
comando acima ("Volume Daemon Client") comunicado com vold
(Volume Daemon) possui alguns subcomandos, como cryptfs
para criptografia. O enablecrypto
subcomando possui dois modos: wipe
(limpar /data
completamente) e inplace
(supostamente aplicar criptografia ao copiar o original /data
dentro do contêiner).
Em seguida, quatro opções estão disponíveis a partir do Android 5.0, uma delas é a password
que aceita uma única sequência hexadecimal como chave. Portanto, se sua senha é foo
, então a representação hexadecimal é 666f6f
( f
está 66
em hexadecimal, o
é 6f
, consulte http://www.asciitable.com/ ). O comando para isso é:
vdc cryptfs enablecrypto wipe password 666f6f
Isso foi testado em um Nexus 5 (nome de código hammerhead, executando cm-12.1-20150814) que possui uma partição separada para armazenar metadados. É importante que a partição de dados do usuário tenha o encryptable
conjunto de sinalizadores seguido pelo caminho para uma partição ou pela sequência especial footer
. Uma linha (abreviada) do meu /fstab.hammerhead
arquivo:
/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., verifique, criptografável = /dev/block/platform/msm_sdcc.1/by-name/metadata
Quando a sequência especial footer
( encryptable=footer
) está presente, 16 KiB no final da partição de dados são usados para armazenar metadados de criptografia.
Para leitura adicional, consulte:
Apêndice: trecho do logcat desde o momento em que executei o comando de criptografia até que ele termine e reinicie (omitindo mensagens gráficas não relacionadas no final). Observe que este Nexus 5 possui criptografia acelerada por hardware (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
Para mim, a resposta original não funcionou como esperado. Parecia criptografado com êxito, mas a interface do usuário voltou muito rapidamente e a configuração "Criptografia" não mostrou que os dispositivos estavam criptografados. Apliquei os comandos fornecidos na atualização , mas ainda não funcionou. Depois reduzi o tamanho da partição de dados e ela foi criptografada com sucesso. Ou seja,
mount | grep data
para encontrar o dispositivo de bloco real da partição de dados. Vamos assumir que é/dev/block/mmcblk0p26
.umount /data
para que as ferramentas ext funcionem.e2fsck -f -p /dev/block/mmcblk0p26
para não ter problemas no próximo redimensionamento.tune2fs -l /dev/block/mmcblk0p26
para obter a contagem de blocos. Vamos assumir que é3057395
.resize2fs /dev/block/mmcblk0p26 3057375
, ou seja, subtrair uma quantidade suficiente, como 20, da contagem de blocos original.e2fsck -f -p /dev/block/mmcblk0p26
encontrou um inode colocado incorretamente para mim.Eu também precisava montar a
/system
partição para me apossarresize2fs
. No meu sistema, esse binário estava vinculado a uma versão de 64 bits da libc, mas o TWRP que eu usei parecia não fornecer isso. Então, eu precisava prefixar os comandos comenv LD_LIBRARY_PATH=/system/lib64
.fonte
A partir de CM12.1 15/10/2015, a resposta de Lekensteyn não funciona mais.
Aparentemente, o mkfs.f2fs necessário para criar o sistema de arquivos foi movido de
/system/bin/
para/sbin/
Também temos que lidar com o SELINUX. Isso significa que precisamos executar várias etapas adicionais:
fonte
Outra atualização - CM13 9 de janeiro de 2016 , usando o telefone Nubia Z7 Max, NX505J
Este comando (
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
) não é mais necessário, pois o arquivo fica aqui novamente. Não há necessidade de criar um link simbólico.Esse comando não precisa mais estar em HEX e, se você digitar hex, seu PW será hex.
cryptfs enablecrypto wipe password 666f6f
- Isso literalmente criou uma senha para mim,666f6f
nãofoo
Ainda estou pesquisando esse problema porque superei os blocos extras necessários para os metadados. Agora, preciso superar o fato de que a GUI e os comandos manuais para criptografar resultam em criptografia viável apenas através de um ciclo de inicialização. Vou relatar quando tiver uma criptografia bem-sucedida.
No momento, eu criptografo e funciona bem. Inicializo pela primeira vez e diz que o telefone está criptografado. Usando o TWRP, posso confirmar / os dados estão criptografados, mas as senhas HEX e ASCI que tento no TWRP não funcionam. Na próxima reinicialização, o sistema operacional Android não pode inicializar completamente o CM13. Confirma que tenho a senha de criptografia correta e recebo apenas 1 inicialização criptografada. Após a primeira inicialização criptografada bem-sucedida, ela bloqueia o estágio de animação do ciclo de inicialização posteriormente. As melhores práticas de segurança agora recomendam a criptografia de telefone AES256.
fonte
Ter um Moto X 2013 rodando o Cyanogenmod 12.1 também não foi capaz de criptografá-lo. Finalmente, obtive sucesso com estas etapas:
su
e confirme o acesso rootsetenforce 0
Cheguei a esta solução combinando a resposta de Art e este tópico do fórum .
fonte
Após 6 horas de dor mental e suor, eu poderia ter encontrado uma solução que funcionou para mim. E foi um acidente também. Eu fiz isso para o Samsung S4 Mini com CyanogenMod 13.0 e Android 6.0.1. O fator chave aqui é que eu comecei com um telefone limpo (firmware novo e não rooteado), porque quando o telefone estava anteriormente enraizado, o telefone não queria mais funcionar.
Usei a solução do Firelord e do Lekensteyn para o problema, mas consegui esquecer uma linha dos comandos.
Aqui está como eu fiz isso:
Ativei a depuração do Android e o acesso root ao ADB apenas nas Opções do desenvolvedor .
No prompt de comando do ADB, usei o comando
adb root
eadb shell
. Depois disso, abri outro prompt de comando do ADB e usei oadb logcat
comando.No primeiro shell do ADB, fui adiante com
setenforce 0
e depois dissovdc cryptfs enablecrypto wipe password YOUR-PASSWORD
.AVISO IMPORTANTE: O comando da senha pode variar da versão do Android que você está usando. Se você estiver usando o Android 5.X , deverá usar o sistema hexadecimal (na linha Chr é o símbolo da sua senha, o valor hexadecimal está na linha Hx). Se você estiver usando o Android 6.X , a SUA-SENHA será a senha que você digitou lá.
Como você percebe, eu esqueci de usar o
mount -oremount,rw /system
comando. Depois disso, a tela ficará preta. Quando vi que o shell do ADB com o log parou e terminou, reiniciei o telefone. Mas, como para todos, o problema é que o CyanogenMod não carrega. E eu consegui consertar isso facilmente:Lá vai você, deve funcionar. No início, quando o telefone for configurado, espere um minuto. Pode haver uma pequena falha no Assistente de instalação se você apressar muito rapidamente, mas ele será reiniciado automaticamente quando travar.
No meu conhecimento muito pequeno de como o CyanogenMod e a Criptografia Android funcionam, acho que durante o formato ele exclui alguns arquivos importantes do Cyanogen ou Android, o que impede a inicialização.
fonte
A criptografia não funcionou no meu telefone (SGS5; CM13, TWRP 3.0.2-2) - sempre recebi uma tela preta.
Como não queria usar comandos de shell, encontrei outra maneira:
Eu tinha o SuperSU instalado, eu o desinstalei no aplicativo e depois atualizei o SU-Remover .
Depois disso, pude usar a criptografia no menu.
Atenção:
fonte