Kann ich Firefox localStorage-Daten für eine nicht mehr vorhandene URL abrufen?

635
Ken Bellows

Eine seltsame Frage, aber hier ist die grundlegende Situation.

Vor einiger Zeit schrieb ich eine grundlegende kleine ToDo-App für einige Kollegen in einem internen Unternehmensnetzwerk, die ich auf einem gemeinsam genutzten Laufwerk hostete. Um dauerhaft zu bleiben, ohne einen Webserver einrichten zu müssen, wurden die Benutzerdaten im localStorage des Browsers gespeichert.

Vor kurzem haben die SysAdmins das Netzwerklaufwerk-Adressierungssystem überarbeitet, was zu einer Änderung der URL für meine kleine App geführt hat. Das bedeutet natürlich, dass die Seite nicht mehr auf dasselbe localStorage-Objekt zugreifen kann und jeder, der meine App verwendet, seine Daten "verloren" hat, obwohl er immer noch irgendwo bei Firefox gespeichert ist. (Wir verwenden alle Firefox 31 unter Windows 7, falls sich daran etwas ändert.)

Die Frage ist also: Kann ich diese localStorage-Daten abrufen? Mein erster Gedanke, so kludge es war, bestand darin, dass ein Benutzer seiner hostsDatei einen Eintrag hinzufügt, um die alte URL auf eine andere Datei zu verweisen, die die Daten exportieren wird (oder, in diesem Zusammenhang, auf eine triviale Datei zeigen und die Daten manuell erfassen in der Webkonsole). Aber wie Sie vielleicht schon vermutet haben, ist die hostsDatei gesperrt und wir haben keine Administratorrechte.

Als letzte Bemerkung sind mir die verschiedenen Firefox-Addons bekannt, die localStorage unterstützen, aber wie ich bereits erwähnt habe, geschieht dies alles in einem isolierten Unternehmensnetzwerk. Ein Addon aus einem so trivialen Grund mitzubringen, ist also kein Anfang.

Gedanken?

2

1 Antwort auf die Frage

3
Ken Bellows

Für die Nachwelt habe ich festgestellt, dass localStorage-Daten in einer sqlite-Datei gespeichert werden, die webappsstore.sqlitein Ihrem Firefox-Profilverzeichnis aufgerufen wird . Unter Windows ist dies unter zu finden %APPDATA%\Mozilla\Firefox\Profiles\\webappsstore.sqlite. Um den Inhalt zu lesen, habe ich ein kleines Python-Skript verwendet, das das sqlite3Paket verwendet:

import os, sqlite3 profiles = os.path.join(os.environ('APPDATA'),'Mozilla\\Firefox\\Profiles') profile = os.path.join(profiles, os.listdir(profiles)[0]) db = os.path.join(profile,'webappsstore.sqlite') print([entry.encode('utf-8') for entry in sqlite3.connect(db).iterdump()]) 

(Ich habe Python 3 verwendet, nicht sicher, ob es Unterschiede in der Python 2-Version von sqlite3 gibt.)

Dadurch werden viele Daten ausgegeben. Ich empfehle die Umleitung in eine Datei. Die Daten werden in Anweisungen zur SQL-Datenerstellung sein. Jedem Eintrag im lokalen Speicher sind in einer Tabelle eine Domäne und ein Schlüssel zugeordnet. Die URL wird immer rückwärts in die Datenbank geschrieben. Sie suchen nach etwas wie dem Folgenden:

INSERT INTO "webappsstore2" VALUES('moc.elpmaxe.www.:https:443','myLocalStorageKey','{"key":"value","pairs":["go","here"]}') 

Sie finden Ihre localStorage-Schlüsselwertpaare irgendwo in der Ausgabe.

rewsna lufesu siht rof sknahT Cryptopat vor 5 Jahren 0