FirefoxのCookieが消えた(cookies.sqliteが壊れた)→復旧
今朝Fireforx3.5を起動してみるとどこのサイトに行っても悉く未ログインになっている。cookieの有効期限が切れた場合は未ログインになるのはあたりまえだが、どこもかしこも未ログインと言うのはおかしい。メニューからFirefoxが認識しているcookieを見てみたら異常に少ない。これはどう考えてもcookieを保存しているcookies.sqliteがぶっ飛んだのだろう。
再度全部ログインして行ってもいいのだが、どうしてもパスワードが思い出せない所があった。それはNAXOS MUSICE LIBRARYで、パスワードエラーの画面にパスワードを忘れた場合はサポートへ登録してあるメールアドレスを連絡しろと書かれていた。ところがNAXOSのcookieは寿命が長くて最初にログインしてからずーーーっとログイン状態のままだったのでそもそも登録したメールアドレスまで忘れてしまった。
ここでcookies.sqliteの復旧を試みてみる事にした。
【必要なもの】
sqlite3:cookie.sqliteをいじる為(Firefoxは終了させておく)。
【必要な知識】
Firefoxのprofileはどこにあるの?→ぐぐって下さい。
コマンドプロンプトって何?→ぐぐって下さい。
【試行錯誤・失敗編】
Firefoxのprofileのディレクトリを見てみると幸か不幸か昨日のシャットダウンの日時でcookies.sqliteが残っている。これをコピーでバックアップしてマスタとして残し、まずはsqlite3でreindexをしてみる。
結果→ダメ:Firefoxは相変わらず内容を復元出来ない。
次にsqlite3でreindexした後にvacuumをしてみる。
結果→ダメ:sqlite3が"disk image is malformed"とエラーを吐く。
【試行錯誤・成功編】
次にsqlite3でcookies.sqliteを操作してみる事にした。
Windowsのコマンドプロンプトで sqlite3 cookies.sqlite (本当はフルパスとか付けるのだが簡単の為省略)と打ってcookies.sqlite を開いてsqliteの操作モードに入る。
.database とか、.schema とか打ってみたらちゃんと表示される。
.dump を打ってみたらテーブルの中身もダンプできた!
ひょっとして何とかなる?
.output ckdbdump と打ってダンプ先をファイルにする。
しかる後に.dump してめでたくダンプされた。
ここで一旦sqlite3を.exitで終了。
秀丸で開いてみたら3000行超だった。なんとなくデータは大丈夫そう。
新しいDBとしてリストアする為に、sqlite3 newcookies.sqlite でsqlite3を起動。
リストアの為に .read ckdbdump を打ったらユニークキーのエラーは表示されたものの、リストアには成功した模様。
sqlite3を終了して、newcookies.sqliteを本来のcookies.sqliteにrename。
cookies.sqlite-journal と言うジャーナルファイルが残っていたが、これが残っているとよろしくないかもしれないので、renameして無かった事にする。
Firefoxを起動しためでたく昨日までの(多分)cookieが復活してました\(^o^)/
NAXOSでも無事セッションを認識してくれたw