然后是aes-gcm
import os import sys from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import ( Cipher, algorithms, modes ) NONCE_BYTE_SIZE = 12 def encrypt(cipher, plaintext, nonce): cipher.mode = modes.GCM(nonce) encryptor = cipher.encryptor() ciphertext = encryptor.update(plaintext) return (cipher, ciphertext, nonce) def decrypt(cipher, ciphertext, nonce): cipher.mode = modes.GCM(nonce) decryptor = cipher.decryptor() return decryptor.update(ciphertext) def get_cipher(key): cipher = Cipher( algorithms.AES(key), None, backend=default_backend() ) return cipher
如此即可解密。说下简单的流程吧。
大致流程从C:Users opsAppDataLocalGoogleChromeUserDataLocalState这个Json中读取一个值os_crypt下的encrypted_key
然后取解密秘钥(encrypted_key)去除前5个字符再通过对其dpapi解密出这个值保存为key.并且截取15位去除前3位字符保存为Nonce.
然后使用asegcm进行解密key最终使用aesgcm解密。
大致就是如此。为了证明我的屁眼代码可以用。上一个图。稍等。。我去安装下chrome80。。。影子系统还原了。。。我安装好了
取下encrypted_key和被加密的value的HEX。在这之前 我们先看下加密的内容
包含V10和V11的是chrme80的加密。好了 我们来找找freebuf的值

把加密值HEX[v10mC1^ĻI~`ql>t^c+EO0bJKp1YRn˭F$O]一下得到7631306D43A786939231E0A4D6DC5E**BB497E5C60716CFEFDDB3E74A7ABE2E5F1BAF45EF5F163BC2BB**54F9D30624A4B708D310C168894FFEC189C8959526ECBAD46EF1D7FD224B6868FA64F83CD
然后我们用python解密一下

可看到了解密成功。下一篇用C++来实现自动化解密
几个注意点
Cookie位于User Data/Default下的Cookies文件 改名为Cookies.db即可用sqllite进行查询和查看
上一篇实现了python的简单解密。这一次我们来用C++实现自动化。在这之前 我们需要用到两个C++库
repaidjson
cryptopp
编译环境为VS2013.这两个库不多做介绍,rapidjson是腾讯的一个开源json解析库。发挥的作用不大,就是解析个json。另外就是cryptopp。嗯。。很牛逼。
解析下大致流程:
1:获取local state文件位置
2:获取加密的key(base64编码)
3:解析sqllite文件
4:DPAPI解密
5:ase-gcm解密
关于Aes-gcm 需要用到 KEY IV 以及被加密的字符串 梳理下这几个参数的流程:
KEY = local state = > os_crypt => Encrypted_key => Base64Decode(encrypted_key) => 去除首位5个字符 => DPAPI解密 IV = 被加密的字符串掐头去尾 chiper = 被加密的字符串去头










