用Python解密Chrome Linux BLOB加密的cookie

时间:2014-04-09 20:14:20

标签: python linux google-chrome cookies encryption

我在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,但我找不到可信赖的来源来获取信息。

如果我有关于如何操作的信息,我会编写代码来进行必要的加密和解密。

谢谢

3 个答案:

答案 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;
}