AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Google Chrome Passwörter mit SQLite ausgeben - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Google Chrome Passwörter mit SQLite ausgeben - Problem

Ein Thema von CorVu5 · begonnen am 20. Nov 2008 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#1

Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 20. Nov 2008, 21:16
Datenbank: SQLite • Version: 3 • Zugriff über: SQLlite DLL..sorry, keine Ahnung von GBs ;)
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:
http://src.chromium.org/viewvc/chrom...cc?view=markup

So sieht mein Ansatz aus:
Delphi-Quellcode:
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;
Ja, der dürfte noch ziemlich unsauber sein

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
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 20. Nov 2008, 22:31
Zitat von CorVu5:
pw := pchar(DataOut.pbData);
Ich nehme an, dass pbData nicht #0-terminiert ist. Ich würde das so lösen: SetString(pw, PAnsiChar(DataOut.pbData), DataOut.cbData);
  Mit Zitat antworten Zitat
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#3

Re: Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 20. Nov 2008, 22:49
In der Tat, genauso war es... hätte ich auch selber drauf kommen können
Danke, Danke, Danke, jetzt kann ich beruhigt schlafen gehen
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

Re: Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 21. Nov 2008, 07:55
Nur aus reinem Interesse: Wie komplex ist die Verschlüsselung?
Und woraus ermittelt sich der Key?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#5

Re: Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 21. Nov 2008, 14:02
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: MSDN-Library durchsuchenCryptProtectData
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.
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#6

Re: Google Chrome Passwörter mit SQLite ausgeben - Problem

  Alt 21. Nov 2008, 14:09
Zusammen mit der Tatsache, dass Chrome die Daten im Userverzeichnis ablegt ist man also relativ sicher - bis auf Programme, die im eigenen Benutzercontext arbeiten.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz