2012-03-29

Extracting Chrome passwords from KWallet

Chrome has an ugly habit of storing saved passwords in KWallet as pickles, which you can't just read from KWalletManager when you need to get the password. This is problematic if you want to switch browsers, or just use more that one but don't want to launch and delve into chrome just to get that one password.


Although the pickle format doesn't seem standard, it mostly works to get every other character as to excise the utf16 (or whatever) text and eyeball the password. Here:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Quick and dirty Chrome kwallet password extractor
from PyKDE4.kdeui import KWallet
from PyQt4.QtGui import QApplication
from sys import argv
app = QApplication([])
app.setApplicationName("Chrome password extractor")
wallet = KWallet.Wallet.openWallet(KWallet.Wallet.LocalWallet(), 0)
wallet.setFolder("Chrome Form Data") # check your wallet for exact folder name
entries = wallet.entryList()
entry = entries.filter(argv[1])[0]
entry = wallet.readEntry(entry)[1]
# outputs ugly slice of pickled data, hopefully you can eyeball the passsword from there
print(repr(str(entry[0:-1:2])))
view raw chromewallet.py hosted with ❤ by GitHub