# 调查模式

Canonical page: https://phishdestroy.github.io/TgWitness/zh/docs/reference/investigation/

涵盖频道、群组、私聊和机器人的全账户调查，从调查范围到经过验证的案件资料包。

可跨频道、群组、私聊和机器人追踪案件全过程，从最初的 数据采集到带引用时间线及可验证的交接记录。交互式网站 版本位于 `/docs/cases/`；[预览说明](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/PUBLISHING.md#preview-the-website-locally)。

## 案例分析：四个对话中目的地发生变化

一条公告指向了一个机器人。一个行动小组讨论了一个新的付款 目的地，该机器人的键盘上显示了该信息，随后在一次私下跟进中又重复了这一信息。 随后该公告被编辑，一条群组消息消失了。

需要弄清楚的问题包括：变更前后观察到了什么，哪些 Telegram 账户发布了每条内容，目标出现在何处，哪些附件字节 被保留下来，以及哪些时间间隔仍无法确定？

本示例中的所有姓名、ID、时间及日志引用均为虚构。该 工作流使用当前功能；案例图仅为示意图，并非由应用程序自动 生成的图表。

流程图 · 频道 → 工作区日志; 群组 → 工作区日志; 私聊 → 工作区日志; 机器人 → 工作区日志; 工作区日志 → 搜索所有来源; 工作区日志 → 附有记录参考信息的人物档案; 工作区日志 → 已保存版本和附件收据; 搜索所有来源 → 分析师时间线和来源登记册; 附有记录参考信息的人物档案 → 分析师时间线和来源登记册; 已保存版本和附件收据 → 分析师时间线和来源登记册; 工作区日志 → 带签名的证据 ZIP 文件; 分析师时间线和来源登记册 → 附带经单独验证的证据材料的案件移交; 带签名的证据 ZIP 文件 → 附带经单独验证的证据材料的案件移交 · 频道 · 群组 · 私聊 · 机器人 · 工作区日志 · 搜索所有来源 · 附有记录参考信息的人物档案 · 已保存版本和附件收据 · 带签名的证据 ZIP 文件 · 分析师时间线和来源登记册 · 附带经单独验证的证据材料的案件移交

**图表转为文本**

1. 频道 → 工作区日志
2. 群组 → 工作区日志
3. 私聊 → 工作区日志
4. 机器人 → 工作区日志
5. 工作区日志 → 搜索所有来源
6. 工作区日志 → 附有记录参考信息的人物档案
7. 工作区日志 → 已保存版本和附件收据
8. 搜索所有来源 → 分析师时间线和来源登记册
9. 附有记录参考信息的人物档案 → 分析师时间线和来源登记册
10. 已保存版本和附件收据 → 分析师时间线和来源登记册
11. 工作区日志 → 带签名的证据 ZIP 文件
12. 分析师时间线和来源登记册 → 附带经单独验证的证据材料的案件移交
13. 带签名的证据 ZIP 文件 → 附带经单独验证的证据材料的案件移交

## 1. 界定案件并收集完整案情

1. 在专属工作区中连接采集账户。在外部案件记录中， 记录案件编号、账户 ID、工作区、监控起始时间以及可信 签名密钥指纹。
2. 开放**来源 → 监控范围 → 调查模式**。该预设选项包括 **“整个账户**”、“频道/群组/私聊/机器人”、“自身操作”、“来源 资料”以及新发现来源的最新 200 条可见消息。 请仔细核对，点击**“保存范围**”，并完成范围确认。
3. **加载聊天记录**，并将来源与该账户的对话列表进行比对。 检查 排除项。**参数 → 从账户列表中读取的聊天数量**默认值为 1,000，最大支持 20,000。超出列表限制的来源会在 其变为活跃状态时被添加。记录实际枚举的内容。
4. 在**“记录设置**”中，选择**“所有可见活动**”，并保存 监控设置。请检查附件类型/限制及可用磁盘空间。
5. 开始观察。验证一条受控的新消息、编辑操作和删除操作，然后 保留测试参考信息及任何失败情况。

“整个账户”范围会在保存的设置范围内记录账户可见的活动。 该工具不会访问秘密聊天，也不会自动加入所有关联的群组。此外， 它也不会补录所有现有对话。请参阅[“采集范围”](https://phishdestroy.github.io/TgWitness/zh/docs/reference/collection/#observation-scope-chosen-chats-a-folder-or-the-whole-account)。

## 2. 盘点所有信息来源并获取历史背景

维护一个来源登记表，每行记录一次聊天：

| 字段 | 记录 |
| --- | --- |
| 品牌定位 | 工作区、账户 ID、数字聊天 ID、标题和类型 |
| 可见性 | 成员身份/角色、访问权限（已确认或未确认）、排除项 |
| 实时捕获 | 开始时间、选定的事件类型及后续政策变更 |
| 日志历史 | 快照请求/完成情况、限制、时间及记录引用 |
| 完整历史 | 按聊天分组的导出文件名、边界及完成/失败状态均附有数字签名 |
| 附件 | 已完成的媒体接收记录、哈希值、大小以及跳过/失败的结果 |
| 覆盖范围 | 服务中断、数据采集不完整、FloodWait、消息不可用及其他缺失情况 |

针对每个消息源，请选用合适的采集方式：

- 在**“来源”**（当前为 `main`）中**加载完整历史记录**，将已启用来源中可用的过往 消息加载到工作区日志中。该功能支持暂停/恢复 操作，并提供带签名的进度报告。参见[历史记录获取](https://phishdestroy.github.io/TgWitness/zh/docs/reference/history/)。
- **历史快照**将最近可见的消息保存到观察日志中。 其默认上限为 500 条；**通过“参数 → 最大历史快照**”可将 该上限提高至 10,000 条。这些是当前的历史观察记录，而非重建的编辑记录。
- **“导出完整聊天记录”→“导出完整聊天记录**”，或**“聊天”→“导出聊天记录**”，将 当前可见的某次聊天记录导出为一个独立的、经过签名的 `chat.json` / `chat.html` 数据包。针对案件中的各个消息源重复此操作，并保留每个结果。
- **当出现新的聊天或机器人时**，可保存其资料以及多达 1,000 条最近的 消息；调查模式下则保存 200 条。启用该模式后，现有聊天记录不会 追溯性地被纳入。
- **下载可见附件时**，将根据配置的策略保留相应字节数。 必须提供包含 SHA-256 校验值和字节数的完整 `media.saved` 收据。队列中的 任务、缩略图或文件名均不视为已保留的附件。

完整聊天记录导出不会将所有 消息填入日志或联系人资料中。如需在 TgWitness 中分析特定历史记录，请使用**“加载完整历史记录**”或“限定范围的日志快照”功能。在开始 历史记录运行前，请检查已启用的来源列表。无论采用哪种方式，均无法恢复 Telegram 已不再返回的内容。

## 3. 保留不断演变的案件及有预谋的互动

将活跃案件聊天室标记为优先来源。审查复核间隔、持续 补录及媒体结果。在使用该账户期间，请保持采集器处于监控状态。 使用**“聊天”→“个人资料”→“立即保存个人资料”**以保留来源元数据，例如 描述和机器人命令。这与从已保存消息中生成的 联系人个人资料是分开的。

当案件涉及追踪消息来源或与机器人交互时：

1. **“打开 Telegram 链接 → 保存预览”**功能会在执行操作前记录所提供的链接及返回的 预览内容。
2. **“加入/打开并观察”**操作将执行加入/打开操作，并在提供时发送机器人的 start 参数。待批准的加入请求将被记录为“待处理”。
3. 面板生成的文本回复和支持的按钮点击操作将保留 `interaction.requested` 和 `interaction.result`。回调收据可保留 返回的弹出文本、警报状态和 URL。

这些是真实的账户操作。在另一款 Telegram 应用中点击回调按钮的行为 对采集器不可见，尽管由此产生的消息或编辑操作可能被记录。该 微型客户端不处理网页应用、支付、电话或位置相关的工作流。 有关确切的行为，请参阅[面板交互说明](https://phishdestroy.github.io/TgWitness/zh/docs/reference/collection/#act-from-the-panel)。

## 4. 关联不同聊天记录中的观察结果

在**“日志**”中，选择**“所有来源**”并搜索已记录的内容。打开匹配的 记录，并保留工作区、聊天、消息 ID、序列号和记录哈希值。

在相关聊天中，打开**“联系人”→“启用个人资料**”，然后查看某人：

- 随时间推移观察到的名称/用户名以及 Telegram 数字 ID。
- 回复内容需包含源记录的引用信息。
- **此外……**该 ID 曾在此工作区日志中的其他聊天记录中发过言。
- 活动记录、编辑/删除操作，以及被提及的钱包、手机、用户名和链接。
- 已保存的头像元数据及类似的缓存头像，并标注了各自的来源。

在调查结论中使用衍生个人资料前，请先打开引用的记录。个人资料涵盖 拥有已保存消息的人员，而非群组中的每位成员。**参数 → “每个事实引用的记录数”**仅限制引用列表的范围，而非底层活动数量。 提及和头像相似度仅为线索；它们不能证明所有权或身份。

在示例中：

| 链接 | 记录 | 支持的观察内容 |
| --- | --- | --- |
| 同一发件人账号 | 群组 #146 及后续私信 #205 | 两者均提供 Telegram 发件人 ID 71001 |
| 同一目标 | #146，机器人键盘 #173，频道编辑 #188，私信 #205 | 所有内容均包含`pay.example.invalid/new`；所有权/控制权尚未确定 |
| 相同的保存文件 | 已完成媒体收据 #151 和 #209 | 所保存字节的完整 SHA-256 值完全一致 |
| 频道来源说明 | #101 和 #188 | 若未注明发件人，请勿将频道帖子归因于用户 71001 |

请对比附件哈希值及其关联的消息引用。文件完全相同 并不能证明其创建者、转发者或共同操作者。仅凭相同的名称和 相似的头像，不能将两个 Telegram ID 归为同一人。

## 5. 构建跨聊天室时间线

使用**“聊天**”中的已保存版本及其**日志记录 #…** 链接。在 **日志中**，将**所有来源**与**编辑**、**删除**及**覆盖内容**合并。 如已提供，请同时保留 `source_at` 和 `observed_at`。

| 示例观察时间 | 参考资料 | 观察 |
| --- | --- | --- |
| 09:00 | 频道 #101 | 原始目标已捕获 |
| 09:12 | 群组 #146；媒体 #151 | 已发布新目标；文件下载完成 |
| 09:16 | 机器人 #173 | 键盘指向新目的地 |
| 09:20 | 频道 #188 | 公告已编辑；两个保存版本均保留 |
| 09:24 | 私有 #205; 媒体 #209 | 同一发件人 ID 的收件人地址重复；文件字节内容保持不变 |
| 09:28 | 群组 #231 | 已收到删除通知；删除者及确切删除时间不详 |

其他记录发生在这些示例引用之间。序列号用于排序 观察结果；历史快照可能包含更早的源日期，且到达时间 晚于实时事件。请区分快照、恢复的消息、删除通知以及 重新检查时缺失的结果。 将覆盖缺口标记为未知时间段。后续 历史数据的获取并不意味着可以追溯性地确立不间断的观测记录。

## 6. 添加账户视角，同时保留其来源信息

为每个独立账户使用单独的工作区，并重复执行其清点操作。 每次比对时，请保留账户 ID、角色、签名密钥指纹及来源参考信息。 消息编号并非跨聊天/账户的全局标识符。

跨工作区的关联分析需在外部案件笔记或分析 工具中进行。TgWitness 目前不支持全局跨工作区搜索、合并时间线、 调查图谱或综合案件档案。**单个** 频道/超级群的多账户导出属于另一项操作，并非账户日志的合并。

对于较长的操作，需通过[独立见证人](https://phishdestroy.github.io/TgWitness/zh/docs/reference/witness/)保持边界。 使用受控投递检查来验证 每个账户的捕获路径和可见性。

## 7. 整理并核实案件移交

请将以下内容整理到由分析师编制的案件目录中：

| 资料 | 目的 |
| --- | --- |
| 案件笔记与来源登记册 | 问题、数据收集政策、访问权限/角色、调查结果、替代解释及数据缺口 |
| 时间线 | 每条记录均包含时间信息以及工作区/聊天/消息/序列的引用信息 |
| 每个工作区对应的签名证据 ZIP 文件 | 完整的记录日志、清单及包含的保存媒体；面板过滤器不会缩小日志导出范围 |
| 单独签名的用户资料文件 | 已根据对应的工作区证据核查了引用的来源 |
| 带签名的完整聊天记录导出 | 当前可见历史记录的采集，与观察日志分开处理 |
| 可信指纹和早期检查点 | 关键身份信息与保留日志的边界 |
| 若已配置，则生成Witness证据文件 | 独立日志、签名条目和见证指纹 |
| 验证结果和已交付文件的哈希值 | 检查了什么内容、传输了哪些字节以及传输给了谁 |

来自可信安装环境，包含文件名及每个工作区的实际指纹：

```
python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --checkpoint retained-checkpoint.json
python -m tgwitness.verify profiles-operations.json --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --evidence evidence.zip
python -m tgwitness.verify history-channel.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256
```

保留实际的验证结果和原始证据文件。顶级案件 目录、来源登记册和分析师结论均在外部维护； 每个 TgWitness 证据文件都有其独立的签名和验证流程。

## 调整调查

| 案例 | 追踪 | 交付 |
| --- | --- | --- |
| 由机器人驱动的订单/支付纠纷 | 条目公告 → 已保存链接预览 → 机器人启动参数 → 消息和键盘版本 → 面板回调收据 → 私信/群组跟进 | 已观察到的报价/响应时间线及经过验证的来源；仅凭支付链接无法证明已发生支付 |
| 事件发生后被删除的消息 | 所有受影响的聊天记录 → 保存的原始内容/编辑记录 → 删除或复查时缺失的结果 → 保留的媒体文件 → 覆盖范围及其他账户视角 | 保留版本及明确标注的未知时间段；不假设任何虚构的删除行为者 |
| 某参与者在不同聊天群中使用了不同的名字 | 发件人编号 → 姓名/用户名历史 → 回复 → 其他被观察到的聊天记录 → 提及的目标/文件 | 所引用的 Telegram 账号活动时间线，其中现实世界中的身份信息与关系假设被明确区分开来 |

[收藏参考](https://phishdestroy.github.io/TgWitness/zh/docs/reference/collection/) · [个人资料验证](https://phishdestroy.github.io/TgWitness/zh/docs/reference/evidence/#people-profiles) · [证据移交](https://phishdestroy.github.io/TgWitness/zh/docs/reference/evidence/#investigation-handoff) · [验证已完成](https://phishdestroy.github.io/TgWitness/zh/docs/reference/verification/)
