Chrome浏览器版本33以上对Cookies进行了加密,用SQLite Developer打开Chrome的Cookies文件就会发现,原来的value字段已经为空,取而代之的是加密的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 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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