HappyHackingSpace/witness

GitHub: HappyHackingSpace/witness

一个带加密完整性校验的网页取证 Chrome 扩展,支持自动捕获、哈希链、可信时间戳和多格式导出。

Stars: 0 | Forks: 0

![Banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e69c3c22c8085049.png) **我看到了。我需要证明我看到了。** 网页会消失。社交媒体帖子会被删除。证据会凭空消失。 Witness 捕获你看到的一切,以加密完整性将其保存,并让你证明它是真实的。
## 这是为谁准备的? **OSINT 调查人员**,需要通过可审计的线索记录在线调查的每一步。自动记录你访问的每个页面,跟踪捕获内容中的选择器,并导出可用于法庭的证据包。 **记者**,追踪那些随时可能消失的网站和社交媒体上的故事。每个来源都被捕获、加上时间戳并保存。笔记中不再有失效链接。 **法律专业人士**,需要在法庭上展示基于网页的证据。SHA-256 哈希链和 RFC 3161 可信时间戳提供了证据未被篡改的加密证明。 **网络安全分析师**,研究威胁行为者、钓鱼活动和网络基础设施。保存页面,跟踪捕获内容中的指标,并导出为标准格式。 **人权研究人员**,记录那些政府和平台试图抹除的侵权行为。在证据消失之前将其捕获,按案件组织,并为法律诉讼生成报告。 **任何人**,只要你曾想过“我应该保存那个页面的”。 ## 功能特性 ### 自动捕获 录制时访问的每个页面都会被自动捕获。MHTML 保存完整的页面(HTML、CSS、图像、脚本)。同时拍摄视口或整页截图。无需手动“保存”按钮。只需浏览。 - 通过 Chrome DevTools Protocol 进行整页截图 - 右键点击“Capture this page”上下文菜单 - 域名白名单/黑名单,用于选择性捕获 - 重复检测(如果 URL + 内容哈希未更改则跳过) ### 取证完整性 每次捕获都使用 SHA-256 进行哈希处理。每个哈希都链接到前一个,形成一条防篡改链。破坏一个环节,整条链都会发出警报。来自 FreeTSA.org 和 DigiCert 的 RFC 3161 可信时间戳提供了证据捕获时间的第三方证明。 - 每次捕获包含 SHA-256 内容哈希、截图哈希和证据哈希 - 哈希链将每次捕获链接到前一次 - RFC 3161 可信时间戳(自动、非阻塞) - 在设置中一键验证链 ### 案件与组织 将捕获内容分组到调查案件中。从页眉切换案件。标记捕获内容,添加笔记,并按任意组合进行筛选。 - 从全局下拉菜单切换活动案件 - 对任何捕获内容添加自由格式的标签和笔记 - 搜索所有捕获的页面内容和元数据 - 按天分组的时间线视图 ### 选择器与智能检测 定义关键词、用户名、电子邮件、电话号码、加密货币地址或自定义正则表达式模式。每个捕获的页面都会自动根据所有活动选择器进行扫描。结果会在你的整个证据集中汇总。 - 关键词、正则表达式和预设选择器类型 - 自动检测电子邮件、电话、加密货币钱包、IP、社交账号 - 结果视图显示哪些实体出现在哪些页面上 - 证据浏览器中每个捕获内容上的命中指示器 ### 标注 在不更改原始证据的情况下标记截图。高亮关键区域,遮挡敏感信息,绘制箭头,圈出元素。标注单独存储,因此原始截图保持取证上的完整性。 - 高亮、遮挡、箭头和圆形工具 - 5 种颜色选项,支持撤销和清除 - 原始证据始终保留 ### 导出 将你的证据带到任何地方。基于文件工作流的 ZIP 包。用于归档和法律程序的 WARC (ISO 28500)。包含截图、哈希、时间戳和调查员笔记的 HTML/PDF 报告。 - 单次捕获、案件级别或完整导出 - 包含 MHTML + 截图 + 元数据 + SHA256SUMS 清单的 ZIP - WARC 1.1 (ISO 28500) 标准网络归档格式 - 带有适用于 PDF 输出的打印友好 CSS 的 HTML 报告 ## 安装 ### 前置条件 - Node.js 20+ - pnpm 9+ ### 从源代码构建 ``` git clone https://github.com/HappyHackingSpace/witness.git cd witness pnpm install pnpm build ``` 然后在 Chrome 中加载: 1. 打开 `chrome://extensions/` 2. 启用 **开发者模式** 3. 点击 **加载已解压的扩展程序** 4. 选择 `.output/chrome-mv3/` 目录 ## 工作原理 ``` Click icon Toggle REC Browse Organize Export ┌──────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ Open side │───>│ Start/pause │──>│ Pages are │──>│ Cases, tags, │──>│ ZIP,WARC │ │ panel │ │ recording │ │ captured │ │ notes,search │ │ or Report│ └──────────┘ └──────────────┘ │ with hash │ └──────────────┘ └──────────┘ │ + timestamp│ └──────────┘ ``` 所有数据都保存在你的浏览器中。没有外部服务器。没有账户。没有跟踪。唯一的出站请求是向公共 TSA 服务器发出的 RFC 3161 时间戳查询,并且这些请求只包含 SHA-256 哈希,而不是你的数据。 ## 架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ Witness Extension (Chrome MV3) │ │ │ │ ┌──────────────┬──────────────┬───────────────────────────┐ │ │ │Service Worker │Content Script│ Side Panel (Svelte 5) │ │ │ │ │ │ │ │ │ │ Navigation │ Selector │ Dashboard │ │ │ │ tracking │ scanning │ Evidence browser │ │ │ │ MHTML capture│ Smart │ Cases │ │ │ │ Screenshots │ detection │ Selectors / Findings │ │ │ │ Hash chain │ │ Timeline │ │ │ │ RFC 3161 TSA │ │ Annotations │ │ │ │ Dedup │ │ Reports │ │ │ │ Context menu │ │ Settings │ │ │ │ Domain rules │ │ │ │ │ └──────────────┴──────────────┴───────────────────────────┘ │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ ▼ ▼ ▼ │ │ IndexedDB chrome.storage chrome.pageCapture │ │ (captures, cases, (settings, (MHTML snapshots) │ │ selectors, blobs) domain rules) │ └──────────────────────────────────────────────────────────────┘ ``` | 组件 | 技术 | |-----------|-----------| | 语言 | TypeScript | | 构建 | Vite + WXT | | Manifest | V3 | | 侧边栏 | Svelte 5 | | 存储 | IndexedDB (idb) + chrome.storage | | 哈希 | Web Crypto API (SHA-256) | | 压缩 | fflate | | 时间戳 | RFC 3161 (FreeTSA, DigiCert) | ``` witness/ ├── src/ │ ├── entrypoints/ # background.ts, sidepanel/, content.ts │ ├── components/ # Svelte 5 UI components │ ├── lib/ # Store, export, search, annotations, reports │ └── shared/ # Hash functions, types, interfaces └── scripts/ # Build utilities ``` ## 开发 ``` pnpm install # Install dependencies pnpm dev # Dev server with hot reload pnpm build # Production build pnpm test # Run tests pnpm typecheck # Type check pnpm lint # Lint pnpm format # Format ``` ## 灵感来源 - [Hunchly](https://hunch.ly) ## 许可证 [MIT](LICENSE)
标签:Chrome DevTools Protocol, ESC4, MHTML, OSINT, RFC 3161, SHA-256, 人权研究, 加密完整性, 司法鉴定, 哈希链, 威胁情报, 存证固证, 屏幕截图, 开发者工具, 数字取证, 数据保存, 时间戳, 法律科技, 浏览器扩展, 电子证据, 社会工程学分析, 网络安全, 网络抓取, 网页取证, 网页归档, 网页监控, 自动化攻击, 自动化脚本, 证据链, 调查记者, 防篡改, 隐私保护, 风险管理