我在Ubuntu中使用Chrome 33+,我发现Cookie是以BLOB结构加密的:
CREATE TABLE cookies (creation_utc INTEGER NOT NULL UNIQUE PRIMARY KEY,host_key TEXT NOT NULL,name TEXT NOT NULL,value TEXT NOT NULL,path TEXT NOT NULL,expires_utc INTEGER NOT NULL,secure INTEGER NOT NULL,httponly INTEGER NOT NULL,last_access_utc INTEGER NOT NULL, has_expires INTEGER NOT NULL DEFAULT 1, persistent INTEGER NOT NULL DEFAULT 1,priority INTEGER NOT NULL DEFAULT 1,encrypted_value BLOB DEFAULT '');
我想编写一个python脚本来解密cookie。我已经看到有Cookie issue with Chrome 33 Beta,但依赖于CryptUnprotectData
它是一个Windows API。
首先,我想知道如何加密cookie。我已经阅读了3DES和AES,但我找不到可信赖的来源来获取信息。
如果我有关于如何操作的信息,我会编写代码来进行必要的加密和解密。
谢谢
答案 0 :(得分:5)
我也一直在努力。到目前为止,我发现Chrome(Windows)使用CryptProtectData函数来加密它的cookie的值。它一直用于加密登录数据文件中保存的密码的功能。 CryptProtectData使用登录的Windows用户的用户帐户信息和密码来加密数据。要解密它,我们必须使用CryptUnProtectData函数和登录的相同用户帐户。
这是解密登录数据的代码段 https://gist.github.com/jordan-wright/5770442
关于Linux,我在这里阅读: http://www.linkedin.com/groups/Google-Chrome-encrypt-Stored-Cookies-36874.S.5826955428000456708
"在其他系统上,它似乎用盐" saltysalt"来模糊密码。和密码"花生" "
答案 1 :(得分:5)
我发布了一个示例Python脚本here,用于解码OSX或Linux中的加密Cookie。
答案 2 :(得分:2)
评论有点令人困惑所以只是为了澄清,这是os_crypt_win.cc中的铬源,所以你可以看到它只是将字符串放入blob并运行CryptUnprotectData()
bool OSCrypt::DecryptString(const std::string& ciphertext,
std::string* plaintext) {
DATA_BLOB input;
input.pbData = const_cast<BYTE*>(
reinterpret_cast<const BYTE*>(ciphertext.data()));
input.cbData = static_cast<DWORD>(ciphertext.length());
DATA_BLOB output;
BOOL result = CryptUnprotectData(&input, NULL, NULL, NULL, NULL,
0, &output);
if (!result)
return false;
plaintext->assign(reinterpret_cast<char*>(output.pbData), output.cbData);
LocalFree(output.pbData);
return true;
}