# Один журнал. Четыре режима сбора. Восемь уровней проверки.

Canonical page: https://phishdestroy.github.io/TgWitness/ru/guides/modes.html

Режимы, сценарии и уровни доказательства

TgWitness записывает то, что видит подключённый аккаунт. Третья сторона проверяет целостность записи по заранее доверенному ключу.

[Режимы сбора](https://phishdestroy.github.io/TgWitness/ru/guides/modes.html#scope)[Сценарии](https://phishdestroy.github.io/TgWitness/ru/guides/modes.html#scenarios)[Уровни доказательства](https://phishdestroy.github.io/TgWitness/ru/guides/modes.html#levels)

Обзор за 3–5 минут · вымышленные примеры · текущая реализация

1. **Telegram**

   Обновления, видимые для учетной записи
2. **Коллектор**

   Связанные записи, каждая из которых подписана
3. **Верификатор**

   Доверенный ключ + сохраненная граница

`h₁ → h₂ → h₃ · Ed25519`Целостность проверяется. Происхождение из Telegram и достоверность сообщения остаются отдельными вопросами.

## Выберите режим сбора

Три области наблюдения и пресет расследования. Исключения и выбранные типы источников действуют во всех соответствующих режимах.

По умолчанию**Chosen chats**

Что записывает

Только чаты, выбранные вручную.

Новые чаты

Не добавляются автоматически.

Когда выбирать

Известный набор каналов или групп. Проверенного предела по числу чатов нет.

**Чего не делает** Не обнаруживает другие чаты и не загружает прежнюю историю автоматически.

Папка аккаунта**Telegram folder**

Что записывает

Чаты и категории папки, за вычетом исключений и архивных чатов, если это задано папкой.

Новые чаты

Подходящие активные чаты; изменения состава папки — в течение часа.

Когда выбирать

Аналитик уже ведёт папку по делу. Сбор требует подтверждения и выделенного аккаунта.

**Чего не делает** Не применяет меняющиеся условия папки «без звука» и «прочитано».

Требует подтверждения**Whole account**

Что записывает

Доступные аккаунту чаты, включая личные и ботов, в пределах выбранных типов источников.

Новые чаты

Добавляется с первым обновлением.

Когда выбирать

Выделенный аккаунт наблюдения, в том числе для участия в расследуемых чатах.

**Чего не делает** Не вступает в чаты сам и не обходит ограничения доступа.

Пресет поверх Whole account**Investigation mode**

Что записывает

Все типы источников, собственные действия, профили источников и последние 200 видимых сообщений каждого нового источника.

Новые чаты

Для нового чата или бота сохраняются профиль и снимок истории.

Когда выбирать

Вступление в команду или диалог с ботом из панели. Просмотрите настройки и сохраните пресет.

**Чего не делает** Не делает снимки всех уже известных чатов и не видит callback-нажатия в другом клиенте.

Карточки служат для сравнения. Выбор здесь не меняет настройки подключённого аккаунта.

**Чего не делает** Ни один режим не читает секретные чаты, не записывает события при остановленном процессе, не вступает в чаты сам и не загружает историю сверх запрошенного снимка или экспорта.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/collection/)

## Выгрузка через GitHub Actions (предварительная версия)

Новый вход в Telegram, один чат, зашифрованный архив и аттестация GitHub.

