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

**我看到了。我需要证明我看到了。**
网页会消失。社交媒体帖子会被删除。证据会凭空消失。
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, 人权研究, 加密完整性, 司法鉴定, 哈希链, 威胁情报, 存证固证, 屏幕截图, 开发者工具, 数字取证, 数据保存, 时间戳, 法律科技, 浏览器扩展, 电子证据, 社会工程学分析, 网络安全, 网络抓取, 网页取证, 网页归档, 网页监控, 自动化攻击, 自动化脚本, 证据链, 调查记者, 防篡改, 隐私保护, 风险管理