python与sqlite3实现解密chrome cookie实例代码

您所在的位置:网站首页 cookie解析失败e站 python与sqlite3实现解密chrome cookie实例代码

python与sqlite3实现解密chrome cookie实例代码

2024-07-11 18:48| 来源: 网络整理| 查看: 265

下面我将详细讲解如何使用Python和SQLite3实现解密Chrome Cookie的完整攻略。这里的示例代码是基于Windows操作系统,假设你已经通过pip安装好了必要的Python库,并已经在cmd中进入到Python程序所在的路径。

环境准备

在开始编写代码之前,我们需要准备好环境。首先要从Chrome浏览器中导出Cookie,得到一个SQLite3格式的文件。在Windows上,Chrome的Cookie文件保存在Chrome的默认用户目录下的AppData/Local/Google/Chrome/User Data/Default/Cookies文件中。

连接SQLite3数据库

我们使用Python内置的sqlite3库来连接SQLite3数据库。下面是示例代码:

import sqlite3 # 连接SQLite3数据库 conn = sqlite3.connect('Cookies') # 创建游标,用于执行SQL语句 cursor = conn.cursor() # 执行SQL语句 cursor.execute('SELECT * FROM cookies') # 提交事务 conn.commit() # 关闭游标和连接 cursor.close() conn.close()

在上述代码中,我们首先使用sqlite3库的connect方法连接Cookies数据库,然后获取一个游标cursor,用于执行SQL语句。在这个例子中,我们简单地查询了数据库中的所有数据,并通过commit方法将其提交。最后关闭游标和连接。

解密Chrome Cookie

Chrome保存的Cookie是加密的,我们需要进行一些解密工作才可以正确地读取和使用它。这里我们可以用Chrome浏览器中保存的cookie加密密钥来解密它。用Python进行解密的步骤如下:

1.查询Chrome浏览器中的cookie加密密钥

sql = 'SELECT * FROM meta WHERE key = "version";' cursor.execute(sql) rows = cursor.fetchall() if rows and len(rows) >= 1: version = rows[0][1] print('version:', version) sql = 'SELECT * FROM meta WHERE key = "os_crypt";' cursor.execute(sql) rows = cursor.fetchall() if rows and len(rows) >= 1: os_crypt = rows[0][1] print('os_crypt:', os_crypt)

2.根据加密密钥解密Cookie

# 根据加密密钥解密Cookie def aes_decrypt(ciphertext, key): try: from Crypto.Cipher import AES except ImportError: print('Error: 此解密方法需要引入pycrypto库,可以通过pip install pycrypto安装。') return None # Base64解码,获取iv和encrypted_key encoded_key = ciphertext[3:] encrypted_key = base64.b64decode(encoded_key) key = base64.b64decode(key) # 解密 cipher = AES.new(key, AES.MODE_GCM, encrypted_key[:12]) plaintext = cipher.decrypt(encrypted_key[12:]) return plaintext.decode('utf-8')

在上述代码中,我们定义了一个aes_decrypt方法,该方法用于根据Chrome浏览器保存的cookie加密密钥解密Cookie。

示例说明

这里提供两个示例说明。

示例1:获取Cookie并输出 import sqlite3 import base64 from Crypto.Cipher import AES # 连接sqlite3数据库 conn = sqlite3.connect('Cookies') cursor = conn.cursor() # 获取加密密钥 sql = 'SELECT * FROM meta WHERE key = "os_crypt";' cursor.execute(sql) rows = cursor.fetchall() if rows and len(rows) >= 1: os_crypt = rows[0][1] print('os_crypt:', os_crypt) # 解密cookie _, encrypted_key = os_crypt.split(b'v10') encrypted_key = base64.b64decode(encrypted_key + b'==') key = encrypted_key[5:] plaintext = aes_decrypt(encrypted_key, key) # 获取cookie信息 sql = 'SELECT * FROM cookies WHERE host_key = ".xxx.com";' cursor.execute(sql) rows = cursor.fetchall() print('cookie:', rows) # 关闭连接 cursor.close() conn.close()

在上述代码中,我们首先连接SQLite3数据库,然后获取Chrome浏览器保存的cookie加密密钥,并通过aes_decrypt方法进行解密。接着,我们执行SQL语句查询特定域名的Cookie,并将其打印出来。

示例2:将Cookie信息写入文件 import sqlite3 import csv # 连接sqlite3数据库 conn = sqlite3.connect('Cookies') cursor = conn.cursor() # 获取cookie信息 sql = 'SELECT * FROM cookies WHERE host_key = ".xxx.com";' cursor.execute(sql) rows = cursor.fetchall() # 关闭连接 cursor.close() conn.close() # 将cookie信息写入csv文件 with open('cookies.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['name', 'value', 'host_key', 'path', 'secure', 'expires_utc', 'last_access_utc', 'creation_utc']) for row in rows: writer.writerow(row)

在上述代码中,我们查询特定域名的Cookie,并将其写入CSV文件。该文件包含了每个Cookie的名称、值、域、路径、安全性、过期时间、最后访问时间和创建时间信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python与sqlite3实现解密chrome cookie实例代码 - Python技术站



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3