O Google Chrome é o navegador mais utilizado na internet atualmente, segundo vários sites nacionais e internacionais especializados no assunto, para confirmar basta digitar no Google, O Chrome é um dos navegadores preferidos pelos quesitos, velocidade e segurança.
Segundo a empresa Google: “O Google Chrome foi projetado para manter você mais protegido e seguro na web com uma proteção integrada contra malware e phishing, atualizações automáticas para garantir que você tenha as últimas atualizações de segurança e muito mais…”.
Isto todos concordamos! Mas uma combinação fatal formada pelo, Google Chrome + Windows + Usuário, pode levar toda esta tecnologia de segurança por agua a baixo. Isto porque se analisarmos o conceito de segurança do sistema operacional Windows no contexto do usuário local, somado ao banco de dados pra lá de manjado que o Google escolheu para guardar suas credenciais criptografadas (SqlLite3), associado a um usuário que prefere comodidade ao ter que digitar sempre sua senha.
Está pronto, um perigoso coquetel, e talvez amargo de ser saboreado, pois pode levar você a perder todas as suas credencias dos sites que você mais utiliza como: Gmail, Hotmail, Facebook, Instagram e qualquer outro site no qual você escolher salvar no seu navegador. Não se preocupe se é necessário descriptografar as senhas no contexto do usuário que as criptografou um desenvolvedor mal intencionado pode providenciar isto facilmente.
Como Descriptografar as senhas do Google Chrome
A poderosa linguagem de programação Python permite que você faça coisas mirabolantes de um modo simples no qual antes era possível apenas com complexos códigos em C. Utilize os links abaixo para saber como o programa funciona e conceitos sobre o qual utilizamos para capturar e exibir as senhas do Google Chrome
Requisitos
Linguagem: Python.
Nivel: Fácil.
Modulos Externos Python: Download WxPython e PyWin32
Detalhes Sobre a Criptografia: CryptUnprotectData
Detalhes Sobre o Armazenamento de credenciais Google Chrome: SQLLite
Local físico de armazenamento das credenciais: C:\Users\Usuario\AppData\Local\Google\Chrome\User Data\Default
Nome do banco de dados: Login Data
Projeto Open Source
Você encontra uma versão deste programa atualizada e convertida para um executável do Windows, e também os códigos fontes da ultima versão desta ferramenta no seguinte link:
Projeto hospedado: https://code.google.com/p/google-chome-pass-recovery/source/browse/
Exemplo:
Neste exemplo criamos um simples programa na linguagem de programação Python que captura os sites e exibe as senha armazenadas pelo navegador Google Chrome.
Licença: http://opensource.org/licenses/MIT
Python
#!/usr/bin/env python # -*- coding: latin-1 -*- # Versão 1.2 - Betha # CapturaSenhaChrome.py # The MIT License (MIT) # # Copyright (c) 2014 - Ricardo Mantovani - Desenvolvimento Aberto # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # importa modulos import wx import wx.grid import win32crypt import sqlite3 import os import getpass import datetime import platform # Cria classe generica de uma WX.Grid # A classe abaixo faz parte da documentação WXPython oficial # Este trecho de código é util para manipular a grade class GenericTable(wx.grid.PyGridTableBase): def __init__(self, data, rowLabels = None, colLabels = None): wx.grid.PyGridTableBase.__init__(self) self.data = data self.rowLabels = rowLabels self.colLabels = colLabels def GetNumberRows(self): return len(self.data) def GetNumberCols(self): return len(self.data[0]) def GetColLabelValue(self, col): if self.colLabels: return self.colLabels[col] def GetRowLabelValue(self, row): if self.rowLabels: return self.rowLabels[row] def IsEmptyCell(self, row, col): return False def GetValue(self, row, col): return self.data[row][col] def SetValue(self, row, col, value): pass # Inicializa Grade dados = [] colLabels = ["Site (Action URL)", "Usuário (User)", "Senha (Password)"] rowLabels = [] for linha in range(1, 150): rowLabels.append(str(linha)) # Conecta ao banco de dados do usuario local # Requer elevação de privilegios se o Chrome estiver aberto conn = sqlite3.connect(os.getenv("APPDATA") + "\..\Local\Google\Chrome\User Data\Default\Login Data") cursor = conn.cursor() # Captura informações de login cursor.execute('SELECT action_url, username_value, password_value FROM logins') # Retorna resultados resultado = cursor.fetchall() for result in resultado: # Descriptografa senha # CryptUnprotectData requer o contexto do usuario local senha = win32crypt.CryptUnprotectData(result[2], None, None, None, 0)[1] if senha: captura = [result[0], result[1], senha] dados.append(captura) # Cria classe da grid class SimpleGrid(wx.grid.Grid): def __init__(self, parent): wx.grid.Grid.__init__(self, parent, -1, pos=(5, 10), size=(850, 240)) tableBase = GenericTable(dados, rowLabels, colLabels) self.SetTable(tableBase) # Cria formulario class Formulario(wx.Frame): def __init__(self, parent): # Cria Formulario wx.Frame.__init__(self, parent, -1, "Google Chrome Password Recovery", size=(880, 350)) panel = wx.Panel(self, wx.ID_ANY) # Cria Menu menu = wx.Menu() menu.Append(5000, "S&alvar") menu.Append(5001, "Sai&r") menu1 = wx.Menu() menu1.Append(6001, "&Sobre", "Informação sobre este programa") # Cria Barra de menus menubarra = wx.MenuBar() menubarra.Append(menu, "&Arquivo") menubarra.Append(menu1, "&Sobre") self.SetMenuBar(menubarra) # Barra de status statusbar = self.CreateStatusBar(5) # Retorna data dataA = datetime.datetime.today() dataA = dataA.strftime('%d-%b-%Y') # Set today date in the second field self.SetStatusText("Estação: " + os.environ['COMPUTERNAME'], 0) self.SetStatusText("Usuario: " + getpass.getuser(), 1) self.SetStatusText("Data Atual: " + dataA, 2) self.SetStatusText(self.plataforma(), 3) self.SetStatusText("Desenvolvimento Aberto - 2014", 4) # Declara Eventos dos menus self.Bind(wx.EVT_MENU, self.OnSalvar, id=5000) self.Bind(wx.EVT_MENU, self.OnSair, id=5001) self.Bind(wx.EVT_MENU, self.OnSobre, id=6001) # Cria Grid de dados grid = SimpleGrid(panel) grid.SetColSize(0, 430) grid.SetColSize(1, 230) grid.SetColSize(2, 108) def plataforma(self): sistema = "OS: " + platform.system() + \ " - " + platform.release() + \ " - " + platform.version() return sistema # Cria evento para Salvar Arquivo. def OnSalvar(self, evt): saveFileDialog = wx.FileDialog(self, "Salvar Como", "", "", "Arquivos Texto (*.txt)|*.txt", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) if saveFileDialog.ShowModal() == wx.ID_CANCEL: return # Cria arquivo e adiciona conteudo arquivo = saveFileDialog.GetPath() file = open(arquivo, "w") conteudo = "Google Chrome Password Recovery - Powered by Desenvolvimento Aberto 2014\n\n" + \ "Sistema Operacional: " + self.plataforma().replace("OS:","") + "\n" + \ "Estação: " + os.environ['COMPUTERNAME'] + "\n" + \ "Usuario: " + getpass.getuser() + "\n" + \ "Data Extração: " + datetime.datetime.today().strftime('%d-%b-%Y') + "\n\n" + \ "Registros encontrados: \n\n" for reg in dados: conteudo = conteudo + str(reg) + "\n" file.write(str(conteudo)) file.close() saveFileDialog.Destroy() # Cria evento de saida def OnSair(self, evt): self.Close(True) # Cria evento sobre def OnSobre(self, evt): # Cria texto para ferramenta texto = "Powered by Desenvolvimento Aberto\n\n" + \ "Autor: Ricardo Mantovani\n" + \ "E-mail: desenvolvimento.aberto@live.com\n" + \ "Versão: 1.2 - Betha\n\n" + \ "Coogle Code:\n" + \ "http://code.google.com/p/google-chome-pass-recovery" # Cria caixa de texto msg = wx.MessageBox(texto, 'Info', wx.OK | wx.ICON_INFORMATION) msg.ShowModal() # Inicializa a aplicação app = wx.App() frame = Formulario(None) frame.Show(True) app.MainLoop()
Gostaria de saber como um leigo usa o software “Google Chrome Pass Recovery”? Tentei usar de todas as formas, mas apareceu erro. O DA Google Chrome Password Recovery V1-3 Win x64.rar, não roda no meu computador clicando no executavel. Tentei copiar aquele código do video e até baixei o Python, mas deu esse erro: “Traceback (most recent call last): File “C:/Users/Rosberg/Desktop/1″, line 29, in import wx ImportError: No module named wx” No video, o arquivo não pede para salvar no Python. Já comigo pede! Sou bem leigo e estou com dificuldade. Mas de qualquer forma, parabéns pelo projeto. Grande Abraço!!!
Olá Rosberg,
O DA Google Chrome Password Recovery V1-3 Win x64.rar, é um arquivo compactado pelo software Winrar, que é semelhante ao Zip, você precisa instalar o Winrar para descompactar o arquivo.
Winrar: http://www.rarlab.com/
Quando descompactar você terá uma pasta chamada “GoogleChromePasswordRecovery” e dentro dela o executável: “CapturaSenhaChrome.exe” e suas dependências. Este é o arquivo executável para o Windows 8 que você pode rodar para utilizar a ferramenta.
Agora se quiser compilar o script Python, você precisa instalar também os módulos externos WxPython e PyWin32 que estão faltando por isto este erro, caso queira instalar o link esta disponível logo acima, no tópico requisitos.
Espero que tenha ajudado,
Abraços.
Fiz tudo que você falou, mas não deu certo. Eu descompactei O DA Google Chrome Password Recovery V1-3 Win x64.rar. Aí, cliquei em “CapturaSenhaChrome.exe”, mas abre uma tela de MS-DOS e fecha rapidamente. O software não abre. É assim mesmo? Obrigado e aguardo mais dicas. Desde já agradeço! Abraços!
Olá Rosberg,
É assim mesmo, abre uma tela do ms-dos e logo após abre uma tela do Windows com o programa, isto devido ao py2exe, o que acontece é que o exe que foi gerado não é compatível com a versão do seu Windows.
Você tem que compilar o script igual ao vídeo e depois pode gerar um executável utilizando o py2exe.
Para compilar instale o WxPython e o Pywin32 e rode o código fonte do projeto. Depois se quiser gerar um exe, você pode utilizar o arquivo Setup.py que esta no projeto, utilizando o py2exe.
Abraços.
Ao executar o código, esta dando o erro, SyntaxError: (unicode error) ‘unicodeescape’ code can’t decode bytes in position 23-24 : truncated\uxxxxxxxx escape
O erro referido a cima se encontra nessa linha, mas especificamente ele marca o “+” em vermelho.
conn = sqlite3.connect(getenv(“APPDATA”) + “..\Local\Google\Chrome\User Data\Default\Login Data”)
Sabe me dizer oque pode ser?
Olá leonardo,
Este programa foi escrito em Python 2.7 e utiliza o codepage 1252 do Windows equivalente ao Latin1, e como você pode ver no vídeo roda sem problemas.
Você pode tentar utilizar a seguinte sintaxe:
r”\..\Local\Google\Chrome\User Data\Default\Login Data”
“\\..\\Local\\Google\\Chrome\\User Data\\Default\\Login Data”
“/../Local/Google/Chrome/User Data/Default/Login Data”
Obs: na linha que você colou aqui está faltando a primeira barra do caminho, verifique se no seu código está correto.
Abraços.
Ricardo, boa tarde.
Eu possuo um backup do aquivo “login data” do chrome, onde estão as senhas que preciso. Porém tentei encontrar seu executável no link acima e não consegui. Seu projeto ainda está ativo? Se estiver, poderia por favor me disponibilizar o link do executável?
Desde já agradeço sua ajuda!
Olá Renato,
O Google Code foi desativado e por isso não existe mais os links de arquivos lá, você precisa baixar o projeto no Git hub e executar o codigo deste mesmo post.
O código é Python por padrão não gera um executável, mas você pode cria-lo se desejar usando um framework para isto.
Espero ter ajudado.
Boa tarde, Ricardo. Primeiramente, obrigado por responder tão prontamente.
Ocorre que eu não sei simplesmente nada de programação. Possuo uma assistência técnica que trabalha com telefonia, informática e eletrônica. E por acidente desinstalamos o google Chrome de uma cliente.
Após a desinstalação, a pasta default continuava lá. Tentei reinstalar e substituir os arquivos pelos antigos, mas sem sucesso. Daí me deparei com seu site.
o sr não teria ele em .exe que pudesse me enviar por email ou upar no google drive?
Olá Renato,
Não possuo o executavel, pois em Python ele não faz diferença, você precisa instalar os frameworks acima e rodar o script Phyton na maquina onde vc quer obter os dados, você apontar para qualquer banco de dados do chrome simplesmente alterando o código.
Entretanto existem ferramentas prontas que fazem isto pagas e gratuitas,
Você pode procurar no google uma ferramenta da NIRSOFT que é gratuita e faz o mesmo que o programa acima, alguns antivirus podem dar um falso positivo nestas ferramentas, não se assuste.
http://www.nirsoft.net/utils/chromepass.html
Espero ter ajudado,