Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python解密Chrome Linux BLOB加密cookie_Python_Linux_Google Chrome_Cookies_Encryption - Fatal编程技术网

用Python解密Chrome Linux BLOB加密cookie

用Python解密Chrome Linux BLOB加密cookie,python,linux,google-chrome,cookies,encryption,Python,Linux,Google Chrome,Cookies,Encryption,我在Ubuntu中安装了Chrome 33+,我看到Cookie是以BLOB结构加密的: 创建表cookies(创建utc整数不为空唯一主键、主机密钥文本不为空、名称文本不为空、值文本不为空、路径文本不为空、过期utc整数不为空、安全整数不为空、httponly整数不为空、上次访问utc整数不为空、具有过期整数不为空默认值1、持久整数不为空默认值1、优先级整数不为空D)默认值1,加密的_值BLOB默认值“”); 我想编写一个python脚本来解密cookie。我已经看到,CryptUnprot

我在Ubuntu中安装了Chrome 33+,我看到Cookie是以BLOB结构加密的:

创建表cookies(创建utc整数不为空唯一主键、主机密钥文本不为空、名称文本不为空、值文本不为空、路径文本不为空、过期utc整数不为空、安全整数不为空、httponly整数不为空、上次访问utc整数不为空、具有过期整数不为空默认值1、持久整数不为空默认值1、优先级整数不为空D)默认值1,加密的_值BLOB默认值“”);

我想编写一个python脚本来解密cookie。我已经看到,
CryptUnprotectData
中有但依赖于它是一个Windows API

首先,我想知道cookies是如何加密的。我读过3DES和AES,但我没有找到可靠的来源来获取信息

我会写代码做必要的加密和解密,如果我有关于如何做的信息


谢谢

我也一直在研究它。直到现在我才发现Chrome(Windows)使用CryptProtectData函数加密其cookie值。该函数与用于加密登录数据文件中保存的密码的函数相同。CryptProtectData使用登录的windows用户的用户帐户信息和密码来加密数据。要解密数据,我们必须使用CryptUnProtectData函数和登录的相同用户帐户在

下面是一个用于解密登录数据的代码段

关于Linux,我在这里读到:


在其他系统上,它似乎用salt“saltysalt”和密码“peanuts”混淆密码

我发布了一个Python脚本示例,用于在OSX或Linux中解码加密的Cookie。

这些注释有点混乱,所以请澄清一下,这是os_crypt_win.cc中的chromium源代码,因此您可以看到它只是将字符串放入blob并运行CryptUnprotectData()

bool OSCrypt::DecryptString(常量std::string和密文),
标准::字符串*纯文本){
数据块输入;
input.pbData=const\u cast(
重新解释_cast(ciphertext.data());
input.cbData=static_cast(ciphertext.length());
数据块输出;
BOOL result=CryptUnprotectData(&input,NULL,NULL,NULL,
0,&输出);
如果(!结果)
返回false;
纯文本->赋值(重新解释转换(output.pbData),output.cbData);
LocalFree(output.pbData);
返回true;
}

,谢谢@ OMIDRAHA。根据C++函数,代码>解密字符串是处理BLB解密的人。我将要找到它是如何工作的。遇到同样的问题,我在Windows上使用C++,上面的代码可以为Moor工作,或者Mac上的“McCKION口令”
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;
}