Sto tentando di utilizzare i cookie di Chromium in Python, perché Chromium crittografa i suoi cookie utilizzando AES (con CBC) Ho bisogno di invertire questo.Decrittografia dei cookie di cromo
posso recuperare la chiave AES dal portachiavi di OS X (è memorizzato in base 64):
security find-generic-password -w -a Chrome -s Chrome Safe Storage
# From Python:
python -c 'from subprocess import PIPE, Popen; print(Popen(['security', 'find-generic-password', '-w', '-a', 'Chrome', '-s', 'Chrome Safe Storage'], stdout=PIPE).stdout.read().strip())'
Ecco il codice che ho, tutto quello che mi manca è decifrare i cookie:
from subprocess import PIPE, Popen
from sqlite3 import dbapi2
def get_encryption_key():
cmd = ['security', 'find-generic-password', '-w', '-a', 'Chrome', '-s', 'Chrome Safe Storage']
return Popen(cmd, stdout=PIPE).stdout.read().strip().decode('base-64')
def get_cookies(database):
key = get_encryption_key()
with dbapi2.connect(database) as conn:
conn.rollback()
rows = conn.cursor().execute('SELECT name, encrypted_value FROM cookies WHERE host_key like ".example.com"')
cookies = {}
for name, enc_val in rows:
val = decrypt(enc_val, key) # magic missing
cookies[name] = val
return cookies
ho provato un sacco di cose con pyCrypto's AES module ma:
- non ho alcun vettore di inizializzazione (IV)
enc_val
non è un multiplo di 16 di lunghezza
Ecco alcuni link che sembrano utili:
- the commit that started it all
- components/encryptor/keychain_password_mac.mm
- AES key generation (not used in OS X but could help someone else)
- cookie insertion function
Potete aiutarmi a capirlo?
Impressionante! Ho solo riscritto clean per lavorare con Python 2: 'def clean (x): return x [: - ord (x [-1])]' ([PEP8 dice no f = lambda] (http: //legacy.python. org/dev/peps/pep-0008/# programming-recommendations);)) – ThinkChaos
Dolce. Modificato per riflettere questo. – n8henrie
Risposta stupenda, grazie – jsj