Android Oreo adiciona comandos para alterar programaticamente o PIN, a senha ou o padrão da tela de bloqueio

O Android Oreo está escondendo muitas coisas boas, desta vez aprendemos uma maneira de alterar programaticamente o pin, a senha ou o padrão da tela de bloqueio.

O Android Oreo contém muitas melhorias secretas pela aparência das coisas. Suporte temático, notificações desativadas na Android TV, latência de desbloqueio reduzida e mais. Todos estes estão dentro do histórico de commits do Oreo, ou seja. não encontrado em um changelog oficial, mas descobrimos ainda mais. Uma dessas descobertas é um comando para alterar programaticamente o PIN, a senha ou o padrão da tela de bloqueio. Isto pode não parecer útil à primeira vista, mas existem algumas aplicações interessantes para este comando que descreveremos abaixo depois de mostrar como usá-lo.

Aviso: mexer com esses comandos pode potencialmente bloquear-se do seu dispositivo se você não tomar cuidado. Você foi avisado. Isto é simplesmente para mostrar os novos comandos que o Google adicionou e também para mostrar em teoria o que você pode fazer com eles.

Não mexa com isso se você não pode perder seus dados, ou se você não estiver enraizado. Se você acidentalmente bloquear seu dispositivo e tiver root, exclua os seguintes arquivos em /data/system: gatekeeper.pattern.key, gatekeeper.password.key e quaisquer outros arquivos do gatekeeper.


Alterando o PIN, a senha ou o padrão da tela de bloqueio programaticamente

Com o Android Oreo, alguns novos comandos de depuração foram adicionados para alterar os vários métodos de tela de bloqueio. Seguindo este commit os comandos pareceriam ser os seguintes. Observe que você precisa usar shell adb primeiro, pois estes precisam ser executados através do shell do dispositivo. Esses comandos são usados ​​para definir o padrão, pin ou senha da tela de bloqueio, mas como você pode ver, também é possível limpá-los se necessário.

locksettings set-pattern 
locksettings set-pin
locksettings set-password
locksettings clear

É bastante óbvio o que esses comandos fazem. Um padrão é um pouco diferente, mas simples o suficiente para entender. Por exemplo, para um padrão visto à direita, o comando que você usa é o seguinte.

locksettings set-pattern 159

Os padrões são definidos através de cada célula recebendo um número, então o canto superior esquerdo é "1", o meio é "5" e o canto inferior direito é "9". É assim que chegamos a 159 - basta mapear a posição de cada ponto do padrão em um número, como se fosse um discador T9.

Como observação importante, qualquer PIN, senha ou padrão definido usando esses métodos também atualiza a senha de criptografia exatamente como faria se você definisse em Configurações. Existe uma maneira de definir um senha de criptografia diferente da sua tela de bloqueio um, mas não é recomendado a menos que você saiba o que está fazendo.

O retorno do TimePIN?

Um caso de uso potencialmente interessante em dispositivos com acesso root executando o Android Oreo seria recriar um aplicativo como PIN do tempo. O que o TimePIN fez foi alterar dinamicamente o número PIN da tela de bloqueio para a hora atual, embora você pudesse misturá-lo invertendo o número, compensando-o, etc. para torná-lo ainda mais seguro. Por exemplo, no horário 11h56, o pino seria 1156. Se houver um deslocamento de -1003, o pino real será 0153.

Com o lançamento do Android Marshmallow, essa capacidade foi quebrada quando os aplicativos de administrador do dispositivo não podiam mais alterar as senhas do dispositivo. Mas graças a esses novos comandos, deverá ser possível replicar essa funcionalidade em um dispositivo com acesso root.

Criamos um perfil Tasker de prova de conceito baseado neste conceito! É altamente recomendável não usar isso, uma vez que foi montado rapidamente e não garante que funcionará perfeitamente. Não use isso se você deseja seriamente uma funcionalidade semelhante ao TimePIN. Se você é um desenvolvedor que está lendo este post e acha que pode fazer um aplicativo com isso, fique à vontade!

Você pode baixar o Projeto Tasker daqui. Importe-o primeiro desativando o Modo Iniciante nas preferências do Tasker e, em seguida, na tela principal, mantenha pressionado o ícone inicial no canto inferior esquerdo para abrir a opção de importação. Encontre e importe o arquivo .prj.xml. Para configurá-lo, você precisará seguir duas etapas:

  1. Vá para a guia var no Tasker e defina seu pin atual para% OldPIN
  2. Abra a tarefa para o perfil "Desligamento do dispositivo". Na ação Executar Shell, adicione o pino de backup desejado no final do comando. Certifique-se também de que haja um espaço entre% OldPIN e seu pin de backup. Seu comando deve ficar assim: locksettings set pin --old %OldPIN 3523

Agora habilite os dois perfis.

Lembre-se de que a alteração atual do PIN também atualizará o PIN de criptografia; portanto, se você não tomar cuidado com isso, poderá acidentalmente não conseguir descriptografar os dados em seu telefone. Queremos reiterar que o que foi dito acima é uma prova de conceito que estamos lançando na esperança de que desenvolvedores mais competentes possam analisar isso adequadamente.


Embrulhar

No geral, este é um desenvolvimento interessante que pode ser útil para outras pessoas que desejam criar PINs dinâmicos em seu telefone, ou talvez até mesmo aqueles que precisam salvar seu telefone se a depuração estiver ativada e permitida em um computador. O perfil Tasker acima simplesmente invoca os comandos adb por meio do shell do Android e, portanto, pode alterar o PIN como os comandos adb podem.