源码级拆解 cookie_crimes:从启动 Headless Chrome 到输出 Cookies 的完整流程
源码级拆解 cookie_crimes从启动 Headless Chrome 到输出 Cookies 的完整流程【免费下载链接】cookie_crimesRead local Chrome cookies without root or decrypting项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimescookie_crimes 是一款无需 Root 权限、无需解密 Cookie 数据库就能直接读取本地 Chrome Cookies 的开源工具是授权安全测试中经典的Cookie 提取方案。它的核心思路非常巧妙不破解 Chrome 的加密存储而是借 Headless Chrome 的远程调试协议CDP之手让 Chrome 自己把明文 Cookie 交出来。本文将以源码级视角完整拆解 cookie_crimes 从启动 Headless Chrome 到输出 Cookies 的四步流程并标注关键代码位置让新手也能彻底看懂其中的原理。cookie_crimes 是什么专攻零权限读取的 Chrome Cookie 提取工具 cookie_crimes 用不到 180 行 Python 代码实现了传统上需要破解系统密钥才能完成的任务。它的核心卖点可以浓缩成一张表特性说明无需 Root不需要管理员权限也不需要用户密码明文输出全部 Cookie 以 JSON 格式打印到终端跨平台Windows、Linux、macOS 通吃兼容 Edge基于 Chromium 的浏览器同样适用单文件通过make可编译为独立二进制传统读取 Chrome Cookie 的路线是解密 SQLite 数据库需要绕开 macOS Keychain、Linux keyring 或 Windows DPAPI复杂度极高而 cookie_crimes 走的是另一条路方案是否需要密码是否需要解密实现难度传统解密方案是是高cookie_crimes 方案否否低为什么不需要 Root先读懂 cookie_crimes 的核心思路 Chrome 会把 Cookie、历史记录、偏好设置等隐私数据统一存放在用户数据目录User Data Directory里。cookie_crimes 的思路是用同一个用户数据目录启动一个新的 Headless Chrome 实例——此时这个无头 Chrome 就等于受害者本人随后开启远程调试端口通过调试协议直接调用Network.getAllCookiesChrome 会替你完成全部解密工作把明文 Cookie 乖乖交出来。整个流程的开关都集中在cookie_crimes.py顶部的三个常量上第 19-25 行PROFILE_NAME目标 Profile、REMOTE_DEBUGGING_PORT远程调试端口默认 9222、GET_ALL_COOKIES_REQUEST预构造好的协议命令。完整流程第一步启动 Headless Chrome 并指向用户数据目录 ⚙️关键代码位于cookie_crimes.py第 107-115 行构造的启动参数一共四个--headless无界面模式不弹出窗口隐蔽性拉满--user-data-dir...指向目标用户的 Chrome 数据目录实现身份冒充--remote-debugging-port9222开启远程调试端口为后续通信铺路--crash-dumps-dir/tmpmacOS 下规避 SIP 的崩溃日志写入限制启动函数summon_forbidden_protocol()第 118-131 行用subprocess.Popen拉起 Chrome并把标准输出、标准错误全部重定向到/dev/null避免 Chrome 的日志污染最终的 Cookie 输出随后休眠 3 秒等待 Chrome 完成初始化。完整流程第二步访问本地调试端点拿到 WebSocket 地址 Chrome 启动后会在http://localhost:9222/json暴露一份调试信息列表。函数hit_that_secret_json_path_like_its_1997()第 133-136 行用requests请求这个端点从返回的 JSON 中提取webSocketDebuggerUrl字段——这就是后续所有通信的 WebSocket 入口也是 CDP 协议的大门。完整流程第三步发送 Network.getAllCookies导出明文 Cookie gimme_those_cookies()第 138-148 行通过websocket-client库建立 WebSocket 连接然后发送一条 JSON-RPC 格式的命令{id: 1, method: Network.getAllCookies}Chrome 收到后会返回当前用户数据目录下的全部 Cookie包含name、value、domain、expires等完整字段。程序从响应中取出result.cookies最终以美化缩进的 JSON 格式打印到终端主流程在第 168-178 行。这个输出格式与 EditThisCookie 浏览器扩展完全兼容拿到手后可以直接一键导入无缝接管登录态。完整流程第四步清理进程与临时文件恢复现场 cleanup()第 150-166 行负责善后在 Linux 上通过pidof找到 Chrome 的子进程并发送SIGKILL强制终止如果此前复制过 Profile 到临时目录则用shutil.rmtree一并删除尽量不留痕迹。进阶技巧如何提取指定 Chrome Profile 的 Cookie Chrome 启动时永远只会加载名为Default的 Profile因此 cookie_crimes 处理非默认 Profile 时玩了一个小把戏第 58-105 行把目标 Profile 目录整体复制到/tmp/chrome/Default再让 Chrome 指向这个伪造的用户数据目录从而骗过 Chrome 读取任意 Profile 的 Cookie。你只需要修改PROFILE_NAME变量即可切换目标。macOS 特殊方案cookie_crimes_macos.sh 的重启大法 由于 Chrome 更新频繁--headless方式在 macOS 上偶尔会失效。cookie_crimes_macos.sh提供了备选方案一共四步下载并执行websocat工具用于发起 WebSocket 请求用后即删pkill Chrome强制关闭当前 Chrome 进程以--remote-debugging-port9222 --restore-last-session重启 Chrome模拟崩溃后恢复标签页的假象发送Network.getAllCookies拿到 Cookie 后删除 websocat 二进制不留痕迹代价是 Chrome 窗口会闪退重开约 0.5 秒并重新加载所有标签页。另外Chrome 导出的 Cookie 域名带有前导点如.google.com导入 EditThisCookie 前可以用format_for_editthiscookie.sh脚本一键去除。一键编译成单文件make 与 PyInstaller Makefile中的make命令会调用 PyInstaller 将 Python 脚本打包成单个可执行文件pyinstaller -F cookie_crimes.py方便在目标机器上免 Python 环境直接运行。注意生成的二进制与编译时的操作系统绑定不支持跨平台交叉编译必须在目标系统上现场构建。常见问题FAQ❓端口 9222 被占用怎么办修改cookie_crimes.py中的REMOTE_DEBUGGING_PORT常量第 22 行换一个端口即可。输出为空是为什么检查 Chrome 是否已在运行会与无头实例抢占数据目录以及用户数据目录路径是否正确。Microsoft Edge 能用吗能。Edge 基于 Chromium同样的手法直接适用。需要安装什么依赖只需执行pip3 install -r requirements.txt依赖清单见requirements.txt核心只有requests和websocket-client。安全提醒与合规边界 ⚠️cookie_crimes 的能力边界很强一旦获得代码执行权限它不仅能读取 Cookie还能通过 CDP 完全控制浏览器执行受害者能做的任何操作。请务必仅在获得明确授权的安全测试环境中使用切勿用于任何非法用途。【免费下载链接】cookie_crimesRead local Chrome cookies without root or decrypting项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考