# Можливості та обмеження

Canonical page: https://phishdestroy.github.io/TgWitness/uk/docs/reference/features/

Що TgWitness реалізує на сьогодні, які обмеження накладає платформа Telegram і що залишається завданням на майбутнє.

Орієнтаційний термін: 26 жовтня 2026 року. Основним сценарієм використання є приватні групи та канали Telegram, доступні для підключених облікових записів. У цьому документі розмежовано реалізовану поведінку, межі платформи та майбутні завдання. Пункт цільової архітектури не є твердженням про те, що ця функція вже існує.

## Автономний додаток

TgWitness має власну процедуру встановлення, каталог даних та цикл випуску версій. Вбудований веб-інтерфейс забезпечує налаштування та перегляд; експортовані записи можна використовувати самостійно.

Користувач підключає свої акаунти, обирає джерела, доступні для кожного з них, та отримує збережений журнал спостережень. Панель відображає вміст, збережені зміни, походження спостережень та відомі прогалини. Інший слідчий може перевірити експортовані матеріали.

Важливими є чотири окремі стани: авторизація облікового запису, доступ до джерела, працездатний колектор та ступінь підтвердження повноти доставки. Жоден із перших трьох не доводить автоматично четвертого. Неактивна група не обов’язково означає несправний колектор.

## Спільні розслідування