[Открыть помощник выгрузки](https://phishdestroy.github.io/TgWitness/ru/docs/capture/)

## Что фиксируется

В журнал попадают доставленные или явно запрошенные наблюдения. Неизвестный участник действия остаётся неизвестным.

 Переключатели записи · локальный примерНовые сообщенияИзмененияУдаленияРеакцииЧленство

В панели переключатели действуют на весь workspace. Отключение сохраняет прежние записи; повторное включение не восстанавливает пропущенные события.

**Матрица событий: сохранённое и неизвестное**

| Категория | Что сохраняется | Что остаётся неизвестным |
| --- | --- | --- |
| Сообщение | Текст, идентификаторы, метаданные отправителя, контекст ответа и исходный конверт обновления. | Отсутствует подпись Telegram, поддающаяся проверке третьими сторонами. |
| Правка | Все наблюдённые версии без подмены предыдущих. | Промежуточные правки могут быть пропущены; редактор не обязательно совпадает с отправителем. |
| Удаление | Уведомление плюс ранее сохраненный текст, если таковой имеется. | Удаливший и точное время действия не приходят. |
| Unscoped deletion | Уведомление уровня аккаунта; неизвестный чат отмечен явно. | Чат не угадывается. Если возможно, используется связь с ранее сохранёнными ID в области аккаунта. |
| Реакция | Полученные счётчики и доступные недавние участники реакций. | Не все участники видны; доступный список требует отдельных запросов. |
| Членство | Доставленные служебные сообщения и обновления участников. | Роль и тип чата ограничивают видимость; отсутствие сообщений не означает отсутствия. |
| Вложение | Дескриптор исходной версии, сохранённые байты, SHA-256 и результаты попыток загрузки. | Исчезнувший файл может оказаться недоступным; более новая версия не заменяет его. |
| Снимок истории | Снимок сообщений, видимых в момент запроса, с отметкой о происхождении из истории. | Предыдущие правки и удалённый контент не восстанавливаются. |
| Собственные действия | Исходящие сообщения и правки; button_press при совпадении с сохранённой клавиатурой ответа. | Callback-нажатия в другом клиенте Telegram не видны. |
| Кнопки бота | Метаданные callback, URL, web app и запросов вместе с сообщением. | URL, запрос номера и геолокации сохраняются как текст, не открываются и не выполняются автоматически. |

### Лимиты вложений по умолчанию

Фотографии

20 MiB

Видео

100 MiB

Файлы

50 MiB

Анимации

20 MiB

Видеосообщения

50 MiB

Голосовые

20 MiB

Аудио

50 MiB

Стикеры

5 MiB

**Чего не делает** Переключатель не удаляет встроенные метаданные и не отключает служебные записи. Сбор не устанавливает участника действия, которого Telegram не сообщил.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/collection/)

## Подключение и гибкость

На каждый аккаунт — свой workspace, журнал, ключ подписи, маршрут и очередь.

### Номер телефона + код

Пароль 2FA, если он включён.

### QR код

Сканирование с авторизованного устройства; может потребоваться 2FA.

### Telethon .session

Импортируйте файл сеанса учетной записи.

### Pyrogram .session

Импорт поддерживаемого формата сессии Pyrogram.

### TData ZIP

Один поддерживаемый аккаунт Desktop; локальный passcode, если установлен.

### StringSession текст

Текст Telethon StringSession.

### .session + .json

Выберите сессию и соответствующие сопутствующие метаданные.

### Auth key HEX + DC ID

Ключ авторизации аккаунта и идентификатор его дата-центра.

**API-пара**

Своя API-пара необязательна. Без неё используется пул публичных пар, включая пары официального Telegram Desktop.

`Direct · SOCKS5 · HTTP CONNECT · MTProxy`MTProxy — экспериментальный маршрут; доступны встроенные публичные списки MTProxy. При ошибке прокси отката на прямое соединение нет.

Два workspace на одной машине — не два независимых свидетеля.

**Чего не делает** Импорт не обходит авторизацию Telegram, 2FA и ограничения форматов сессий. Аккаунты продолжают работать в общем процессе приложения.

[Форматы учётных записей](https://phishdestroy.github.io/TgWitness/ru/docs/reference/accounts/)

## Активные действия из панели

Написать или ответить, нажать кнопку бота, сохранить превью ссылки, затем явно вступить в чат или открыть бота со start-параметром.

`interaction.preview``interaction.requested``interaction.result`

Превью, запрос и результат сохраняются как подписанные записи. Перед нажатием сервер повторно получает сообщение и отказывает, если клавиатура изменилась. Текст callback-ответа и URL остаются в журнале.

**Чего не делает** Не запускает web apps, платежи, передачу номера или геолокации и инлайн-запросы. Показ URL не открывает ссылку.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/collection/)

## Восстановление и непрерывность

Разрывы показываются, а не скрываются.

### Продолжение с сохранённой позиции

После рестарта коллектор запрашивает у Telegram пропущенные обновления. Срок хранения ограничен: устаревшая разница может оставить разрыв.

### Повторная проверка сообщений

По умолчанию: приоритетные источники — каждые 15 минут, остальные — каждые 6 часов. Результаты: message.recovered и message.missing_on_recheck.

### Отчёт coverage.json

В подписанном экспорте — периоды наблюдения, разрывы с причиной и ненаблюдённые ID. Отсутствие при recheck не равно уведомлению об удалении.

**Чего не делает** Поздний снимок истории не отменяет простой и не восстанавливает все исчезнувшие версии. Сохранённая позиция не означает приём журнала без потерь.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/evidence/)

## Семь уровней. Разные вопросы.

Каждый механизм отвечает на ограниченный вопрос. Внешние сервисы настраиваются отдельно; доверенные ключи и контрольные точки храните вне коллектора.

