Introdução
Esses dias precisei formatar meu notebook para instalar uma nova distribuição. Por causa disso tive que realizar backups de alguns arquivos, e também de algumas senhas salvas pelo Google Chrome que eu nem sabia que existiam. Nesse post de hoje iremos recuperar as senhas do Google Chrome sem usar nenhuma extensão.
O arquivo Login Data
O Chrome armazena suas senhas em um arquivo chamado Login Data. No meu caso (Fedora 17 e Chrome 20.0) esse arquivo se localiza em:
$ cd ~/.config/google-chrome/Default $ file Login\ Data Login Data: SQLite 3.x database
Esse arquivo nada mais é que um banco de dados no formato SQLite 3.x. Utilizando o comando sqlite3, podemos acessar as tabelas armazenadas nesse arquivo, inclusive a tabela logins, que armazena as senhas.
Agora vamos visualizar esse arquivo, mas antes de tudo feche o Chrome, porque ele impede que esse arquivo seja lido por outro processo. Em seguida, digite:
$ sqlite3 Login\ Data sqlite> select * from logins; # # senhas + informações... # # Aqui extraímos somente o necessário: sqlite> select origin_url, username_value, password_value from logins; origin_url|username_value|password_value http://pt-br.facebook.com/|MEUEMAIL@hotmail.com|MINHASENHA123 https://accounts.google.com/ServiceLogin|MEUEMAIL|MINHASENHA123 https://www.tumblr.com/login|MEUEMAIL@hotmail.com|MINHASENHA123 sqlite> .exit
A string MINHASENHA123 representa a senha real.
Veja que, após rodar o sqlite3 podemos realizar algumas consultas SQL. No help (comando .help) do programa você encontra mais informações.
Por [1], vemos um modo de salvar essa saída em um arquivo CSV (valores separados por vírgula):
$ sqlite3 Login\ Data .mode csv .headers on .separator "," .output chrome_passwords.csv select * from logins; .exit
As informações estarão no arquivo chrome_passwords.csv.
Ainda no help, vemos que existe a opção import, que nos permite carregar para dentro do banco de dados informações externas, ou seja, se gravarmos nossas senhas em um arquivo, é possível armazená-las novamente no banco de dados com um simples comando. Isso é útil quando você muda de sistema ou até de computador e quer voltar com suas senhas.
Em meus testes, foi possível copiar o próprio arquivo Login Data para uma outra conta e acessar as senhas sem problemas.
Minhas senhas não apareceram?
Se você tentou os procedimentos acima e nada apareceu, certifique-se que:
- você realmente salvou alguma senha. As senhas só são armazenadas no Login Data quando você pressiona “Salvar Senha” naquela janelinha pop-up que o Chrome exibe em algumas requisições de autenticação.
- o Chrome não esteja lendo as senhas de outro lugar, principalmente de aplicativos como KWallet. Se esse é o seu caso, leia o próximo tópico e também a referência [1] para mais detalhes.
Forçar dump de senhas para o arquivo Login Data
Esse método serve para forçar o Chrome a utilizar o banco de dados local para armazenamento das senhas. Para isso, siga os passos:
- Sincronize suas senhas com o Google. Versões mais novas do Chrome exibem uma página inicial para sincronização. Para outros casos, vá em Settings->Sign in to Chrome. Digite suas credenciais e espere a sincronização terminar.
- Agora feche o chrome, e execute-o novamente utilizando esse comando:
$ google-chrome --user-data-dir=/tmp/chrome-tmp --password-store=basic
O chrome utilizará o diretório /tmp/chrome-tmp para armazenar as informações da conta. A opção –password-store=basic faz o Chrome utilizar o arquivo local como banco de dados.
- Em seguida, com essa instância do Chrome ainda aberta, sincronize novamente seus dados com o servidor do Google. Nesse momento o navegador receberá as informações armazenadas na nuvem, como bookmarks e as senhas, e as armazenará no disco.
- Por fim, feche o navegador e vá até o arquivo Login Data, e verifique se realmente as senhas estão lá:
$ cd /tmp/chrome-tmp/Default $ sqlite3 Login\ Data sqlite> select origin_url, username_value, password_value from logins; origin_url|username_value|password_value http://pt-br.facebook.com/|MEUEMAIL@hotmail.com|MINHASENHA123 https://accounts.google.com/ServiceLogin|MEUEMAIL|MINHASENHA123 https://www.tumblr.com/login|MEUEMAIL@hotmail.com|MINHASENHA123
Segurança
O único método de segurança para proteger as senhas que notei foi em relação às permissões do diretório Default.
$ ls -lad .config/google-chrome/Default drwx------. 6 daemonio daemonio 4096 Jul 9 17:51 .config/google-chrome/Default/
Somente o dono do diretório tem permissões completas sobre esse diretório, e isso impede que usuários mal intencionados acessem as senhas. Isso nos mostra que, se tivermos root numa máquina, facilmente podemos as acessar as senhas armazenadas pelo Chrome de qualquer usuário do sistema, incluindo senhas de redes sociais como facebook, orkut, etc.
Conclusão
O navegador Google Chrome oferece uma maneira fácil de fazer backups de senhas por armazená-las localmente no arquivo Login Data. Porém, usuários mal intencionados podem acessar essas senhas se eles burlarem as permissões do diretório Default. O recomendado, em geral, é que você armazene suas senhas em aplicativos de Password Management, como o KWallet.
Referências
[1] Linux: How to export Google Chrome passwords to CSV file by thebigbrowser (Acessado em: Julho/2012)
http://thebigbrowser.blogspot.com.br/2012/04/linux-export-chrome-passwords-to-csv.html