TgWitness / 文档

参考 / 收集

调查模式

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

可跨频道、群组、私聊和机器人追踪案件全过程,从最初的 数据采集到带引用时间线及可验证的交接记录。交互式网站 版本位于 /docs/cases/;预览说明。

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

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

需要弄清楚的问题包括:变更前后观察到了什么,哪些 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. 开始观察。验证一条受控的新消息、编辑操作和删除操作,然后 保留测试参考信息及任何失败情况。

“整个账户”范围会在保存的设置范围内记录账户可见的活动。 该工具不会访问秘密聊天,也不会自动加入所有关联的群组。此外, 它也不会补录所有现有对话。请参阅“采集范围”。

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

维护一个来源登记表,每行记录一次聊天:

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

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

  • 在“来源”(当前为 main)中加载完整历史记录,将已启用来源中可用的过往 消息加载到工作区日志中。该功能支持暂停/恢复 操作,并提供带签名的进度报告。参见历史记录获取。
  • 历史快照将最近可见的消息保存到观察日志中。 其默认上限为 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 应用中点击回调按钮的行为 对采集器不可见,尽管由此产生的消息或编辑操作可能被记录。该 微型客户端不处理网页应用、支付、电话或位置相关的工作流。 有关确切的行为,请参阅面板交互说明。

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 目前不支持全局跨工作区搜索、合并时间线、 调查图谱或综合案件档案。单个 频道/超级群的多账户导出属于另一项操作,并非账户日志的合并。

对于较长的操作,需通过独立见证人保持边界。 使用受控投递检查来验证 每个账户的捕获路径和可见性。

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 账号活动时间线,其中现实世界中的身份信息与关系假设被明确区分开来

收藏参考 · 个人资料验证 · 证据移交 · 验证已完成