chrome-cookies-encrypted-value

Chrome 33+浏览器 Cookies encrypted_value解密脚本(python实现)

Chrome浏览器版本33以上对Cookies进行了加密,用SQLite Developer打开Chrome的Cookies文件就会发现,原来的value字段已经为空,取而代之的是加密的encrypted_value。如下图所示
chrome-cookies-encrypted-value

从stackoverflow.com了解到。Windows上Chrome加密Cookies采用的CryptUnprotectData函数,通过网络搜索发现,CryptUnprotectData函数用途非常广泛。连Windows电脑上保存的wifiI密码都是用这个函数加密的。大牛 @李劼杰?已经用这个解密函数在python里实现了获取本机保存的wifi密码(http://www.lijiejie.com/python-get-all-saved-wifi-passwords/)和Chrome浏览器里已保存的账号密码(http://www.lijiejie.com/python-get-chrome-all-saved-passwords/)。运行他的脚本让我惊出一声冷汗(如下图),原来Chrome这么不安全,要是Login Data文件被别人获取,真的是非常危险的事情。
chrome-password

参考大牛 @李劼杰 的代码,我改编出来了一个Chrome 33+浏览器 Cookies encrypted_value解密脚本(python实现),代码如下:

__author__ = 'ftium4.com'
import sqlite3
import win32crypt
outFile_path=r'D:chrome_cookies.txt';
sql_file= r'C:Users\jiangling\AppData\Local\Google\Chrome\User Data\DefaultCookies';
sql_exe="select host_key,name,value,encrypted_value from cookies";
conn = sqlite3.connect(sql_file)
for row in conn.execute(sql_exe):
    pwdHash = str(row[3])
    try:
        ret = win32crypt.CryptUnprotectData(pwdHash, None, None, None, 0)
    except:
        print 'Fail to decrypt chrome cookies'
        sys.exit(-1)
    with open(outFile_path, 'a+') as outFile:
        outFile.write('host_key: {0:<20} name: {1:<20} value: {2} nn'.format(
            row[0].encode('gbk'), row[1].encode('gbk'),ret[1].encode('gbk')) )
conn.close()
print 'All Chrome cookies saved to:n' + outFile_path

 

《Chrome 33+浏览器 Cookies encrypted_value解密脚本(python实现)》上有14条评论

  1. Traceback (most recent call last): File “D:/jim/python/cookie.py”, line 26, in for row in conn.execute(‘select host_key, name, value, encrypted_value from cookies’):sqlite3.DatabaseError: malformed database schema (is_transient) – near “where”: syntax error———–一直提示这个,找不出原因。可是运行http://www.lijiejie.com/python-get-chrome-all-saved-passwords/却是可以,证明sqlite3是加载了的。说明:1、cookies地址也是对的:db_file_path = os.path.join(os.environ[‘LOCALAPPDATA’], r’GoogleChromeUser DataDefaultCookies’) 对应的登录信息数据库:db_file_path = os.path.join(os.environ[‘LOCALAPPDATA’], r’GoogleChromeUser DataDefaultLogin Data’)2、也拷了出来:tmp_file = os.path.join(os.path.dirname(sys.executable), ‘tmp_tmp_tmp’)3、用sqlite工具可以打开这个数据库,用pycharm都能连接和单独运行’select host_key, name, value, encrypted_value from cookies’,结果看得很清楚。4、和登录信息数据作了对比,发觉cookies数据库多了一行:CREATE INDEX is_transient ON cookies(persistent) where persistent != 。。。。会不会就是这行作怪?

  2. Traceback (most recent call last):
    File “D:/Program Files (x86)/EditPlus/Untitled1.py”, line 8, in
    for row in conn.execute(sql_exe):
    sqlite3.DatabaseError: malformed database schema (is_transient) – near “where”: syntax error

    sqlite3应该是装上了,这个是什么问题呢?python小白求救

泉子边code边进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据