1. ### Запись

   SHA-256-цепочка и Ed25519 на каждое событие; первый previous_hash состоит из 64 нулей.

   **Что проверяет третья сторона** Порядок записей и подписи под заранее доверенным ключом коллектора.

   **Чего не делает** Не доказывает происхождение от Telegram и полноту доставки.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256
   ```
2. ### Контейнер

   manifest.json перечисляет хеши файлов; manifest.sig подписывает его. media.saved связывает байты вложения с событием.

   **Что проверяет третья сторона** Файлы согласуются с подписанным манифестом и записями сохранения вложений.

   **Чего не делает** Не подписывает отдельно скачанные CSV, HTML или скриншоты.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256
   ```
3. ### Граница

   Checkpoint при старте, по умолчанию каждые 5 минут и при штатной остановке. Сохраните копию вне коллектора.

   **Что проверяет третья сторона** Поздний экспорт совпадает с ранее сохранённой длиной и головным хешем; откат можно обнаружить.

   **Чего не делает** Не обнаруживает совместную замену журнала и всех сохранённых контрольных точек.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
   ```
4. ### Время

   Evidence mode отправляет SHA-256 checkpoint в RFC 3161 TSA (FreeTSA, DigiCert) и календари OpenTimestamps.

   **Что проверяет третья сторона** Проверенный ответ TSA датирует эти байты; подтверждённое доказательство OpenTimestamps связывает их с Bitcoin.

   **Чего не делает** Не считает подготовленный запрос или ожидающую подтверждения квитанцию календаря подтверждённой меткой времени.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --tsa-ca trusted-ca.pem
   ots upgrade checkpoint.ots
   ots verify checkpoint.ots
   ```