Адміністратор може видавати [токени доступу](https://phishdestroy.github.io/TgWitness/uk/docs/reference/access/), обмежені робочими просторами та окремими чатами, із сімома правами доступу, обмеженнями за IP-адресами, терміном дії, обмеженнями входу та контролем сеансів. Рецензент із правами лише на читання може перевіряти справу, не отримуючи авторизацію Telegram або ключ головної панелі. Доступ, обмежений чатом, залишається окремим від налаштувань на рівні облікового запису та експорту повного журналу.

Автоматичний MTProxy підтримує робочі маршрути Telegram із чотирьох публічних джерел або каталогу операторів. [Режими IP](https://phishdestroy.github.io/TgWitness/uk/docs/reference/connection/#ip-modes) визначають, чи у разі збою потрібно чекати на інший проксі-сервер, чи можна використовувати явно дозволений прямий маршрут. Зовнішні HTTP-запити мають окремий маршрут та перемикач для вимкнення.

## Інструменти архівування

У поточній версії `main` додано функції [збору історії](https://phishdestroy.github.io/TgWitness/uk/docs/reference/history/), [пошуку та аналізу архіву](https://phishdestroy.github.io/TgWitness/uk/docs/reference/analysis/), [MCP у режимі «тільки для читання»](https://phishdestroy.github.io/TgWitness/uk/docs/reference/mcp/), [локального OCR/транскрипції](https://phishdestroy.github.io/TgWitness/uk/docs/reference/media-analysis/) та [вихідних вебхуків](https://phishdestroy.github.io/TgWitness/uk/docs/reference/webhooks/). Це функції, доступні у вихідному коді, додані після портативної попередньої версії 0.7.0. Аналітичні звіти та розпізнаний текст зберігаються окремо від зафіксованих подій.

## Додаткові опції

Повсякденна настройка: обліковий запис → джерела → спостереження. **Додаткові функції** — це окремий розділ із ботом-свідком Telegram та попереднім переглядом знімків на GitHub. Кожна з них вказує свою доступність та вимоги перед показом налаштувань. Вибір картки відкриває інструкції; це не призводить до реєстрації чи запуску служби.

Налаштування бота складається з трьох кроків: створення доступу тільки для читання, вибір налаштувань публікації та запуск на хості Witness. Параметри мережі та публікації, існуючі з’єднання та команди перевірки надаються за запитом. Завантажена конфігурація відрізняється від запущеного «witness». Перемикання додаткових опцій зберігає чернетку; зміни облікового запису та блокування очищають тимчасовий токен і форму. Вбудований посібник містить інструкції щодо запуску. [GitHub Actions](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md)запускає закріплений колектор із вашого форку, фіксує один чат і створює зашифрований пакет даних із інформацією про походження робочого процесу.

## Протокол та приватні джерела

**MTProto — це протокол Telegram; Telethon — це бібліотека Python, яку TgWitness використовує для роботи з MTProto.** Це не альтернативні методи підключення. Функція «Збір» використовує MTProto; опціональний «свідок» публікує підписані перевірки через Bot API.

Кожна робоча область має власного авторизованого клієнта та потік оновлень облікового запису. TgWitness відбирає спостереження з налаштованих джерел і надсилає окремі явні запити для таких функцій, як створення знімків історії та завантаження медіафайлів.

Приватному джерелу не потрібне публічне ім’я користувача. Ідентифікаторами є тип вузла Telegram та числовий ідентифікатор; назви та імена користувачів можуть змінюватися. Доступ залежить від існуючого членства та дозволів. TgWitness не приєднується до джерел автоматично та не обходить процедуру затвердження приєднання. Хеш доступу з іншого облікового запису не є універсальним токеном доступу.

Модель збору даних повинна враховувати приховану історію до приєднання, ролі учасників/адміністраторів, скасування сеансів, видалення або зміну дозволів, міграцію з групи до супергрупи, теми/форуми, пов’язані обговорення, ідентифікатори каналів та недоступні вкладення. Не кожна комбінація була перевірена в реальному часі.

Видимість джерела перевіряється під час запуску колектора. Відсутність джерела у результаті обмеженого діалогу означає, що **доступ не підтверджено**, а не те, що видалення доведено. Одне недоступне джерело не заважає спостереженню за іншими доступними джерелами. Ніколи не розміщуйте посилання на запрошення або реальні сесії у публічних фіксаціях.

## Кілька облікових записів

Панель підтримує будь-яку кількість **робочих просторів**, кожен із яких має:

- Авторизація, зашифроване сховище та маршрут з’єднання.
- Журнал на базі SQLite та ідентифікатор підпису Ed25519.
- Вибрані джерела, черга медіафайлів та налаштування збору даних.
- Стан спостереження, помилки, контрольні точки та експорт даних.

Перемикання відображуваного робочого простору не зупиняє роботу іншого колектора. Дублювання авторизації облікового запису у різних робочих просторах не допускається. Журнал, який уже прив’язаний до одного облікового запису Telegram, не можна перепризначити іншому; дозволено повторне підключення того самого облікового запису. Це зберігає ідентичність облікового запису та відповідну область ідентифікаторів повідомлень.

Немає фіксованої кількості та гарантії виміряної пропускної здатності. Робочі простори використовують спільний процес Python та цикл подій. Створення окремих робочих процесів для облікових записів залишається завданням на майбутнє. Для ізоляції поточних процесів використовуйте окремі інсталяції, порти та каталоги даних.

Призначте кожному обліковому запису джерела, до яких він має доступ. Різні облікові записи можуть спостерігати за однією й тією ж групою, але їхні спостереження залишаються окремими та зберігають своє походження. Два облікові записи на одному комп’ютері, що контролюється оператором, не є двома незалежними свідками. Експорт здійснюється за робочим простором; об’єднаний пакет матеріалів справи або глобальна хронологія Telegram не реалізовані.

## Збір даних та вказівка джерел

У розділі «Джерела» передбачені налаштування для кожного облікового запису щодо нових повідомлень, редагувань, видалень, реакцій та членства у групах. У пресетах зберігаються або всі категорії, або лише повідомлення/редагування/видалення. Ця політика застосовується до вибраних груп робочого простору, зберігається після перезапуску та підписується з зазначенням стану до та після змін. За замовчуванням зберігаються всі категорії. Вимкнення категорії не видаляє старі записи; повторне ввімкнення не відновлює пропущені події. Операційні записи, інші події групового сервісу та явні знімки історії є окремими. Зафіксовані об’єкти Telegram можуть зберігати вбудовані метадані незалежно від параметрів окремого оновлення. Наразі немає можливості заміни категорій для окремих груп.

| Матеріал | Зафіксовано зараз | Межі |
| --- | --- | --- |
| Повідомлення | Текст, ідентифікатори учасників/повідомлень, метадані відправника, відповіді та оригінальний конверт оновлення | Відсутність публічно перевірюваного підпису Telegram для цього повідомлення |
| Редагувати | Нова виявлена версія та будь-які раніше збережені версії | Зміни, внесені під час простою, можуть бути втрачені; відправник не обов’язково є редактором |
| Видалення | Повідомлення та раніше збережений вміст, якщо такий є | Зазвичай не вказується, хто видалив повідомлення, або точний час дії |
| Видалення без обмеження обсягу | Оригінальне повідомлення на рівні облікового запису без припущень щодо співрозмовника | Сувора кореляція з раніше збереженими ідентифікаторами на рівні облікового запису — завдання на майбутнє. |
| Реакція | Надані лічильники та видимі останні ідентифікатори | Для отримання повного списку доступних реакторів потрібні окремі запити; канали можуть приховувати ідентифікаційні дані |
| Членство | Сервісні повідомлення та оновлення для учасників, яким було надіслано повідомлення | Видимість залежить від ролі та типу чату; відсутність подій не свідчить про їхню відсутність |
| Дії адміністратора | Лише актуальні оновлення | Окреме опитування журналу адміністратора не реалізовано |
| Вкладення | Опис оригінальної версії, завантажені байти/SHA-256 та результати спроб | Зниклий файл може виявитися неможливим для відновлення; остання версія не замінюється |
| Історія | Чіткий знімок поточних видимих повідомлень | Не відтворює всі редагування або видалений вміст |
| Процес збору даних | Запуск/зупинка, перевірка працездатності, помилки, налаштування, сфера застосування та отримання програми | Самозвітування, а не незалежне підтвердження процесу |

Дія приписується особі лише в тому випадку, якщо джерело фактично вказує цю особу. В іншому випадку інтерфейс повідомляє про відсутність атрибуції. Імена користувачів та імена є спостережуваними атрибутами, а не доказом реальної ідентичності.

## Ємність та обмеження Telegram

Не існує універсальної кількості чатів, які можна моніторити з гарантованою якістю. Пропускна здатність залежить від пікової кількості подій за секунду, обсягу та розміру вкладень, додаткових RPC, активних облікових записів, затримки/вільного місця на диску, стану мережі, обмежень Telegram, прийнятної затримки та глибини черги.

Telegram розрізняє пасивну доставку та активне коротке опитування. У документації до оновлення описано додаткові виклики `updates.getChannelDifference` для відкритих каналів/супергруп та рекомендовано не більше **десяти джерел**, **що одночасно підлягають короткому опитуванню**. Це не обмеження у десять обраних груп і не гарантія повноти.

| Режим | Мета | Статус |
| --- | --- | --- |
| Стандартне зауваження | Запис оновлень, отриманих із вибраних джерел | Реалізовано |
| Пріоритетні спостереження | Додаткові перевірки на відмінності для обмеженого набору джерел | Не реалізовано в режимі користувача |

Довільне високочастотне опитування, ігнорування FloodWait або припущення про лінійну пропускну здатність додаткових облікових записів не є обґрунтованою моделлю визначення розміру. За замовчуванням обмеження становлять перші 1 000 діалогів у списку, до 500 повідомлень на знімок історії, 1–2 000 МіБ на зібраний файл за типом та 4 ГіБ нестисненого підписаного вмісту ZIP; кожне значення змінюється для кожного робочого простору в розділі **«Параметри**». Експорт не має фіксованого обмеження кількості подій. За замовчуванням резервний режим браузера обмежений 128 Мб; для CLI-інтерфейсу потокової передачі встановлюється обмеження на передачу, яке за замовчуванням становить 5 Гб.

`tools/check_capacity.py` вимірює локальне синтетичне надходження та експорт даних. Його результати не є вимірами доставки Telegram або гарантованою кількістю реальних чатів. Див. [VERIFICATION.md](https://phishdestroy.github.io/TgWitness/uk/docs/reference/verification/) для ознайомлення з виміряною версією та навантаженням.

## Надійність та відновлення

Реалізовані функції включають: транзакції SQLite WAL/синхронні; атомарні записи повідомлень та мультимедійних завдань; постійні завдання та затримки повторних спроб; дескриптори оригінальної версії; обмежені повторні спроби; збереження медіа-задачі FloodWait; завантаження медіа поза межами мережевого очікування текстової події; експорт зі стабільним префіксом під час продовження подальшого запису; атомарні налаштування та записи аудиту; збереження робочої авторизації після невдалого входу для заміни; ізоляцію пошкодженого додаткового робочого простору; явні спроби повторного підключення; чітке повідомлення про втрату авторизації; та виявлення змін за реальним часом за допомогою монотонного годинника.

Параметри pts/qts/seq облікових записів та каналів зберігаються та відновлюються після перезапуску, а відстежувані чати періодично перевіряються повторно; див. [формат доказів](https://phishdestroy.github.io/TgWitness/uk/docs/reference/evidence/#durable-collection-and-process-receipts-02). Періодичне збереження позиції не є атомарним підтвердженням прийняття журналу без втрат даних.

На початку кожного процесу фіксуються попередній покажчик та межа офлайн-періоду. Поточна історія не розглядається як заповнення прогалин. Обсяг збережених даних у Telegram є обмеженим; `differenceTooLong` не може відтворити весь зниклий вміст. Невідновлювані прогалини повинні залишатися явно позначеними, навіть якщо пізніший знімок історії буде успішним.

## Модель доказів

Кожна подія фіксує послідовність, місцевий час спостереження за UTC, час джерела (якщо вказано), тип, джерело, учасника (якщо вказано), оригінальний вміст, попередній хеш та підпис. Спостереження за повідомленнями також зберігають обліковий запис колектора та контекст запуску.

Підписана квитанція про процес містить випадковий ідентифікатор запуску; версії залежностей TgWitness/Python/OS; значення SHA-256 вихідних файлів та сукупний відбиток; початковий обліковий запис, область дії та налаштування; показники UTC/монотонності; а також попередній заголовок журналу. Зміни налаштувань, запуск/зупинка та помилки заносяться до того самого журналу. Контрольні точки зберігаються під час запуску, кожні п’ять хвилин під час спостереження (параметр можна змінити) та при упорядкованій зупинці. Збережена локальна контрольна точка дозволяє виявити відкат до попереднього префікса журналу.

| Механізм | Що він встановлює |
| --- | --- |
| SHA-256 файлу | Байти збігаються з відомим дайджестом |
| Ланцюжок хеш-кодів подій | Запис упорядкування/взаємозв’язку відносно відомої межі |
| Ed25519 | Підпис за допомогою певного ключа |
| Незалежно збережений контрольний пункт | Наступні матеріали відповідають встановленим межам |
| Вимірювання розміру програмного файлу | Звіт колектора про виміряні файли |
| Дійсна незалежна відповідь TSA | Наявність певних байтів на момент часу TSA за умови явних припущень щодо надійності |

Реалізовано підготовку запитів за стандартом RFC 3161 та перевірку відповідей за допомогою OpenSSL. Автоматичне надсилання не реалізовано. Запит або локальний підпис, що містить час роботи машини, не є незалежним часовим штампом. Див. [TIMESTAMP.md](https://phishdestroy.github.io/TgWitness/uk/docs/reference/timestamp/).

Оператор, який контролює колектор та ключ підпису, може сфабрикувати нові підписані записи. Підписи не підтверджують походження з Telegram, правдивість або автоматичну юридичну прийнятність. Для забезпечення більш надійного зберігання необхідні незалежні контрольні точки/зберігання за часом, контроль доступу до ключів, записи про передачу даних та перевірка за допомогою надійного програмного забезпечення.

## Експорт, розгортання та передача

Підписаний ZIP-архів містить оригінальні файли у форматах JSONL, CSV, HTML, збережені вкладення, хеші, підписаний маніфест та зручний засіб перевірки. Він охоплює одну робочу область та фіксований повний префікс журналу. Фільтри пошуку на панелі не видаляють записи без попередження. Секретні ключі, токенів та сеансів Telegram виключаються; оригінальні записи все ще можуть містити особисту інформацію та метадані Telegram.

Зберігайте дайджест ZIP-архіву, надійний відбиток, контрольну точку, підтвердження обробки та передачі окремо. Використовуйте верифікатор із надійної інсталяції, а не довіряйте виконуваному коду лише тому, що він міститься у перевіреному ZIP-архіві.

Інтерфейс браузера поставляється локально без Node.js, CDN або зовнішніх шрифтів. Установкою керує один токен оператора. Для віддаленого доступу потрібен HTTPS або SSH-тунель. Надаються нативні визначення на Python та для контейнерів, а приклади служб містяться в [каталозі deploy/](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md); виконані перевірки платформи перелічені окремо.

Робоча область за замовчуванням використовує кореневий каталог даних; додаткові робочі області використовують `profiles/<id>/`. Для створення резервної копії потрібно зупинити процес та мати повний набір даних/ключів. ZIP-файли з доказами не є резервними копіями програми. Для секретних даних можна використовувати зовнішній головний ключ для нового каталогу даних; шифрування журналу/медіа забезпечується диском/томом оператора. Див. [CONNECTION-SECURITY.md](https://phishdestroy.github.io/TgWitness/uk/docs/reference/connection/) та [OPERATIONS.md](https://phishdestroy.github.io/TgWitness/uk/docs/reference/operations/).

## Критерії стабільного випуску

До випуску стабільної версії слід зазначити:

1. Реальні приватні групи, супергрупи, форуми та канали з ролями учасників/адміністраторів та прихованою/видимою історією, включаючи дані про вхід/двофакторну автентифікацію, скасування доступу та втрату доступу.
2. Контрольовані редагування, видалення, реакції, членство та медіа-матеріали у порівнянні з відомими діями.
3. Збої процесів/хостингу, несправності диска/переповнення диска, посилання на файли, термін дії яких закінчився, FloodWait, втрата мережевого з’єднання, пошкоджені файли та відкат бази даних.
4. Тривале використання декількох облікових записів із контрольованими затримками, чергами, пам’яттю та дисковим простором, включаючи як «тихі», так і «гучні» джерела разом.
5. Перерва між переходом у наступний стан MTProto та прийняттям запису до журналу.
6. Чиста інсталяція на передбаченій матриці ОС/контейнерів та перевірене відновлення резервної копії.
7. Незалежний огляд питань безпеки, підписів та тверджень щодо авторства/доказів.

Опитування журналу адміністратора, додаткові списки реакторів, опитування за пріоритетом, окремі робочі процеси, а також шифрування на рівні всього додатка залишаються завданнями на майбутнє. Доступ до панелі з обмеженим обсягом повноважень описано у розділі [«Доступ та дозволи](https://phishdestroy.github.io/TgWitness/uk/docs/reference/access/)». Версія 0.6 підтримує обмежений TData для одного облікового запису та імпорт файлів облікових записів, описані у [файлі ACCOUNTS.md](https://phishdestroy.github.io/TgWitness/uk/docs/reference/accounts/). Перед публікацією ознайомтеся з умовами використання API Telegram. Дослідницькі посилання та висновки щодо платформи знаходяться у [файлі RESEARCH.md](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/RESEARCH.md).
