为什么 cookie_crimes 不需要 root 和密码就能读取 Chrome Cookies?核心原理揭秘

发布时间:2026/8/21 14:45:46
为什么 cookie_crimes 不需要 root 和密码就能读取 Chrome Cookies?核心原理揭秘 为什么 cookie_crimes 不需要 root 和密码就能读取 Chrome Cookies核心原理揭秘【免费下载链接】cookie_crimesRead local Chrome cookies without root or decrypting项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimescookie_crimes 是一个开源的 Chrome Cookies 读取工具它的项目描述只有一句话无需 root 权限、无需用户密码、无需破解加密算法就能把本地 Chrome 的全部 Cookie 以 JSON 明文导出。听起来像天方夜谭其实这个读取 Chrome Cookies 的原理并不复杂只是换了一个思路——既然直接偷解密钥匙会被操作系统拦下那就让 Chrome 自己把 Cookie 交出来。本文从零开始一步步拆解 cookie_crimes 的核心原理。为什么读取 Chrome Cookies 通常需要密码或 root密钥藏在系统深处Chrome 的 Cookie 存放在本地 SQLite 数据库中即Cookies文件但字段值并不是明文而是经过加密的密文。负责解密的密钥由操作系统统一托管不同平台各不相同WindowsDPAPI密钥与当前登录账户绑定macOSKeychain钥匙串LinuxGNOME Keyring 或 KWallet。换句话说直接复制数据库文件只能拿到一堆密文想拿到密钥就必须向操作系统证明身份而身份验证恰恰需要用户密码或 root 权限。这就是读取 Chrome Cookies 需要密码的根源所在。cookie_crimes 的核心思路不破解加密而是借Chrome 的身份cookie_crimes 跳出了解密数据库的惯性思维。关键洞察是Chrome 自己持有解密密钥它每次启动都能解密属于自己的 Cookie。那么只要让一个新启动的 Chrome 实例冒充目标用户再通过调试接口把内存里已经解密的 Cookie 全部吐出来整个过程根本不需要触碰加密密钥自然也就绕开了密码和 root 的检查。第一步用 Headless Chrome 借用目标用户数据目录user-data-dir无头模式Headless下的 Chrome 允许通过--user-data-dir参数指定任意用户数据目录而 Cookie、历史记录、偏好设置等全部存放在这个目录里。cookie_crimes 的做法是启动一个无头 Chrome把--user-data-dir指向目标用户的 Chrome 配置目录这个新实例就变成了目标用户身份认证直接通过所有 Cookie 在内存中都是明文。核心参数组装代码位于 cookie_crimes.py默认端口和配置目录常量见 cookie_crimes.py。一个小细节如果目标不是默认的 Default 配置代码会把对应 Profile 复制到/tmp临时目录再指向它因为 Chrome 只认目录下的 Default 配置这部分逻辑在 cookie_crimes.py 中实现。第二步用 Chrome 远程调试协议CDP导出全部 Cookie无头 Chrome 启动时会带上--remote-debugging-port9222参数开启 Chrome 的远程调试协议CDP——也就是 Chrome 开发者工具与浏览器通信的那套接口。接下来只需两步请求http://localhost:9222/json拿到 WebSocket 调试地址通过 WebSocket 发送Network.getAllCookies命令浏览器就会把全部 Cookie 以明文 JSON 返回。获取调试地址的函数在 cookie_crimes.py发送命令并解析 Cookie 的核心函数在 cookie_crimes.py请求体定义在 cookie_crimes.py。整个过程走的是 Chrome 官方调试协议不注入、不破解因此稳定且跨平台。第三步输出标准 JSON一键导入 EditThisCookieCookie 导出后以规范的 JSON 格式打印恰好与 EditThisCookie 扩展的导入格式兼容。唯一的小坑是Chrome 的 Cookie 域名带前导点如.google.com而扩展导入时需要去掉。仓库里的 format_for_editthiscookie.sh 用一行 jq sed 就完成了清洗处理命令为cat cookies.json | ./format_for_editthiscookie.shmacOS 读取 Chrome Cookies 的特殊方案重启 Chrome 开启远程调试无头模式在 macOS 上时灵时不灵Chrome 每天都在更新行为经常变化因此 cookie_crimes_macos.sh 换了一种更直接的做法快速结束当前 Chrome 进程然后以--restore-last-session --remote-debugging-port9222重新启动并恢复上次会话再借助 websocat 工具发起 WebSocket 请求获取 Cookie。代价是 Chrome 窗口会闪一下、标签页需要重新加载——看起来就像浏览器崩溃后自动恢复了一样。快速上手从安装到导出 Chrome Cookies 只需三步想亲自验证这套原理克隆仓库后按以下步骤操作git clone https://gitcode.com/gh_mirrors/co/cookie_crimes cd cookie_crimes pip3 install -r requirements.txt python cookie_crimes.py运行后屏幕上就会打印出当前 Chrome 全部 Cookie 的 JSON。如果不想依赖 Python 环境直接执行make即可用 PyInstaller 打包成单文件二进制见 Makefile。依赖清单集中在 requirements.txt。另外由于 Microsoft Edge 同样基于 Chromium这套方法对它同样有效如需导出非默认配置只需修改 cookie_crimes.py 中的PROFILE_NAME变量。写在最后一把锋利的安全研究双刃剑cookie_crimes 的意义在于揭示了一个常被忽视的安全事实只要能在目标机器上执行任意代码浏览器 Cookie 就等于明文所有加密保护都形同虚设。它的原理值得安全研究者学习但请务必只在自己的设备或获得授权的情况下使用。正如项目作者在源码结尾的忠告dont do crimes with this please —— 别拿它干坏事。【免费下载链接】cookie_crimesRead local Chrome cookies without root or decrypting项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考