5. ### Свидетель

   Отдельный хост, один read-only endpoint, случайный challenge, собственные ключ и журнал, посты TGW1 в канал.

   **Что проверяет третья сторона** Ранее принятые головные хеши; статусы ok, key_changed, rollback, fork, invalid и no_response.

   **Чего не делает** Не превращает два workspace на одном хосте коллектора в независимых свидетелей.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --witness witness.zip --witness-fingerprint WITNESS_SHA256 --channel result.json
   ```
6. ### Реплика

   Копия в S3-совместимом хранилище с AES-256-GCM; Object Lock, если его поддерживает bucket.

   **Что проверяет третья сторона** Файлы появляются в каталоге восстановления только после проверки журнала, checkpoint и сохранённых вложений.

   **Чего не делает** Не восстанавливает без экспортированного ключа и не подтверждает срок хранения без проверки ответа хранилища.

   **Команда проверки**

   ```
   python -m tgwitness.replica restore --key-file KEY.json --out EMPTY_DIR
   ```
7. ### Происхождение

   Подписанный run receipt: хеши исходников, версии зависимостей и контекст процесса. Self-reported.

   **Что проверяет третья сторона** То, что сам подписывающий коллектор сообщил о своём запуске.

   **Чего не делает** Не даёт независимой аттестации процесса и не исключает компрометацию до записи.

   **Команда проверки**

   ```
   python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256
   ```

### Что не доказывается никаким уровнем

Доставка каждого обновления Telegram; правдивость текста; что sender ID — реальный человек; отсутствие компрометации коллектора до записи; допустимость в суде.

[Свидетель](https://phishdestroy.github.io/TgWitness/ru/docs/reference/witness/)

Локальный эксперимент с SHA-256

### Попробуйте изменить запись №2

Следующая запись хранит прежнюю ссылку. При изменении текста пересчитывается хеш записи №2.

Текст записи № 2

Запись 1`h1`Начинается с 64 нулей

Запись 2`h2`Содержит сохранённый h1

Запись 3`h3`Содержит сохранённый h2

Статический пример: h2 включает «Meet at 11:00». Изменение текста меняет h2; запись №3 по-прежнему ссылается на прежний h2.

**Посмотреть полные хеши**

Хеш сохраненной записи № 2

`SHA-256(e₂)`

Пересчитанный хеш записи № 2

`SHA-256(e₂)`

Здесь вычисляются хеши, а не подписи. Настоящий верификатор проверяет каждую подпись и связь по доверенному ключу.

 [Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/how-it-works/)

## Сценарии применения

Вымышленные ситуации. Начинайте сбор до интересующего события; сохраняйте границы и разрывы вместе с содержимым.

### Канал изменяет платежные реквизиты

Режим → события

Выбранные чаты → сообщения, правки, удаления.

Что получаем

Наблюдаемые версии сообщений и вложения по хешу.

Проверка

Подписанный ZIP + сохранённый checkpoint + проверенный ответ TSA.

**Чего не делает** Он не восстанавливает оригинал, который никогда не был зафиксирован.

### Сообщения исчезают после инцидента

Режим → события

Папка или весь аккаунт → все категории событий.

Что получаем

Сохранённые оригиналы, уведомления об удалении и coverage с разрывами.

Проверка

Подписанный ZIP + независимый журнал свидетеля.

**Чего не делает** Он не позволяет идентифицировать лицо, удалившее сообщение, на основании уведомления, в котором не указан субъект действия.

### Расследование бота-магазина

Режим → события

Investigation mode → кнопки, превью ссылок и явный запуск бота.

Что получаем

Подписанные interaction-записи, callback-квитанции и сохранённые профили.

Проверка

Подписанный ZIP; досье проверяется по этому ZIP.

**Чего не делает** Он не открывает веб-приложение бота, не осуществляет платежи и не регистрирует обратные вызовы других клиентов.

### Участник меняет имена в разных чатах

Режим → события

Любой режим → наблюдённые метаданные отправителя и профиля.

Что получаем

История имён и username по численному ID, ссылки «также в…» и извлечённые зацепки.

Проверка

Dossier JSON с проверкой против подписанного ZIP.

**Чего не делает** Он не превращает кошелек, строку, похожую на номер телефона, или имя пользователя в подтверждённую личность.

### Долгое наблюдение с внешней копией

Режим → события

Любой режим → Evidence mode и S3-реплика с поддержкой Object Lock.

Что получаем

Зашифрованная копия, сохраненные контрольные точки и ответы с временными метками.

Проверка

Восстановите данные с помощью экспортированного ключа, а затем проверите их без использования исходного сервера.

**Чего не делает** Он не заменяет независимого свидетеля или отдельно хранящийся ключ дешифрования.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/investigation/)

## Экспорт и передача

Передайте подписанный оригинал, заранее сохранённый отпечаток ключа, подходящий checkpoint и результат проверки.

- ZIP с подписью
- JSONL
- CSV
- HTML
- Контрольная точка
- Run receipt
- Экспорт чатов: chat.json / chat.html
- Досье JSON
- Защищено паролем AES-256 ZIP
- Отдельные экспорты нескольких аккаунтов
- Потоковый CLI: лимит по умолчанию 5 GiB

```
python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
```

Верификатор берите из доверенной копии, а не из проверяемого архива.

**Чего не делает** Отдельные CSV и HTML не являются подписанными контейнерами. Пароль защищает передачу, но не подтверждает подлинность. Экспорты разных аккаунтов не объединяют журналы.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/evidence/)

## Честное сравнение подходов

Базовые артефакты без добавленных подписей, меток времени и свидетелей. Возможности скриптов и логгеров зависят от реализации; «частично» означает только наблюдённый или видимый материал.

| Подход | Изменения / удаления | Подпись записи | Внешняя метка времени | Независимый свидетель | Покрытие / разрывы | Проверка без автора |
| --- | --- | --- | --- | --- | --- | --- |
| Экспорт из Telegram Desktop | Частично | Нет | Нет | Нет | Нет | Нет |
| Telethon-скрипт выгрузки | Частично | Нет | Нет | Нет | Нет | Нет |
| Логгер удалений: текстовый журнал | Частично | Нет | Нет | Нет | Нет | Нет |
| Скриншоты / веб-фиксация | Частично | Нет | Нет | Нет | Нет | Нет |
| TgWitness с настроенными дополнениями | Частично | Да | Да | Да | Частично | Да |

**Чего не делает** Не оценивает каждый скрипт или логгер. Метки времени и свидетель требуют отдельных сервисов и доверенных ключей; они не устанавливают истинность источника.

[Подробности](https://phishdestroy.github.io/TgWitness/ru/docs/reference/evidence/)

## Границы и честные оговорки

Проверка полезна, когда ясно, что именно она проверяет.

- Секретные чаты недоступны.
- Пока процесс остановлен, ничего не записывается; возможности восстановления ограничены.
- Проверенная запись не является доказательством достоверности её содержания.
- Оператор, обладающий ключом, может подписывать произвольный контент. Независимые свидетели и временные метки ограничивают возможность последующей подмены, но не предотвращают недобросовестный первоначальный захват данных.
- Используйте выделенный аккаунт, а не основной.
- Telegram может ограничивать доступ к аккаунтам из-за большого объёма запросов.

**Чего не делает** Ни один режим или уровень не устанавливает допустимость в суде, доставку каждого обновления Telegram или личность реального человека.

[Setup guide](https://phishdestroy.github.io/TgWitness/demo/guide.html?lang=ru)[Dedicated account](https://phishdestroy.github.io/TgWitness/ru/docs/dedicated-account/)[EVIDENCE.md](https://phishdestroy.github.io/TgWitness/ru/docs/reference/evidence/)[INVESTIGATION.md](https://phishdestroy.github.io/TgWitness/ru/docs/reference/investigation/)
