[Python-de] Firefox Cookie auslesen (sqlite3)

Robin Koch robin.koch at t-online.de
Di Jun 24 17:37:02 CEST 2014


Am 24.06.2014 06:09, schrieb Stefan Schwarzer:

>> ich bin neu in der Gruppe
>
> herzlich willkommen! :-)

Danke. :-)

>> ---
>> import sqlite3
>>
>> dblocation = r'd:\temp\sqlite\cookies.sqlite'
>> query = r"""SELECT value FROM moz_cookies
>>               WHERE baseDomain LIKE 'website.com' AND name = 'userid'"""
>>
>> db = sqlite3.connect(dblocation)
>> cur = db.cursor()
>>
>> cur.execute(query)
>> ---
>>
>> Der execute-Aufruf führt leider zu folgendem Fehler:
>>
>> ---
>> DatabaseError: file is encrypted or is not a database
>> ---

> Um das Problem einzugrenzen, könntest du eine Datenbank aus
> dem Kommandozeilen-Client frisch anlegen und testen, ob du
> `SELECT`s auf dieser Datenbank laufen lassen kannst.

Gute Idee. Das funktioniert in der Tat problemlos.

> Ich kann meine `cookies.sqlite` (unter Fedora Linux)
> problemlos öffnen und mit `SELECT` Werte auslesen.

Unter Python oder mit dem CLI-Client?
Ich arbeite übrigens unter Windows 7, falls ich das noch nicht erwähnt 
hatte.

 > Dafür habe ich die Datei in ein gesondertes Verzeichnis kopiert.

Ja, ich habe die cookie.sqlite für die Tests bei geschlossenem Firefox 
in ein temporäres Verzeichnis kopiert.

>> Die SQLite-Versionsnummer lauten:
>> sqlite.version_info = 2.6.0
>
> Ich nehme an, dass sollte `sqlite3.version_info` sein? Oder
> wo kommt der Wert sonst her?

Korrekt.

>> sqlite3.sqlite_version_info = 3.6.21
>
> Zum Vergleich: Bei mir sind die Werte
>
> sqlite3.version_info -> (2, 6, 0)
> sqlite3.sqlite_version_info -> (3, 8, 3)

Aha. Das ist interessant.
Ich habe Python 2.7.6 vor einem Monat installiert.
Und 3.6.21 ist noch von 2009![1]

Ah, ich merke gerade, dass eine Woche später v2.7.7 veröffentlicht wurde 
in dem scheinbar etwas in die Richtung getan wurde:

| Issue #20026: Fix the sqlite module to handle correctly invalid
| isolation level (wrong type).

Mal sehen, ob das was hilft.

> Das spricht ja auch stark dafür, dass es nicht mit der
> Datenbank-Datei zu tun hat. Noch "sicherheitshalber" die
> Frage: Handelt es sich bei den Zugriffen aus Python und über
> die Kommandozeile um ein und dieselbe Datenbank-Datei
> (gleiche Position im Dateisystem) oder könnte die von Python
> aus genutzte Datei bei einem Kopiervorgang beschädigt worden
> sein?

Nein, es ist die selbe Datei.

Nebenbei: Ich habe gestern abend noch versucht das sqltie3-Module zu 
aktualisieren, gemäß [2], aber das endete mit einem

| error: Unable to find vcvarsall.bat

:-(
Ich hoffe das 2.7.7 was hilft.

Danke auf jeden Fall schonmal für Deine Mühe!

[1] http://sqlite.org/changes.html#version_3_6_21
[2] 
http://blog.rodolfocarvalho.net/2012/07/upgrade-sqlite-version-python-webfaction.html

-- 
Robin Koch


Mehr Informationen über die Mailingliste python-de