![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SQLlite DLL..sorry, keine Ahnung von GBs ;)
Google Chrome Passwörter mit SQLite ausgeben - Problem
Hallo Leute, ich habe ein (für mich) sehr seltsames Problem, und ich bin mir uach nicht sicher ob dies die richtige Section ist, da ich mein Problem noch nicht geau eingrenzen konnte.
Folgendes: Ich hatte ein wenig im Google Chrome Quelltext gestöbert und kam schließlich zu dem Punkt, an dem die Auto-Complete Passwörter gespeichert werden. Dies geschieht in einer SQLite Datenbank, die in den Anwendungsdaten gespeichert wird. Jetzt wollte ich die Passwörter mal auslesen und entschlüsseln, prinzipiell nicht schwer wenn man den Quellcode hat: ![]() So sieht mein Ansatz aus:
Delphi-Quellcode:
Ja, der dürfte noch ziemlich unsauber sein :P
procedure TForm1.Button1Click(Sender: TObject);
var DB : TSQLiteDatabase; table : TSQLiteTable; i : Integer; DataIn : DATA_BLOB; DataOut: DATA_BLOB; DataStream : TMemorystream; pw : string; begin db := TSQLiteDatabase.Create(GetEnvironmentVariable('LOCALAPPDATA') + '\Google\Chrome\User Data\Default\Web Data'); table := DB.GetTable('SELECT * FROM logins'); While not Table.EOF do begin DataStream := TMemoryStream.Create; dataStream := table.FieldAsBlob(table.FieldIndex['password_value']); DataIn.pbData := DataStream.Memory; DataIn.cbData := DataStream.Size; CryptUnProtectData(@DataIn, nil,nil,nil,nil,0,@DataOut); pw := pchar(DataOut.pbData); Memo1.Lines.Add(table.FieldAsString(table.FieldIndex['origin_url']) + #13#10 + table.FieldAsString(table.FieldIndex['username_value']) + ' - ' + pw); DataStream.Free; Table.Next; end; end; Nun klappt das IM GRUNDE schon, bei den Passwörtern gibt es allerdings folgendes Problem: Lautet mein Passwort zum Beispiel "hallo", bekomme ich als beispielsweise heraus: "halloLMEM" Wobei die "Sonderzeichen" von PW zu PW unterschiedlich sind, das LMEM steht aber immer drin. Auch die Anzahl der Sonderzeichen ist immer unterschiedlich, was ein Filtern natürlich extrem erschwert. Ich kann mir drei Problemursachen vorstellen: 1. Ich benutze FieldAsBlob irgendwie falsch, sodass ich dadurch die überzählogen Werte bekomme. 2. Ich mache einen Fehler bei CryptUnprotectData 3. Ich behandle iwie den zurückgegebenen String falsch, da ich nicht genau weiß wie das in C ist mit Stringtypen und so und aus dem Chrome-code in dieser Hinsicht nix sinnvolles ziehen kann. Also: Ich habe mich shcon den ganzen Tag damit rumgeärgert und es wäre extrem nett, wenn mir da mal wer nen kleinen Tipp geben könnte Danke im Voraus |
Re: Google Chrome Passwörter mit SQLite ausgeben - Problem
Zitat:
|
Re: Google Chrome Passwörter mit SQLite ausgeben - Problem
In der Tat, genauso war es... :wall: hätte ich auch selber drauf kommen können
Danke, Danke, Danke, jetzt kann ich beruhigt schlafen gehen :) |
Re: Google Chrome Passwörter mit SQLite ausgeben - Problem
Nur aus reinem Interesse: Wie komplex ist die Verschlüsselung?
Und woraus ermittelt sich der Key? |
Re: Google Chrome Passwörter mit SQLite ausgeben - Problem
Zur Ver-/Entschlüsselung wird die Windows-API CryptProtectData verwendet. Wie diese API genau funktioniert, ist mir leider nicht bekannt. Sie verschlüsselt aber im Grunde sehr sicher (in Bezug auf Bruteforce/Kryptographische Verfahren).
Mehr zu der Funktion gibts in der MSDN: ![]() Man kann CryptProtectData noch mit einer zusätzlichen "Entropy" verschlüsseln, der wohl ungefähr einem Passwort gleichzusetzen ist, das wird hier aber nicht getan. Man kann den Kram also ganz einfach entschlüsseln, indem man einfach die Funktion genauso aufruft wie im Chrome-Quelltext zu finden. Eine Sache die vllt noch wichtig ist in Bezug auf Cryptprotectdata: Man kann normalerweise nur Sachen entschlüsseln, die auch auf dem selben PC verschlüsselt wurden. |
Re: Google Chrome Passwörter mit SQLite ausgeben - Problem
Zusammen mit der Tatsache, dass Chrome die Daten im Userverzeichnis ablegt ist man also relativ sicher - bis auf Programme, die im eigenen Benutzercontext arbeiten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz