首页
社区
课程
招聘
[已解决] [求助]最近发现自己的浏览器不能导入Chrome的信息,发现是字符串加密方式做了改变。 3000雪币
发表于: 2024-9-8 22:06 3051

[已解决] [求助]最近发现自己的浏览器不能导入Chrome的信息,发现是字符串加密方式做了改变。 3000雪币

2024-9-8 22:06
3051

** 最近发现自己的浏览器不能导入Chrome的Cookie,最后发现是加密方式做了改变。**

如图框框里面的,encrypted_value字段解密后是字符串,但是我解密不成功。
老版本的(如Chrome 127.0.6533.139以前版本)这段数据是以"v10"字符串开头的,网上有很多代码可以解。

但是新版本(Chrome 128.0.6613.120之后的)是以"v20"开头,我发现老新版本的,同样的字符串加密后的数据长度完全一样的,于是判断改动很小,尝试用xor等方法遍历每一个字节,都解密不了。所以就有这个要求了。

有没有朋友可以帮忙一下,只要能实现解密代码,希望能用C++或者VC代码,只需要能解密已经导出的数据(也就是encrypted_value字段的数据)就行,万事好商量。

提示:
1.利用网上的开源代码,再下载两个新老版本的Chrome,自己手动生成cookie,生成一样的,然后再对比数据。这样比较好分析,
2.生成Cookie方法使用插件就行:chromewebstore.google.com/detail/cookie-editor/iphcomljdfghbkdcfndaijbokpgddeno


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 27000
活跃值: (55)
能力值: ( 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模式解密数据。

2024-9-9 11:23
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mb_tdhyvzqe v10开头的数据(老版本)的解密方法如下:&nbsp;方法一:使用Python脚本Python脚本可以用来解密Chrome的encrypted_value字段。以下是一个示例代码,使用pycr ...
新版本的是以"v20"开头,我发现新老版本的,同样的字符串加密后的数据长度完全一样的,于是判断改动很小。

有朋友可以帮忙一下吗?不会让您白辛苦的~
2024-9-9 11:24
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

这是新老解密前数据对比,解密后为字符串"1",可以直接看到加密的数据长度一样

2024-9-9 18:20
0
雪    币: 3653
活跃值: (1605)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
https://github.com/chromium/chromium/blob/1298d6f0a9190d40718918fa0776e57d953a5810/chrome/elevation_service/elevator.cc#L70
似乎是这个加密
2024-9-9 19:07
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
您好朋友,这个是很久以前的加密方式,后来就更改为AES加密了
2024-9-9 20:17
0
雪    币: 3653
活跃值: (1605)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mb_tdhyvzqe 您好朋友,这个是很久以前的加密方式,后来就更改为AES加密了
这个里面有v20的头,说不定他们是在这个基础上改的
2024-9-9 22:26
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
gailium 这个里面有v20的头,说不定他们是在这个基础上改的
不是的,这个是CryptProtectData加密算法,很早开始就被抛弃了。

有朋友能帮忙解决吗?高新酬谢
2024-9-9 23:14
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9

从chromium开源代码里面找出来了大概问题所在位置,请问谁能帮忙下,高新酬谢

2024-9-10 12:42
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10



我感觉v20版本的,应该只是是把Key再这里重新加密了一下,其它都没变


Key是指:从文件“Local State”读取后Base64Decode后再调用CryptUnprotectData解密后的Key,


因为v10的版本和v20的,同样的数据,加密后长度是完全一样的


2024-9-10 20:47
0
雪    币: 436
活跃值: (2668)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我感觉你直接开个悬赏的帖子会比较快能获得答案.
2024-9-11 08:47
0
雪    币: 27000
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
saloyun 我感觉你直接开个悬赏的帖子会比较快能获得答案.
你好,因为 【"付费问答"关闭新帖功能,悬赏请到[求助问答]】所以只能来这里,
我一开始也是想在“"付费问答"”发布的
2024-9-11 11:08
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
tg:https://t.me/MinKint
我有改好的版本
2024-9-13 23:34
0
游客
登录 | 注册 方可回帖
返回
//