# TgWitness · Deutsch > Documentation edition: Deutsch. Project version: `0.9.1`. Source branch: `main`. This index links the Markdown editions of the public pages. The complete handbook is built from the same page content, including source URLs. Untranslated sections retain the English original; a language edition is not a claim that every section has been translated. - [Project context, installation, measured scale and verification limits](https://phishdestroy.github.io/TgWitness/docs/reference/overview/index.md) - [English project summary](https://phishdestroy.github.io/TgWitness/llms.txt) - [Complete handbook · Deutsch](https://phishdestroy.github.io/TgWitness/de/llms-full.txt) - [Complete handbook as Markdown · Deutsch](https://phishdestroy.github.io/TgWitness/de/llms-full.md) - [Source code and release history](https://github.com/phishdestroy/TgWitness) - [Collection modes and evidence levels](https://phishdestroy.github.io/TgWitness/de/guides/modes.md) - [Published checks and measurements](https://phishdestroy.github.io/TgWitness/docs/validation/index.md) ## Complete documentation map ### Guides - [Das Archiv bearbeiten](https://phishdestroy.github.io/TgWitness/de/docs/archive/index.md): Laden Sie den Verlauf, durchsuchen Sie gespeicherte Datensätze, überprüfen Sie KI-Quellen und verbinden Sie Ihre Tools. - [GitHub Actions-Aufzeichnung](https://phishdestroy.github.io/TgWitness/de/docs/capture/index.md): Wähle Takeout,den Export über die reguläre API oder ein Chatjournal auf einem temporären GitHub-Runner. - [Spezielles Konto](https://phishdestroy.github.io/TgWitness/de/docs/dedicated-account/index.md): Richten Sie ein separates Telegram-Konto für die Datenerfassung ein. - [In wenigen Minuten loslegen](https://phishdestroy.github.io/TgWitness/de/docs/start/index.md): Installieren Sie mit einem Befehl, verbinden Sie ein Telegram-Konto und exportieren Sie ein überprüfbares Archiv unter Windows, Linux oder macOS. - [Ein Konto verbinden](https://phishdestroy.github.io/TgWitness/de/docs/accounts/index.md): Verbinden Sie Telegram über einen QR-Code, eine Telefonnummer oder einen Sitzungsimport. Wählen Sie die Quellen aus und überprüfen Sie, ob neue Nachrichten in Ihrem Protokoll erscheinen. - [Wählen Sie einen Proxy](https://phishdestroy.github.io/TgWitness/de/docs/proxies/index.md): Verwalten Sie automatische MTProxy-Routen oder verwenden Sie Ihren eigenen Proxy. Wählen Sie IP-Modi, Fallback-Regeln und die Route für externe Anfragen aus. - [Exportieren und verifizieren](https://phishdestroy.github.io/TgWitness/de/docs/exports/index.md): Exportieren Sie den erfassten Telegram-Verlauf, überprüfen Sie die Signaturen und vergleichen Sie das Protokoll mit einem von einem unabhängigen Zeugen aufbewahrten Kontrollpunkt. - [Erfahren Sie, wie die Beweissicherung funktioniert](https://phishdestroy.github.io/TgWitness/de/docs/concepts/index.md): Verfolgen Sie eine Nachricht von der Erfassung bis zum Prüfpunkt. Ändern Sie einen Beispieldatensatz, berechnen Sie dessen SHA-256-Kette neu und sehen Sie, was ein gespeicherter Prüfpunkt erkennt. - [Untersuchungen über alle Chats hinweg](https://phishdestroy.github.io/TgWitness/de/docs/cases/index.md): Führen Sie eine lückenlose Telegram-Untersuchung über Kanäle, Gruppen, private Chats und Bots hinweg durch: Erfassung des gesamten Kontos, Verlauf, Personen, Links, Dateien, Zeitachsen und verifizierte Beweise. - [Erstellen Sie ein Case Board](https://phishdestroy.github.io/TgWitness/de/docs/case-board/index.md): Sammeln Sie gespeicherte Beobachtungen, genaue Markierungen und Aktionsausschnitte auf einem privaten Board, besprechen Sie diese mit Ihrem Team und präsentieren Sie eine Zusammenstellung. - [Erstellen Sie einen Bericht](https://phishdestroy.github.io/TgWitness/de/docs/reports/index.md): Wählen Sie die Berichtsdaten, eines von acht Designs und den Inhalt aus, zeigen Sie dann eine Vorschau an und exportieren Sie HTML, ein signiertes PDF oder ein vollständiges Beweismittelpaket. - [Bereiten Sie eine Kopie zur Weitergabe vor](https://phishdestroy.github.io/TgWitness/de/docs/handover/index.md): Wählen Sie die Datensätze und Felder aus, die ein Empfänger erhalten darf, prüfen Sie die fertige Kopie und verifizieren Sie das signierte Manifest sowie die Grenzen des Quelljournals. - [Verwalten Sie eine Gruppe von Konten](https://phishdestroy.github.io/TgWitness/de/docs/groups/index.md): Vergleichen Sie Gruppen-Arbeitsbereiche, suchen Sie eine Quelle, überprüfen Sie Beobachtungszeiträume und wenden Sie gemeinsame Einstellungen mit Ausnahmen pro Konto an. - [Sorgen Sie für Sicherheit](https://phishdestroy.github.io/TgWitness/de/docs/security/index.md): Erfahren Sie, wo Sitzungen, Schlüssel und Beweismaterial gespeichert sind, welche Daten Ihren Rechner verlassen, welchen Schutz die Sicherheitsmaßnahmen bieten und wie Sie eine Installation absichern können. - [Einen Fall teilen](https://phishdestroy.github.io/TgWitness/de/docs/access/index.md): Gewähren Sie Prüfern und Analysten Zugriff auf ausgewählte Konten und Chats mit separaten Berechtigungen, Sitzungsbeschränkungen und widerrufbaren Tokens. - [Einen Witness-Bot einrichten](https://phishdestroy.github.io/TgWitness/de/docs/witness/index.md): Veröffentlichen Sie signierte Protokoll-Checkpoints in Ihrem Telegram-Kanal mit einem separaten Zeugen, einem eigenen Schlüssel und einem schreibgeschützten Zugriff für den Collector. - [Halten Sie den Betrieb aufrecht](https://phishdestroy.github.io/TgWitness/de/docs/server/index.md): Führen Sie TgWitness auf einem Server mit dauerhaftem Speicher, privatem Panel-Zugriff, Backups und Überprüfungen nach einem Neustart aus. - [Finden Sie heraus, was schiefgelaufen ist](https://phishdestroy.github.io/TgWitness/de/docs/troubleshooting/index.md): Überprüfen Sie den Zugriff auf das Kontrollpanel, die Telegram-Verbindung, fehlende Nachrichten, „FloodWait“ und den Witness-Status anhand der für jedes Problem zutreffenden Signale. ### Reference - [Geheime Chats: Implementierung und Demo](https://phishdestroy.github.io/TgWitness/de/docs/reference/secret-chats/index.md): Machen Sie sich mit der separaten Secret Chat-Implementierung vertraut, probieren Sie die fiktive Benutzeroberfläche aus und überprüfen Sie noch offene Fehler. - [TgWitness: Start, Umfang und Nachweise](https://phishdestroy.github.io/TgWitness/de/docs/reference/overview/index.md): Installation mit einem Befehl oder Erfassung über GitHub Actions. Machen Sie sich mit den Untersuchungsoptionen, dem veröffentlichten Umfang und dem, was ein Archiv verifiziert, vertraut. - [Quellhistorie laden](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/index.md): Laden Sie vergangene Nachrichten aus aktivierten Quellen, halten Sie den Vorgang an und setzen Sie ihn fort, und überprüfen Sie einen signierten Fortschrittsbericht. - [Archivanalyse](https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/index.md): Durchsuchen Sie gespeicherte Nachrichten, überprüfen Sie KI-Eingaben und erstellen Sie Analyseberichte mit Quellenangaben. - [Befehlszeile](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/index.md): Suchen, Kontext lesen, Aktivitäten zählen und gespeicherte Nachrichten aus Skripten und Agenten exportieren – mit --json-Ausgabe, stabilen Exit-Codes und bereichsgebundenen, schreibgeschützten Tokens. - [Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/index.md): Suche nach gespeicherten Nachrichten anhand von Wortformen, genauen Phrasen, Domains und @Benutzernamen, wobei die besten Treffer zuerst angezeigt werden und der Index mit dem signierten Protokoll verknüpft ist. - [Schreibgeschütztes MCP](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/index.md): Verbinden Sie einen MCP-Client mit ausgewählten Arbeitsbereichen und Chats mit zeitlich begrenztem, widerrufbarem Zugriff. - [Lokale OCR und Transkription](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/index.md): Erkennen Sie erfasste Bilder und Audiodateien mit einem lokalen Worker; verknüpfen Sie den abgeleiteten Text weiterhin mit der Quelldatei. - [Ausgehende Webhooks](https://phishdestroy.github.io/TgWitness/de/docs/reference/webhooks/index.md): Sendet definierte Ereignisse mit HMAC-Signaturen, Wiederholungsversuchen und Zustellstatus an HTTPS-Empfänger. - [Hinweis zur Inkompatibilität mit bestimmten Betreibern](https://phishdestroy.github.io/TgWitness/de/docs/reference/notice/index.md): Unser Betreiberhinweis zu Taylor Wessing und dessen Quelldatensatz. - [Hinweis zur Lizenz und zur architektonischen Inkompatibilität](https://phishdestroy.github.io/TgWitness/de/docs/reference/license/index.md): TgWitness steht unter der MIT-Lizenz für jedermann, weshalb es architektonisch nicht mit dem Taylor-Wessing-Workflow kompatibel ist. - [Schnellstart](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/index.md): Alle Möglichkeiten zur Installation und zum Start von TgWitness: Windows-Paket, Python, Docker und die synthetische Demo mit ersten Überprüfungen. - [Konten und Sitzungsformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/index.md): Melden Sie sich per Telefon, QR-Code oder Authentifizierungsschlüssel an, importieren Sie Sitzungen aus Telethon, Pyrogram oder Telegram Desktop und verwalten Sie mehrere Konten. - [Zugriff und Berechtigungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/index.md): Legen Sie den Zugriff auf Konten und Chats fest, wählen Sie Berechtigungen aus, beschränken Sie Sitzungen und IP-Adressen und entziehen Sie den Zugriff. - [Verbindung, Proxys und Datenschutz](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/index.md): Authentifizierung, automatische Proxy-Pools, IP-Modi, Fallback-Richtlinie, externe Anfragen und Speicherung von Geheimnissen. - [Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/index.md): Führen Sie TgWitness als Dienst unter Windows, Linux, macOS oder Docker hinter einer HTTPS-Verbindung aus, einschließlich Backups und Updates. - [So funktioniert die Datenerfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/index.md): Beobachtungsumfang, Live-Aktualisierungen, Nachprüfungen, Anhänge, eigene Aktionen und die Bedeutung von Lücken – Eintrag für Eintrag. - [Arbeitsabläufe und Funktionen](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/index.md): Täglicher Betrieb des Dashboards: Betriebsmodi, Überwachungskategorien, Parameter, Benachrichtigungen, Exporte, Datensicherung und Kapazität. - [Untersuchungsmodus](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/index.md): Umfassende Untersuchungen ganzer Konten über Kanäle, Gruppen, private Chats und Bots hinweg – vom Untersuchungsumfang bis hin zu einem verifizierten Fallpaket. - [Case-Board-Referenz](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/index.md): Lesezeichen, exakte Markierungen, Aktionsausschnitte, Diskussionen, bereichsbezogener Zugriff und der von Case Board verwendete Verlauf der signierten Anmerkungen. - [Berichtskonfiguration und -überprüfung](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/index.md): Berichtsfilter, acht Designs, Inhaltsvorlagen, gespeicherte Änderungsverläufe und die Bewertung sind in den signierten Exporten enthalten. - [Funktionen und Einschränkungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/index.md): Das aktuelle Erfassungsmodell, Workflows für mehrere Konten, Exporte und operative Grenzen von TgWitness. - [So funktioniert das Beweismaterial](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/index.md): Hash-Kette, Signaturen, Kontrollpunkte und Zeugen werden anhand der genauen Formeln erläutert, die der Verifizierer verwendet. - [Format der Beweismittel](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/index.md): Inhalt der signierten ZIP-Datei, Protokolltypen, Prozessbestätigungen, Benutzerprofile, externe Kopien und Offline-Überprüfung. - [Unabhängiger Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/index.md): Führen Sie „Witness“ mit einem eigenen Schlüssel und Bot aus, veröffentlichen Sie signierte Checkpoints in einem Kanal und vergleichen Sie die Exporte damit. - [Zeitstempel](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/index.md): RFC 3161-Zeitstempel für signierte Checkpoints: Was wird an die Behörde gesendet und wie wird eine Antwort verifiziert? - [Sicherheit und Datenumgang](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/index.md): Bedrohungsmodell, Zugriffsmodell, gespeicherte vertrauliche Daten, Netzwerkexposition, Import von Sitzungen und Anleitung zur Meldung einer Sicherheitslücke. - [Architektur](https://phishdestroy.github.io/TgWitness/de/docs/reference/architecture/index.md): Bestandteile des Collectors, des Panels, des Journals, der Worker und des Witness sowie der Datenfluss zwischen diesen Komponenten. - [Was wurde getestet?](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/index.md): Der Live-Telegram-Test, automatisierte Prüfungen, Browser-Prüfungen und was noch nicht verifiziert ist. - [Änderungsprotokoll](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/index.md): Alle Änderungen pro Version, einschließlich der noch nicht veröffentlichten Änderungen. - [Anleitung zum Panel](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/index.md): Alle Bildschirme des Panels: Chats, Tagebuch, Quellen, Exporte, Extras, Schutzmodi und die Code-Prüfung. - [Erste Einrichtung und Einstellungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/index.md): Der Einrichtungsassistent, Ziele, Benutzeroberflächenebenen, Verbindungswege und Einstellungen, die von einer Kontengruppe gemeinsam genutzt werden. - [Installieren, überprüfen und aktualisieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/index.md): Installieren Sie das Tool mit einem einzigen Befehl, überprüfen Sie Signaturen und Hashes, aktualisieren Sie die Installation und entfernen Sie sie. - [Speicherung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/index.md): Backups, das Verschieben älterer Dateien in Ihre Cloud, Kopien unter „Object Lock“ und die Wiederherstellung auf einem neuen Rechner. - [Kontoexport](https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/index.md): Exportieren Sie, was ein Konto derzeit lesen kann: Umfang, wiederaufnehmbare Aufträge, ein signiertes Archiv und minimierte Freigabekopien. - [Öffentliches Showcase](https://phishdestroy.github.io/TgWitness/de/docs/reference/showcase/index.md): Veröffentlichen Sie gespeicherte Nachrichten ausgewählter öffentlicher Kanäle und signierte Momentaufnahmen über zeitlich begrenzte, widerrufbare Links. - [Hochsichere Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/index.md): Ein gesicherter 24/7-Server bei Hetzner oder Phala Cloud, Gateway-DNS und Überprüfungen, die von Dritten wiederholt werden können. --- # Telegram · In wenigen Minuten loslegen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/start/ Installieren Sie mit einem Befehl, verbinden Sie ein Telegram-Konto und exportieren Sie ein überprüfbares Archiv unter Windows, Linux oder macOS. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Mit einem einzigen Befehl installieren, ein Telegram-Konto verbinden und auswählen, was gespeichert werden soll. ## Auf Ihrem Computer installieren Das Installationsprogramm enthält Python und die erforderlichen Abhängigkeiten. Beginnen Sie mit einem Chat-Export; fügen Sie Beobachtungs- und Untersuchungswerkzeuge hinzu, wenn Sie diese benötigen. ### Linux / macOS ``` curl -fsSL https://get.destroy.tools/install.sh | bash ``` ### Windows · PowerShell / CMD ``` powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "irm https://get.destroy.tools/install.ps1 | iex" ``` Ubuntu-Server: Als Root ausführen. Desktop: Als normaler Benutzer ausführen. Öffnen Sie die vom Installationsprogramm angezeigte Panel-Adresse und verwenden Sie den dort angegebenen Zugangsschlüssel. Verbinden Sie anschließend Ihr Telegram-Konto. Der Panel-Schlüssel und Ihre Telegram-Autorisierung sind voneinander getrennt. [Installation, Signaturen und Updates](https://phishdestroy.github.io/TgWitness/docs/reference/installation/) erläutert den heruntergeladenen Build, den lokalen Zugriff und die Serveroptionen. [Anweisungen zum Quellcode und zu Docker](https://phishdestroy.github.io/TgWitness/docs/reference/quickstart/) bleiben verfügbar. ## Wählen Sie Ihre erste Aufgabe aus 1. [Verbinden Sie ein Konto](https://phishdestroy.github.io/TgWitness/de/docs/accounts/) per Telefon, QR-Code oder durch Import einer unterstützten Sitzung. 2. Wählen Sie den Umfang der Chats, des Ordners oder des Kontos aus. 3. [Exportieren Sie den ausgewählten Verlauf](https://phishdestroy.github.io/TgWitness/docs/reference/account-export/) oder starten Sie die Beobachtung, um zukünftige Änderungen zu erfassen. 4. [Überprüfen Sie das Archiv](https://phishdestroy.github.io/TgWitness/de/docs/exports/) anhand eines separat vertrauenswürdigen Schlüssel-Fingerabdrucks. ## Verwende einen temporären GitHub-Runner [GitHub Actions capture](https://phishdestroy.github.io/TgWitness/docs/capture/) führt Sie durch die Schritte Fork, Autorisierung, Gültigkeitsbereich und Archiv-Passwort. Laden Sie nach der Ausführung das verschlüsselte Ergebnis und dessen Workflow-Herkunft herunter. Für diesen Workflow ist kein permanenter Collector-Server erforderlich. ## Schauen Sie sich ohne Konto um [Öffnen Sie die Browser-Demo](https://phishdestroy.github.io/TgWitness/demo/?lang=de), um fiktive Nachrichten zu erkunden, Bearbeitungen zu vergleichen und einen Export zu überprüfen, bevor Sie etwas installieren. ![TgWitness-Konversationsansicht mit Beispielnachrichten](https://phishdestroy.github.io/TgWitness/assets/chats-dark.png) Ein Beispiel-Arbeitsbereich. Ihr eigenes Protokoll beginnt separat. ## Untersuchung fortsetzen Fügen Sie für laufende Arbeiten die Quellen, Dateirichtlinien, Suchfunktionen, Berichte und Freigabeberechtigungen hinzu, die Ihr Fall erfordert. „[Start, Skalierung und Nachweis“](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) erläutert die Auswahlmöglichkeiten und veröffentlichten Messwerte. Befolgen Sie für eine Serverinstallation die Anweisungen unter [„Keep it running](https://phishdestroy.github.io/TgWitness/de/docs/server/)“. --- # Verwenden Sie ein separates Konto. Niemals Ihr Hauptkonto. Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/dedicated-account/ Richten Sie ein separates Telegram-Konto für die Datenerfassung ein. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Bitte lesen Sie dies, bevor Sie ein Konto verbinden Unsere Empfehlung, Ihr Hauptkonto nicht zu verwenden, ist kein Scherz. Es ist die Realität. Hauptkonto - Ihr eigener App-Hash: 99 % abgemeldet - Sperren allein aufgrund eines niedrigen Vertrauensniveaus kommen häufig vor - Die Verwendung davon ist eine wirklich dumme Idee Zusätzliches Konto für öffentliche Paare - Über eine Million Konten wurden über diese Paare registriert - Die Paare bestehen seit mehr als 5 Jahren - Niemand kann über diese Ihre Daten einsehen 01 ## Warum nicht Ihr Hauptkonto? Dies sind korrekte Informationen. Wir wissen genau, wo die Fallstricke dieser Probleme liegen. 1. ### Ihr eigener App-Hash: 99 % abgemeldet Wenn Sie sich von einem Konto aus, auf das Sie keinen Zugriff haben, bei my.telegram.org anmelden, um einen App-Hash zu erhalten, und anschließend eine Anfrage über diesen App-Hash stellen, bedeutet dies mit einer Wahrscheinlichkeit von 99 %, dass das Konto abgemeldet ist. Sie können dies überprüfen. 2. ### Sperren allein aufgrund eines niedrigen Vertrauensniveaus kommen häufig vor Konten werden allein deshalb gesperrt, weil Telegram ihnen nicht vertraut, und solche Sperrungen kommen häufig vor. Auch dies können Sie überprüfen. Die Verwendung Ihres eigenen Kontos ist eine wirklich dumme Idee. 3. ### Kopierte Sitzungsschlüssel können widerrufen werden Die gleichzeitige Nutzung eines importierten TData- oder Sitzungsschlüssels in Telegram Desktop und TgWitness kann den Fehler `AUTH_KEY_DUPLICATED` auslösen. Telegram widerruft dann diese Autorisierung; beide Kopien erfordern eine erneute Anmeldung. Auch ein eigens dafür eingerichtetes Konto verhindert das nicht. Beenden Sie den ursprünglichen Client vollständig und lassen Sie ihn geschlossen, während Sie dessen importierte Sitzung nutzen. Für die parallele Nutzung melden Sie sich per Telefon oder QR bei TgWitness an, um eine separate Autorisierung zu erstellen; andere separat autorisierte Clients können angemeldet bleiben. [Lesen Sie die Warnung zum Importieren der Sitzung](https://phishdestroy.github.io/TgWitness/demo/guide.html?lang=de#session-warning) Telegram-Dokumentation - [Fehler beim Abmelden: AUTH_KEY_UNREGISTERED, SESSION_REVOKED](https://core.telegram.org/api/errors) - [Erstellen eines eigenen App-Hashs: Abrufen der `api_id`](https://core.telegram.org/api/obtaining_api_id) 02 ## Warum TgWitness über öffentliche App-Hash-/App-ID-Paare funktioniert Aus diesem Grund haben wir TgWitness auf öffentlichen App-Hash-/App-ID-Paaren aufgebaut. Nach unserer Logik ist die Wahrscheinlichkeit von Sperren bei diesen Paaren geringer: Mehr als eine Million Telegram-Konten wurden über diese Paare registriert, und viele verschiedene Programme arbeiten mit ihnen. Unserer Logik zufolge ist dies besser, als direkt mit einem persönlichen App-Hash zu arbeiten: Diese Paare bestehen mit Sicherheit seit mehr als fünf Jahren. ### Ihr eigenes neues Schlüsselpaar Erstellt auf my.telegram.org über das Konto. - Etwa 99 % der Konten sind abgemeldet - Eine neue Anwendung, ein Konto ### Öffentliche Schlüsselpaare des Pools Dieselben API-Paare, die auch viele andere Programme verwenden. - Über eine Million registrierte Konten - Viele verschiedene Programme - Seit mehr als 5 Jahren tätig ### Warum niemand über diese Paare etwas von Ihnen sehen kann - #### Das Paar ist ein Name, kein Schlüssel Telegram fragt die API-ID und den API-Hash ab, wenn sich ein Programm verbindet und wenn es einen Anmeldecode anfordert. Diese identifizieren die Anwendung und gewähren keinerlei Zugriff auf ein Konto; in der Dokumentation von Telethon wird darauf hingewiesen, dass ein solches Paar mit jeder beliebigen Telefonnummer funktioniert. - #### Ihr Sitzungsschlüssel verlässt niemals Ihren Server Bei der Anmeldung wird durch einen Diffie-Hellman-Austausch zwischen Ihrem TgWitness und Telegram ein Autorisierungsschlüssel erstellt; der Schlüssel selbst wird niemals übertragen. Laut der Telegram-Dokumentation wird der Schlüssel nach der Autorisierung dem Nutzer zugeordnet, und jeder Aufruf mit diesem Schlüssel wird als dieser Nutzer ausgeführt. Andere Programme mit demselben Schlüsselpaar verfügen über eigene Schlüssel und können Ihren nicht verwenden. - #### Der Datenverkehr wird mit Ihrem Schlüssel verschlüsselt Jede Anfrage und Antwort wird mit dem Autorisierungsschlüssel der Sitzung verschlüsselt, nicht mit dem API-Hash. Die Kenntnis des API-Hashs ermöglicht keine Entschlüsselung. - #### Der Inhaber eines Paares sieht nichts Telegram verfügt über keine Methode, um Konten, Sitzungen oder Nachrichten anhand der API-ID aufzulisten. Der Inhaber eines Paares sieht auf my.telegram.org lediglich seine eigenen App-Einstellungen. - #### Nur Ihr Konto erkennt, um welche App es sich handelt Unter „Einstellungen → Geräte“ Ihres eigenen Kontos werden für jede Sitzung der App-Name und die API-ID, das Gerät, die IP-Adresse sowie die Daten aufgeführt. Niemand sonst erhält diese Liste. Telegram-Dokumentation - [Benutzerautorisierung: Der Schlüssel wird zum Benutzer](https://core.telegram.org/api/auth) - [auth.sendCode: api_id, api_hash](https://core.telegram.org/method/auth.sendCode) - [initConnection](https://core.telegram.org/method/initConnection) - [Erstellen eines Autorisierungsschlüssels](https://core.telegram.org/mtproto/auth_key) - [MTProto-Verschlüsselung](https://core.telegram.org/mtproto/description) - [account.getAuthorizations](https://core.telegram.org/method/account.getAuthorizations) - [Was ein Sitzungsprotokoll enthält](https://core.telegram.org/constructor/authorization) - [Abrufen der api_id](https://core.telegram.org/api/obtaining_api_id) - [Der Open-Source-Code der Telegram-Apps](https://telegram.org/apps#source-code) Bibliotheken und Diskussionen - [Telethon: Anmelden](https://docs.telethon.dev/en/stable/basic/signing-in.html) - [opentele: Offizielle App-APIs](https://opentele.readthedocs.io/en/latest/documentation/authorization/api/) - [opentele: TelegramClient](https://opentele.readthedocs.io/en/latest/documentation/telethon/telegramclient/) - [Stack Overflow: Sollte der „api_hash“ geheim gehalten werden?](https://stackoverflow.com/questions/49490818/should-telegram-api-hash-be-kept-secret) ### Die entsprechenden Paare in anderen Programmen7 Die API-Paare der offiziellen Telegram-Apps sind öffentlich und in viele unabhängige Programme und Bibliotheken eingebaut: - [opentelePython · src/api.py](https://github.com/anmv/opentele/blob/4df17bd8c443d6452afc5a2d29ec7922fad1a5c3/src/api.py#L575) - Desktop 2040 - Android 6 - Telegram X 21724 - iOS 10840 - macOS 2834 - Web 2496 - [opentele2Rust · opentele2-core/src/api.rs](https://github.com/DedInc/opentele2/blob/7e973bc71cd7a714ad13ac703c0895a90d36a735/crates/opentele2-core/src/api.rs#L641) - Desktop 2040 - Android 6 - Telegram X 21724 - iOS 10840 - macOS 2834 - Web 2496 - [GrampoPython · Grampo/ut/api.py](https://github.com/abbas-bachari/Grampo/blob/00aa662d853c4ac2180432371c5e0d9444bbfe9e/Grampo/ut/api.py#L526) - Desktop 2040 - Android 6 - Telegram X 21724 - iOS 10840 - macOS 2834 - Web 2496 - [tgmanagePython · api/schemas/api_app.py](https://github.com/xdsnich/tgmanage/blob/f67c46be0ab234bd04526a8663d3936bd98a8597/api/schemas/api_app.py#L47) - Android 6 - iOS 8 - Desktop 2040 - macOS 2834 - Telegram X 21724 - Web K 2496 - [LyChatBotTDLib · helpers/tdlib/index.js](https://github.com/LyoSU/LyChatBot/blob/fac0ae5d5f2cddb8a26312014f51c0f6f40ec191/helpers/tdlib/index.js#L11) - macOS 2834 - [hsadasdPython · config.py](https://github.com/herobrinovaleksandr-png/hsadasd/blob/6842c74895038c16e219324fcd07dbe8153f37f0/config.py#L68) - Desktop 2040 - Desktop 17349 - Telegram X 21724 - macOS 2834 - iOS 10840 - Web 2496 - +4 - [blb.teamblb.team/threads/…294](https://blb.team/threads/app-hash-app-id-ofitsial-nykh-kliyentov.294/) - Android 4 · 5 · 6 - iOS 8 - Desktop 2040 - Desktop 17349 - macOS 2834 - Telegram X 21724 Forum-Liste offizieller App-Paare, veröffentlicht zur Registrierung von Konten 03 ## Möglichkeiten zur Erstellung eines zusätzlichen Kontos Ein Telegram-Konto benötigt eine Telefonnummer, an die der Anmeldecode gesendet wird. Wählen Sie diese entsprechend der gewünschten Lebensdauer des Kontos aus. - Beste Wahl ### Prepaid-SIM oder eSIM ******** Letzte Solange Sie es immer auf dem neuesten Stand halten Bitte beachten Sie Am zuverlässigsten: Telegram akzeptiert echte Mobilfunknummern am besten. Eine Nummer, die der Netzbetreiber zurücknimmt, wird an jemand anderen vergeben. - ### App für virtuelle Rufnummern ******** Letzte Solange die App die Rufnummer für Sie reserviert Bitte beachten Sie Telegram kann eine virtuelle Nummer ablehnen, den Code nicht zustellen oder das neue Konto sofort einschränken; manche Apps ziehen nicht genutzte Nummern wieder zurück. - ### Nummernvermietung ******** Letzte Die Mietdauer Bitte beachten Sie Nach Ablauf der Mietdauer erhält der nächste Kunde die Rufnummer. - ### Einmalige Aktivierung ******** Letzte Ein Code Bitte beachten Sie Die Nummer wird sofort in den Pool zurückgeführt, oft zusammen mit einer Historie früherer Besitzer. Legen Sie als Erstes das Cloud-Passwort fest. Wer auch immer die Nummer später besitzt, kann einen Anmeldecode anfordern. Ein Cloud-Passwort (zweistufige Verifizierung) verhindert, dass sich diese Person anmeldet; ohne dieses Passwort gehört das Konto dem nächsten Inhaber der Nummer. Telegram-Dokumentation - [Spam-FAQ: Virtuelle Nummern und frühere Inhaber](https://telegram.org/faq_spam) - [Zweistufige Verifizierung](https://core.telegram.org/api/srp) ### Gemietete +888-Nummern (Fragment) Einige Marktplätze und Dienste bieten die vorübergehende Anmietung der offiziellen +888-Nummern von Telegram über Fragment an. Ungefährer Preis: 20 US-Dollar pro Tag. - Sie können ein Konto direkt in Telegram Web oder Telegram Desktop registrieren. - Sie können Konten unter der angegebenen Nummer löschen und neue anlegen. - Diese Konten unterliegen in der Regel weniger Betrugsschutzprüfungen, bieten jedoch keine Immunität oder besondere Privilegien. Die Nummer gehört nicht Ihnen. Nach Ablauf der Mietdauer kann der Eigentümer sie zurückfordern. Legen Sie umgehend ein Cloud-Passwort fest und betrachten Sie das Konto nicht als langfristig. Es ist nach wie vor zuverlässiger, wenn Sie die Nummer +888 selbst besitzen oder eine Prepaid-SIM-Karte verwenden, über die Sie die Kontrolle haben. ### Fertigkonten von Marktplätzen Einige Marktplätze (zum Beispiel G2G oder Z2U) verkaufen vorgefertigte Telegram-Konten – neu, mit Alterung oder mit Sitzungsdateien. - [G2G: Telegram-Kontoangebote](https://www.g2g.com/uk/categories/telegram-accounts) - [Z2U: Telegram-Kontoangebote](https://www.z2u.com/telegram/accounts-5-15140) VERWENDEN SIE NIEMALS IHR HAUPTKONTO! Ein auf diese Weise eingerichtetes separates Konto ist immer noch sicherer, als Ihr primäres Telegram-Konto in TgWitness einzurichten. #### Warnhinweise vor dem Kauf - Dies verstößt gegen die Nutzungsbedingungen von Telegram. - Viele Konten wurden massenhaft registriert (Auto-Reg) oder weisen eine unbekannte Historie auf. - Einige Verkäufer verfügen möglicherweise noch über einen Wiederherstellungszugang. - Konten aus solchen Märkten werden häufig später gesperrt oder eingeschränkt. - Vermeiden Sie Marktplätze, auf denen offen Stealer, Phishing-Tools oder eindeutig gestohlene Konten verkauft werden. - Der Kauf eines Kontos – selbst eines, das als „Auto-Reg“ beworben wird – von Plattformen, die offen Phishing-Tools, Stealer, gestohlene Sitzungen oder Konten verkaufen, verstößt nicht nur gegen die Nutzungsbedingungen von Telegram, sondern auch gegen die Gesetze der meisten Länder. Dies kann Ihre Beweise später ungültig machen. Wählen Sie sorgfältig aus. #### Wenn Sie diese Option nutzen 1. Behandeln Sie den Account als Einweg-Account. 2. Beenden Sie alle anderen Sitzungen, richten Sie ein Cloud-Passwort ein und ändern Sie unverzüglich die Wiederherstellungsmethoden. 3. Verwenden Sie 2–3 Konten von verschiedenen Anbietern oder Konten, die Sie selbst registriert haben. **Premium, Löschung und die siebentägige Verzögerung** Verfügt das Konto über „Premium“, kann eine Person mit Zugriff auf die Telefonnummer das Konto nicht sofort löschen. Sie erhalten eine Benachrichtigung und haben sieben Tage Zeit, bevor die Löschung erfolgt. Dies ist wichtig, da Ihre Untersuchung von diesem Konto abhängt: Sie haben Zeit, einen Ersatz vorzubereiten. **Neue Konten und API-Zugangsdaten** Wenn Sie Ihre eigene „api_id“/„api_hash“ von einem neuen Konto beziehen und verwenden, das Sie selbst mit einer Nummer aus einem SMS-Dienst registriert haben, wird das Konto bei der ersten API-Anfrage oder Sitzungsautorisierung abgemeldet. Bitte berücksichtigen Sie dies bei der Planung einer Untersuchung. 04 ## Erstellen des Kontos Von einer Nummer bis zum ersten aufgezeichneten Chat. 1. ### Erhalten Sie eine Nummer Eine Prepaid-SIM-Karte oder eSIM, wenn das Konto langfristig bestehen soll; eine gemietete Karte oder eine einmalige Aktivierung für einen kurzfristigen Auftrag. Die Dienste sind unten aufgeführt. 2. ### Registrieren Sie sich getrennt von Ihrem Hauptkonto Registrieren Sie sich in der offiziellen Telegram-App auf einem separaten Gerät, Emulator oder Telefonprofil, nicht neben Ihrem Hauptkonto. 3. ### Sichern Sie es mit einem Cloud-Passwort Legen Sie umgehend ein Cloud-Passwort und eine Wiederherstellungs-E-Mail-Adresse fest, die nirgendwo sonst verwendet werden. 4. ### Schließen Sie die Datenschutzeinstellungen Telefonnummer **„Niemand“**, „Finden Sie mich über meine Nummer“, **„Meine Kontakte**“, „Zuletzt gesehen“, Profilfotos und Biografie: **„Niemand“** oder **„Meine Kontakte“**; deaktivieren Sie die Kontaktsynchronisierung. 5. ### Verhindern Sie, dass es sich selbst zerstört Stellen Sie die Selbstlöschfunktion des Kontos auf den längsten Zeitraum ein, damit ein gestopptes TgWitness Ihnen nicht den Verlust des Kontos verursacht. 6. ### Verleihen Sie dem Ganzen ein neutrales Profil Keine Namen, Fotos, Benutzernamen oder Biografien aus Ihren anderen Konten, keine persönlichen Kontakte. 7. ### Lassen Sie es sich erst einmal einlaufen Treten Sie zunächst täglich nur einigen Chats bei. Neue Konten, die es überstürzen, werden zunächst eingeschränkt. 8. ### Geben Sie keine Informationen an Bots weiter Klicken Sie bei einem Bot niemals auf „Telefonnummer teilen“ oder „Standort teilen“. Öffnen Sie Links und Mini-Apps über ein VPN oder einen Proxy auf diesem Gerät. 9. ### Verbinden Sie es mit TgWitness Stellen Sie in Ihrem eigenen Arbeitsbereich über **„Konto → QR-Code**“ eine Verbindung her und klicken Sie anschließend auf **„Quellen → Untersuchungsmodus**“. In der App führen Sie Ihre Aktionen durch, TgWitness dient der Aufzeichnung. Telegram-Dokumentation - [Zweistufige Verifizierung](https://core.telegram.org/api/srp) - [Datenschutzeinstellungen](https://core.telegram.org/api/privacy) - [Selbstlöschung des Kontos](https://core.telegram.org/method/account.setAccountTTL) 05 ## Nummerndienste Ausgangspunkte. Länder, Preise und die Frage, ob Telegram eine Nummer akzeptiert, ändern sich häufig; bitte überprüfen Sie dies vor der Zahlung. ### Prepaid-SIM und eSIM 11 - [SMARTYsmarty.co.uk](https://smarty.co.uk) - UK - SIM - [VOXIvoxi.co.uk](https://www.voxi.co.uk) - UK - SIM - [iD Mobileidmobile.co.uk](https://www.idmobile.co.uk) - UK - SIM - [Threethree.co.uk](https://www.three.co.uk) - UK - SIM - [Asda Mobilemobile.asda.com](https://mobile.asda.com) - UK - SIM - [Ultra Mobileultramobile.com](https://www.ultramobile.com) - US - Prepaid PayGo-Tarif, sehr günstig - [US Mobileusmobile.com](https://www.usmobile.com) - US - Prepaid - [Mint Mobilemintmobile.com](https://www.mintmobile.com) - US - Prepaid - [Tracfonetracfone.com](https://www.tracfone.com) - US - Prepaid - [eSIM Plusesimplus.me](https://esimplus.me) - eSIM - [Numero eSIMnumeroesim.com](https://numeroesim.com) - eSIM ### Apps für virtuelle Rufnummern 20 - [Google Voicevoice.google.com](https://voice.google.com) - US Nur in den USA; für die Registrierung ist eine US-Telefonnummer erforderlich - [TextNowtextnow.com](https://www.textnow.com) - US - CA Die Nummer wird zurückgenommen, wenn Sie sie nicht verwenden. - [TextFreetextfree.us](https://www.textfree.us) - US - [2ndLine2ndline.co](https://www.2ndline.co) - US - CA - [Talkatonetalkatone.com](https://www.talkatone.com) - US - [TextMego-text.me](https://go-text.me) - US - CA - Andere Länder - [textPlustextplus.com](https://textplus.com) [Google Play](https://play.google.com/store/apps/details?id=com.gogii.textplus) - [FreeToneGoogle Play](https://play.google.com/store/apps/details?id=com.textmeinc.freetone) - US [TextMe Up · textmeup.com](https://www.textmeup.com) - [Nextplusnextplus.me](https://nextplus.me) - US - [Dingtonedingtone.me](https://www.dingtone.me) - US - CA - [Burnerburnerapp.com](https://www.burnerapp.com) - US - CA - Kostenpflichtig Mit einer Testphase - [Hushedhushed.com](https://hushed.com) - Viele Länder - Kostenpflichtig Günstig - [Sidelinesideline.com](https://www.sideline.com) - US - [MySudomysudo.com](https://mysudo.com) - US - CA - UK - [2NumberGoogle Play](https://play.google.com/store/apps/details?id=com.bpmobile.second.phone) [App Store](https://apps.apple.com/app/id1216135390) - [SLYNUMBERslynumber.com](https://slynumber.com) [Google Play](https://play.google.com/store/apps/details?id=com.dev.slynumber) - [Phonerphonerapp.com](https://phonerapp.com) - [Onoffonoff.app](https://www.onoff.app) - EU Europäische Mobilfunknummern in einer App - [Sonetelsonetel.com](https://sonetel.com) - Viele Länder - Kostenlose Rufnummer - [Zadarmazadarma.com](https://zadarma.com) - Viele Länder Virtuelle Nummern ### Anzahl der Anmietungen und Aktivierungen: 12 Die Mietnummer bleibt über Wochen oder Monate hinweg gültig. Bei einer einmaligen Aktivierung erhalten Sie einen einmaligen Code: Legen Sie das Cloud-Passwort unmittelbar nach der Registrierung fest. - [OnlineSimonlinesim.io](https://onlinesim.io) - Vermietung - Aktivierungen - [SMSPVAsmspva.com](https://smspva.com) - Vermietung - Aktivierungen - [5SIM5sim.net](https://5sim.net) - Vermietung - Aktivierungen - [SMSPoolsmspool.net](https://www.smspool.net) - Vermietung - Einmalig - [VAK-SMSvak-sms.com](https://vak-sms.com) - Vermietung - Aktivierungen - [TextVerifiedtextverified.com](https://www.textverified.com) - Vermietung - Aktivierungen - [JuicySMSjuicysms.com](https://juicysms.com) - Vermietung - Aktivierungen - [365SMS365sms.org](https://365sms.org) - Vermietung - Aktivierungen - [SIMSMSsimsms.org](https://simsms.org) - Vermietung - Aktivierungen - [GrizzlySMSgrizzlysms.com](https://grizzlysms.com) - Einmalig - [SMS-MANsms-man.com](https://sms-man.com) - Einmalig - [Tiger SMStiger-sms.com](https://tiger-sms.com) - Einmalig --- # Telegram · Ein Konto verbinden Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/accounts/ Verbinden Sie Telegram über einen QR-Code, eine Telefonnummer oder einen Sitzungsimport. Wählen Sie die Quellen aus und überprüfen Sie, ob neue Nachrichten in Ihrem Protokoll erscheinen. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Ein Arbeitsbereich = ein Konto, sein Journal und sein Schlüssel. ## Wählen Sie Ihre Anmeldemethode **Konten** → Arbeitsbereich hinzufügen → Verbindungseinstellungen. Nehmen Sie dafür ein separates Konto. - **QR-Code:** über den Bildschirm „Geräte“ in Telegram scannen und bestätigen. - **Telefonnummer:** Nummer, Code, dann das 2FA-Passwort, falls vorhanden. - **Sitzungsimport:** Ihre eigene Sitzungsdatei oder Telegram-Desktop-Daten. Nutzen Sie ein eingebautes API-Profil oder Ihre eigene API ID samt Hash. Es kennzeichnet nur die App, meldet Sie nicht an und verbirgt nichts. **Benötigen Sie zunächst einen Proxy?** Sie können [die Verbindungsroute vor der Anmeldung auswählen und testen](https://phishdestroy.github.io/TgWitness/de/docs/proxies/). Jedes Konto verfügt über eine eigene Route. ## Wählen Sie aus, was Sie überwachen möchten 1. Wählen Sie die Chats, Gruppen oder Kanäle, die Sie brauchen. 2. Prüfen Sie die Erfassungseinstellungen, Medien eingeschlossen. 3. Starten Sie und prüfen Sie Verbindung und jüngste Aktivität. Das Konto muss Zugriff haben. Admins und Mitglieder sehen Unterschiedliches, das Journal zeigt, was dieses Konto bekommen hat. Das ganze Konto? **Quellen → Beobachtungsumfang → Ermittlungsmodus**, prüfen, **Umfang speichern**. Komplette Anleitung: [ein ganzes Konto untersuchen](https://phishdestroy.github.io/TgWitness/de/docs/cases/). ## Überprüfen Sie den gesamten Pfad Schicken Sie in Ihrer Testgruppe eine Nachricht von einem anderen Konto, bearbeiten und löschen Sie sie. Alle drei Ereignisse sollten im Journal erscheinen. Dann [exportieren und prüfen](https://phishdestroy.github.io/TgWitness/de/docs/exports/). „Verbunden“ heißt, die Verbindung steht. Eine erfasste Testnachricht heißt, Ereignisse kommen wirklich an. ## Ein weiteres Konto hinzufügen Neuer Arbeitsbereich unter **Konten**, gleiche Schritte. Notieren Sie den Schlüssel-Fingerabdruck jedes Kontos, damit Sie Exporte später auseinanderhalten. --- # Telegram · Wählen Sie einen Proxy Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/proxies/ Verwalten Sie automatische MTProxy-Routen oder verwenden Sie Ihren eigenen Proxy. Wählen Sie IP-Modi, Fallback-Regeln und die Route für externe Anfragen aus. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Halten Sie das Konto online und entscheiden Sie selbst, ob es jemals die IP Ihres Servers zeigen darf. ## Wählen Sie zunächst den IP-Modus aus 01**Adresse ausblenden** Nur Proxy. Wenn keiner geht, wartet es. 02**Direkt als letztes Mittel** Geht nach einer Verzögerung direkt und kehrt zu einem Proxy zurück, sobald einer funktioniert. 03**Server hinter einem Tunnel oder VPN** Direkt ist in Ordnung. Ein VPN wird dabei weder eingerichtet noch geprüft. Die Route bestimmt die Verbindung. Der IP-Modus legt fest, ob eine direkte Verbindung zulässig ist. ## Lassen Sie den Pool die Route verwalten 1. **Konto → Einstellungen → Verbindungseinstellungen**. 2. IP-Modus und **Automatischer MTProxy** wählen, oder eine feste Route. 3. Speichern, **Telegram-Verbindung testen** (geht auch vor der Anmeldung). 4. Erfassung starten und sich selbst eine Testnachricht schicken. Neue Arbeitsbereiche starten mit automatischem MTProxy und **Adresse verbergen**. Der Pool nutzt vier öffentliche Listen, prüft Server, behält die guten und tauscht tote aus. ## Verwenden Sie Ihren eigenen Proxy SOCKS5, HTTP CONNECT, ein Telegram-Proxy-Link oder ein Betreiberkatalog. Vor dem Wechsel die Beobachtung pausieren. Fake-TLS-Geheimnisse (`ee`…) funktionieren nicht. **Einstellungen für Rotation, Weitergabe und Wiederholungsversuche** **Parameter → Automatischer MTProxy**: Fehlerschwellen, Wartezeiten, Rotation, Konten pro Proxy. Limit 1 heißt, ein Konto wartet, statt zu teilen. Verschiedene Proxys können trotzdem dieselbe Ausgangs-IP haben. ## Trennung von Telegram von externen Anfragen MTProxy transportiert nur Telegram. Zeitstempel, Benachrichtigungen, Kopien und Code-Prüfungen laufen über einen separaten SOCKS5/HTTP-Proxy, die SOCKS5/HTTP-Route des Kontos oder direkt, wenn der Modus es erlaubt. Oder schalten Sie sie ab. `TGWITNESS_PROXY_FEED_PROXY` legt die Route für Listen-Downloads fest. Der [Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/witness/) hat eigene Einstellungen. Nichts davon berührt Ihren Browser oder das Systemnetz. Mehr: [Modi und Standardwerte](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/#ip-modes), [wer Routen ändern darf](https://phishdestroy.github.io/TgWitness/de/docs/access/). --- # Telegram · Exportieren und verifizieren Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/exports/ Exportieren Sie den erfassten Telegram-Verlauf, überprüfen Sie die Signaturen und vergleichen Sie das Protokoll mit einem von einem unabhängigen Zeugen aufbewahrten Kontrollpunkt. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Geben Sie jemandem Dateien, die er selbst gegen Ihren Arbeitsbereich prüfen kann. Bitte verweisen Sie daraufSignierte ZIP-Datei exportierenDer Empfänger überprüft Neu bei Signaturen und Prüfpunkten? [Ändern Sie einen Beispieleintrag](https://phishdestroy.github.io/TgWitness/de/docs/concepts/#chain) und sehen Sie, welche Prüfungen es bemerken. Möchten Sie eine Kopie außerhalb des Datensammlers aufbewahren? Gehen Sie zu [„S3-Einrichtung“](https://phishdestroy.github.io/TgWitness/de/docs/exports/#s3), [„Objekt-Sperre“](https://phishdestroy.github.io/TgWitness/de/docs/exports/#s3-retention) oder [„verifizierte Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/exports/#s3-restore)“. ## Eine vertrauenswürdige Referenz bereitstellen Notieren Sie den Schlüssel-Fingerabdruck des Arbeitsbereichs irgendwo außerhalb des Collectors. Bewahren Sie während der Erfassung auch signierte Prüfpunkte woanders auf oder betreiben Sie einen [unabhängigen Zeugen](https://phishdestroy.github.io/TgWitness/de/docs/witness/). Dagegen prüft der Empfänger den Schlüssel und einen früheren Journalstand. ## Laden Sie die signierte ZIP-Datei herunter **Exporte** → signiertes Beweis-ZIP. Es enthält das ganze Journal und ein signiertes Dateimanifest. Den lesbaren Bericht gestalten Sie im [Report studio](https://phishdestroy.github.io/TgWitness/de/docs/reports/), oder Sie schicken nur ausgewählte Daten als [Übergabeauszug](https://phishdestroy.github.io/TgWitness/de/docs/handover/). HTML-, PDF- und JSON-Berichte tragen eigene Siegel. CSV ist nur eine Arbeitskopie; für die Integrität nehmen Sie die CSV aus dem geprüften ZIP. ## Überprüfen Sie dies anhand einer vertrauenswürdigen Kopie von TgWitness In der Projektumgebung, mit Ihrem eigenen Fingerabdruck und Pfaden: ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --checkpoint retained-checkpoint.json ``` Bei Erfolg sehen Sie `key_pinned: true` und `checkpoint_checked: true`. Bewahren Sie diese Ausgabe beim Archiv auf. Der Prüfpunkt muss am Ende des Exports oder davor liegen. ## Verwenden Sie das Verifizierungsergebnis - **Dateien:** Das Manifest bindet ihre Hashes, die Signaturen binden das Journal. Jede Änderung fällt auf. - **Identität:** Der aufbewahrte Fingerabdruck belegt, dass es der erwartete Schlüssel ist. - **Früherer Stand:** Ein Prüfpunkt vergleicht den Export mit einem vor der Übergabe gespeicherten Journalanfang. - **Abdeckung:** Lücken, Erfassungsergebnisse und ein Test Senden → Bearbeiten → Löschen zeigen, was dieses Setup wirklich erfasst hat. Details: [was die Prüfung beweist und was nicht](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope). ## Richten Sie die externe S3-Kopie ein **Exporte → Externe Kopie** in Ihrem Arbeitsbereich. Funktioniert mit AWS S3 und allem, was S3-kompatibel ist. Kopiert Journalsegmente, gespeicherte Dateien, Prüfpunkte mit ihren Zeitstempeln und fertige Chat-Exporte, jeweils mit `AES-256-GCM` verschlüsselt, bevor sie den Collector verlassen. Die Online-Demo zeigt diese Einstellungen mit deaktiviertem Upload. Echte Zugangsdaten nur in Ihrer eigenen Installation eingeben. [![Vollständiges Off-Site-Kopier-Panel: Endpunkt, Region, Bucket, Zugriffsschlüssel, Zeitplan, „Object Lock“- und Wiederherstellungsschlüssel-Steuerelemente](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png)](https://phishdestroy.github.io/TgWitness/assets/off-site-copy.png) Das vollständige Bedienfeld mit erweiterten Optionen ist aufgeklappt. Es werden keine Anmeldedaten für den Speicher angezeigt. | Fachgebiet | Was ist einzugeben? | | --- | --- | | Endpunkt | Speicher-URL, ohne Bucket-Pfad oder Zugangsdaten. Beispiel: `https://s3.example.invalid`. | | Region | Was Ihr Anbieter verlangt. Standard `us-east-1`. | | Bucket | Ein vorhandener Bucket mit Schreibrechten. Beispiel: `example-case-backup`. | | Ordner im Bucket | Präfix, Standard `tgwitness`. Ein Präfix pro Arbeitsbereich kommt dazu. | | Zugriffs-ID / Geheimer Zugangsschlüssel | Beide zusammen, im Tresor gespeichert. Später beide leer lassen, um sie zu behalten. | | Adressen im Pfadformat | An: `endpoint/bucket`. Aus: `bucket.endpoint`. Hängt vom Anbieter ab. | | Kopierintervall | 1 bis 1.440 Minuten, Standard 5. Nur solange die App läuft. | | Aufbewahrungsfrist für „Object Lock“ | Tage und Modus, wenn der Bucket Object Lock unterstützt. Null lässt den Bucket-Standard. | 1. Bucket anlegen, Ziel und Zugangsdaten mit deaktiviertem **Externe Kopie behalten** ausfüllen, **Externe Kopie speichern** klicken. 2. **Verbindung testen** lädt ein verschlüsseltes Testobjekt hoch. 3. **Verschlüsselungsschlüssel herunterladen** und fern vom Collector aufbewahren. Kein Schlüssel, keine Wiederherstellung. 4. **Externe Kopie behalten** aktivieren, speichern, dann **Jetzt kopieren** oder den Zeitplan laufen lassen. ## Aufbewahrungsstatus und Kopierfortschritt prüfen Unter **Weitere Optionen** Aufbewahrungstage und `GOVERNANCE` oder `COMPLIANCE` wählen. TgWitness liest die Aufbewahrung von einem hochgeladenen Objekt zurück und meldet: bestätigt, fehlt oder Prüfung fehlgeschlagen. Das Panel zeigt den letzten Durchlauf, Objektanzahl, Bytes, kopierte Journalgrenze und Fehler. Eine fehlende lokale Datei wird gemeldet und im nächsten Durchlauf erneut versucht, der Rest wird weiter kopiert. Uploads laufen direkt, über SOCKS5 oder HTTP. Mit einer reinen MTProxy-Route wartet die Kopie mit einem Fehler. ## Bewahren Sie den Wiederherstellungsschlüssel separat auf Das Schlüssel-JSON enthält den Entschlüsselungsschlüssel, das Ziel, das Präfix und den Schlüssel-Fingerabdruck. Zur Wiederherstellung brauchen Sie es plus Speicherzugangsdaten mit Leserecht. Endpunkt, Bucket oder Präfix geändert? Laden Sie den Schlüssel neu herunter. Am neuen Ziel startet eine frische Kopie, alte Chat-Exporte bleiben, wo sie waren. ## Wiederherstellung und Überprüfung auf einem anderen Rechner Sie brauchen eine vertrauenswürdige TgWitness-Installation, das Schlüssel-JSON, Nur-Lese-Zugangsdaten und einen leeren Ordner: ### Windows PowerShell ``` $env:TGWITNESS_S3_ACCESS_KEY = 'YOUR_READ_ACCESS_KEY' $env:TGWITNESS_S3_SECRET_KEY = 'YOUR_READ_SECRET_KEY' python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence ``` ### Linux / macOS ``` export TGWITNESS_S3_ACCESS_KEY='YOUR_READ_ACCESS_KEY' export TGWITNESS_S3_SECRET_KEY='YOUR_READ_SECRET_KEY' python -m tgwitness.replica restore --key-file tgwitness-replica-key.json --out restored-evidence ``` Erst wird alles in einem privaten Temp-Ordner geprüft: das ganze Journal, Prüfpunkte, Datei-Hashes und Größen. Unsichere Pfade, widersprüchliche Segmente oder ein Journal kürzer als sein Prüfpunkt schlagen fehl, und dann wird nichts geschrieben. Bei Erfolg bekommen Sie `events.jsonl`, `media/`, `checkpoints/` und `exports/`. Bewahren Sie die JSON-Ausgabe des Befehls dazu auf und vergleichen Sie mit selbst aufbewahrten Prüfpunkten oder Zeugen-Einträgen. --- # Telegram · GitHub Actions-Aufzeichnung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/capture/ Wähle Takeout, den Export über die reguläre API oder ein Chatjournal auf einem temporären GitHub-Runner. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Wähle Takeout,den Export über die reguläre API oder ein Chatjournal auf einem temporären GitHub-Runner. Aktivieren Sie JavaScript, um einen Schlüssel zu generieren und Ihr Archiv zu entschlüsseln. **Vollständige Quellenangabe** [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Documentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Independent capture](https://github.com/phishdestroy/TgWitness/blob/main/docs/OPTIONAL-CAPTURE.md) ![Independent capture](https://phishdestroy.github.io/TgWitness/assets/chapter-capture.svg) **Preview available from `main`.** A fork launches a pinned reusable workflow from `phishdestroy/TgWitness`. The workflow exports an account, selected chats or one chat's event journal using a newly created Telegram session, attests the evidence ZIP or multipart manifest, and uploads only recipient-encrypted handoffs. The normal administration panel is not exposed. Choose `client=official_web` to run the [official-client witness](https://github.com/phishdestroy/TgWitness/blob/main/docs/OFFICIAL-WITNESS.md) with guarded Telegram Web controls and video. It requires your own upstream proxy and observes one rendered chat. The default `client=api` retains the full-account export modes described below. The verifier checks the archive against its GitHub attestation, the approved workflow and collector commits, and the signed journal and attachment hashes. The collection process uses pinned upstream code and fresh storage. A reviewer can inspect that code and verify the delivered archive against its recorded run. **On this page** - [User flow](https://phishdestroy.github.io/TgWitness/de/docs/capture/#user-flow) - [Session time budget](https://phishdestroy.github.io/TgWitness/de/docs/capture/#session-time-budget) - [Choose this mode or a persistent workspace](https://phishdestroy.github.io/TgWitness/de/docs/capture/#choose-this-mode-or-a-persistent-workspace) - [What is public, and what must stay private](https://phishdestroy.github.io/TgWitness/de/docs/capture/#what-is-public-and-what-must-stay-private) - [Troubleshooting](https://phishdestroy.github.io/TgWitness/de/docs/capture/#troubleshooting) - [Local decryption and verification](https://phishdestroy.github.io/TgWitness/de/docs/capture/#local-decryption-and-verification) - [How the fork is kept outside the capture process](https://phishdestroy.github.io/TgWitness/de/docs/capture/#how-the-fork-is-kept-outside-the-capture-process) - [Cryptographic handoff](https://phishdestroy.github.io/TgWitness/de/docs/capture/#cryptographic-handoff) - [Limits and validation](https://phishdestroy.github.io/TgWitness/de/docs/capture/#limits-and-validation) - [Maintainer release sequence](https://phishdestroy.github.io/TgWitness/de/docs/capture/#maintainer-release-sequence) ## User flow The helper explains the five stages and lets you try message or collector substitution on sample data. **Start my capture** opens the wizard. 1. Choose **GitHub Actions capture (preview)** on the project homepage, the workspace login screen, or **Exports → Open capture helper**. You can also open the [official helper](https://phishdestroy.github.io/TgWitness/sealed.html?lang=en) or `tgwitness/static/capture.html` from a trusted checkout in a modern browser. The helper makes no network requests for key or file processing. The helper supports the site's interface languages; the temporary collection panel supports English and Russian. 2. Generate a key and save **sealed-key.json**. This is the only private decryption key. Copy the separate public **recipient** value. Losing the private key loses access to both the connection and the archive. Confirm that you saved it to unlock the next step. If you already have a delivery file, load the saved key and choose **I already have an archive**. 3. Fork TgWitness, enable Actions in the fork, and run **Sealed chat capture**. Paste the public recipient and choose 30, 60, or 120 minutes. Never put a phone number, login code, Telegram password, private key, or session in workflow inputs, commits, issues, or logs. 4. During the run, download **sealed-connection** from Artifacts and unzip it. Load `connection.tgwsealed` in the helper, using the saved private key. The resulting link contains a random access secret in its URL fragment. Keep this link private. The panel removes the fragment and keeps the secret in this tab's session storage; it is not placed in HTTP access logs. 5. Open the connection link. Sign in with a QR code, or with your phone number and the login code. Enter your two-step verification password if Telegram asks for it. The built-in API credential pool is used by default, just like the normal workspace. You may expand the optional custom credentials section and enter both `api_id` and `api_hash` from [my.telegram.org/apps](https://my.telegram.org/apps). Leave both fields empty to use the built-in pool; a partial or malformed pair is rejected. Session imports are not allowed. Choose the export mode and scope. The connection link contains an access secret: keep it private. 6. Choose **Telegram Takeout**, **Regular Telegram API** or **Chat event journal**. For account export, choose all accessible chats or load and select one or more chats, then set dates, chat types, account categories and attachment rules. Check settings and size, optionally save the settings JSON for an independent reviewer, then press **Start capture**. Settings are fixed after starting. Resume works only while this runner exists; finishing early preserves acquired data and records gaps. Deadline expiry after starting produces an explicitly partial archive; expiry before starting or cancellation produces no archive. 7. Wait for **sealed-result**, download and unzip it, and decrypt `delivery.tgwsealed` in the helper. You receive `delivery.zip`, containing `evidence.zip`, `attestation.jsonl`, and instructions. Browser decryption is limited to 256 MiB; larger packages use the streaming local command below. Large results also include `delivery-NNNNNN.tgwsealed` parts; the main `delivery.tgwsealed` then contains `evidence.parts.json` and the attestation. Download every part and assemble locally as described below. 8. End the temporary session in Telegram Settings → Devices if revocation was not confirmed or the runner was killed. Normal completion attempts logout; network failures and forced runner termination prevent an absolute guarantee. The repository must contain the published pinned source and reusable-workflow commits. A local branch alone cannot be invoked by another GitHub repository. ## Session time budget Before collection, **Calculate time and size** estimates the selected history and files from message counts and a bounded sample. The display includes time already spent signing in, estimated collection time and a reserve for packaging. For files, the initial estimate uses 1 MiB/s and a twofold time margin; progress replaces that assumption with the measured rate. Use **Messages only** or select fewer chats when the estimate exceeds the remaining time. Telegram's reported Takeout wait is added to the budget. The collector stops acquisition when the remaining time is needed for packaging, retains acquired data and marks a partial result. A 120-minute session therefore uses its remaining collection window rather than waiting for the deadline before preparing the archive. The display identifies selections whose full size could not be sampled. ## Choose this mode or a persistent workspace | Capture mode | Configurable scope | Difference | | --- | --- | --- | | Telegram Takeout, the default | All accessible cloud chats or selected chats, dates, account categories, media policies and JSON/HTML views | Uses Telegram's official export mechanism; approval or waiting may be required. Takeout can enumerate left channels/groups where Telegram permits it and request additional personal data. | | Regular Telegram API | The same account scope and output choices, subject to methods available through the regular API | Does not initialize Takeout; cannot enumerate left channels/supergroups or fetch Takeout-only personal data. Contacts cover Telegram users rather than the complete saved phone contact list. Rate limits still apply. | | Chat event journal | One selected chat, attachment policies and optional avatars | Captures history and changes observed during this run. Account categories, date filters and Desktop-compatible views do not apply. | All three modes have the same GitHub attestation and encrypted delivery. Takeout is an acquisition method, not a stronger signature. It is never silently replaced by regular API access. JSON/HTML views are generated by TgWitness; they are not Telegram-signed files or guaranteed byte-identical Desktop exports. See the [official Takeout API](https://core.telegram.org/api/takeout). Defaults use Takeout, all accessible chat types including archived chats, all dates, account profile and contacts, compatible JSON and HTML, and file downloads. The initial media budget is 4 GiB, with visible per-type file limits; larger files or exhausted download budgets use server hashes where available. Review these limits before collecting. Hashes cannot reconstruct a file. Optional photos, stories, session metadata and extra personal data remain separate choices. Takeout may require approval in an established Telegram session. Telegram sets the delay; a new login or runner does not bypass it. The maximum capture window is 120 minutes including login and approval, so a large account or long approval wait may not finish. A persistent local export can resume the same session, but does not inherit GitHub attestation. ### Agree and verify the settings After **Check settings and size**, use **Save settings for verification**. Agree the resulting `sealed-export-settings.json` with the reviewer before collection. Changes invalidate the saved assessment. The collector signs the effective settings and their SHA-256, and account-export receipts bind the same options. The verifier reports the actual mode, selection and completeness, and rejects a disagreement between the journal and nested account export. ``` python -m tgwitness.sealed_verify evidence.zip --bundle attestation.jsonl --repo OWNER/TgWitness --expected-selection sealed-export-settings.json --require-complete ``` `--expected-selection` rejects a different transport, chat scope, filter or attachment policy. `--require-complete` rejects partial account exports and chat journals, whose overall completeness is not established. Without these flags, verification still checks provenance and integrity while reporting the recorded settings and gaps. A file supplied only with the finished archive cannot establish what was agreed beforehand. A valid signature never turns omitted data into data that was collected, or proves the owner did not edit/delete messages before capture. | Need | Mode | | --- | --- | | Export accessible account data or selected chats during a limited session and give a reviewer an externally attested archive | GitHub Actions capture (preview) | | Observe several chats continuously, manage accounts, search and read a growing archive | Local or Docker workspace | This starts a separate capture with a new login. It does not upload your existing local journal, export the currently open workspace, or reuse its Telegram session. An unfinished cloud capture cannot resume after its runner is destroyed; a new workflow starts a new capture. The workspace's **Exports → Open capture helper** opens the complete wizard inside the panel. The standalone page uses the same wizard, controls and themes. Both keep keys and decryption in your browser. GitHub workflow startup and the temporary Telegram panel open in separate tabs; the wizard tells you when to return. Locking the workspace clears the wizard's in-memory key. Your saved key file remains on your device. ## What is public, and what must stay private Collection runs on a standard GitHub-hosted runner. GitHub, the approved collector and dependencies, the helper page, the browser and the HTTPS tunnel are trusted parts of this setup. The temporary host processes the Telegram session and plaintext messages; the delivered artifacts are encrypted for the recipient. Forking copies project code into your repository. It does **not** export your Telegram account. The recipient workflow input is a public encryption key. Keep `sealed-key.json`, Telegram credentials, login codes, 2FA passwords and the decrypted connection URL out of commits, workflow inputs and public logs. The workflow publishes encrypted connection/result artifacts for one day. Download both in time; GitHub Actions availability, account limits and billing apply. A public fork is not a promise of unlimited free compute. No payment or GitHub access token is entered into the helper. The private decryption key stays in your browser/file. Telegram session material and plaintext observations necessarily exist inside the temporary collector. GitHub and the HTTPS tunnel remain trusted infrastructure. Attestation may make the archive digest and workflow identity public; the archive contents are not placed in the attestation. The attestation timestamp is not a message timestamp. ## Troubleshooting | Symptom | Next step | | --- | --- | | No **Run workflow** button | Open your own fork, enable Actions, and sync it with upstream `main`. Do not edit the approved upstream pins to bypass a failure. | | No `sealed-connection` artifact | Check whether the job started and completed its startup/upload step. Queue, runner, image download, tunnel or repository policy failures can prevent startup. | | Cannot open the connection | Load the saved key for this run, unzip the downloaded artifact and select `connection.tgwsealed`. The runner must still be active. | | History is paused | Check the panel's status and use Resume while the session remains active, or finish with the data already collected. Telegram limits and inaccessible content can leave gaps. | | No `sealed-result` | Cancellation or expiry before starting collection produces no archive. A failed collection, attestation or packaging step also prevents delivery. Inspect the failed step without posting credentials. | | Browser cannot decrypt a large archive | Use the streaming CLI below for packages larger than 256 MiB. A wrong or lost private key cannot decrypt the result. | | Verification rejects the signer | Use a trusted current TgWitness installation and the exact caller `OWNER/REPOSITORY`. Do not accept a replacement policy supplied with the archive. | | Telegram still lists the temporary session | End it in Settings → Devices. Logout can fail and a forcibly terminated workflow may not run cleanup. | Before relying on this preview, try a small chat you control: create a message and attachment, collect them, decrypt the result, run the verifier, check the coverage/media outcomes and confirm Telegram session revocation. Automated checks use a synthetic Telegram client plus a separate real GitHub certificate test; they do not establish live account acceptance. ## Local decryption and verification Use tools from an independently trusted installation, not executable files supplied by an unknown evidence archive: ``` python -m tgwitness.sealed_crypto decrypt delivery.tgwsealed --key sealed-key.json --out delivery.zip # Unzip delivery.zip using your archive manager, then: python -m tgwitness.sealed_verify evidence.zip --bundle attestation.jsonl --repo OWNER/TgWitness ``` For multipart delivery, decrypt the main package first and keep its extracted manifest beside every encrypted part, then run: ``` python -m tgwitness.sealed_parts evidence.parts.json --key sealed-key.json --out evidence.zip python -m tgwitness.sealed_verify evidence.parts.json --assembled evidence.zip --bundle attestation.jsonl --repo OWNER/TgWitness ``` The manifest is the attested subject and binds every part and the assembled ZIP. Use `--max-gib` to set an appropriate uncompressed verification ceiling for a large archive; the default is 4 GiB. Expected-selection and complete-scope checks also work with multipart delivery. Python 3.11+, the project's dependencies, and a recent GitHub CLI supporting `--signer-digest` and `--deny-self-hosted-runners` are required. A CLI key generator is also available: `python -m tgwitness.sealed_crypto keygen sealed-key.json`. The verifier uses `tgwitness/sealed_policy.json` from the trusted installation. It checks the caller repository, upstream signer workflow, approved signer commit, hosted runner requirement, complete ZIP digest, internal journal and attachment integrity, fresh account-key origin, and expected collector commit. It displays history and media outcomes instead of implying all data was saved. An empty approved-release list fails closed. Updating the policy is an explicit trust decision; never accept an archive's own proposed policy automatically. For offline use, obtain trusted roots ahead of time from a trusted environment: ``` gh attestation trusted-root > trusted_root.jsonl python -m tgwitness.sealed_verify evidence.zip --bundle attestation.jsonl --repo OWNER/TgWitness --trusted-root trusted_root.jsonl ``` The timestamp of the attestation concerns the archive's commitment. It does not authenticate message timestamps or the collector's wall clock. See [GitHub's verification options](https://cli.github.com/manual/gh_attestation_verify). ## How the fork is kept outside the capture process The caller contains a job-level reference to the upstream reusable workflow at a full commit SHA. That workflow explicitly checks out **the upstream repository at a fixed collector SHA**. A default `actions/checkout` in a reusable workflow would check out the caller and is intentionally not used. The workflow does not restore caller caches, consume caller artifacts, execute caller files, or accept source/image URLs, shell commands, prepared ZIP files, or hashes to sign. It accepts a bounded public recipient and session duration. Actions, the Python base image, and cloudflared are pinned by immutable digests; Python dependencies use the existing hash-locked requirements. The image is built from the trusted source without a cache. The collector runs as a non-root user with a read-only image, dropped Linux capabilities, resource limits, and no Docker socket or GitHub-token environment. Its only mounts are fresh configuration, workspace, and output directories. The restricted FastAPI application exposes login, dialogs, configurable account or chat collection, status, resume, finish, and cancellation. There is no plaintext download route, general administration route, import route, or signing endpoint. The supervisor stops the network-facing containers before the attest action reads the final fixed `evidence.zip` or `evidence.parts.json`. The packaging container has no network. The upload steps name only `connection.tgwsealed` and `delivery*.tgwsealed`; neither plaintext evidence nor Telegram credentials are uploaded as artifacts. Cleanup removes the private directories and containers, with no claim of physical disk erasure. Artifact retention is one day; download before expiry. A fork owner can replace the caller or create a different signed file. The strict verifier must reject the resulting **different signer workflow/digest**. This construction still depends on the absence of exploitable bugs in approved code and on the integrity of GitHub's runner and signing infrastructure. ## Cryptographic handoff Each recipient key is RSA-3072 (RSA-4096 imports also accepted), exponent 65537. Each envelope has a fresh random AES-256 key and 96-bit nonce. RSA-OAEP with SHA-256/MGF1-SHA256 wraps the AES key. AES-GCM with a 128-bit tag authenticates the complete prefix and payload. The public recipient is DER SPKI in base64; the private key file contains DER PKCS8 in base64. Envelope bytes are `TGWSEAL1\n`, a big-endian uint32 JSON-header length, the header, ciphertext, and a 16-byte GCM tag. The header has exactly `algorithm`, `key`, and `nonce`; algorithm is `RSA-OAEP-256+A256GCM`. The complete prefix through the header is GCM additional authenticated data. Header size is bounded at 8192 bytes. The CLI streams payloads up to 8 GiB and authenticates before installing the requested output; it refuses overwriting an existing destination. This is a project-specific envelope around standard cryptographic primitives, not an independently audited encryption format. The original evidence bytes are attested **before** placing the evidence and attestation in the encrypted outer package. This avoids a circular dependency between the archive's hash and a certificate included inside that same archive. For public repositories, attestation metadata (repository, workflow, commit, artifact name and digest) is public. Never put chat names in public metadata. ## Limits and validation This mode uses the signed journal and account-export engine. Secret Chats, deleted history from before collection and data inaccessible to the account are excluded. Private cloud chats are eligible when selected. The chat picker is capped at 20,000 dialogs; account export discovers its own inventory. Missing data, failed files and unfinished tasks are recorded. Attachment limits and runner disk/time limits still apply. Large delivery uses encrypted parts instead of a fixed 4 GiB delivery cutoff. Completion means the frozen selected tasks finished, not that every historical Telegram record exists in the archive. The chat journal can also observe live updates; neither mode is an atomic snapshot. Generated screenshots and screen recordings are not part of this mode. Tests cover synthetic fresh login, scope isolation, media, cancellation, partial deadline completion, failed logout, forbidden API paths and fields, preloaded workspace rejection, wrong-key and tamper rejection, required verifier flags, and browser/Python encryption interoperability. The browser acceptance test uses a plainly labelled mock attestation; it is not a real Sigstore test. Real hosted-runner, Docker, GitHub attestation, and live Telegram acceptance must be reported separately from local synthetic checks. [GitHub Actions terms](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions) restrict use of hosted runners to the software project's lifecycle. A fork does not remove these restrictions; this preview must not be marketed as unrestricted free production hosting. [Cloudflare Quick Tunnels](https://developers.cloudflare.com/tunnel/get-started/quick-tunnels/) are also intended for testing and development. The helper/workflows are suitable for evaluating this feature; production service eligibility remains a separate deployment requirement. ## Maintainer release sequence 1. Commit and review the collector, supervisor, container definition and tests. 2. Pin that collector commit in `sealed-collector.yml`, then commit/review the reusable workflow. Never silently derive the checkout from the caller SHA. 3. Pin the reusable workflow commit in `sealed-witness.yml` and add its workflow/collector SHA pair to `sealed_policy.json` in a trusted release. 4. Publish all referenced commits and the helper, then test an independent fork and the real GitHub certificate. Do not squash away commits referenced by these pins unless the references are regenerated and published again. See [reusable workflows and attestations](https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations/increase-security-rating) for the distinction between the caller repository and the upstream signer. --- # Telegram · Untersuchungen über alle Chats hinweg Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/cases/ Führen Sie eine lückenlose Telegram-Untersuchung über Kanäle, Gruppen, private Chats und Bots hinweg durch: Erfassung des gesamten Kontos, Verlauf, Personen, Links, Dateien, Zeitachsen und verifizierte Beweise. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Ein ganzer Fall über Kanäle, Gruppen, private Chats und Bots: erfassen, verknüpfen, die Zeitleiste rekonstruieren, übergeben. Ein erfundener Vorfall von Anfang bis Ende. Erfassung, Suche und Personenprofile finden die Einträge, [Case Board](https://phishdestroy.github.io/TgWitness/de/docs/case-board/) ordnet sie, [Report studio](https://phishdestroy.github.io/TgWitness/de/docs/reports/) präsentiert sie. BEARBEITETER FALL / EINE GEÄNDERTE ZAHLUNGSADRESSE ### Ein Vorfall. Vier Unterhaltungen. Eine Spur, die es zu rekonstruieren gilt. Ein Kanalbeitrag verweist auf einen Bot. Eine Gruppe spricht über einen neuen Zahlungslink, der Bot zeigt ihn an. Der Beitrag wird bearbeitet, ein privater Chat wiederholt den Link, eine Gruppennachricht verschwindet. Wer hat die jeweilige Version gepostet?Wo ist der Link erschienen?Welche Datei wurde gesichert?Was hat sich geändert und wann? Verlauf laden, KI, MCP, OCR und Webhooks: [Mit dem Archiv arbeiten](https://phishdestroy.github.io/TgWitness/de/docs/archive/). ## 1. Erfassen Sie den gesamten Account Umfang „ganzes Konto“ nur auf einem eigenen Konto. Ein Hauptkonto bekommt ausgewählte Chats oder einen Ordner. 1. [Verbinden Sie das Konto](https://phishdestroy.github.io/TgWitness/de/docs/accounts/) in einem eigenen Arbeitsbereich. Notieren Sie Fallreferenz, Konto-ID, Arbeitsbereich und Schlüssel-Fingerabdruck. 2. **Quellen → Beobachtungsumfang → Ermittlungsmodus**: **Ganzes Konto**, alle vier Quellentypen, **Eigene Aktionen**. Jeder neue Chat bekommt Profil und die letzten **200 sichtbaren Nachrichten** gespeichert. **Umfang speichern** und bestätigen. 3. **Chats laden** und mit der Chatliste des Kontos vergleichen. Das Limit liegt bei 1.000 Dialogen (bis 20.000 unter **Parameter → Aus der Kontoliste gelesene Chats**); Chats darüber hinaus tauchen auf, sobald sie aktiv werden. 4. **Aufzeichnungseinstellungen** → **Alle sichtbaren Aktivitäten**, Anhangslimits und Speicherplatz prüfen. Starten, dann mit einer Nachricht, einer Bearbeitung und einer Löschung testen. KanäleGruppenPrivate ChatsBots EIN KONTO / EIN SIGNATURSCHLÜSSEL**Alle ausgewählten, für das Konto sichtbaren Aktivitäten → ein Protokoll** Nachrichten · Bearbeitungen · Löschhinweise · sichtbare Reaktionen · Mitgliederereignisse · eigene Aktionen „Ganzes Konto“ heißt jeder Chat, den dieses Konto öffnen kann, abzüglich Ausschlüssen. Keine geheimen Chats. Neue Chats kommen hinzu, sobald sie auftauchen; alter Verlauf wird nicht automatisch geladen. ## 2. Verlauf erfassen und Dateien sichern Legen Sie eine Case-Board-Sammlung an und markieren Sie, was wichtig ist. Führen Sie ein Quellenregister: Chat-ID, Titel, Konto, Rolle, Beginn der Live-Erfassung, Verlaufsergebnis, Medienergebnis, Lücken. | Anforderungen | Aktivität im Panel | Was es bietet | | --- | --- | --- | | Verlauf aller aktivierten Chats | Quellen → Vollständigen Verlauf laden | Verfügbare frühere Nachrichten werden in das Arbeitsbereichsprotokoll aufgenommen, mit den Funktionen „Pause/Fortsetzen“ und einem signierten Fortschrittsbericht. [Anleitung zur Verlaufsanzeige](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/). | | Bestehender Chat-Kontext im Protokoll | Quellen → Aufzeichnungseinstellungen → Verlaufs-Snapshot | Aktuelle Nachrichten als signierte Einträge. Standard 500, bis 10.000 unter **Parameter → Größter Verlaufs-Snapshot**. | | Vollständiger, derzeit sichtbarer Verlauf eines Chats | Gesamten Chat exportieren → Gesamten Chat exportieren oder Chats → Chat exportieren | Ein separates signiertes Paket mit `chat.json` und `chat.html`, eines pro Chat. | | Kontext beim Erscheinen eines neuen Chats | Beobachtungsumfang → Wenn ein neuer Chat oder Bot erscheint | Sein Profil und bis zu 1.000 aktuelle Nachrichten (200 im Ermittlungsmodus). Gilt nicht für bestehende Chats. | | Anhangsgröße | Sichtbare Anhänge herunterladen + Begrenzungen pro Dateityp | Achten Sie auf `media.saved` mit SHA-256 und Größe. In der Warteschlange, übersprungen oder fehlgeschlagen heißt nicht gespeichert. | Ein Chat-Export landet nicht im Journal oder in Personenprofilen. Um alten Verlauf in TgWitness zu durchsuchen, nehmen Sie **Gesamten Verlauf laden** oder Snapshots. Hier: der Kanal, die Gruppe, der Bot-Chat und der private Chat, dazu die Rechnungsdatei und ihr Hash. Was vor der Erfassung gelöscht wurde, ist weg. ## 3. Behalten Sie den Verlauf der Unterhaltung und Ihre eigenen Handlungen im Blick Lassen Sie es laufen. Markieren Sie die heißen Chats mit Stern als Priorität, stellen Sie Nachprüfungen unter **Aufzeichnungseinstellungen → Nachprüfung** ein und behalten Sie `recheck.completed`, FloodWait und Medienergebnisse im Blick. **Chats → Profil → Profil jetzt speichern** speichert Chatbeschreibung, Bot-Befehle und weitere Metadaten. **Ein Bot oder eine Einladung im Rahmen des Falles folgen** 1. **Chats → Telegram-Link öffnen**, zuerst die Vorschau speichern. Link und Vorschau werden signierte Einträge. 2. Falls nötig, tritt **Beitreten / öffnen und beobachten** dem Chat bei oder startet den Bot mit seinem Startparameter. 3. Um eine Aktion zu dokumentieren, antworten Sie oder nutzen Sie **Button drücken** im Panel. Sie bekommen `interaction.requested` und `interaction.result` mit der Antwort des Bots. Das sind echte Aktionen. In einer anderen App gedrückte Buttons sind nicht sichtbar, nur die Antwort des Bots. Keine Web-Apps, Zahlungen oder Telefon/Standort. ## 4. Verfolgen Sie Personen, Links und Dateien über Chats hinweg 1. **Journal**, **Alle Quellen**, suchen Sie eine Phrase, Domain oder einen Benutzernamen. Öffnen Sie Treffer und schicken Sie sie **Aufs Board**. 2. **Chats → Personen → Profile einschalten**, wählen Sie eine Person: Namensverlauf, Antworten, Aktivität, **Auch in…**, Links, Wallets, Telefone. Öffnen Sie die zitierten Einträge. 3. Verfolgen Sie dieselbe numerische Benutzer-ID in andere Chats. Ein passender Name, eine Wallet oder ein Avatar ist ein Hinweis, kein Beweis. 4. Vergleichen Sie Datei-Hashes. Gleicher SHA-256 = gleiche Bytes. Wer sie geteilt hat, ist eine andere Frage. FALLÜBERSICHT / VERWEISEN VERFOLGENFiktiver Fall · keine Echtzeit-Grafik KANAL / ANKÜNDIGUNG**Original → bearbeitete Zielversion** Einträge Nr. 101, Nr. 188, Nachricht Nr. 84 · Absender nicht zugeordnet GRUPPE / EINSÄTZE**Benutzer 71001 veröffentlicht den neuen Link** Eintrag Nr. 146 · Nachricht Nr. 309 · Gespeicherte Empfangsbestätigung Nr. 151 BOT / BESTELLUNGSGESPRÄCH**Eine Schaltfläche führt zu dieser Seite** Eintrag Nr. 173 · Nachricht Nr. 12 Metadaten der „Zurück“-Schaltfläche PRIVAT / WEITERFÜHRUNG**Benutzer 71001 wiederholt das Ziel** Eintrag Nr. 205 · Nachricht Nr. 922 · Speicherbestätigung Nr. 209 Vier Chats liefern unterschiedliche Beobachtungen. Verfolgen Sie die Quelldatensätze für jede Verbindung; der Kanalbeitrag hat keinen zuordenbaren Absender. Die numerischen IDs und Datensatzreferenzen wurden für diese Anleitung fiktiv erstellt. Diese übersichtliche Darstellung zeigt, wie Suchergebnisse, Profile und geprüfte Datensätze miteinander verknüpft werden; das „Case Board“ speichert die entsprechenden Karten und Quellenangaben. | Zusammenhang | Unterstützende Anmerkung | Fazit: Beibehalten | | --- | --- | --- | | Gleicher Telegram-Account | Benutzer-ID 71001 in der Gruppe #146 und im privaten Chat #205 | Dieselbe Absender-ID in beiden Chats. Wer das im echten Leben ist, ist eine andere Frage. | | Wiederholtes Ziel | `pay.example.invalid/new` in #146, Metadaten der Schaltfläche #173, bearbeitete Beiträge #188 und #205 | Derselbe Link an vier Stellen. Wer ihn kontrolliert, braucht andere Quellen. | | Gleiche Dateigröße | Identische vollständige SHA-256-Werte in den abgeschlossenen Medienbelegen Nr. 151 und Nr. 209 | Beide Dateien sind byte-identisch. | Profile umfassen nur Personen, die in *diesem Arbeitsbereich* etwas geschrieben haben, keine Mitgliederliste. Zitate pro Fakt: **Parameter → Zitierte Einträge pro Fakt**. ## 5. Rekonstruieren Sie die Abfolge und markieren Sie die Lücken Versionen in **Chats**, dann **Journal** mit **Alle Quellen** + **Bearbeitungen**, **Löschungen**, **Abdeckung**. Beide Zeiten in die Zeitleiste: Telegrams Datum und wann es beobachtet wurde. 1. 09:00 · #101**Erfasster Kanalbeitrag** Das ursprüngliche Ziel bleibt erhalten. 2. 09:12 · #146 / #151**Die Gruppe fügt einen anderen Link hinzu** Benutzer 71001 veröffentlicht den Beitrag; der Download eines Anhangs wird abgeschlossen. 3. 09:16 · #173**Der Bot zeigt denselben Zielort an** Die gespeicherten Tastatur-Metadaten enthalten den Link. 4. 09:20 · #188**Änderungen bei den Kanalankündigungen** Sowohl die ursprünglichen als auch die bearbeiteten Einträge bleiben erhalten. 5. 09:24 · #205 / #209**In einer privaten Folge wird dies wiederholt** Der gespeicherte Anhang weist denselben vollständigen SHA-256-Hashwert wie #151 auf. 6. 09:28 · #231**Benachrichtigung über die Löschung einer Gruppe geht ein** Die frühere Feststellung gilt weiterhin: Weder der Verfasser der Löschung noch ein genauer Zeitpunkt der Löschung werden angegeben. Beispielhafte Beobachtungszeitpunkte und Verweise. Zwischen diesen Einträgen befinden sich weitere Protokollaufzeichnungen. Die Journalreihenfolge ist die Eingangsreihenfolge, nicht unbedingt die Reihenfolge der Ereignisse. Halten Sie Live-Einträge, Snapshots, wiederhergestellte Nachrichten, Löschungen und „bei Nachprüfung nicht gefunden“ auseinander und markieren Sie jede Lücke als unbekannt. ## 6. Erweitern Sie den Fall auf andere Sammelkonten Ein Arbeitsbereich pro Konto, gleiche Schritte. Notieren Sie Rolle und Fingerabdruck von jedem. Nachrichtennummern gelten pro Konto, also immer Arbeitsbereich und Chat angeben. Eine [Kontogruppe](https://phishdestroy.github.io/TgWitness/de/docs/groups/) zeigt den Status, teilt Einstellungen und exportiert alle zusammen, jeweils mit eigenem Journal und Schlüssel. Eine kontenübergreifende Zeitleiste bauen Sie in Ihren Notizen. Langer Fall? Fügen Sie einen [unabhängigen Zeugen](https://phishdestroy.github.io/TgWitness/de/docs/witness/) hinzu und testen Sie, was jedes Konto wirklich erfasst. ## 7. Ein überprüfbares Fallpaket liefern Ein signiertes ZIP aus jedem Arbeitsbereich (immer das ganze Journal, Filter spielen keine Rolle), dazu Personenprofile, Chat-Exporte und Dateien. ``` CASE-001/ # assembled by the analyst case-notes.md # question, findings, alternative explanations sources.csv # every chat, role, acquisition result and gap timeline.csv # account + chat + message + seq + both times workspace-A/ evidence.zip # complete signed observation journal retained-checkpoint.json profiles-operations.json # separately signed people profiles history-channel.zip # signed current-history export history-group.zip verification.txt workspace-B/ # separate journal and trusted fingerprint witness/ # retained checks, journal and signed posts SHA256SUMS # hashes of the delivered files ``` Schicken Sie die Fingerabdrücke separat. Prüfen Sie alles gegen seinen eigenen Arbeitsbereich: ``` 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 ``` Bewahren Sie Prüfausgabe, Originale, Abdeckung und Übergabeprotokoll bei Ihren Ergebnissen auf. Schreiben Sie alles im Report studio zusammen. Braucht der Empfänger weniger, erstellen Sie eine [minimierte Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/handover/). --- # Telegram · Erstellen Sie ein Case Board Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/case-board/ Sammeln Sie gespeicherte Beobachtungen, genaue Markierungen und Aktionsausschnitte auf einem privaten Board, besprechen Sie diese mit Ihrem Team und präsentieren Sie eine Zusammenstellung. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Machen Sie aus gespeicherten Nachrichten einen Fall, an dem Ihr Team gemeinsam arbeitet. Lesezeichen, exakte Zitate, Ausschnitte und Diskussionen, jeweils mit der Quelle verknüpft. Jede Änderung ist eine signierte Revision. ## Von einer Nachricht zur Fallkarte 1. **Ermittlung → Case Board** (Modus Standard oder Experte). Legen Sie eine Sammlung für den Fall an. 2. Im **Journal** oder in einem Chat **Aufs Board** (oder **B**) drücken. Die Karte landet im Eingang, geben Sie ihr einen Titel und verschieben Sie sie. 3. Text in einer Nachricht markieren, **Hervorheben → Board** behält exaktes Zitat und Version. Notieren Sie, warum es wichtig ist. 4. Diskutieren, Status setzen, bei Bedarf zur Quelle zurückspringen. **Präsentation** führt das Team durch das Material. ### Folgen Sie einem geänderten Zahlungslink Synthetisches Beispiel · lokale Illustration 1. **Erfassung.** Öffnen Sie die gespeicherte Beobachtung Nr. 142 und deren Nachrichtenversion. 2. **Lesezeichen.** Speichern Sie das Zitat, die Quellenangabe und Ihre Frage auf einer Karte. 3. **Überprüfen.** Fügen Sie einen Teamkommentar hinzu und verschieben Sie die Karte in den Status „Überprüfen“. 4. **Präsentieren.** Gehen Sie die Erfassung durch und öffnen Sie den Kontext der zitierten Quelle. #### Gespeicherte Beobachtung Nr. 142 „Verwenden Sie den neuen Zahlungslink.“ Operations-Chat · Nachricht 38 · beobachtet um 09:12 UTC #### Karte: Ziel geändert > Verwenden Sie den neuen Zahlungslink. Frage: Welches Ziel tauchte in der früheren Version auf? #### Team-Überprüfung Analyst: Vergleichen Sie dies mit Beobachtung Nr. 101. Status: Überprüfung · Überarbeitung beibehalten #### Quelltextkontext Karte → gespeicherte Version → frühere Beobachtung Die Anmerkungen und die Telegram-Beobachtungen bleiben separat identifizierbar. ## Speichern Sie einen nützlichen Bereich einmalig Umschalt-Klick auf zwei Nachrichten für **Ausschnitt dazwischen**, **Ausschnitt nach Zeit** nutzen oder die aktuellen Journalfilter speichern. **Seit dem Lesezeichen hinzugekommene Einträge zeigen** zeigt, was später kam. Zeitausschnitte nutzen die Beobachtungszeit, Ausschnitte nach Nachrichten-ID folgen diesen Nachrichten, wenn sie sich ändern. ## Weisen Sie jedem Kollegen die richtige Rolle zu **Prüfer** liest, **Analyst** fügt Karten und Kommentare hinzu, **Operator** verwaltet zusätzlich Sammlungen und Entscheidungen. Chat-Berechtigungen gelten auch für Karten. ## Setzen Sie die Arbeit in ein lieferbares Ergebnis um Ausschnitte werden als signiertes JSON oder CSV exportiert. Berichte können Lesezeichen, Ausschnitte und Kommentare enthalten, das stellen Sie im [Report studio](https://phishdestroy.github.io/TgWitness/de/docs/reports/) ein. Für einen eingeschränkten Empfänger nehmen Sie eine [Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/handover/). Details: [Case-Board-Referenz](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/). --- # Telegram · Erstellen Sie einen Bericht Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reports/ Wählen Sie die Berichtsdaten, eines von acht Designs und den Inhalt aus, zeigen Sie dann eine Vorschau an und exportieren Sie HTML, ein signiertes PDF oder ein vollständiges Beweismittelpaket. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Führen Sie den Leser von der Fallfrage direkt zu den gespeicherten Einträgen. Report studio stellt Ihre ausgewählten Daten, Änderungsverläufe, Diagramme und Ergebnisse zusammen. Acht Designs, HTML und natives PDF. Jeder HTML-, PDF- und JSON-Bericht wird mit Ihrem Schlüssel versiegelt. ## Erstellen Sie einen Bericht in drei Schritten 1. **Exporte → Konfigurieren und Vorschau → Daten**: der ganze Arbeitsbereich oder ausgewählte Chats, Autoren, Daten (UTC, wann TgWitness den Eintrag gesehen hat) und Eintragstypen. 2. **Design & Inhalt**: Design wählen und was hineinkommt: Diagramme, Teilnehmer, Transkript, Änderungen, Case-Board-Elemente, Falldaten und Notizen. 3. **Vorschau**: Zahlen, Aktivität, Stichproben und fehlende ID-Bereiche prüfen. Speichern, dann das benötigte Format herunterladen. ### Ordnen Sie das gespeicherte Material für den Leser entsprechend an Synthetisches Beispiel · schematisches Layout, kein generierter Bericht 1. **Auswahl.** Wählen Sie zwei Chats und den Beobachtungszeitraum für den Fall aus. 2. **Verfassen Sie den Text.** Wählen Sie ein Layout und die Abschnitte aus, die die Frage beantworten. 3. **Vorschau.** Überprüfen Sie die ausgewählten Zählwerte und den gespeicherten Vorher-Nachher-Text. 4. **Überprüfen.** Erstellen Sie die endgültige Datei und vergleichen Sie deren Signatur mit dem Fingerabdruck des vertrauenswürdigen Arbeitsbereichs. #### Ausgewählte Beobachtungen 2 Chats · 1 Beobachtungstag Nachrichten, Bearbeitungen und Löschhinweise #### Berichtsstruktur ##### Geänderte Zahlungsadresse Fallfrage → Umfang → Ergebnisse → Verweise auf Datensätze **Nachrichtenkontext** Anmerkung Nr. 142: „Verwenden Sie den neuen Zahlungslink.“ **Gespeicherte Änderungen** Vorher: old.example.invalid → Nachher: new.example.invalid #### Überprüfen Sie die Auswahl 18 Beobachtungen · 2 gespeicherte Bearbeitungen Zeitangaben zu Versand, Bearbeitung und Beobachtung sind separat gekennzeichnet. #### Endgültiges Ergebnis Signiertes PDF + signiertes JSON oder eine signierte ZIP-Datei mit dem lesbaren Bericht Der Empfänger überprüft die Datei und den vertrauenswürdigen Fingerabdruck. ## Wählen Sie einen Lesestil **Classic, Editorial, Briefing, Analytics, Technical, Overview, Reading series, and Ledger & margin**: gleiche Einträge, anderes Aussehen. Beim Wechsel bleiben Auswahl und Notizen. Jede der 25 Sprachen. PDFs werden mit mitgelieferten Schriften erzeugt, kein Browser nötig. Chinesisch, Japanisch und Koreanisch brauchen eine Schrift wie Noto Sans CJK auf dem Server (systemweit oder in `TGWITNESS_FONT_DIR`), sonst gibt es nur HTML und JSON. ## Lesen Sie eine Änderung im Kontext Bearbeitungen zeigen vorher und nachher, Löschungen die letzte gespeicherte Version. Antworten, Weiterleitungen, Reaktionen, Buttons und Anhänge behalten ihre Verweise. Die Design-Vorschau nutzt die ersten 50.000 Einträge, die Datenvorschau zählt alles exakt. Für das endgültige Seitenlayout erzeugen Sie das PDF. ## Wählen Sie die Empfängerfassung sorgfältig aus Filter formen nur den Bericht, das Beweis-ZIP enthält weiter das ganze Journal und alle Dateien. Soll der Empfänger weniger bekommen, nutzen Sie eine [minimierte Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/handover/). Mehr: [Berichtsinhalte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/), [den Export prüfen](https://phishdestroy.github.io/TgWitness/de/docs/exports/). --- # Telegram · Bereiten Sie eine Kopie zur Weitergabe vor Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/handover/ Wählen Sie die Datensätze und Felder aus, die ein Empfänger erhalten darf, prüfen Sie die fertige Kopie und verifizieren Sie das signierte Manifest sowie die Grenzen des Quelljournals. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Teilen Sie nur, was nötig ist, das Original bleibt unberührt. Eine Übergabe ist ein separater signierter Auszug: Chats und Personen wählen, Identitäten oder Text verbergen, Dateien und Teamnotizen auswählen. Das Manifest hält fest, was behalten, gekürzt und weggelassen wurde. ## Auszug für den Empfänger vorbereiten 1. **Exporte → Übergabeauszug**: Zweck eintragen, Chats und Zeitraum wählen, **Personen der gewählten Chats laden**, wenn Sie namentlich genannte Personen brauchen. 2. Alle anderen: Pseudonyme, weggelassen oder wie aufgezeichnet. Text und Dateien sind getrennte Schalter; Telefonnummern und E-Mails lassen sich maskieren. 3. Case Board: nichts, Lesezeichen und Ausschnitte oder Karten mit Kommentaren. Teamnamen lassen sich durch Aliasse ersetzen. 4. **Übergabeauszug herunterladen**, öffnen, prüfen, vor dem Versenden durchsehen. ### Ein Original, eine Kopie zur Weitergabe Fiktives Beispiel · dient nur zur Veranschaulichung 1. **Auswählen.** Den Fall-Chat einbeziehen und die Person identifizieren, um die es in dem Auszug geht. 2. **Minimieren.** Wählen Sie aus, wie ein anderer Teilnehmer in der Freigabekopie angezeigt wird. 3. **Überprüfen Sie** den Bericht und die Datensätze des generierten Archivs**,** bevor Sie es versenden. 4. **Teilen.** Liefern Sie die geprüfte Fassung und übermitteln Sie den zugehörigen vertrauenswürdigen Fingerabdruck separat. #### Ursprüngliche Anmerkung Nora · Benutzer 71002 „Ich habe den überarbeiteten Link erhalten.“ Das Quellprotokoll bewahrt diese gespeicherte Beobachtung auf. #### Kopie für den Empfänger Wie aufgezeichnet anzeigen: Nora · Benutzer 71002 · „Ich habe den überarbeiteten Link erhalten.“ Pseudonym: P01 · „Ich habe den überarbeiteten Link erhalten.“ Weglassen: Die Nachricht dieses Teilnehmers wird im Text nicht berücksichtigt. #### Prüfen Sie die tatsächlichen Dateien Lesen Sie die Dateien „report.html“ und „records.jsonl“. Überprüfen Sie Identitäten, Text, Anhänge und optionale Teamkommentare. #### Signierter Auszug Auswahl + Datei-Hashes + signiertes Manifest Ein separates Paket, das mit den Grenzen des zugehörigen Quellprotokolls verknüpft ist ## Verwenden Sie die Steuerelemente gemeinsam | Kontrolle | Auswirkungen auf den Text | | --- | --- | | Personen | Ausgewählte Personen bleiben namentlich genannt, andere bekommen Pseudonyme oder werden weggelassen. | | Text | Der ganze Text, nur der der ausgewählten Personen und Ihres Kontos, oder keiner. | | Dateien | Dateien der ausgewählten Personen und Ihres Kontos, alle angezeigten Dateien oder keine. | | Fallübersicht | Nichts, Lesezeichen und Ausschnitte oder Karten mit Diskussion. | Lesen Sie auch Text und Dateien: Ein Pseudonym entfernt keine Namen, die in einer Nachricht oder einem Anhang stehen. Fehlt eine ausgewählte Datei, stellen Sie sie wieder her oder lassen Sie Anhänge weg. ## Der Text muss unabhängig überprüfbar bleiben. ``` python -m tgwitness.verify handover.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 ``` Behalten Sie das Originalarchiv und die Prüfpunkte selbst. Der Empfänger kann seine Kopie prüfen, ohne den ganzen Arbeitsbereich zu bekommen. Design: [Report studio](https://phishdestroy.github.io/TgWitness/de/docs/reports/). Vertrauenswürdige Referenzen: [Exportprüfung](https://phishdestroy.github.io/TgWitness/de/docs/exports/). --- # Telegram · Verwalten Sie eine Gruppe von Konten Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/groups/ Vergleichen Sie Gruppen-Arbeitsbereiche, suchen Sie eine Quelle, überprüfen Sie Beobachtungszeiträume und wenden Sie gemeinsame Einstellungen mit Ausnahmen pro Konto an. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Betreiben Sie mehrere Konten zusammen, jedes weiterhin mit eigenen Einträgen und eigenem Schlüssel. Eine Gruppe bringt Verbindungsstatus, Start/Pause, gemeinsame Einstellungen und Exporte auf einen Bildschirm. Praktisch, wenn mehrere Konten am selben Fall arbeiten. ## Gruppenübersicht öffnen Öffnen Sie die Gruppe unter **Konten**. Jedes Konto zeigt Status, Route, Latenz und letzte gespeicherte Nachricht. **Erfordert Aufmerksamkeit** listet die defekten, **Beheben** bringt Sie direkt hin. **Alle starten** / **Alle pausieren** fragen vorher nach. **Gruppeneinstellungen** werden geteilt, aber die eigenen Werte eines Kontos bleiben, bis Sie sie ersetzen. ### Überprüfen Sie eine Routenänderung innerhalb einer Gruppe Fiktives Beispiel · illustrative Prüfungen und Ergebnisse 1. **Auswählen.** Wählen Sie die Gruppe aus und prüfen Sie, welche Konten sich ändern werden. 2. **Vorbereitung:** Behalten Sie den eigenen Pfad eines Kontos bei, wenn dieser getrennt bleiben soll. 3. **Überprüfen.** Testen Sie die vorgeschlagene Verbindung und überprüfen Sie die Messergebnisse. 4. **Anwenden.** Vor dem Speichern noch einmal überprüfen und das Ergebnis für jedes Konto kontrollieren. #### Fallteam Kanal-Collector · Gruppen-Collector · Referenzkonto 3 separate Arbeitsbereiche #### Überprüfte Auswahl 2 Konten folgen dem vorgeschlagenen Vorgehen. Das Referenzkonto verfügt über eine eigene Route. #### Vorbereitungsprüfungen Kanal-Collector: Telegram-Übertragungszeit 84 ms Gruppen-Collector: Telegram-Übertragungszeit 91 ms Diese Zahlen sind fiktive Messwerte für das Beispiel. #### Anwendungsergebnisse Kanal-Collector: Speicherung abgeschlossen, Beobachtung fortgesetzt. Gruppen-Collector: Überprüfung fehlgeschlagen, vorherige Einstellungen wiederhergestellt. Referenzkonto: eigene Route beibehalten. ## Ändern Sie die Route mit einem Überprüfungsschritt 1. **Gruppenroute ändern**, Typ und Einstellungen wählen. 2. **Auswahl prüfen**: welche Konten sich ändern und welche eine eigene Route haben. 3. **Vorbereiten und prüfen** testet eine frische Telegram-Verbindung und, wo möglich, die Ausgangs-IP. 4. **Geprüfte Verbindung anwenden** und jedes Ergebnis ansehen. Laufende Konten machen weiter, inaktive bleiben inaktiv. Latenz ist die Zeit für den Verbindungsaufbau zu Telegram, die Ausgangs-IP ist das, was die Route bei der Prüfung zeigte. Ergebnisse können je Konto abweichen. ## Verwenden Sie überlappende Zugriffsrechte **Chats, die mehrere Konten sehen** listet gemeinsame Quellen und ihre Abdeckung. Kanäle und Supergruppen lassen sich mit **Mit … Konten exportieren** von mehreren Konten gleichzeitig exportieren. Private Chats und einfache Gruppen nicht, ihre Nachrichtennummern gelten pro Konto. ## Die Gruppe als Paket exportieren **Gruppe exportieren** liefert ein ZIP mit dem signierten Export jedes Kontos und einer signierten Liste davon. Jedes behält seinen Fingerabdruck für die Prüfung. Eine zusammengeführte Zeitleiste bauen Sie weiterhin selbst. Weiter: [Berichte](https://phishdestroy.github.io/TgWitness/de/docs/reports/), [Case Board](https://phishdestroy.github.io/TgWitness/de/docs/case-board/), [Exporte prüfen](https://phishdestroy.github.io/TgWitness/de/docs/exports/). --- # Telegram · Erfahren Sie, wie die Beweissicherung funktioniert Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/concepts/ Verfolgen Sie eine Nachricht von der Erfassung bis zum Prüfpunkt. Ändern Sie einen Beispieldatensatz, berechnen Sie dessen SHA-256-Kette neu und sehen Sie, was ein gespeicherter Prüfpunkt erkennt. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Nachrichten ändern sich. Ihre Aufzeichnung dessen, was Sie gesehen haben, sollte das nicht, und jeder sollte das prüfen können. Unten zwei kleine Experimente. Erfundene Nachrichten, alles läuft im Browser, nichts geht an Telegram. ## Vom Chat-Export zum überprüfbaren Datensatz Ein [Telegram-Desktop-Export](https://telegram.org/blog/export-and-more) speichert den gerade sichtbaren Verlauf als HTML oder JSON. TgWitness ergänzt ein laufendes Änderungsjournal, Signaturen auf jedem Eintrag und Prüfpunkte, mit denen andere vergleichen können. | Aufgabe | Export aus Telegram Desktop | TgWitness | | --- | --- | --- | | Gespeicherte Unterhaltungen lesen | HTML oder JSON mit ausgewählten Medien | Gespeicherte Chats, durchsuchbares Protokoll und Offline-Berichte | | Verfolgen Sie eine Veränderung im Zeitverlauf | Der beim Export verfügbare Verlauf | Alte Versionen, spätere Bearbeitungen und Löschungen, alles behalten | | Dateien nach der Übergabe überprüfen | Standardmäßige HTML-/JSON-Exportdateien sind nicht signiert. | Signiertes Manifest, signierte Einträge und versiegelte Berichte, geprüft gegen einen vertrauenswürdigen Schlüssel | | Vergleichen Sie mit einem früheren gespeicherten Zustand | Bewahren Sie eine separate Referenzkopie oder einen Hash auf | Signierte Kontrollpunkte, ein separater Zeuge und optionale externe Zeitstempel | Der Vergleich beruht auf dem [Exportcode von Telegram Desktop](https://github.com/telegramdesktop/tdesktop/tree/768d47cda6c7f447c10a25d1f363279493a90ed7/Telegram/SourceFiles/export/output) mit Stand 2. November 2026. ## Eine Nachricht, drei Beobachtungen Eine neue Nachricht, eine Bearbeitung und eine Löschung werden drei getrennte Einträge. Die Bearbeitung überschreibt den ersten nicht, die Löschung entfernt ihn nicht. 01 / DER WEG DER NACHRICHTBeispielablauf Telegram delivers an update to the collector, which appends a journal record. · Telegram · Collector · Protokoll · Aktualisierung → · Anhängen → AKTUELLE CHAT-ANSICHT Nachricht Nr. 42 Nachricht gelöscht Die Nachricht ist aus der Chat-Ansicht verschwunden. BEOBACHTUNGSPROTOKOLL 3 Einträge 1. 01 `message.new` Treffpunkt um 10:00 Uhr ✓ 2. 02 `message.edited` Treffpunkt um 11:00 Uhr ✓ 3. 03 `message.deleted` Löschhinweis zu Nr. 42 ✓ Alle drei erfassten Beobachtungen verbleiben im Protokoll. Vereinfachter Pfad für eine bereits ausgewählte Quelle. Operative Aufzeichnungen greifen ebenfalls auf das tatsächliche Protokoll zurück. Die Erfassung hängt davon ab, was das Konto einsehen kann und was Telegram bereitstellt. Telegram sagt nicht, wer eine Nachricht gelöscht hat oder wann genau. TgWitness lässt diese Felder leer, statt zu raten. ## Ändern Sie einen Datensatz. Folgen Sie dem Hash. Jeder Eintrag enthält den Hash des vorherigen. Ein anderswo aufbewahrter Prüfpunkt hält Journallänge und letzten Hash fest. 02 / HASH-CHAIN-SANDBOXEchtes SHA-256 · Beispieldatensätze AUFZEICHNUNG 01**Nachricht empfangen**`h₁ = SHA-256(e₁)`Links zu 64 Nullen AUFZEICHNUNG 02**Treffpunkt um 11:00 Uhr**`h₂ = SHA-256(e₂)`Enthält h₁ AUFZEICHNUNG 03**Löschung festgestellt**`h₃ = SHA-256(e₃)`Enthält h₂ AN ANDERER STELLE GESPEICHERT**3 Einträge · Kopfzeile `h₃`**Vergleichen Sie diese festgelegte Abgrenzung mit dem bereitgestellten Protokoll. Das Ändern eines Ereignisses verändert dessen Hash-Wert. Das Neuerstellen der Kette verändert deren Kopf. Das Entfernen des Endes führt dazu, dass die Kette kürzer ist als der beibehaltene Kontrollpunkt. **Sehen Sie sich Datensatz 2 und die vollständigen Hashes an** Dies ist der exakte UTF-8-JSON-Text, der in diesem Beispiel gehasht wurde. Die Werte sind fiktiv; die neun Felder und die Serialisierung entsprechen dem Protokollformat. ``` ``` Hash des gespeicherten Datensatzes 2 `` Neu berechneter Hash von Datensatz 2 `` Diese Sandbox berechnet Hashes, keine Signaturen. Der eigentliche Verifizierer überprüft zudem die Ed25519-Signatur, die Sequenz und den Link jedes Ereignisses. Durch die bloße Rekonstruktion von Hashes lassen sich unter dem vertrauenswürdigen Schlüssel keine gültigen Signaturen erstellen. ## Die eigentlichen Regeln in wenigen Zeilen HASH + SIGNATUR h0 = 064 hi = hex(SHA-256(C(ei))) σi = Ed25519.Sign(sk, unhex(hi)) **C** sind die neun Ereignisfelder als UTF-8-JSON: sortierte Schlüssel, kein zusätzlicher Leerraum, kein ASCII-Escaping, kein NaN/Unendlich. `previous_hash` ist hi−1, h0 sind 64 Nullen, Signaturen decken die 32 Rohbytes des Digests ab. Die Felder: `seq`, `observed_at`, `source_at`, `kind`, `chat_id`, `message_id`, `actor_id`, `payload`, `previous_hash`. Vollständige Spezifikation: [Ereigniskodierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#event-canonicalization). BEIBEHALTENER PRÜFPUNKT Nexport ≥ Ncheckpoint hexport[Ncheckpoint] = Hcheckpoint Prüfen Sie die Signatur des Prüfpunkts gegen den festgelegten Schlüssel und vergleichen Sie ihn dann mit dem Journal. Ein späterer Export darf länger sein, muss aber am Prüfpunkt übereinstimmen. ## Drei Fragen, drei verschiedene Überprüfungen [01 / INTEGRITÄT**Hat sich dieser Eintrag geändert?** Hashes und Signaturen gegen einen Schlüssel, dem Sie vertrauen.](https://phishdestroy.github.io/TgWitness/de/docs/exports/)[02 / KONTINUITÄT**Was wurde zuvor beibehalten?** Vergleichen Sie den Export mit Prüfpunkten, die ein Zeuge aufbewahrt hat.](https://phishdestroy.github.io/TgWitness/de/docs/witness/)[03 / LIEFERUNG**Sind diese Testereignisse eingegangen?** Senden, bearbeiten und löschen Sie Testnachrichten und sehen Sie, was jedes Konto erfasst hat.](https://phishdestroy.github.io/TgWitness/de/docs/cases/) Signaturen beantworten „wurde es geändert?“, Prüfpunkte „passt es zu dem, was vorher da war?“, Testnachrichten „haben wir alles erfasst?“. [Was die Prüfung beweist und was nicht.](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) Weiter: eine [Untersuchung des ganzen Kontos](https://phishdestroy.github.io/TgWitness/de/docs/cases/) vom Start bis zum Fallpaket. [Export Clinic: watch the controlled Desktop experiment](https://phishdestroy.github.io/TgWitness/docs/export-clinic/). Compare the two-minute film, the original recording and seven pairs of test exports. Local modification is disclosed. --- # Telegram · Sorgen Sie für Sicherheit Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/security/ Erfahren Sie, wo Sitzungen, Schlüssel und Beweismaterial gespeichert sind, welche Daten Ihren Rechner verlassen, welchen Schutz die Sicherheitsmaßnahmen bieten und wie Sie eine Installation absichern können. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Was Ihren Rechner verlässt, was jedes Geheimnis öffnet und was die Schutzmaßnahmen abdecken und was an Ihnen hängt. **127.0.0.1**Standardmäßige Panel-Adresse **256-Bit**Zufälliges Panel-Token **0**CDNs, Analysetools oder Remote-Schriftarten **Ed25519**Signatur auf jedem Datensatz ## Hier finden Sie alles Collector, Panel und alle Einträge bleiben auf Ihrem Rechner. Standardmäßig wird nur Telegram kontaktiert, alles andere ist ein eigener Schalter. 06 / WAS DIE MASCHINE VERLÄSSTIhre Installation IHR COMPUTER ODER SERVER **Panel**127.0.0.1:8787 · Bearer-Token **Collector**Ein Telegram-Client pro Arbeitsbereich DATENVERZEICHNIS **Protokoll**SQLite · Hash-verknüpft · signiert **Medien**Dateien, benannt nach SHA-256 **Vault**Fernet · Sitzung, API-Paar, Signaturschlüssel, Proxy - **Telegram**Immer · über Ihren Weg Die MTProto-Verbindung des Kontos: direkt, SOCKS5, HTTP oder MTProxy. Der „IP verbergen“-Modus wartet auf einen funktionierenden Proxy. Für den direkten Fallback ist ein Modus erforderlich, der dies ausdrücklich zulässt. - **Text für externe Seiten**Optional · standardmäßig deaktiviert Das Protokoll, die Dateien und die Kontrollpunkte werden vor dem Hochladen in einen S3-kompatiblen Speicher mit AES-GCM verschlüsselt. Der Schlüssel verbleibt bei Ihnen; Anhänge werden anhand von schlüsselgebundenen Hashes benannt, nicht anhand ihres Inhalts-Hashes. - **Benachrichtigungen**Optional · standardmäßig deaktiviert Probleme und Änderungszähler mit Chat-Titeln. Nachrichtenauszüge werden nur gesendet, wenn Sie diese Funktion aktivieren. - **Zeitstempel-Autorität**Optional · standardmäßig deaktiviert Lediglich der SHA-256-Hash eines signierten Checkpoints und ein zufälliger Nonce. Keine Nachrichten, keine Chat-Namen. - **Zeuge**Optional · standardmäßig deaktiviert Ruft signierte Checkpoints und Erfassungszähler mit einem schreibgeschützten Token ab. Es kann weder Unterhaltungen lesen noch Einstellungen ändern. Standard: Nur die Telegram-Verbindung verlässt diesen Rechner. Optionale Speicherorte werden pro Arbeitsbereich konfiguriert. Nachrichtentexte und Medien werden unverschlüsselt im Datenverzeichnis gespeichert: Schützen Sie dieses durch Festplattenverschlüsselung und Dateiberechtigungen. ## Was jedes Geheimnis enthüllt | Geheim | Wo es aufbewahrt wird | Was es ermöglicht | Falls es bekannt wird | | --- | --- | --- | --- | | **Panel-Token** | `panel-token.txt` im Datenverzeichnis; der Browser behält es pro Tab | Alles in jedem Arbeitsbereich | TgWitness stoppen, `panel-token.txt` löschen, neu starten: Sie bekommen ein neues | | **Telegram-Sitzung** | Vault, verschlüsselt (`credentials.enc`) | Der Telegram-Account selbst | Beenden Sie die Sitzung in Telegram unter *„Einstellungen“ → „Geräte“* | | **Signaturschlüssel** | Vault, verschlüsselt (`signing.enc`) | Einträge unter Ihrem Fingerabdruck signieren | Anderswo aufbewahrte Prüfpunkte, ein Zeuge und Zeitstempel zeigen weiterhin, was vorher existierte | | **Tresorschlüssel** | `vault.key` neben den Daten oder ein externer Hauptschlüssel | Den Tresor | Gehen Sie davon aus, dass Sitzung und Signaturschlüssel ebenfalls geleakt sind | | **Witness-Token** | Auf dem Witness-Host | Nur lesen: Prüfpunkte und Zustand | Auf der Zeugen-Seite löschen, ein neues erstellen | | **Schlüsseltext für externe Seiten** | Vault; einmal herunterladen, um Daten wiederherzustellen | Die externe Kopie | Wer auch den Bucket hat, kann sie entschlüsseln: betrachten Sie die Kopie als offengelegt | ## Was die Schutzmaßnahmen abdecken ### Abgedeckt - Ein geänderter, entfernter oder umsortierter Eintrag: Die Hash-Kette oder eine Signatur bricht. - Ein Journal, das gekürzt oder neu aufgebaut wurde, nachdem Sie einen Prüfpunkt anderswo gespeichert haben: Der Prüfpunkt passt nicht mehr. - Das Token erraten: 256 Zufallsbits, Vergleich in konstanter Zeit, 15 Fehlversuche pro Minute und die Adresse wird gesperrt. - Feindselige Chat-Inhalte: Text bleibt Text, nie HTML; Anhänge werden als Dateien heruntergeladen; das Panel lädt nichts von anderen Seiten. - Ein gestohlenes Datenverzeichnis bei externem Tresorschlüssel: Sitzungen und Schlüssel bleiben verschlüsselt. ### Ich überlasse es Ihnen - Das Haupttoken kann alles. Geben Sie anderen begrenzten Zugriff und behalten Sie das Haupttoken für sich. - Wer Admin auf dem Rechner ist, kann alles lesen und das Journal neu signieren. Bewahren Sie Fingerabdruck und Prüfpunkte anderswo auf. - Nachrichten und Medien verschlüsselt TgWitness nicht. Verschlüsseln Sie die Festplatte, schränken Sie die Rechte ein. - Einfaches HTTP außerhalb von localhost gibt das Token preis. Nutzen Sie HTTPS oder einen SSH-Tunnel. - Signaturen sagen Ihnen nicht, was verpasst wurde. Prüfen Sie Abdeckung und Zustellung auf Ihren eigenen Konten und Quellen. [Teilen Sie den Zugriff auf einen Fall](https://phishdestroy.github.io/TgWitness/de/docs/access/) mit Berechtigungen, Ablaufdatum und Sitzungslimits. ## Eine Installation absichern 0 von 8 fertiggestellt 1. **Nutzen Sie ein eigenes Telegram-Konto**, nie Ihr Hauptkonto. 2. **Lassen Sie das Panel auf 127.0.0.1.** Fernzugriff nur über HTTPS (mitgeliefertes Caddy) oder einen SSH-Tunnel. 3. **Verschlüsseln Sie die Festplatte** mit dem Datenverzeichnis, Nachrichten und Medien liegen so, wie sie ankamen. 4. **Beschränken Sie das Datenverzeichnis** auf das Dienstkonto (0700 unter Unix, Ordnerrechte unter Windows). 5. **Bewahren Sie den Tresorschlüssel anderswo auf** auf Servern: setzen Sie `TGWITNESS_VAULT_KEY_FILE` vor dem ersten Start. 6. **Speichern Sie Fingerabdruck und Prüfpunkte** auf einem anderen System, betreiben Sie einen Zeugen auf einem anderen Host. 7. **Laden Sie niemals** `data/`-, Sitzungs-, `panel-token.txt`- oder Tresorschlüssel auf GitHub oder in einen Chat **hoch**. 8. `Authorization`-Header oder Request-Bodies **dürfen** an einem Reverse-Proxy **nicht protokolliert werden**. **Kann ich das Panel-Token ändern, ohne Daten zu verlieren?** Ja, es öffnet nur das Panel. TgWitness stoppen, `panel-token.txt` löschen, neu starten. Journal, Sitzungen und Schlüssel bleiben. Ist `TGWITNESS_TOKEN` gesetzt, hat dieser Wert Vorrang vor der Datei. **Warum werden Nachrichten im Ruhezustand nicht verschlüsselt?** Der Collector muss sie lesen, um zu suchen, zu vergleichen und zu exportieren. Ein Schlüssel auf demselben Rechner würde niemanden aufhalten, der diesen Rechner ohnehin lesen kann. Festplattenverschlüsselung schützt eine gestohlene Platte, Rechte schützen eine laufende. ## Eine Sicherheitslücke melden **Security → Report a vulnerability** auf GitHub. Version, Auswirkung und ein minimales Beispiel mit erfundenen Daten. Schicken Sie nie Zugangsdaten, Kontoordner oder echte Beweise. Ist die private Meldung aus, eröffnen Sie ein Issue und bitten Sie um einen privaten Kanal, ohne Exploit-Details. --- # Telegram · Einen Witness-Bot einrichten Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/witness/ Veröffentlichen Sie signierte Protokoll-Checkpoints in Ihrem Telegram-Kanal mit einem separaten Zeugen, einem eigenen Schlüssel und einem schreibgeschützten Zugriff für den Collector. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Ein separater Prozess prüft Ihr Journal und veröffentlicht signierte Prüfpunkte in einem Kanal. ## Zwei Hosts, zwei Signaturschlüssel HOST A / COLLECTOR**Konto + Protokoll** Signaturschlüssel des Telegram-Session-Collectors Endpunkt für schreibgeschützte Checkpoints ← Signierte Antwort anfordern → HOST B / WITNESS**Überprüfen + aufbewahren** Festgelegter Fingerabdruck des Erfassers; separater Signaturschlüssel des Zeugen Eigenes Protokoll + Bot-Token Witness → Telegram-Bot-API →**Ihr Kanal · signierte TGW1-Beiträge** Der „Witness“ führt die Überprüfungen selbst durch. Der Zugriff des „Collectors“ ist schreibgeschützt. Die Veröffentlichung durch den Bot erfolgt über die Verbindung und das Token des „Witness“; dem „Witness“ wird keine Kontositzung zugewiesen. 03 / CHECKPOINT-ENTSCHEIDUNGENBeispielantworten ZULETZT AKZEPTIERT**120 Einträge**`head 9c7d…` NÄCHSTE ANTWORT**128 Einträge**`head a4f2…` Akzeptiert: Die Zählung steigt, die Signatur wird verifiziert und der Schlüssel stimmt überein. Der Witness behält diese neue Grenze bei. Alle Antwortbeispiele setzen eine gültige Signatur und den festgesteckten Schlüssel voraus. Die hier angegebenen Hashes dienen lediglich der Veranschaulichung. Eine höhere Anzahl allein kann nicht beweisen, dass das gesamte alte Präfix unverändert ist; vergleichen Sie einen Export mit beibehaltenen Kontrollpunkten. ## Bereiten Sie einen Bot und einen Kanal vor Erstellen Sie einen Bot mit BotFather und lassen Sie ihn in Ihrem Kanal posten. Betreiben Sie den Zeugen woanders: ein anderer Host, idealerweise von jemand anderem betrieben, ist viel mehr wert als ein zweiter Prozess neben dem Collector. ## Drei Schritte unter „Extras“ 1. **Nur-Lese-Zugriff.** **Extras → Unabhängiger Zeuge**, Token erstellen, Datei speichern. Es liest Prüfpunkte und Zustand, sonst nichts. 2. **Kanal und Intervall.** Telegram-Kanal oder Discord-Webhook, dazu eine Collector-Adresse, die der Zeuge erreicht. Einstellungsdatei speichern. 3. **Starten.** Legen Sie `witness.json`, `witness-token.txt` und `bot-token.txt` zusammen auf den Zeugen-Host und führen Sie aus: ``` python -m tgwitness.witness run --config witness.json --check-config python -m tgwitness.witness run --config witness.json ``` Warten Sie auf den ersten signierten Beitrag im Kanal und speichern Sie dann den Fingerabdruck des Zeugen an einem sicheren Ort. Lieber Discord? Speichern Sie die Webhook-URL als `discord-webhook.txt`. Ein Zeuge postet an einen Ort; lange Prüfungen kommen auf Discord als Datei. ## Wählen Sie aus, wie oft Sie Beiträge veröffentlichen möchten Jede Prüfung zu posten ergibt eine stetige externe Aufzeichnung: alle fünf Minuten sind das etwa 288 Beiträge pro Tag und Arbeitsbereich. Erweiterte Einstellungen können nur bei Änderungen oder Problemen posten, einen Proxy oder eine eigene Bot API nutzen. **Was bestätigt der Bot tatsächlich?** Er fragt den Collector nach einem signierten Prüfpunkt, prüft ihn gegen den erwarteten Schlüssel und führt ein eigenes signiertes Journal, einschließlich verpasster und abgelehnter Antworten. Er prüft den Journalzustand, beobachtet Telegram aber nicht selbst. Dafür machen Sie einen kontrollierten Zustelltest. ## Überprüfen Sie die Beweise später Bewahren Sie das Zeugen-Journal, die Beiträge und die Fingerabdrücke auf. [So prüfen Sie sie](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#verify) gegen den Export des Collectors. --- # Telegram · Das Archiv bearbeiten Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/archive/ Laden Sie den Verlauf, durchsuchen Sie gespeicherte Datensätze, überprüfen Sie KI-Quellen und verbinden Sie Ihre Tools. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Die Nachricht finden. Die Quelle überprüfen. Den Fall aufbauen. 01**Den Verlauf einbeziehen** Holen Sie frühere Nachrichten Ihrer aktiven Quellen in den Arbeitsbereich. 02**Den Quellen folgen** Suchen Sie und öffnen Sie dann die gespeicherte Nachricht hinter jedem Treffer. 03**Sorgen Sie für eine klare Übergabe** Ihre Analyse in einer Datei, die signierten Beweise daneben. Erfasste Datensätze, erkannter Text und Schlussfolgerungen der Analysten bleiben klar voneinander getrennt. ## Frühere Nachrichten laden 1. **Quellen → Chats im Umfang**: aktive Chats prüfen, Beobachtung starten. 2. **Gesamten Verlauf laden**. Nimmt die Quellenliste, wie sie gerade ist. 3. **Verlauf pausieren** / **Verlauf fortsetzen** jederzeit. Nach einem Neustart von Hand fortsetzen. 4. Ergebnisse pro Quelle und die Download-Warteschlange prüfen, den signierten Fortschrittsbericht beim Export behalten. Das füllt den Arbeitsbereich. Ein Einzel-Chat-Export als HTML/JSON ist etwas anderes. [Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/). ## Erst suchen, dann über KI entscheiden 1. **Journal** sucht lokal, filtert nach Quelle und Zeit. 2. Suchen Sie eine Phrase oder Domain, öffnen Sie den Eintrag und seine Versionen. 3. Für KI richtet der Admin einen Anbieter unter **Integrationen** ein. Dann **Archiv fragen**: Chats und Zeitraum wählen, **An das Modell gesendete Daten** ansehen und abwählen, was nicht raus soll. 4. Zitate prüfen, Antwort als Bericht speichern, eigene Notizen ergänzen. Die Suche braucht keine KI. Berichte behalten Quellen und Revisionen, getrennt vom signierten Journal. [Anbieter einrichten](https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/). ## Wählen Sie die gewünschte Verbindung aus | Aufgabe | Öffnen | Einrichtung | | --- | --- | --- | | Einen KI-Client ausgewählte Chats lesen lassen | **Integrationen → MCP** | [MCP installieren, begrenztes Token erstellen, verbinden](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/) | | Text in gespeicherten Medien erkennen | Ein `media.saved`-Eintrag → **Anhang erkennen** | [Den lokalen Docker-Worker einrichten](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/) | | Ereignisse an n8n oder ein SIEM senden | **Integrationen → Ausgehende Webhooks** | [Empfänger hinzufügen, HMAC prüfen, IDs entduplizieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/webhooks/) | **Welches Zugriffstoken gehört wohin?** Panelzugang ist für Menschen. MCP bekommt eigene Nur-Lese-Tokens, Webhooks ein eigenes HMAC-Geheimnis. Keiner davon braucht eine Telegram-Sitzung. [Zugriff auf das Share-Panel gewähren](https://phishdestroy.github.io/TgWitness/de/docs/access/) oder [einen MCP-Client konfigurieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/). ## Quellen und Schlussfolgerungen angeben Legen Sie den Bericht neben das signierte ZIP. Der Bericht ist Ihre Lesart der Quellen, das ZIP ist das, was der Empfänger prüft. [Exportieren und verifizieren](https://phishdestroy.github.io/TgWitness/de/docs/exports/) · [Durchführung einer vollständigen Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/cases/) --- # Telegram · Einen Fall teilen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/access/ Gewähren Sie Prüfern und Analysten Zugriff auf ausgewählte Konten und Chats mit separaten Berechtigungen, Sitzungsbeschränkungen und widerrufbaren Tokens. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Teilen Sie den Fall, den jemand benötigt. Behalten Sie die Kontrolle über den Rest. 01**Wählen Sie die Beweise aus** Ganze Arbeitsbereiche oder einzelne Chats. 02**Wählen Sie die Aktionen aus** Ansehen, exportieren oder nur die nötigen Aktionen. 03**Legen Sie die Grenzen fest** Ein persönliches Token mit Ablaufdatum, Sitzungslimits und IP-Regeln, wenn Sie wollen. Der Erfassungsumfang bestimmt, was aufgezeichnet wird. Der Zugriffsumfang bestimmt, was eine Person sehen und tun kann. ## Jemandem Zugriff gewähren 1. Als Admin **Zugriff** öffnen. 2. Benennen, Arbeitsbereiche und Chats wählen. 3. Ein Prüfer braucht nur **Ansehen**. Für Downloads **Exportieren** hinzufügen. 4. Legen Sie die Einschränkungen fest und klicken Sie anschließend auf **„Zugriff erstellen**“. 5. Token kopieren (wird einmal angezeigt) und privat mit der Panel-Adresse schicken. 6. Prüfen Sie vorher in einer separaten Browser-Sitzung, was die Person sehen wird. ## Beginnen Sie mit der Aufgabe, die sie zu erledigen haben | Person | Zugriff | Ergebnis | | --- | --- | --- | | Rezensent | Ausgewählte Chats; nur zur Ansicht | Liest den Chat, kann nichts ändern. | | Analyst | Ausgewählte Chats; anzeigen und exportieren | Liest und lädt herunter, was der Fall braucht. | | Betreiber | Ausgewählte vollständige Arbeitsbereiche; Quellen und Sammlung | Entscheidet, was beobachtet wird, startet und stoppt Collectoren. | Das sind nur Beispiele, keine festen Rollen. Auf Chats beschränkter Zugriff bekommt nie Kontoeinstellungen oder vollständige Journal-Exporte. Zugriff auf alle Arbeitsbereiche schließt später hinzugefügte Konten ein. ## Sie können Ihre Meinung jederzeit ändern Zugriff jederzeit bearbeiten, es gilt ab der nächsten Anfrage. Eine Sitzung beenden oder alles widerrufen. Bereits heruntergeladene Dateien sind weg. Die Erfassung läuft weiter. **Sitzungs- und IP-Beschränkungen** Parallele Sitzungen und Anmeldungen begrenzen, ein Enddatum setzen, IPs oder Subnetze erlauben oder an die IP der ersten Anmeldung binden. Der Ablauf zählt Inaktivität, ein offenes Panel gilt als aktiv. Hinter einem Proxy prüfen, welche Client-IP die App sieht. **Der Hauptschlüssel und das Aktivitätsprotokoll** Das Haupttoken bleibt beim Admin. Vergebener Zugriff kann weder fremden Zugriff verwalten noch die Admin-Konsole öffnen. Zugriffsänderungen und Sitzungen werden ins Journal signiert, ohne Tokens. Der Server-Admin sieht weiterhin alles. Alle sieben Berechtigungen und Sitzungsregeln: [Zugriffsreferenz](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/). --- # Telegram · Halten Sie den Betrieb aufrecht Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/server/ Führen Sie TgWitness auf einem Server mit dauerhaftem Speicher, privatem Panel-Zugriff, Backups und Überprüfungen nach einem Neustart aus. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Halten Sie den Collector am Laufen und die Daten über Neustarts hinweg sicher. ## Wählen Sie eine Startmethode Nativ: der [Starter](https://phishdestroy.github.io/TgWitness/de/docs/start/) plus Dienstvorlagen in [deploy/](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md). Docker, aus dem Projektordner: ``` docker compose up -d --build --wait docker compose exec tgwitness cat /data/panel-token.txt ``` Das Panel lauscht auf localhost:8787. Lokal oder über einen SSH-Tunnel öffnen, mit dem Token aus dem zweiten Befehl. ## Behalten Sie das gesamte Datenverzeichnis bei Nativ: `data/live`. Docker: das Volume `tgwitness-data`. Journale, Sitzungen und Schlüssel gehören zusammen. Ein signierter Export ist ein Beweis, kein Backup. 1. Zuerst die Erfassung stoppen. 2. Das ganze Datenverzeichnis an einen sicheren Ort außerhalb des Hosts kopieren. 3. Die Wiederherstellung auf einer separaten Installation testen, bevor Sie sich darauf verlassen. ## Bitte nach einem Neustart überprüfen Arbeitsbereich und Schlüssel, Verbindung, Quellen und eingehende neue Nachrichten prüfen. TgWitness holt nach, was Telegram noch hat, nicht alles, was während der Ausfallzeit passiert ist. Ein „gesunder“ Container heißt, der Webserver antwortet. Ob die Erfassung funktioniert, zeigen eine Testnachricht und der Zeuge. ## Veröffentlichen Sie nur das, was Sie beabsichtigen HTTPS, Volumes, Updates und Wiederherstellung stehen in der Deployment-Referenz. Was tatsächlich getestet wurde: [Prüfprotokoll](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/). --- # Telegram · Finden Sie heraus, was schiefgelaufen ist Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/troubleshooting/ Überprüfen Sie den Zugriff auf das Kontrollpanel, die Telegram-Verbindung, fehlende Nachrichten, „FloodWait“ und den Witness-Status anhand der für jedes Problem zutreffenden Signale. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Fangen Sie beim Symptom an, prüfen Sie eins nach dem anderen. ## Das Panel fordert ein Token an Es will das Panel-Token aus der Datei, die der Starter angezeigt hat. Docker: `docker compose exec tgwitness cat /data/panel-token.txt`. Kein Telegram-Code, kein Bot-Token, nicht das Zeugen-Token. ## Telegram stellt keine Verbindung her Verbindungsprüfung ausführen. Bei einem öffentlichen Proxy einen anderen wählen und speichern. Proxy-Typ und Geheimnisformat prüfen. Listen aktualisieren wechselt die Route nicht von selbst. ## Verbunden, aber keine neuen Nachrichten 1. Läuft die Beobachtung, im richtigen Arbeitsbereich? 2. Ist die Quelle ausgewählt und für dieses Konto sichtbar? 3. Schicken Sie eine eindeutige Nachricht in Ihre Testgruppe und suchen Sie danach. 4. Suchen Sie im Journal nach Unterbrechungen oder Telegram-Fehlern. Ein ruhiger Chat hat einfach nichts Neues. Wenn Vollständigkeit zählt, machen Sie einen kontrollierten Zustelltest. ## FloodWait oder eine Lücke nach einem Neustart FloodWait ist Telegram, das „langsamer“ sagt. Abwarten und die Last senken, neu verbinden hilft nicht. Nach einem Neustart holt TgWitness nach, was Telegram noch hat; der Rest ist eine Lücke, notieren Sie sie. ## Der Bot ist konfiguriert, veröffentlicht jedoch nichts Läuft der Zeuge, darf der Bot im Kanal posten, erreicht er Collector und Bot API? Suchen Sie in seinem Journal nach fehlgeschlagenen Beiträgen. Eine Abfrage auf Collector-Seite heißt nicht, dass ein Beitrag rausging. ## Wo befindet sich die GitHub-Token-Integration? **In Planung.** Unter „Extras“ wird der vorgeschlagene Workflow zur Fork- und Build-Verifizierung beschrieben. Derzeit gibt es weder ein GitHub-Token-Formular noch eine automatisierte Bestätigung, dass eine laufende Installation mit einem Repository übereinstimmt. Siehe den [aktuellen Status der Funktionen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/). Sie melden einen Fehler? Version, Betriebssystem, Schritte und ein bereinigter Fehler. Legen Sie nie Sitzungen, Tokens, private Nachrichten oder das Datenverzeichnis in ein öffentliches Issue. --- # TgWitness: Telegram Export, OSINT & Verification Canonical page: https://phishdestroy.github.io/TgWitness/docs/reference/overview/ Explore TgWitness installation, Telegram capture, investigation tools and evidence verification. Read measured workloads alongside their methods and limits. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/llms.txt) Installation mit einem Befehl oder Erfassung über GitHub Actions. Machen Sie sich mit den Untersuchungsoptionen, dem veröffentlichten Umfang und dem, was ein Archiv verifiziert, vertraut. TgWitness ist ein Open-Source-Telegram-Exporter und Untersuchungsarbeitsbereich. Installieren Sie es mit einem einzigen Befehl, verbinden Sie ein Konto, wählen Sie die Chats aus und exportieren Sie ein signiertes Archiv. Es unterstützt zudem die vorübergehende Datenerfassung über GitHub Actions sowie die Fortsetzung von Untersuchungen mit gespeicherten Bearbeitungen, Löschbeobachtungen, Suchfunktionen und Berichten. ## Beginnen Sie mit der Aufgabe, die Sie haben | Ihre Aufgabe | Kürzester Weg | Was Sie erhalten | | --- | --- | --- | | Eine Unterhaltung oder ein Konto speichern | Installieren, ein Konto verbinden, den Exportumfang auswählen | Ein signiertes Archiv mit dem ausgewählten Verlauf, den Ergebnissen der Datenerhebung und dem Verifizierungsmaterial | | Auf einem temporären Runner sammeln | Verwenden Sie GitHub Actions, um Daten zu erfassen, autorisieren Sie eine neue Sitzung und wählen Sie den Geltungsbereich aus. | Ein verschlüsseltes Archiv mit Herkunftsnachweis über den GitHub-Workflow | | Verfolgen Sie die Änderungen im Zeitverlauf | Die Beobachtung für ausgewählte Chats weiterlaufen lassen | Gespeicherte Versionen, Löschhinweise, Anhänge und aufgezeichnete Abdeckung | | Untersuchen und Ergebnisse teilen | Durchsuchen Sie das Archiv, nutzen Sie das Case Board und konfigurieren Sie einen Bericht oder eine Kopie zum Teilen. | Quellenverlinkte Ergebnisse und eine für den Empfänger geeignete, überprüfbare Übergabe | ### Installation mit einem einzigen Befehl Das Installationsprogramm enthält Python und die erforderlichen Abhängigkeiten. Ein Checkout des Quellcodes, Docker, ein KI- Anbieter und ein unabhängiger Witness sind optionale Optionen, keine Voraussetzungen für die Einrichtung. Linux / macOS: ``` curl -fsSL https://get.destroy.tools/install.sh | bash ``` Windows, in PowerShell oder der Eingabeaufforderung: ``` powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "irm https://get.destroy.tools/install.ps1 | iex" ``` Öffnen Sie das Fenster, verbinden Sie Ihr Telegram-Konto und wählen Sie den Erfassungsumfang aus. Die Installation startet die Erfassung nicht automatisch. Die [Installationsanleitung](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/) erläutert den lokalen Zugriff, Server, Updates und die Überprüfung der heruntergeladenen Version. Für eine temporäre Ausführung folgen Sie [GitHub Actions capture](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md). Dieser Workflow erfordert einen GitHub-Fork, eine Autorisierung und ein Archivpasswort. Auf der Capture-Seite werden diese Schritte sowie die verfügbare Sitzungsdauer vor der Ausführung erläutert. Laden Sie das resultierende Archiv und das zugehörige Verifizierungsmaterial herunter und bewahren Sie es auf. ## Weitere Einstellungen, falls für die Aufgabe erforderlich Für den Export eines einzelnen Chats sind ein Konto und ein ausgewählter Umfang erforderlich. Fortlaufende Beobachtung, mehrere Konten, Proxys, Richtlinien für Anhänge, Berichtsgestaltung, Zugriff für Prüfer, externe Zeitstempel und externe Speicherung dienen unterschiedlichen Ermittlungs- und Übergabeanforderungen. Konfigurieren Sie diese Funktionen, sofern sie relevant sind. Anwendungsbereich, Berechtigungen und Kopien mit minimierter Weitergabe helfen den Betreibern bei der Entscheidung, was erfasst und offengelegt werden soll. Leitlinien zur Rechtshoheit und Berichtseinstellungen unterstützen diese Entscheidung; die Auswahl eines Profils allein begründet noch keine Rechtskonformität oder Zulässigkeit. Siehe [Kontoexport](https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/), [Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) und [Berichtskonfiguration](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/). Die Anwendung läuft auf dem ausgewählten Computer oder Server. Die grundlegende Datenerfassung erfordert keine GPU oder ein LLM. Optionale OCR, Transkription und KI-Analyse haben ihre eigenen Ressourcenanforderungen. Passen Sie die Bereitstellung an die Nachrichtenrate, Anhänge, den gespeicherten Verlauf und die Anzahl gleichzeitiger Konten an; eine einfache Installation ist keine Garantie für einen festen Speicherbedarf bei jeder Arbeitslast. ## Bewahren Sie die Aufzeichnungen auf, wem auch immer sie helfen mögen Der Zweck besteht darin, beobachtetes Material, Kontext und Änderungen zu bewahren, unabhängig davon, wessen Position sie stützen. Beweismittel können die eigene Darstellung der Ereignisse durch den Sammler in Frage stellen. Halten Sie Quellbeobachtungen, fehlende Abdeckung und analytische Schlussfolgerungen identifizierbar, damit eine andere Person dasselbe Material bewerten kann. Die Logik lautet: für das Konto sichtbare Beobachtung → signiertes Protokoll → Export → Überprüfung durch den Empfänger. Gespeicherte Bearbeitungen fügen Versionen hinzu. Gelöschte Beobachtungen behalten zuvor erfasste Inhalte bei. Abdeckungsaufzeichnungen zeigen bekannte Unterbrechungen auf. Berichte und KI- Analysen verweisen auf gespeicherte Quellen zurück; eine Interpretation wird nicht zur Quellenbeobachtung, nur weil sie in einem signierten Bericht erscheint. | Verifizierungsprüfung | Was ein Empfänger feststellen kann | | --- | --- | | Datei-Hashes, Signaturen und Journal-Kette | Die bereitgestellten Datensätze und Dateien stimmen mit dem erwarteten Schlüssel und den Journalgrenzen überein. | | Ein separat gespeicherter Checkpoint oder Witness | Das Archiv stimmt mit einem zuvor gespeicherten Journalzustand überein | | Ein verifizierter externer Zeitstempel | Die referenzierten Bytes existierten zum Zeitpunkt des Zeitstempels unter den angegebenen Vertrauensannahmen. | | GitHub-Erfassungsbescheinigung | Das Archiv entspricht dem genehmigten Workflow, der Collector-Revision und dem aufgezeichneten Digest. | Diese Prüfungen unterstützen die Überprüfung der Integrität und Herkunft. Sie verwandeln den Inhalt einer Nachricht nicht in eine wahre Aussage und rekonstruieren keine nicht mehr sichtbaren, gelöschten Nachrichten. Verwenden Sie einen unabhängig ermittelten Schlüssel-Fingerabdruck und die Verifizierungsschritte in [(Vertrauensleitfaden)](https://github.com/phishdestroy/TgWitness/blob/main/docs/TRUST.md) und [(Beweisformat)](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/). ## Veröffentlichte Skalierbarkeit und gemessene Leistung Die folgenden Ergebnisse beschreiben unterschiedliche Arbeitslasten und Zeitpunkte. Die Zahlenangaben sind nicht austauschbar: Ein Protokollereignis entspricht nicht zwangsläufig einer einzelnen Telegram-Nachricht. | Datum | Arbeitsaufwand | Veröffentlichtes Ergebnis | Was wurde gemessen? | | --- | --- | --- | --- | | 1. November 2026 | Laufender Server, zehn Arbeitsbereichsdatenbanken | 1,610,818-Protokollaufzeichnungen; 900,232-Ereignisse bei neuen Nachrichten, 80,683-Bearbeitungsereignisse und 400,536-Löschereignisse | Nur-Lese-Bestandsaufnahme; kein Durchsatztest und keine neue Vollketten-Verifizierung | | 5. November 2026 | Suche in synthetischen 1,000,000-Nachrichten in 200-Chats | Index erstellt in 71 Sekunden; mediane Suchzeiten pro Abfrage von 9–190 ms | Lokaler Such-Benchmark; keine Live-Übertragung über Telegram | | 6. November 2026 | Zwei aktuelle, echte Telegram-Exporte | 27,030- und 29,299-Meldungen; 56,329 in beiden Durchläufen | Zwei Konten pro Durchlauf über WARP, Text und Metadaten, keine Downloads von Anhängen | | 6. November 2026 | Die gleichen beiden Exporte, einschließlich Vorbereitung und Verpackung | 127.713- und 141.781-Nachrichten pro Sekunde | Gemessene Voll-Export-Raten; beide Archive wurden anhand der festgesteckten Schlüssel verifiziert | Der [-Verifizierungsdatensatz](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) enthält die Serverbestandsliste, Live- Erfassungsprüfungen und Suchmessungen. [-Exportleistung](https://phishdestroy.github.io/TgWitness/docs/validation/) veröffentlicht die beiden realen Durchläufe, die Hardware, die Laufzeiten, die Archiv-Hashes und die signierten Messdateien. Sie liefern Ergebnisse für die aufgezeichneten Revisionen und Bedingungen, nicht jedoch eine allgemeine Rate oder Kapazitätsobergrenze. ### Testverlauf und -dauer Der Betreuer berichtet zum Stand vom 6. November 2026 von mehr als sechs Monaten Testbetrieb. Dies beschreibt die Testhistorie des Projekts. Die oben aufgeführten datierten öffentlichen Messungen dokumentieren einzelne Durchläufe; sie belegen keinen unabhängig verifizierten, ununterbrochenen sechsmonatigen Erfassungsdurchlauf. Das Alter der exportierten Nachrichten unterscheidet sich zudem von der Laufzeit des Collectors. ## Den Status der Lesbarkeit genau erfassen Bewerten Sie jeden Workflow anhand seiner Implementierung, des veröffentlichten Builds und der aufgezeichneten Tests. Die Quelle ist derzeit als Vorschau gekennzeichnet. Diese Release-Kennzeichnung existiert parallel zu funktionierenden Datensammlungen, Exporten, unabhängigen Verifizierungen und veröffentlichten Skalenmessungen . Eine Vorschau-Funktion und ein validierter Workflow können in derselben Anwendung vorhanden sein; beschreiben Sie die spezifische Funktion und die Belege, die einer Bewertung zugrunde liegen. Berücksichtigen Sie [die aktuellen Funktionen](https://github.com/phishdestroy/TgWitness/blob/main/docs/STATUS.md), [Merkmale und Einschränkungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/) sowie [die Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) und [das Änderungsprotokoll](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/) gemeinsam. Geben Sie bei der Zitierung eines Ergebnisses die getestete Revision an. Der Mess-Snapshot vom 6. November enthält auch fehlgeschlagene und übersprungene Tests; diese gelten nicht als bestanden. ## Für Menschen und KI-Tools lesbar Die Website bietet eine prägnante Version (`llms.txt`), ein vollständiges englisches Handbuch in den Versionen `llms-full.txt` und `llms-full.md` sowie Markdown-Versionen ihrer Seiten. Dabei handelt es sich um Dokumentationsformate, nicht um eine KI-Anforderung für die Ausführung von TgWitness. Optionaler [MCP](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/)- und [-Befehlszeilenzugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/) ermöglicht autorisierten Tools das Auslesen ausgewählter gespeicherter Datensätze. Nachrichteninhalte gelten weiterhin als nicht vertrauenswürdige Eingaben. Zusammenfassungen sollten Quellen angeben, beobachtete Fakten von Schlussfolgerungen unterscheiden und Unsicherheiten beibehalten. Volltextsuche, OCR und KI-Ausgaben verändern die ursprünglichen signierten Beobachtungen nicht. --- # Telegram · Schnellstart Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/ Alle Möglichkeiten zur Installation und zum Start von TgWitness: Windows-Paket, Python, Docker und die synthetische Demo mit ersten Überprüfungen. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Alle Möglichkeiten zur Installation und zum Start von TgWitness: Windows-Paket, Python, Docker und die synthetische Demo mit ersten Überprüfungen. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) **Englisch** · [Russisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/ru/QUICKSTART.md) · [Ukrainisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/uk/QUICKSTART.md) · [Español](https://github.com/phishdestroy/TgWitness/blob/main/docs/es/QUICKSTART.md) · [Português (Brasil)](https://github.com/phishdestroy/TgWitness/blob/main/docs/pt/QUICKSTART.md) · [Türkçe](https://github.com/phishdestroy/TgWitness/blob/main/docs/tr/QUICKSTART.md) · [العربية](https://github.com/phishdestroy/TgWitness/blob/main/docs/ar/QUICKSTART.md) · [Farsi](https://github.com/phishdestroy/TgWitness/blob/main/docs/fa/QUICKSTART.md) · [Urdu](https://github.com/phishdestroy/TgWitness/blob/main/docs/ur/QUICKSTART.md) · [Hindi](https://github.com/phishdestroy/TgWitness/blob/main/docs/hi/QUICKSTART.md) · [Bahasa Indonesia](https://github.com/phishdestroy/TgWitness/blob/main/docs/id/QUICKSTART.md) · [Tiếng Việt](https://github.com/phishdestroy/TgWitness/blob/main/docs/vi/QUICKSTART.md) · [Vereinfachtes Chinesisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/zh/QUICKSTART.md) TgWitness ist eine eigenständige Anwendung zur Überwachung von Telegram-Gruppen und -Kanälen, auf die Ihre Konten Zugriff haben. Sie läuft lokal mit einem eigenen Datenverzeichnis. **Sind Sie zum ersten Mal hier?** [Sehen Sie sich die Demo an,](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/#explore-the-interface) bevor Sie ein Konto verknüpfen. [Wählen Sie eine Anleitung](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) zu Proxys, Witnesses, Exporten oder der Serverkonfiguration. ## Installieren und starten [Erfassung mit GitHub Actions (Vorschau)](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md) Wählen Sie eine Methode aus. Portable Downloads stehen zur Verfügung, sobald eine Release-Version veröffentlicht wurde: | Host | Keine Installation erforderlich | Aus der Quelle: Python 3.11+ | Docker: Engine/Desktop mit Compose 2.20+ | | --- | --- | --- | --- | | Windows | `TgWitness--windows-amd64-portable.zip` aus den GitHub-Veröffentlichungen extrahieren, auf `TgWitness.cmd` doppelklicken | Doppelklicken Sie auf „`Start.cmd`“ | Doppelklicken Sie auf „`scripts\Docker.cmd`“ | | Linux / macOS | — | `sh start.sh` | `sh scripts/docker-start.sh` | Für die Quellcode-Methoden [laden Sie den aktuellen `main`-Branch herunter und entpacken Sie ihn](https://github.com/phishdestroy/TgWitness/archive/refs/heads/main.zip) oder klonen Sie das Repository: ``` git clone https://github.com/phishdestroy/TgWitness.git cd TgWitness ``` `Start.cmd` bietet an, Python 3.12 für Ihren Windows-Benutzer zu installieren, falls kein passendes Python gefunden wird (über winget oder das signierte Installationsprogramm von python.org). `start.sh` gibt den genauen Installationsbefehl für Ihre Linux-Distribution oder macOS aus, falls Python fehlt. Beim ersten Start aus dem Quellcode wird `.venv` erstellt und die Abhängigkeiten werden automatisch installiert. Docker erstellt die Anwendung und startet sie im Hintergrund; ein Python-Host ist nicht erforderlich. „`scripts\Docker.cmd`“ und „`scripts/docker-start.sh`“ geben die Panel-Adresse und das Token aus, wenn der Container ordnungsgemäß läuft. Die entsprechenden Docker-Befehle auf jedem unterstützten Host lauten: ``` docker compose up -d --build --wait docker compose exec tgwitness cat /data/panel-token.txt ``` Öffnen Sie **http://127.0.0.1:8787**. Verwenden Sie das vom Docker-Helper ausgegebene Token oder den zweiten Docker-Befehl, oder lesen Sie **die Datei „data/live/panel-token.txt“** für eine portable oder Quellcode-Installation. Fahren Sie unten unter **„Telegram verbinden“** fort. Native und Docker-Installationen verwenden getrennte Speicher; beim Starten von Docker wird ein bereits vorhandenes natives Protokoll nicht importiert. Bei einem Server umfasst [die Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) automatisches HTTPS, Neustart, veröffentlichte Bilder, Updates und Backups. ## Entdecken Sie die Benutzeroberfläche 1. Führen Sie **„TgWitness-Demo.cmd“** im portablen Paket, **„scripts\Demo.cmd“** in einem Windows-Quellordner oder „`sh start.sh --demo` “ unter Linux/macOS aus. Beim Start aus dem Quellordner wird zunächst „`.venv` “ erstellt und die Abhängigkeiten werden installiert. 2. Open-**http://127.0.0.1:8787**. 3. Die lokale Demo öffnet das Beispielprotokoll automatisch. Für den direkten lokalen Zugriff ist keine Token-Kopie erforderlich. Die Beispielnachrichten sind fiktiv. Im Demomodus kann keine Verbindung zu einem echten Telegram-Konto hergestellt werden. ## Telegram verbinden > [!WARNUNG] **Verwenden Sie nichts, dessen Verlust Sie sich nicht leisten können.** Wir raten dringend davon ab, persönliche oder wertvolle Konten zu verknüpfen und eine API-ID bzw. einen Hash für ein Konto zu erstellen, das Ihnen wichtig ist. Telegram sperrt Konten unvorhersehbar und oft dauerhaft, unabhängig vom verwendeten Client. Ein reibungsloser Testlauf hängt von Telegram ab, nicht von TgWitness, und bietet keinerlei Garantie für die Zukunft. 1. Falls die native Demo ausgeführt wird, beenden Sie diese und führen Sie **„Start.cmd“** oder „`sh start.sh`“ aus. Andernfalls lassen Sie die oben gestartete Live-Installation weiterlaufen. 2. Verwenden Sie das Panel-Token für Ihre Installationsmethode, um das Panel zu öffnen. 3. Falls Sie einen Proxy benötigen, speichern Sie diesen unter **„Konto“ → „Einstellungen“ → „Verbindungseinstellungen“ → „Verbindungsroute ändern**“. 4. Geben Sie unter **„Konto**“ Ihre Telefonnummer ein und klicken Sie auf **„Weiter“**, wählen Sie **„QR-Code“ → „QR-Code anzeigen**“ oder wählen Sie Dateien aus und klicken Sie auf **„Konto verbinden**“. **API-ID + Hash** sind optional: Der Arbeitsbereich verwendet das gespeicherte oder importierte Paar oder ein funktionierendes Paar aus dem integrierten Pool. Um Ihre eigene App zu verwenden, fügen Sie ein „`API ID:API Hash`“-Paar in das Feld „API-ID“ ein. Für einen vollständigen Autorisierungsschlüssel wählen Sie **„Auth-Schlüssel“**, fügen Sie alle 512 hexadezimalen Zeichen ein und wählen Sie die bereitgestellte DC-ID aus. Die Benutzer-ID ist optional und wird bei Eingabe aktiviert. 5. Schließen Sie die von Ihnen gewählte Anmeldemethode ab: Telefon/Code/2FA, Bestätigung über eine angemeldete Telegram-App für QR oder Import einer unterstützten, autorisierten Sitzung. 6. Überprüfen Sie die angezeigte Konto-ID. Open **Sources**: Ihre Chats werden automatisch geladen; fügen Sie Ihre Gruppen hinzu. 7. Wählen Sie unter **„Auswählen**, **welche Änderungen beibehalten werden sollen**“ entweder Ereigniskategorien oder die Voreinstellung **„Nachrichten, Bearbeitungen und Löschungen**“ aus und speichern Sie anschließend die Überwachungseinstellungen. 8. Wählen Sie die Einstellungen für Anhänge separat aus und klicken Sie anschließend auf **„Beobachtung starten**“. API-Zugangsdaten identifizieren Ihre Anwendung; sie autorisieren kein Konto an sich. Private Gruppen benötigen keinen öffentlichen Benutzernamen, aber Ihr Konto muss über Zugriffsrechte verfügen. Informationen zu bestehenden Konten finden Sie unter [Konten und Sitzungsformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/): Das Panel akzeptiert Telethon StringSession, Telethon/Pyrogram SQLite, Einzelkonto-TData- ZIPs und unterstützte Konto-JSON-Dateien. Wählen Sie eine Sitzung und die zugehörige JSON-Datei gemeinsam aus und drücken Sie auf **Konto verbinden**. Die QR-Anmeldung ist ebenfalls mit denselben optionalen API-Einstellungen verfügbar. TDLib, Bot-Sitzungen und CSV/JSON- Kontobestände werden nicht unterstützt. Verwenden Sie für mehrere Konten **Konten → Konten importieren** und wählen Sie deren unterstützte Sitzungsdateien aus. Zugehörige JSON-Dateien werden anhand des Basisnamens zugeordnet; jedes importierte Konto erhält seinen eigenen Arbeitsbereich. Siehe [Massenimport und Kontogruppen](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#bulk-import-and-account-groups). Um ein weiteres Konto hinzuzufügen, drücken Sie „**+**“ neben der Kontoauswahl oder öffnen Sie **„Konto“ → „Einstellungen“ → „Verbindungseinstellungen“ → „Arbeitsbereiche“** oder nutzen Sie **die Funktion „Konten**“. Arbeitsbereiche verfügen über separate Sitzungen, Protokolle, Schlüssel, Quellen und Warteschlangen. Beim Wechseln der Ansicht laufen die anderen Erfassungsmodule weiter. Dasselbe Telegram-Konto kann in dieser Installation nicht zwei Arbeitsbereichen zugewiesen werden. Es gibt keine festgelegte Anzahl von Arbeitsbereichen; sie teilen sich einen Prozess, sodass die Kapazität von der Rechenleistung des Computers abhängt. Das Live-Panel-Token schützt den Zugriff auf Ihre Telegram-Berechtigungen und gespeicherte Daten; es ist unabhängig von den Anmeldedaten für die Telegram-API. Nur eine explizit gestartete, direkt aufgerufene lokale Demo erhält automatisch einen Eintrag. Eine Remote- oder Proxy-Demo verwendet weiterhin „ `data/demo/panel-token.txt`“. ## Überprüfen und exportieren - **Protokoll:** Beobachtungen nach Quelle und Ereignistyp suchen und filtern. - Wählen Sie ein Ereignis aus, um dessen Originaldatensatz, Zuordnung und gespeicherte Versionen einzusehen. - Die Bearbeitungsdetails zeigen den verfügbaren Inhalt vor und nach der Bearbeitung an. Die Löschdetails zeigen den zuletzt erfassten Inhalt, sofern vorhanden; ein unbekannter Akteur bleibt unbekannt. - **Exportformate:** signierte ZIP-, JSONL- und CSV-Dateien sowie Offline-HTML. - **Vollständiger Chat-Export** (Quellen → Vollständiger Chat-Export): Laden Sie den gesamten sichtbaren Verlauf eines Chats als signiertes Bundle mit `chat.json` (im Telegram-Export-Format) und einer lesbaren `chat.html`-Datei herunter. Private Chats funktionieren, sofern das Konto Mitglied ist. Es handelt sich um eine aktuelle Momentaufnahme, nicht um eine Rekonstruktion gelöschter oder zuvor bearbeiteter Nachrichten. Überprüfen Sie eine Kopie mit `python verify.py chat-export.zip --fingerprint TRUSTED_SHA256`. - **Checkpoint beachten:** Die Grenze des signierten Protokolls muss außerhalb des Collectors liegen. - **Signierten Ausführungsbeleg herunterladen:** Bewahren Sie die Programm- und Versionsdaten des Erfassungsprogramms auf. - **Zeitstempelanfrage vorbereiten:** Bereiten Sie eine Offline-Anfrage an eine Zeitstempel-Behörde vor; befolgen Sie die Anweisungen in [der Datei „TIMESTAMP.md“,](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/) um eine Antwort zu erhalten und zu überprüfen. - **Protokoll überprüfen:** Überprüfen Sie Ereignissignaturen und Kettenverknüpfungen. Beim ZIP-Export werden auch Medieninhalte überprüft. Unterstützte Browser speichern umfangreiche Exporte direkt in einer Datei Ihrer Wahl. Andere Browser puffern maximal 128 MiB. Solange der Server läuft, unterstützt die Streaming-CLI größere Downloads, ohne die gesamte Antwort zwischenspeichern zu müssen: ``` python -m tgwitness.download --token-file data/live/panel-token.txt --out evidence.zip ``` Für einen weiteren Arbeitsbereich fügen Sie „`--profile ID`“ über **„Exporte → Arbeitsbereich-ID“** hinzu. Für einen Remote-Server fügen Sie „`--url https://your-server`“ hinzu. Das Standard-Übertragungslimit beträgt 5 GiB; mit `--max-mib` lässt sich dies ändern. Signierte ZIP-Inhalte unterliegen standardmäßig einem separaten Verifizierungslimit von 4 GiB im unkomprimierten Zustand (**mit „Parameters“** lässt sich dieses erhöhen; verifizieren Sie solche Archive mit `verify.py --max-gib N`). Verifizieren Sie das Archiv mithilfe einer vertrauenswürdigen Kopie des Verifizierers und eines unabhängig aufbewahrten Schlüssel-Fingerabdrucks bzw. Checkpoints. ## Installationsanleitung ``` python start.py --setup-only python start.py --check python start.py --check --json ``` `--check` überprüft lokale Abhängigkeiten, die Signaturunterstützung, den Speicher, die Schlüsselkonfiguration und die Abhöradresse. Es wird nichts installiert und keine Verbindung zu Telegram hergestellt. Ein belegter Port kann darauf hindeuten, dass eine andere Instanz läuft. Verwenden Sie ein anderes `--port` oder beenden Sie diese zunächst. Der Launcher wird in „`.venv`“ installiert. Zusatzbefehle für „`python -m tgwitness...`“ müssen unter Windows „`.venv\Scripts\python.exe`“ oder unter Linux/macOS „`.venv/bin/python`“ verwenden, es sei denn, diese Umgebung ist bereits aktiviert. ## Sitzungen, Schutz und Betrieb Eine geschlossene, konsistente Telethon-SQLite-Datei „`.session`“ kann lokal mit „`python -m tgwitness.sessions account.session --out account.tgwitness-session`“ konvertiert und anschließend in Account geladen werden. Ein direkter Dateiimport und eine QR-Anmeldung sind ebenfalls verfügbar. Informationen zu Anmeldeformaten, SOCKS5, HTTP CONNECT, MTProxy und externen Hauptschlüsseln finden Sie in [der Datei „CONNECTION-SECURITY.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/)“. **Beobachtung pausieren** stoppt die Erfassung. **Sperren** schließt nur den Browserzugriff. Beim Schließen eines Tabs läuft der Erfassungsprozess weiter. Das Beenden des Prozesses unterbricht die Erfassung; eine Momentaufnahme des Verlaufs kann nicht alle verpassten Bearbeitungen oder Löschungen rekonstruieren. Einzelheiten zu Ereignisrichtlinien, Anhangswarteschlangen, Kontoisolierung und Neustarts finden Sie unter [So funktioniert die Erfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/). Sitzungen und Geheimnisse sind verschlüsselt. Nachrichteninhalte, Medien und Exporte erfordern eine verschlüsselte Festplatte oder ein verschlüsseltes Volume. Signaturen gewährleisten die Integrität in Bezug auf einen vertrauenswürdigen Schlüssel; sie bestätigen jedoch weder die Herkunft aus Telegram noch verhindern sie Manipulationen durch einen Betreiber, der den Collector und dessen Schlüssel kontrolliert. Lesen Sie [„OPERATIONS.md“](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/) für Informationen zu Sicherung und Wiederherstellung, [„DEPLOYMENT.md“](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) zum Thema Hosting sowie [„deploy/“](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md) für Anwendungsbeispiele. Das installierte Panel enthält zudem eine Anleitung zur Offline-Einrichtung unter „`/guide.html`“. Die tatsächliche Verifizierung und die verbleibenden Einschränkungen sind in [den Dateien „VERIFICATION.md“](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) und [„READINESS.md“](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/READINESS.md) dokumentiert. --- # Installieren, überprüfen und aktualisieren Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/ Installieren Sie das Tool mit einem einzigen Befehl, überprüfen Sie Signaturen und Hashes, aktualisieren Sie die Installation und entfernen Sie sie. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Translation coverage: this edition includes material from the English original. Installieren Sie das Tool mit einem einzigen Befehl, überprüfen Sie Signaturen und Hashes, aktualisieren Sie die Installation und entfernen Sie sie. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Erste Schritte](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) [Projekt](https://github.com/phishdestroy/TgWitness/blob/main/README.md) · [Schnellstart](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) · [Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) **Auf dieser Seite** - [Installation mit einem Befehl](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#install-with-one-command) - [Wo alles läuft](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#where-everything-runs) - [Einstellungen für die Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#full-text-search-settings) - [Zugriff über die Befehlszeile](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#command-line-access) - [Vor der Ausführung überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#verify-before-running) - [Eine bestehende Installation aktualisieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#update-an-existing-installation) - [Alltägliche Befehle unter Ubuntu](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#everyday-commands-on-ubuntu) - [Entfernen TgWitness](https://phishdestroy.github.io/TgWitness/de/docs/reference/installation/#remove-tgwitness) ## Installation mit einem einzigen Befehl Das Installationsprogramm mit Assistent enthält eine private Python-Laufzeitumgebung. Verwenden Sie für zukünftige Installationen dieselbe Adresse: Bei jeder Veröffentlichung werden das Installationsprogramm, die Hashes, Signaturen und Build-Informationen gemeinsam aktualisiert. **Linux / macOS (Bash):** ``` curl -fsSL https://get.destroy.tools/install.sh | bash ``` Führen Sie das Programm auf einem Ubuntu-Server als Root aus, um einen Hintergrunddienst zu installieren. Auf einem Desktop-Rechner führen Sie es als normaler Benutzer aus. **Windows (PowerShell oder Eingabeaufforderung):** ``` powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "irm https://get.destroy.tools/install.ps1 | iex" ``` Unter Windows ist kein Administrator erforderlich. Der untergeordnete PowerShell-Prozess lässt Ihr Terminal mit dem Ergebnis geöffnet. Python und die Abhängigkeiten verbleiben in der Installation. Wählen Sie unter Ubuntu **„Dieser Computer**“, **„Temporärer HTTPS-Link**“ oder **„Eigene Domain**“. Das Installationsprogramm zeigt die Panel-Adresse und den Zugangsschlüssel an. Für einen temporären Link öffnen Sie diese HTTPS-Adresse in Ihrem Browser und geben Sie den Schlüssel ein. Bei lokalem Zugriff auf einen Remote- Server verwenden Sie eine SSH-Weiterleitung von Ihrem Computer (`ssh -L 8787:127.0.0.1:8787 user@server`) und öffnen Sie `http://127.0.0.1:8787`. Unter macOS und Windows öffnet sich das lokale Panel in Ihrem Browser; lassen Sie das Terminal weiterlaufen. Melden Sie sich im Panel bei Telegram an und wählen Sie aus, was erfasst werden soll. Die Installation allein löst die Telegram-Erfassung nicht aus. ## Wo alles läuft `get.destroy.tools` ist ein **Cloudflare Worker, der statische Downloads bereitstellt**. Er verfügt weder über ein TgWitness-Panel noch über eine Telegram-Sitzung oder eine Datenbank mit Benutzerdaten. Er wird nicht an einen Projekt-VPS weitergeleitet. Die Anwendung läuft auf dem Rechner, auf dem Sie den Befehl ausführen. | Installation | Programm | Daten | | --- | --- | --- | | Ubuntu als Root | `/opt/tgwitness` | Systemdienst: `/var/lib/tgwitness-`; den `tgwitness paths` für den genauen Pfad. | | Linux-/macOS-Benutzer | `~/.local/share/tgwitness` | `data/live` unter dieser Installation. | | Windows-Benutzer | `%LOCALAPPDATA%\TgWitness` | `data\live` unter dieser Installation. | Wählen Sie `TGWITNESS_INSTALL_DIR` , um einen anderen Ordner auszuwählen. Installierte Versionen und Daten sind voneinander getrennt. Das Installationsprogramm lädt Ihre Konten, Nachrichten oder Schlüssel nicht auf die Download-Seite hoch. Wenn Sie einen Cloudflare-Tunnel auswählen, wird der Datenverkehr des Panels über Cloudflare geleitet; die Verwendung Ihrer eigenen Domain verweist auf Ihren eigenen Server. With `TGWITNESS_TRUSTED_PROXIES`, the panel accepts a single `X-Forwarded-Proto: https` from a trusted proxy to set Secure download cookies. Jede Installation enthält **die Dateien „START-HERE.html“** und **„START-HERE.txt“** mit lokalen Pfaden, Befehlen und Links zum Repository. Führen Sie `tgwitness guide` aus, um die Anleitung zu öffnen. Unter Windows verwenden Sie `& "$env:LOCALAPPDATA\TgWitness\bin\tgwitness.cmd" guide` in der PowerShell. ## Einstellungen für die Volltextsuche [Die Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/) (Vorschau) erfordert keine Einrichtung. Der Index wird nach einem Update im Hintergrund erstellt. | Variable oder Befehl | Wirkung | | --- | --- | | `TGWITNESS_FULLTEXT=disk` | Standard: Das Verzeichnis „index“ wird in `search/fulltext.sqlite3` jedes Arbeitsbereichs | | `TGWITNESS_FULLTEXT=memory` | Keine Indexdatei; der Index wird bei jedem Start neu erstellt | | `TGWITNESS_FULLTEXT=off` | Kein Index; nur Exaktsuche | | `tgwitness index status` | Indexstatus jedes Arbeitsbereichs | | `tgwitness stop`, `tgwitness index rebuild`, `tgwitness start` | Erstellen Sie jeden Index aus dem signierten Protokoll neu. | Die vom Administrator unter **„Journal“ → „Filter“ → „Suchindex“** getroffene Auswahl überschreibt die Variable für diesen Arbeitsbereich. Befehle suchen das Datenverzeichnis der Installation, in der sie ausgeführt werden; fügen Sie andernfalls `--data-dir` den Pfad aus `tgwitness paths`. Für ein vollständiges ukrainisches Wörterbuch (GPL-3.0-Daten) installieren Sie `pymorphy3-dicts-uk` in der Python-Umgebung der Installation. ## Zugriff über die Befehlszeile Die [Befehlszeile](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/) (Vorschau) liest das Archiv nach Skripten und Agenten ab. | Variable | Wirkung | | --- | --- | | `TGWITNESS_URL` | Panel-Adresse für `tgwitness search`, `context`, `messages`, `stats` und `export`; Standardwert `http://127.0.0.1:8787` , wenn ein Token festgelegt ist | | `TGWITNESS_MCP_TOKEN` | Archivieren Sie das Verbindungstoken unter **„Integrationen“ → „MCP“**, das mit MCP-Clients geteilt wird; `--token-file` stattdessen aus einer Datei lesen | | `TGWITNESS_DATA` | Das Datenverzeichnis wird direkt gelesen, wenn keine `--data-dir`, URL oder Token angegeben wird | ## Vor der Ausführung überprüfen Der einzeilige Befehl vertraut bei seinem Startskript auf HTTPS. Dieses Skript überprüft vor der Installation SHA-256 sowie die RSA-Signatur des Projekts in Bezug auf die Anwendung und die Einschränkungen. Sie können das Startskript auch zunächst herunterladen und überprüfen. Der öffentliche Veröffentlichungsschlüssel lautet [„release-signing.pub](https://github.com/phishdestroy/TgWitness/blob/main/deploy/installer/release-signing.pub)“. Sein SHA-256 lautet: ``` 039d98a658ccda14253e45a00335b4a68d840976d8ec18b8d4355cc7c458447d ``` Bewahren Sie diesen Fingerabdruck aus einer Repository-Revision auf, der Sie vertrauen. Eine Prüfsumme vom selben Download-Server erkennt Abweichungen; der unabhängig vertrauenswürdige öffentliche Schlüssel dient zur Authentifizierung einer Release-Signatur. Verwenden Sie für die unten aufgeführten Verifizierungs-Downloads ein neues, leeres Verzeichnis. **Linux / macOS – in einem neuen, leeren Download-Verzeichnis ausführen** (erfordert curl und OpenSSL): ``` curl -fSLO https://get.destroy.tools/install.sh && curl -fSLO https://get.destroy.tools/install.sh.sig && curl -fSLO https://get.destroy.tools/release-signing.pub && test "$(openssl dgst -sha256 release-signing.pub | awk '{print $NF}')" = \ '039d98a658ccda14253e45a00335b4a68d840976d8ec18b8d4355cc7c458447d' && openssl dgst -sha256 -verify release-signing.pub -signature install.sh.sig install.sh && bash install.sh ``` Die `&&` Kette wird vor der Ausführung angehalten, wenn ein Download, eine Schlüssel-Fingerabdruck- oder Signaturprüfung fehlschlägt. Wenn zwischen dem Herunterladen des Skripts und dessen Signierung eine Veröffentlichung erfolgt, werden beide erneut heruntergeladen. Alte Installationsprogramme behalten ihre unveränderlichen Paket-URLs bei. **Windows – Überprüfen Sie vor der Ausführung das SHA-256:** ``` Invoke-WebRequest https://get.destroy.tools/install.ps1 -OutFile install.ps1 -UseBasicParsing Get-FileHash .\install.ps1 -Algorithm SHA256 Invoke-RestMethod https://get.destroy.tools/SHA256SUMS.txt ``` Vergleichen Sie den Hash mit der `install.ps1` Zeile. Für eine unabhängige Signaturprüfung verwenden Sie OpenSSL (zum Beispiel über Git Bash) und denselben Fingerabdruck des öffentlichen Schlüssels wie oben: ``` curl -fSLO https://get.destroy.tools/install.ps1 && curl -fSLO https://get.destroy.tools/install.ps1.sig && curl -fSLO https://get.destroy.tools/release-signing.pub && test "$(openssl dgst -sha256 release-signing.pub | awk '{print $NF}')" = \ '039d98a658ccda14253e45a00335b4a68d840976d8ec18b8d4355cc7c458447d' && openssl dgst -sha256 -verify release-signing.pub -signature install.ps1.sig install.ps1 && powershell.exe -NoProfile -ExecutionPolicy Bypass -File install.ps1 ``` Die Windows-Installation selbst überprüft die Paketsignaturen mit .NET und benötigt kein OpenSSL. Es handelt sich um separate RSA-3072-Signaturen (SHA-256), nicht um Authenticode. Das [Manifest](https://get.destroy.tools/manifest.json) enthält die Softwareversion, den genauen Git-Commit, die unveränderliche Release-ID und die SHA-256 jedes Artefakts. Die Seite enthält einen Link zur entsprechenden Quelle. Das Manifest und die Prüfsummenliste verfügen ebenfalls über separate Signaturen (`manifest.json.sig` und `SHA256SUMS.txt.sig`). ## Eine bestehende Installation aktualisieren **Eine neue Veröffentlichung aktualisiert die Download-Seite; installierte Programme werden aktualisiert, wenn Sie das Installationsprogramm erneut ausführen.** Es gibt keinen unbeaufsichtigten Updater und keinen automatischen Neustart einer laufenden Sammlung. Der aktuelle Installationskanal ist **„Preview“**; er folgt veröffentlichten, geprüften Builds von `main`, deren Commit neuer sein kann als die letzte nummerierte GitHub-Version. Die Versionsangabe der Seite stammt aus `pyproject.toml`; ihr Commit und ihre Build-ID unterscheiden Aktualisierungen innerhalb derselben Preview-Version. Die Veröffentlichung erfolgt automatisch, nachdem genau dieser Commit die Anwendungs- und Sicherheitsprüfungen bestanden hat und das signierte Paket die Ubuntu-Service- sowie die Windows PowerShell-Installationstests bestanden hat. Während die Prüfungen laufen oder falls sie fehlschlagen, setzen dieselben Befehle die Installation des zuvor geprüften Builds fort. Das Build-Manifest zeigt an, welcher Commit derzeit verfügbar ist; die Versionsnummer allein kann zwischen den Vorschau-Updates unverändert bleiben. Verwenden Sie denselben Installationsordner und denselben Betriebssystembenutzer wie zuvor. Sichern Sie das gesamte Datenverzeichnis, während die Erfassung angehalten ist; `tgwitness paths` identifiziert es. Ein signierter Export ist keine vollständige Installationssicherung. **Ubuntu-Root-Installation unter `/opt/tgwitness`:** ``` curl -fsSL https://get.destroy.tools/install.sh | TGWITNESS_INSTALL_DIR=/opt/tgwitness bash -s -- --no-start ``` Nach erfolgreicher Installation: ``` /opt/tgwitness/bin/tgwitness restart /opt/tgwitness/bin/tgwitness status /opt/tgwitness/bin/tgwitness open ``` Für eine Installation unter Linux/macOS verwenden Sie die Originaldatei `TGWITNESS_INSTALL_DIR` oder die Standardeinstellung und führen Sie den ersten Installationsbefehl erneut aus. Schließen Sie ein Panel im Vordergrund vor der Aktualisierung und starten Sie es anschließend erneut. Für einen konfigurierten Linux-Dienst führen Sie den entsprechenden `tgwitness restart` Befehl aus. **Windows:** Schließen Sie das geöffnete Fenster, führen Sie den Windows-Installationsbefehl erneut aus und öffnen Sie dann `bin\tgwitness.cmd` in derselben Installation. Das Installationsprogramm behält Daten, Sitzungen, Zugriffseinstellungen und Signaturschlüssel bei. Es wechselt den Launcher erst, nachdem die neue Umgebung die Prüfungen bestanden hat; bei fehlgeschlagener Installation bleibt der vorherige Launcher erhalten. Bewahren Sie die Sicherung vor dem Upgrade wegen Änderungen am Speicherformat auf. ## Alltägliche Befehle unter Ubuntu | Befehl | Ergebnis | | --- | --- | | `tgwitness open` | Aktuelle Panel-URL und Zugriffsschlüssel. | | `tgwitness paths` | Genaue Pfade zu Programmen, Daten und Anleitungen. | | `tgwitness guide --print` | Anleitung für den Offline-Betrieb. | | `tgwitness status` / `tgwitness logs` | Verfügbarkeits- und Dienstprotokolle. | | `tgwitness stop` / `tgwitness start` | Dienst anhalten/fortsetzen; Daten beibehalten. | | `tgwitness token rotate` | Ersetzen Sie den Administratorschlüssel und beenden Sie die Browsersitzungen. | | `tgwitness tunnel off` | Den öffentlichen Quick-Tunnel deaktivieren; das lokale Panel beibehalten. | | `tgwitness tunnel on` / `tgwitness tunnel restart` | Erstellen Sie einen Quick-Tunnel-Link bzw. ersetzen Sie dessen Adresse. | Siehe [„Zugriff“](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) für Kollegentokens, Sitzungen und IP-Einschränkungen sowie [„Veröffentlichung des Installers“](https://github.com/phishdestroy/TgWitness/blob/main/deploy/installer/README.md#automatic-publication-from-github) für den Release-Workflow von GitHub zu Cloudflare. ## TgWitness entfernen Es gibt kein Deinstallationsprogramm: Sie beenden das Panel und löschen dessen Ordner. Durch das Löschen des Datenordners werden Journale, Signaturschlüssel, Telegram-Sitzungen und gespeicherte Dateien endgültig gelöscht. Zuvor: 1. Exportieren Sie, was Sie benötigen (**Exporte → Signierte ZIP herunterladen**), und bewahren Sie den Fingerabdruck des Signaturschlüssels sowie die Checkpoints außerhalb dieses Rechners auf. Um den Arbeitsbereich selbst zu sichern, kopieren Sie den gesamten Datenordner, während die Erfassung angehalten ist. 2. Löschen Sie Server, die unter **„Extras → Server 24/7“** in **„Ihre Server“** oder mit `python -m tgwitness.cloud destroy`; der Anbieter stellt sie so lange in Rechnung, bis sie gelöscht werden. 3. Beenden Sie die Sitzung jedes Kontos in Telegram unter **„Einstellungen“ → „Geräte**“. Das Löschen der Dateien führt nicht dazu, dass die Sitzung auf der Seite von Telegram abgemeldet wird. **Root-Installation unter Ubuntu.** Notieren Sie sich den Datenordner, stoppen Sie den Dienst und entfernen Sie anschließend den Dienst, die Ordner und die Verknüpfung: ``` /opt/tgwitness/bin/tgwitness paths /opt/tgwitness/bin/tgwitness stop systemctl list-unit-files 'tgwitness-*' systemctl disable tgwitness- rm /etc/systemd/system/tgwitness-.service systemctl daemon-reload rm -rf /opt/tgwitness /var/lib/tgwitness- /usr/local/bin/tgwitness ``` **Installation für Linux- oder macOS-Benutzer.** Schließen Sie das Fenster. Ein konfigurierter Linux-Benutzerdienst wird mit `systemctl --user disable --now tgwitness-`; seine Einheit befindet sich in `~/.config/systemd/user/`. Löschen Sie anschließend `~/.local/share/tgwitness` (oder Ihr `TGWITNESS_INSTALL_DIR`) sowie die `~/.local/bin/tgwitness` Verknüpfung. **Windows.** Schließen Sie das Fenster und löschen Sie `%LOCALAPPDATA%\TgWitness` (oder Ihre `TGWITNESS_INSTALL_DIR`). Das Installationsprogramm fügt weder einen Dienst noch eine geplante Aufgabe oder eine Verknüpfung hinzu. --- # Telegram · Erste Einrichtung und Einstellungen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/ Der Einrichtungsassistent, Ziele, Benutzeroberflächenebenen, Verbindungswege und Einstellungen, die von einer Kontengruppe gemeinsam genutzt werden. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Der Einrichtungsassistent, Ziele, Benutzeroberflächenebenen, Verbindungswege und Einstellungen, die von einer Kontengruppe gemeinsam genutzt werden. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Erste Schritte](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) [Konten](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/) · [Zusammenhang](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/) · [Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) Ein neuer Arbeitsbereich öffnet sich `/first-run`: Sprache und Zeit, Benutzeroberflächenebene, Ziel, Verbindung, Telegram und Chats. Jede Antwort wird auf dem Server gespeichert, sobald sie sich ändert, sodass beim Neuladen derselbe Schritt fortgesetzt wird. Der letzte Bildschirm listet die Antworten auf und ermöglicht es dir, zu jeder beliebigen davon zurückzukehren. Sprache, IANA-Zeitzone, Design und Stufe werden pro Benutzer und pro Arbeitsbereich gespeichert. Die Standardeinstellungen sind die Browsersprache, die Zeitzone des Geräts, das Systemdesign und die einfache Benutzeroberfläche. Beim Ändern der Sprache bleibt die Panel-Sitzung erhalten. Die Zeiten im signierten Protokoll ändern sich nie. `/settings` bearbeitet dieselben Datensätze wie der Assistent. Die Suche umfasst die Hauptfelder, Parameter und die erweiterten Formulare; ein verstecktes Feld kann geöffnet werden, ohne die Ebene zu ändern. Ebenen ändern lediglich die angezeigten Inhalte: Der Server prüft die Berechtigungen selbstständig. Die Sammlungseinstellungen und die erste Verbindung liegen in der Verantwortung des Arbeitsbereichsadministrators. | Ebene | Felder | Seitenleiste | | --- | --- | --- | | Einfach | Nur das Wesentliche | Startseite, Chats, Änderungen, Archive, Einstellungen | | Standard | Allgemeine Einstellungen mit Erläuterungen | Fügt Case Board, „Konten“ und „Zugriff“ hinzu | | Experte | Alle Felder, Beschränkungen und technischen Details | Fügt „Quellen“, „Extras“, „Das Archiv befragen“, „Parameter“, „Konto“, „Systemprotokoll“ und „Integrationen“ hinzu | Die [Panel-Anleitung](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/) beschreibt die einzelnen Abschnitte. ## Ziele | Ziel | Sammlung | Dateien | Externe Dienste | Serveradresse | | --- | --- | --- | --- | --- | | Archivkopie | Aus; **„Start“** führt einen Export durch | Fotos bis zu 20 MB | Aus | Automatisch | | Chats verfolgen | Kontinuierlich | Fotos und Videos mit einer Länge von bis zu 60 Sekunden bzw. einer Größe von bis zu 20 MB | Zeitstempel und Problembenachrichtigungen | Automatisch | | Beweismittel | Kontinuierlich | Alle Dateien bis zu 1 GB | Zeitstempel, drand, Benachrichtigungen | Nein, ausblenden | Als Beweismittel werden die externe Kopie, der Witness-Bot und die Code-Prüfung empfohlen. Speicher- und Benachrichtigungsadressen benötigen zunächst ein Ziel. Eine Funktion, die mit einem externen Dienst kommuniziert, fordert dazu auf, Anfragen außerhalb von Telegram zuzulassen; wenn man diese deaktiviert, wird angeboten, Zeitstempel, Benachrichtigungen und die externe Kopie ebenfalls zu deaktivieren. Wenn das Ziel geändert wird, wird zunächst der Unterschied angezeigt, und manuelle Änderungen können beibehalten werden. Ein Feld, das vom Ziel abweicht, wird **mit „Von Ihnen geändert“** gekennzeichnet und kann wiederhergestellt werden. Die Einstellungsrevision verhindert, dass eine geprüfte Änderung eine Änderung überschreibt, die in einem anderen Reiter vorgenommen wurde. ## Zusammenhang **„Automatic“** versucht es zunächst mit öffentlichen MTProxy-Servern, dann mit WARP und schließlich mit einer direkten Verbindung, wobei Letzteres nur dann zum Einsatz kommt, wenn die Serveradresse angezeigt werden darf. „Automatic“ und WARP können hash-geprüfte Komponenten installieren und den Server bei Cloudflare registrieren. WARP nutzt den vorhandenen wgcf/wireproxy-Manager und einen lokalen SOCKS5-Port; die Routing-Tabelle des Systems wird nicht verändert. Wenn externe Dienste benötigt werden, bevorzugt „Automatic“ WARP gegenüber MTProxy. Ihr eigener Proxy akzeptiert `tg://proxy`, `socks5://`, `http://` und `https://`. Das Zertifikat eines HTTPS- Proxys wird überprüft, bevor Anmeldedaten an ihn gesendet werden. Eine Verbindungsprüfung ist fünf Minuten lang gültig und an die Route, die Richtlinie und die Antworten des Assistenten gebunden; eine Änderung einer dieser Komponenten erfordert eine neue Prüfung. **Die Option „Ohne Prüfung fortfahren“** ist verfügbar und ersetzt nicht die Telegram-Anmeldung. Die gewählte Route wird im Hintergrund erneut überprüft, und „Automatic“ führt seine Kette nach einem Verbindungsabbruch erneut aus. Wenn kein öffentlicher Proxy antwortet, wird die Zählung rot angezeigt, begleitet von WARP- und Neuüberprüfungsaktionen. ## Kontogruppen Konten in einer Gruppe nutzen gemeinsame Einstellungen. Öffnen Sie **„Konten“ → „Gruppen und gemeinsame Einstellungen“ → „Gemeinsame Einstellungen**“ oder **„Gruppeneinstellungen“** auf der Einstellungsseite eines Kontos. Die Gruppe teilt das Ziel, gespeicherte Dateien, Zeitstempel, Drand, Problembenachrichtigungen, externe Kopien, Anfragen außerhalb von Telegram, den IP-Modus, die Aufzeichnungsinhalte, den Zeitplan für die erneute Überprüfung, Benachrichtigungsregeln, Berichtseinstellungen, Parameter und die Verbindungsroute. Benachrichtigungsempfänger, Proxy-Anmeldedaten und die Anmeldung bleiben pro Konto bestehen, ebenso wie das Starten und Anhalten der Erfassung. - Jedes Mitglied folgt der Gruppe. Unter „Einstellungen“ wird ein Wert festgelegt: 🔗 **Aus der Gruppe** oder ✏️ **Eigener Wert**; mit **„Zurück zum Gruppenwert“** wird der ursprüngliche Wert wiederhergestellt. - Eine Änderung listet die betroffenen Konten auf (**gilt für 2 von 3 Konten**) und fragt jedes Konto einzeln ab, bevor ein eigener Wert ersetzt wird. Nicht markierte Konten behalten ihren Wert bei. - Ein Parameter, den die Gruppe nicht teilt, bleibt **Nicht geteilt: Jedes Konto behält seine eigenen Werte bei**, bis Sie auf **Diesen Wert teilen** klicken. - **Beim Kopieren der Einstellungen eines Kontos** werden die Werte des ausgewählten Kontos als Einstellungen der Gruppe übernommen. - Ein Konto, das in eine Gruppe verschoben wird, wird gefragt: **„Die Werte der Gruppe übernehmen?“** Andernfalls behält es seine eigenen Werte bei, gekennzeichnet mit ✏️. Später hinzugefügte Konten beginnen mit den Werten der Gruppe. - Ein Beobachtungskonto behält seinen IP-Modus bei, bis es pausiert wird. Jede Änderung wird im signierten Protokoll des Hauptarbeitsbereichs und jedes Mitglieds, das davon betroffen ist, festgehalten. Beim Löschen einer Gruppe bleiben deren Konten und deren aktuelle Werte erhalten. Die Gruppenseite `/groups/` zeigt die Mitglieder, was Aufmerksamkeit erfordert und die Chats, die mehrere Konten sehen. Siehe [Kontengruppen](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#bulk-import-and-account-groups). ## Vorhandene Arbeitsbereiche Ein Arbeitsbereich mit einer laufenden Sitzung oder einer zuvor abgeschlossenen Einrichtung zeigt den Assistenten nicht an. Seine Werte werden beim Laden der Seite nicht durch ein Ziel ersetzt. Das Ausblenden eines Feldes deaktiviert die Funktion nicht und löscht auch nicht deren Wert. Die Schätzung von Umfang und Zeitaufwand basiert auf bis zu drei ausgewählten Chats und bis zu 20 Nachrichten aus jedem Chat. Es handelt sich um eine Schätzung: Sie berücksichtigt weder die Telegram-Limits noch die Geschwindigkeit eines bestimmten Servers oder die Dateien in jedem Chat. --- # Telegram · Konten und Sitzungsformate Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/ Melden Sie sich per Telefon, QR-Code oder Authentifizierungsschlüssel an, importieren Sie Sitzungen aus Telethon, Pyrogram oder Telegram Desktop und verwalten Sie mehrere Konten. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Melden Sie sich per Telefon, QR-Code oder Authentifizierungsschlüssel an, importieren Sie Sitzungen aus Telethon, Pyrogram oder Telegram Desktop und verwalten Sie mehrere Konten. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Erste Schritte](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) TgWitness meldet sich über MTProto als **Telegram-Benutzerkonto** (nicht als Bot) an und nutzt dabei Telethon. Jedes Konto befindet sich in einem eigenen **Arbeitsbereich** (in der API und den Befehlszeilentools als *„Workspace“* bezeichnet) mit eigener Sitzung, eigenen Quellen, eigenem Protokoll und eigenem Signaturschlüssel. Sitzungsdateien, Sitzungsstrings und Auth-Keys sind **Kontoautorisierungen**: Wer auch immer im Besitz einer solchen ist, kann im Namen dieses Kontos handeln. Sie enthalten keinen Nachrichtenverlauf. > [!WARNUNG] **Verwenden Sie nichts, dessen Verlust Sie sich nicht leisten können.** Wir raten dringend davon ab, persönliche oder anderweitig wertvolle Konten zu verknüpfen sowie eine API-ID bzw. einen API-Hash für ein Konto zu erstellen, das Ihnen wichtig ist. Dabei geht es nicht darum, dass TgWitness ungetestet ist: Telegram schränkt Konten ein und sperrt sie unvorhersehbar dauerhaft – bei Anfragevolumina, die es als übermäßig erachtet, unabhängig vom Client oder Zweck und ohne angemessene Dokumentation. Viele Sperren sind irreversibel. Verwenden Sie dafür eigens eingerichtete Konten. Reibungslose Testläufe hängen von Telegram ab, nicht von der Software, und bieten keinerlei Garantie für die Zukunft. - [Auf einen Blick](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#at-a-glance) - [Bevor Sie beginnen: API-ID und API-Hash](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#before-you-start-api-id-and-api-hash) - [Telefonnummer](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#phone-number) · [QR-Code](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#qr-code) · [Authentifizierungsschlüssel + DC-ID](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#auth-key--dc-id) - [Kontodateien](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#account-files): [Telethon .session](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#telethon-session) · [Pyrogram .session](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#pyrogram-session) · [Paar aus Sitzung und JSON](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#session--json-pair) · [TData](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#telegram-desktop-tdata) · [StringSession](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#telethon-stringsession) · [JSON-Datei für das Konto](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#account-json) - [Ermitteln Sie, was Ihnen vorliegt](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#identify-what-you-have) · [Nicht unterstützte Formate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#unsupported-formats) - [Mehrere Konten](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#multiple-accounts) · [Sichere Aufbewahrung von Kontodateien](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#keeping-account-files-safe) · [Fehlerbehebung](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#troubleshooting) ## Auf einen Blick | Was Sie haben | Registerkarte **„Konto hinzufügen“** | Außerdem benötigen Sie | | --- | --- | --- | | Die Telefonnummer und der Zugriff auf die Anmeldedaten | **Telefon** | 2FA-Passwort, sofern aktiviert | | Telegram auf einem anderen Gerät geöffnet | **QR-Code** | 2FA-Passwort, sofern aktiviert | | Eine `.session`-Datei (Telethon oder Pyrogram) | **Dateien** | Optionales begleitendes JSON-Dokument für App-Einstellungen | | `.session` + `.json` mit demselben Namen | **Dateien** (bitte beide auswählen) | In der Regel nichts weiter | | Ein „`tdata`“-Ordner in Telegram Desktop | **Dateien** (als ZIP) | Der lokale Desktop-Zugangscode, sofern einer festgelegt wurde | | Eine Telethon-StringSession (Text, `.txt`, `.tgwitness-session`) | **Dateien** | Es ist kein separates API-Paar erforderlich | | Ein „`.json`“ mit einer Sitzung oder einem Authentifizierungsschlüssel | **Dateien** | Es ist kein separates API-Paar erforderlich | | Ein Auth-Schlüssel (512 Hexadezimalzeichen) und dessen DC-Nummer | **Authentifizierungsschlüssel** | Optionale Benutzer-ID | TgWitness erkennt Dateien anhand ihres **Inhalts**, nicht anhand ihrer Namen. Das Umbenennen einer Datei führt niemals zu einer Konvertierung. ## Bevor Sie beginnen: API-ID und API-Hash Sie können sich anmelden, ohne eine Telegram-API-Anwendung zu erstellen. Wenn kein Paar eingegeben, importiert oder bereits im Arbeitsbereich gespeichert ist, wählt TgWitness ein Paar aus seinem integrierten Pool von 50 öffentlichen API-Paaren (`tgwitness/api_pool.py`) aus, wobei es bei einer neuen Anmeldung Telegram Desktop bevorzugt und ein gespeichertes Paar vorrangig verwendet; die verbleibenden Kandidaten werden gemischt. Wenn Telegram ein Paar (`API_ID_INVALID`, `API_ID_PUBLISHED_FLOOD`, `UPDATE_APP_TO_LOGIN`) ablehnt, wird das nächste versucht, bis zu acht pro Anmeldung; abgelehnte Paare werden bis zum Neustart übersprungen. Das Paar, mit dem die Anmeldung erfolgte, wird zusammen mit dem Konto gespeichert und für dieses wiederverwendet. Eine **-API-ID** und ein **-API-Hash** identifizieren die Anwendung gegenüber Telegram; sie autorisieren ein Konto nicht von sich aus. Fehlende Verbindungsfelder verwenden ein deterministisches Geräte-/Betriebssystem-Paar aus den mitgelieferten [opentele2-2.0.0-Katalogen](https://github.com/DedInc/opentele2/tree/7e973bc71cd7a714ad13ac703c0895a90d36a735): Desktop `2040`, Android `6`, Android X `21724`, iOS `10840`, macOS `2834` und Web `2496`. Die Source-Build-ID `4` von Android verwendet ebenfalls den Android-Katalog, wie in [Telegram Android’s BuildVars](https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java) angegeben. Web verwendet standardmäßig A; ein importiertes `K`-App-Versionssuffix oder ein `macos`-Sprachpaket wählt K aus, und die Version `0.7.0` wählt Webogram aus. Unbekannte Anwendungs-IDs behalten die Standardwerte des Telethon-Hosts bei. Importierte Felder haben immer Vorrang, einschließlich einer älteren App-Version und eines leeren Sprachpakets. Der Katalog ändert niemals die API-ID/den Hash. Sein Versions-Snapshot wird explizit überprüft und nicht während der Anmeldung abgerufen. Ein gespeichertes Profil bleibt nach Updates stabil. `account.getAuthorizations` meldet die von Telegram gespeicherten Autorisierungsmetadaten; es handelt sich dabei nicht um eine Wiederholung jedes neuen `initConnection`. Vergleiche es mit dem tatsächlich gesendeten Profil. Das Verknüpfen einer bestehenden Autorisierung validiert nicht den zugehörigen API-Hash: `initConnection` sendet die API-ID, während der Hash bei Anmeldeanfragen verwendet wird. Nach einer neuen Telefon- oder QR-Autorisierung fordert TgWitness die Konfiguration, den nächstgelegenen DC, den Online-Status, Sprachen (sofern das Sprachpaket nicht leer ist), App-Updates und Aktualisierungen der Nutzungsbedingungen an, wobei zwischen den Anfragen 0.3–1.5 Sekunden liegen. Die Statusaktualisierung markiert das Konto kurzzeitig als online. Diese Abfolge wird einmalig nach Abschluss der Anmeldung ausgeführt, nicht bei Importen, erneuten Verbindungen oder Neustarts. Die Autorisierung wird zuerst gespeichert; eine fehlgeschlagene Anfrage stoppt die Abfolge, ohne einen erneuten Versuch zu unternehmen oder die Anmeldung zu verwerfen. Die Ergebnisse werden als `account.initialized` aufgezeichnet, wobei Fehlerbezeichnungen anstelle von Antwortinhalten verwendet werden. Die Abfolge bietet keine Garantie gegen Kontoeinschränkungen. Für `tdesktop` verwendet ein fehlendes `tz_offset` den lokalen UTC-Offset des Servers, gerundet auf 900 Sekunden unter Verwendung des [opentele2-Algorithmus](https://github.com/DedInc/opentele2/blob/7e973bc71cd7a714ad13ac703c0895a90d36a735/crates/opentele2-core/src/fingerprint.rs) (MIT; Lizenz in `tgwitness/client_profiles.LICENSE` ). Dieser wird bei jeder Verbindung aktualisiert, sodass Änderungen durch die Sommerzeit berücksichtigt werden. Ein importierter `tz_offset` -Wert hat auf jeder Plattform Vorrang und wird exakt beibehalten, einschließlich des Werts Null. Andere `initConnection.params` -Einträge bleiben erhalten. Das HTTP-Anmeldeformular akzeptiert die durch den Dateiimport zurückgegebene numerische Zeitzone; Boolesche Werte, Bruchteile und Offsets außerhalb des unterstützten Bereichs werden abgelehnt. Direkte, SOCKS5- und HTTP-CONNECT-Routen verwenden Telethons `ConnectionTcpObfuscated` (verschleiertes, gekürztes MTProto). HTTPS CONNECT behält TLS zum Proxy bei und nutzt denselben verschleierten Transport innerhalb des Tunnels. MTProxy behält seinen erforderlichen zufälligen Zwischentransport und die geheime Handhabung bei. Routenwechsel wenden die gleichen Optionen an. Die Verschleierung verändert die Paketgestaltung; sie verbirgt weder das Konto noch dessen Client-Metadaten vor Telegram und impliziert keine Immunität gegenüber Einschränkungen. Nach dem Verbindungsaufbau mit einem autorisierten Client überprüft TgWitness die Konfiguration, das nächstgelegene Rechenzentrum, die aktuelle Autorisierung, die überprüfte Basislinie der Ebene, Sprachen, App-Updates sowie Aktualisierungen der Nutzungsbedingungen. Diese Diagnosen werden einmal pro Client-Instanz vor der Datenerfassung durchgeführt und unter den Verbindungsdetails mit dem jeweiligen Zeitpunkt angezeigt. `account.connection_checked` protokolliert das Ergebnis ohne Sitzungs-Hashes, IP-Adressen, Token oder API-Hashes. Es akzeptiert niemals Nutzungsbedingungen und installiert keine Updates. Ein Fehlschlag der Anfrage oder FloodWait stoppt nachfolgende Anfragen; ein fehlendes Ergebnis bleibt unbekannt. Lokale Prüfungen können ihre Ergebnisse weiterhin melden, während Netzwerkprüfungen übersprungen werden. Die FloodWait-Diagnose speichert die fehlgeschlagene TL-Methode, etwaige Takeout-/Range-Wrapper, die vom Server angeforderte Wartezeit und die effektive Frist in `telegram.backoff`. Die Verbindungsdetails zeigen die Methode und die Frist an, während Anfragen angehalten sind. Die Diagnose umfasst Client-Aufrufzähler pro Methode seit der Erstellung des jeweiligen Clients; sie zählen verschachtelte Peer-Auflösungen separat, berücksichtigen jedoch keine Pakete oder interne Wiederholungsversuche von Telethon. Aktuelle Zählerstände sind auch als `collector.rpc_activity` in der Status-API verfügbar. Es sind keine Anfrageargumente, Benutzernamen, Zugriffs- Hashes oder Ausnahmetexte enthalten. Die letzte Diagnose und die vollständige Frist bleiben nach einem Neustart erhalten. Frühere Wartezeiten ohne Methodendatensatz können nicht nachträglich zugeordnet werden. Siehe „[-Exportgrenzen“](https://github.com/phishdestroy/TgWitness/blob/main/docs/EXPORT-LIMITS.md) für die Quellcodeüberprüfung und die Unterscheidung zwischen Erkennung und Historienerfassung. `official_app=True` oder `False` ist das Flag für die aktuelle Autorisierung bei Telegram. Keiner der Werte gibt Aufschluss darüber, ob das Konto eingeschränkt, vertrauenswürdig oder unter Beobachtung steht. Die bestehenden `account.devices`-Snapshots im Beweismodus bleiben die Historie aller angemeldeten Geräte; die Verbindungsdiagnose behält nur die aktuelle Gerätebeschreibung bei. Vor der Verbindung vergleichen Warnprüfungen die API-Plattform, das Sprachpaket, die Formate für Gerät/Betriebssystem und App-Version, die Ländereinstellung des mobilen Systems sowie die tatsächliche Schemaebene von Telethon mit der Basisversion des geprüften Katalogs. Warnungen erscheinen im Serverprotokoll und in den Metadaten zum Kontostatus; sie ersetzen niemals importierte Werte und ändern auch nicht die Schemaebene. Eine andere Ebene ist ein Signal zur Kompatibilitätsprüfung, kein Nachweis für ein defektes oder eingeschränktes Konto. Diese Prüfungen und `official_app` bestätigen nicht, dass Telegram das Konto als frei von Einschränkungen betrachtet. Der Status Getrenntes Konto verwendet das gespeicherte Profil, anstatt eine weitere Gerätebeschreibung zu generieren. Um stattdessen Ihre eigene Anwendung zu verwenden (das Konto, unter dem diese registriert ist, ist dem Risiko ausgesetzt; siehe [„Warum ein integrierter API-Pool?](https://github.com/phishdestroy/TgWitness/blob/main/docs/PROJECT-GUIDE.md#connect-a-telegram-account)“): 1. Öffnen Sie [my.telegram.org](https://my.telegram.org) und melden Sie sich mit einer beliebigen Telefonnummer an, die Ihnen gehört. Der Code wird in der Telegram-App angezeigt, nicht per SMS. 2. Wählen Sie **API-Entwicklungstools** aus. 3. Erstellen Sie eine Anwendung: beliebiger Titel und Kurzname (5–32 Zeichen), Plattform **„Desktop**“. URL und Beschreibung können leer bleiben. 4. Kopieren Sie **die App-API-ID** (eine Zahl) und **den App-API-Hash** (32 hexadezimale Zeichen). Im Bedienfeld finden Sie die Felder **„API-ID“ und „Hash“** unterhalb des Anmeldeformulars. Sie können ein einzelnes „`api_id:api_hash`“-Paar in **das Feld „API-ID“** einfügen, woraufhin beide Felder automatisch ausgefüllt werden. Ein einziges Paar kann für alle Ihre Konten verwendet werden. Nach erfolgreicher Anmeldung wird es verschlüsselt ausschließlich in diesem Arbeitsbereich gespeichert und niemals an den Browser zurückgesendet. Es sind drei verschiedene Zugangsdaten beteiligt: | Geheim | Öffnet | Verfügbarkeit | | --- | --- | --- | | Panel-Token | Das TgWitness-Webpanel | `panel-token.txt` im Datenverzeichnis oder `TGWITNESS_TOKEN` | | API-ID + Hash | Für sich genommen nichts Besonderes; identifiziert die App | Integriertes Paar, importierte Einstellungen oder Ihre eigene App unter my.telegram.org | | Kontoautorisierung | Der Telegram-Account | Erstellt per Telefon-/QR-Anmeldung oder als Sitzung importiert | Falls Telegram über einen Proxy erreicht werden muss, nehmen Sie die entsprechenden **Einstellungen** zunächst unter **„Konto“ → „Einstellungen“ → „Verbindungseinstellungen“ → „Verbindungsroute ändern“** vor. ## Telefonnummer 1. Eröffnen Sie **ein Konto**, wechseln Sie zur Registerkarte **„Telefon“** und geben Sie die Nummer im internationalen Format ein, beispielsweise `+44 7700 900123`. Leerzeichen und Bindestriche werden automatisch entfernt. 2. Klicken Sie auf **„Weiter**“. Die Felder „API-ID“ und „Hash“ können leer bleiben. 3. Geben Sie den Code ein, den Telegram versendet (in der Regel an die Telegram-App; der Empfang per SMS kann nicht garantiert werden). 4. Falls für das Konto eine zweistufige Verifizierung eingerichtet ist, geben Sie dieses Passwort ein. Es handelt sich dabei nicht um das Panel-Token und auch nicht um einen Gerätezugangscode. 5. Überprüfen Sie die nach der Anmeldung angezeigte Konto-ID und wählen Sie anschließend die Quellen aus. Anmeldedaten und das 2FA-Passwort werden niemals auf die Festplatte geschrieben. ## QR-Code Verwenden Sie diese Option, wenn das Konto bereits auf einem Smartphone oder einem anderen Computer angemeldet ist. 1. Registerkarte **„QR-Code“** → **QR-Code anzeigen**. API-ID + Hash können leer bleiben. 2. Auf dem angemeldeten Gerät: **Einstellungen → Geräte → Desktop-Gerät verknüpfen**, den Code scannen und bestätigen. 3. Geben Sie das 2FA-Passwort in TgWitness ein, falls Telegram Sie dazu auffordert. Das QR-Bild wird lokal generiert. Codes verfallen; klicken Sie auf **„Einen weiteren QR-Code generieren“,** um es erneut zu versuchen. Das Sperren des Fensters, das Wechseln des Arbeitsbereichs oder das Starten einer weiteren Anmeldung bricht einen ausstehenden Code ab. ## Authentifizierungsschlüssel + DC-ID Ein Auth-Key ist der 256-Byte-Autorisierungsschlüssel, der jeder Telegram-Sitzung zugrunde liegt und als **512 hexadezimale Zeichen** zusammen mit der Rechenzentrumsnummer **DC 1–5** geschrieben wird. 1. Registerkarte **„Auth-Schlüssel**“. Fügen Sie den vollständigen Schlüssel ein; ein verkürzter Schlüssel, der „`…`“ enthält, funktioniert nicht. 2. Wählen Sie die mit dem Schlüssel bereitgestellte DC-ID aus. 3. Geben Sie optional die **Benutzer-ID** ein. TgWitness lehnt die Verbindung dann ab, falls Telegram ein anderes Konto meldet. 4. Press **Connect-Konto**. Ein Auth-Schlüssel (512 Zeichen) ist kein API-Hash (32 Zeichen). Derselbe Schlüssel kann auch als JSON importiert werden, siehe [Account-JSON](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#account-json). ## Kontodateien Öffnen Sie **„Konto hinzufügen“ → „Dateien“** und wählen Sie bis zu **vier Dateien** aus, **die zu einem Konto gehören** (insgesamt **8 MiB**), und klicken Sie anschließend auf **„Konto verbinden**“. Die Formulare „**Files**“, „**Auth key**“ und Bulk-Import zeigen vor dem Verbindungsaufbau die Warnung bezüglich paralleler Sitzungen an. Standardmäßig werden importierte Autorisierungen wiederverwendet. Halten Sie den ursprünglichen Client geschlossen, solange dessen Schlüssel hier verwendet wird. „**Files**“ und „**Auth key**“ bieten zudem die Option „**Create an independent authorization**“ an, die weiter unten beschrieben wird. Der Massenimport nutzt weiterhin den Direktmodus. Bei der Anmeldung per Telefon und über interaktiven QR-Code werden separate Autorisierungen erstellt. Die Warnungsüberschrift bleibt im Importformular sichtbar; die vollständige Erklärung wird automatisch angezeigt, sobald Dateien oder eine Schlüssel-/Sitzungszeichenfolge eingegeben werden. Sie kann nach dem Lesen ausgeblendet werden, sodass die Dateiauswahl und die Verbindungssteuerelemente auf einem Smartphone weiterhin nutzbar bleiben. - Die Dateien werden **im Arbeitsspeicher** Ihres TgWitness-Servers konvertiert. Hochgeladene Dateien werden nicht gespeichert, ZIP-Dateien werden nicht auf die Festplatte entpackt und es wird kein externer Dienst kontaktiert. - Die daraus resultierende Sitzung wird anschließend mit Telegram abgeglichen. Wenn eine Datei eine Benutzer-ID enthält, muss diese mit dem von Telegram gemeldeten Konto übereinstimmen. - Dateien, die verschiedene Konten oder unterschiedliche API-Zugangsdaten beschreiben, werden abgelehnt, anstatt sich für eine Option zu entscheiden. - **Das Feld „Passcode“ oder „Session Text“** enthält das lokale TData-Passcode-Feld, ein Feld zum Einfügen einer „StringSession“ sowie **zum Einlesen von Dateien ohne Anmeldung** (das Formular wird ausgefüllt, ohne Telegram zu kontaktieren). ### Erstellen Sie eine eigenständige Autorisierung Wählen Sie „**Unabhängige Autorisierung erstellen“**, bevor Sie importierte Dateien oder einen Auth-Schlüssel verbinden. TgWitness verbindet den importierten Spender kurzzeitig, nutzt ihn zur Genehmigung des QR-Anmeldetokens des neuen Clients und trennt die Verbindung zum Spender unmittelbar nach der Genehmigung. Der neue Client verfügt über einen eigenen Autorisierungsschlüssel und ein separat ausgewähltes Desktop- Profil. Die vom Spender bereitgestellten API-Anmeldedaten und das Geräteprofil werden ausschließlich für die Verbindung zum Spender verwendet. Keine bestehende Autorisierung wird abgemeldet oder widerrufen. **Halten Sie den ursprünglichen Client des Spenders während dieses Schritts vollständig geschlossen.** Die anfängliche Verbindung nutzt weiterhin den kopierten Schlüssel, daher kann dieser Modus das anfängliche Risiko einer parallelen Nutzung nicht beseitigen. Sobald die neue Autorisierung hergestellt ist, kann der Besitzer den ursprünglichen Client wieder öffnen und beide unabhängig voneinander nutzen. Die interaktive **QR-Code**-Anmeldung ermöglicht es dem ursprünglichen Client, die Anmeldung zu genehmigen, ohne seinen Schlüssel hier zu kopieren oder zu verbinden. Wenn Telegram „2FA“ anfordert, verwendet dieser Modus `twoFA` aus der ausgewählten JSON-Datei, sofern vorhanden, oder fragt nach dem Passwort. Bei einem abgelehnten importierten Passwort erfolgt eine Rückkehr zum Passwortformular. Passwörter werden nicht gespeichert. Der Kandidatenschlüssel wird verschlüsselt in `independent_login.enc` gespeichert, einschließlich Änderungen während der Migration des Rechenzentrums. Nach einer Unterbrechung wählen Sie denselben Spender und diese Option aus, um den gespeicherten Kandidaten wiederherzustellen. Der Arbeitsbereich bleibt für dieses Konto reserviert; ein fehlgeschlagener Abschluss löscht den neuen Arbeitsbereich nicht. Behalten Sie dessen Datenverzeichnis und Tresorschlüssel bei. Die endgültigen Anmeldedaten und der `account.authorized`-Journal-Eintrag enthalten die Importmethode, die Eingabeformate und die Spender-API-ID, jedoch ohne den Spenderschlüssel oder das Passwort. Am 5. November 2026 bestand ein spezielles Konto Live-Prüfungen mit den Anbietern Telethon, Pyrogram und TData: Abschluss der 2-Faktor-Authentifizierung, eindeutige neue Autorisierungsschlüssel, gleichzeitiger Zugriff durch den Anbieter und einen neuen Client sowie das Lesen eines öffentlichen Kanals. Im Telethon-Fall wurde zudem ein gespeicherter Kandidat nach einer Unterbrechung im Passwortschritt wieder aufgenommen. Jede neue Autorisierung schloss die sechs Initialisierungsanfragen nach der Anmeldung ab, und das signierte Journal wurde verifiziert. Die ursprüngliche Sitzung blieb in allen vier bereitgestellten Formaten nutzbar. Die [RPC-Fehlerdatenbank von Telegram](https://core.telegram.org/api/errors.json) ordnet `FRESH_CHANGE_ADMINS_FORBIDDEN` dem Wechsel von Administratoren, `FRESH_CHANGE_PHONE_FORBIDDEN` der Änderung der Telefonnummer und `FRESH_RESET_AUTHORISATION_FORBIDDEN` dem Widerrufen anderer Sitzungen, der Änderung ihrer Laufzeit oder der Registrierung eines Passworts zu. `SESSION_TOO_FRESH_*` und `PASSWORD_TOO_FRESH_*` betreffen Eigentumsübertragungen sowie Einnahmen- oder Geschenkabhebungen. Hierbei handelt es sich nicht um Erfassungsvorgänge; eine neue Anmeldung bedeutet kein pauschales 24-stündiges Leseverbot. Der Export kann `TAKEOUT_INIT_DELAY_*` separat zurückgeben. TgWitness behält vom Server angeforderte Pausen bei und versucht nicht, die Token-Akzeptanz automatisch erneut durchzuführen oder Sitzungen zu widerrufen, um Einschränkungen zu umgehen. ### Telethon `.session` | | | | --- | --- | | Was ist das? | Die SQLite-Datenbank, die von Telethon-basierten Tools erstellt wird, zum Beispiel `my_account.session` | | Anerkannt von | Tabellen `sessions` (zusammen mit `dc_id`, `server_address`, `port`, `auth_key`) und `version` = 7 oder 8 | | Anforderungen | Genau eine Zeile mit autorisierten Sitzungen; eine geschlossene, vollständige Datenbank | Schließen Sie zunächst das Programm, das die Datei erstellt hat. Falls `my_account.session-journal` oder `my_account.session-wal` daneben vorhanden sind, ist die Datenbank noch nicht abgeschlossen: Öffnen und schließen Sie den ursprünglichen Client ordnungsgemäß. Das Löschen dieser Sidecar-Dateien kann zu einer beschädigten Kopie führen. ### Pyrogram `.session` | | | | --- | --- | | Was ist das? | Die SQLite-Datenbank, die von Pyrogram-basierten Tools erstellt wird | | Anerkannt von | Tabelle `sessions` mit `dc_id`, `auth_key`, `test_mode`, `user_id`, `is_bot`; `version` = 2 oder 3 | | Anforderungen | Eine autorisierte Benutzersitzung im Produktionsnetzwerk. Bot- und Test-DC-Sitzungen werden abgelehnt. | Die gespeicherte Benutzer-ID wird bei der Anmeldung mit den Daten von Telegram abgeglichen. ### Paar aus Sitzung und JSON Die Datensätze werden häufig als zwei Dateien mit demselben Namen bereitgestellt, beispielsweise „ `447700900123.session`“ und „`447700900123.json`“. Wählen Sie **beide** gleichzeitig aus. - Ausgehend vom JSON verwendet TgWitness `app_id`/`api_id` und `app_hash`/`api_hash`, sodass Sie in der Regel keine API-Anmeldedaten eingeben müssen. - Das Verbindungsprofil verwendet `device_model` (Alias `device`), `system_version` (Alias `sdk`), `app_version`, `lang_code`, `system_lang_code` (Alias `system_lang_pack`), `lang_pack` und optional `tz_offset` (Sekunden ab UTC, -43200 bis 50400). Angegebene Felder haben Vorrang vor generierten Standardwerten und der Sprache des Panels bzw. Browsers . Widersprüchliche Aliase werden abgelehnt. Das aufgelöste Profil wird in den verschlüsselten Arbeitsbereichs-Anmeldedaten gespeichert und nach einem Neustart wiederverwendet, einschließlich der App-Version. - `phone`, Proxy-Einstellungen und Gerätetoken werden **ignoriert**. `twoFA` ist schreibgeschützt, wenn **Unabhängige Autorisierung erstellen** ausgewählt ist; beim direkten Import wird es ignoriert. - Ein JSON ohne ein unterstütztes Autorisierungsfeld ist lediglich Metadaten. Fügen Sie die zugehörige Sitzungsdatei hinzu oder fahren Sie mit der Anmeldung per Telefon oder QR-Code fort. Ein JSON, das eine unterstützte Sitzung oder einen Auth-Schlüssel enthält, kann eigenständig autorisieren; siehe [Account JSON](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#account-json). ### Telegram Desktop (TData) TData ist der Ordner „`tdata`“ der Telegram-Desktop-Anwendung (die plattformübergreifende App von desktop.telegram.org). | System | Standardstandort „`tdata`“ | | --- | --- | | Windows | `%APPDATA%\Telegram Desktop\tdata` (portables Telegram: neben `Telegram.exe`) | | Linux | `~/.local/share/TelegramDesktop/tdata` | | macOS | `~/Library/Application Support/Telegram Desktop/tdata` | So importieren Sie es: > **Warnung vor parallelen Sitzungen.** Der direkte TData-Import verwendet den Autorisierungsschlüssel von Telegram Desktop erneut . Verwenden Sie diesen Schlüssel nicht gleichzeitig in Desktop und TgWitness. Telegram kann die Autorisierung mit `AUTH_KEY_DUPLICATED` ungültig machen, wodurch beide Instanzen bis zu einer erneuten Anmeldung unbrauchbar werden. > > > > Beenden Sie Desktop vollständig, einschließlich des Taskleistens-Prozesses, und lassen Sie diese Instanz geschlossen, während TgWitness die importierte Sitzung nutzt. **Beenden Sie die Anwendung, melden Sie sich nicht ab und widerrufen Sie die Sitzung nicht:** Ein Widerruf macht auch die importierte Instanz ungültig. Wenn beide Clients laufen müssen, wählen Sie **Unabhängige Autorisierung erstellen** und lassen Sie den Desktop geschlossen, bis die neue Anmeldung erfolgreich ist, oder melden Sie sich bei TgWitness per Telefon oder QR-Code an. Ein eigenes Konto wird empfohlen, macht die parallele Nutzung geklonter Schlüssel jedoch nicht sicher. > > > > Dies gilt auch für importierte `.session`-Dateien, StringSession-Text und Auth-Key-HEX-Daten. Andere Clients mit eigenen, unabhängig erstellten Autorisierungen können angemeldet bleiben. Siehe [die Dokumentation zu „AUTH_KEY_DUPLICATED“ von Telegram](https://core.telegram.org/api/errors#406-not-acceptable). 1. Beenden Sie Telegram Desktop vollständig. 2. Erstellen Sie eine ZIP-Datei, die **ausschließlich** diese beiden Elemente aus `tdata` enthält: - `key_datas` - die 16-stellige Dateiendung „`s`“ daneben, in der Regel „`D877F783D5D3EF8Cs`“ Das Komprimieren des gesamten Ordners einschließlich seines Medien-Caches überschreitet in der Regel die Grenzwerte (512 Einträge, 32 MiB entpackt). 3. Wählen Sie die ZIP-Datei unter **„Dateien“** aus. Falls für Telegram Desktop ein **lokaler Passcode** eingerichtet ist, geben Sie diesen zunächst unter **„Passcode“ oder „Sitzungstext“** ein. Dies ist nicht das 2FA-Passwort. Unterstützt: ein Konto pro Archiv, moderner `key_datas`-/`key_data0`-/`key_data1`-Speicher, lokaler Passcode. Nicht unterstützt: Ordner mit mehreren angemeldeten Konten, ältere Desktop- Layouts, passwortgeschützte ZIP-Dateien sowie die separate native macOS-App „Telegram für macOS“. ### Telethon StringSession Eine einzelne Textzeile, die in der Regel mit „`1`“ beginnt und etwa 350 Zeichen lang ist. Laden Sie sie als „`.txt`“- oder „`.tgwitness-session`“-Datei (maximal 4 KiB) hoch oder fügen Sie sie unter **„Passcode“ oder „Sitzungstext“** ein. Es werden ausschließlich Telethon-Zeichenfolgen akzeptiert; Pyrogram- und TDLib- Zeichenfolgen verwenden andere Formate. ### JSON-Datei für das Konto Ein JSON-Objekt mit einer Größe von maximal **64 KiB** in einer Datei mit der Endung „**`.json`**“. | Feld (Aliase) | Bedeutung | | --- | --- | | `api_id` (`app_id`) | Anwendungs-ID, eine positive Zahl | | `api_hash` (`app_hash`) | Anwendungs-Hash, 32 hexadezimale Zeichen | | `string_session` (`session_string`, `session_str`; veraltetes `session`) | Text aus der Telethon-StringSession, kein Dateiname | | `auth_key` (`auth_key_hex`) + `dc_id` | Vollständiger Auth-Schlüssel mit 512 Zeichen und DC 1–5 | | `user_id` (`id`) | Optional; vor dem Speichern der Autorisierung mit Telegram abgeglichen | | `device_model` (`device`) | Beschreibung des Verbindungsgeräts | | `system_version` (`sdk`) | Version des verbundenen Betriebssystems | | `app_version` | An Telegram gesendete Anwendungsversion | | `lang_code`, `system_lang_code` (`system_lang_pack`), `lang_pack` | Client-Sprache, Systemsprache und Client-Sprachpaket; ein leeres `lang_pack` ist zulässig | | `tz_offset` | Optionaler UTC-Offset in Sekunden, gesendet in `initConnection.params`; Ganzzahl oder dezimale Ganzzahl als Zeichenkette | Sind sowohl ein Alias als auch der Hauptname vorhanden, müssen diese übereinstimmen. Explizite Telethon- Sitzungsfelder haben Vorrang vor einem generischen `session`-Blob in einem anderen Format. Wenn beide erkennbare Telethon-Sitzungen enthalten, müssen sie dieselbe Autorisierung beschreiben. Ohne ein explizites Feld muss `session` eine gültige Telethon-StringSession sein. Beispiele: ``` { "app_id": 1234567, "app_hash": "0123456789abcdef0123456789abcdef" } ``` ``` { "api_id": 1234567, "api_hash": "0123456789abcdef0123456789abcdef", "auth_key": "REPLACE_WITH_ALL_512_HEXADECIMAL_CHARACTERS", "dc_id": 2, "user_id": 123456789 } ``` Im ersten Beispiel werden lediglich die API-Anmeldedaten eingegeben; melden Sie sich per Telefon oder QR-Code an oder fügen Sie eine Sitzungsdatei hinzu. Massenlisten (ein JSON-Array mit Konten) werden nicht akzeptiert. ## Ermitteln Sie, was Ihnen vorliegt | Wie Sie sehen | Es ist | Verwendung | | --- | --- | --- | | `*.session`; beim Öffnen in einem Texteditor wird oben „`SQLite format 3`“ angezeigt | Telethon oder Pyrogram SQLite | **Dateien** (werden automatisch erkannt) | | Ein Ordner „`tdata`“, der „`key_datas`“ enthält | Telegram Desktop TData | Zwei Dateien als ZIP-Datei komprimieren, dann **„Dateien“** | | Eine Textzeile, beginnend mit `1`, ca. 350 Zeichen | Telethon StringSession | **Dateien** | | `*.json` mit `app_id`/`app_hash` | Begleitende Metadaten | **Dateien** zusammen mit der zugehörigen Sitzung | | `*.json` mit `auth_key` oder `string_session` | JSON-Datei für das Konto | **Dateien** | | 512 Zeichen `0-9a-f` | Auth-Schlüssel | **Authentifizierungsschlüssel** | | 32 Zeichen `0-9a-f` | API-Hash | **API-ID + Hash** | | `td.binlog` oder ein `db.sqlite` aus einer TDLib-App | TDLib-Speicher | Nicht unterstützt | | `123456789:AA…` | Bot-Token | Nicht unterstützt | ## Nicht unterstützte Formate | Format | Alternative | | --- | --- | | TDLib-Speicher (`td.binlog`) und TDLib-Exporte | Anmeldung per Telefon oder QR-Code | | Pyrogram-Sitzungs**strings** | Verwenden Sie die Pyrogram-Datei „`.session`“ oder den Telefoncode bzw. den QR-Code. | | TData mit mehreren angemeldeten Konten | Melden Sie sich von den anderen Konten in Telegram Desktop ab oder verwenden Sie die jeweilige Sitzungsdatei des jeweiligen Kontos | | Bot-Token | Nicht unterstützt: TgWitness fungiert als Benutzerkonto | | CSV-/JSON-Listen zahlreicher Konten | Importieren Sie unterstützte Sitzungsdateien über **Konten → Konten importieren** oder melden Sie sich per Telefon/QR in separaten Arbeitsbereichen an | | Test-DC- oder Bot-Sitzungen | Verwenden Sie ein Produktionsbenutzerkonto | ## Mehrere Konten Drücken Sie **+** neben der Kontoauswahl oder öffnen Sie **Konto → Einstellungen → Verbindungseinstellungen → Arbeitsbereiche**, geben Sie eine Bezeichnung ein und melden Sie sich an. - Beliebig viele Arbeitsbereiche, einschließlich des Hauptarbeitsbereichs. Jeder verfügt über eine eigene Sitzung, eine eigene Proxy-Route, Quellen, Erfassungsrichtlinien, ein Protokoll, einen Signaturschlüssel, Checkpoints und Exportfunktionen. - Das Wechseln des angezeigten Arbeitsbereichs führt nicht dazu, dass die anderen angehalten werden. - Ein Protokoll bleibt an das Konto gebunden, das es erstellt hat. Die Anmeldung mit einem anderen Konto erfordert einen weiteren Arbeitsbereich, und ein Konto kann nicht zwei Arbeitsbereichen zugeordnet werden. - Das Haupt-Panel-Token steuert alle Arbeitsbereiche. [Durch die Erteilung von Zugriffsrechten](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) können andere Personen auf ausgewählte Konten und Chats beschränkt werden, wobei separate Berechtigungen und Sitzungslimits gelten. - **„Accounts“** benennt einen Arbeitsbereich um und löscht einen hinzugefügten Arbeitsbereich samt dessen Sitzung, Protokoll, Quellen und Signaturschlüssel. Der Hauptarbeitsbereich kann nicht über das Bedienfeld gelöscht werden. ### Stapelimport und Kontogruppen Verwenden Sie **„Konten“ → „Konten importieren“**, um mehrere Konten hinzuzufügen, Dateien anhand des Basisnamens zuzuordnen und die jeweiligen Anmeldeergebnisse einzusehen. Jedes Konto erhält einen eigenen Arbeitsbereich. Eine Gruppe fasst verwandte Konten zusammen, ohne deren Sitzungen, Schlüssel oder Beweismaterialien zusammenzuführen. **„Gruppe** unter **‚Konten‘ öffnen**“ führt zu deren Seite unter `/groups/`: - **Konten:** Verbindungsweg, Beobachtungen und letzte Nachricht jedes Mitglieds, mit den Funktionen **„Alle** starten“ und **„Alle pausieren**“. - **Erfordert Aufmerksamkeit:** Konten, bei denen die Anmeldung beendet wurde, die nicht verfügbar sind oder bei denen ein Verbindungs-, Erfassungs-, Quellen- oder Medienproblem vorliegt; jeder Name führt zu der entsprechenden Karte. - **Chats mehrerer Konten zeigen:** gemeinsam genutzte Quellen, die Konten, die diese beobachten, sowie Unterbrechungen im verfügbaren Beobachtungszeitraum des Arbeitsbereichs (bis zu sieben Tage). **Der Export mit N Konten** teilt den Export eines Kanals oder einer Supergruppe auf diese Konten auf und signiert ein Archiv. - **Gruppe exportieren:** ein ZIP mit dem signierten Export jedes Kontos unter `accounts/` und `manifest.json` mit einer Auflistung der SHA-256- und Schlüssel-Fingerabdrücke, signiert vom Haupt- Arbeitsbereich in `manifest.signature.json`. Überprüfen Sie jedes Kontoarchiv einzeln mit `python -m tgwitness.verify` und dem vertrauenswürdigen Fingerabdruck dieses Kontos. Die Mitglieder nutzen die gemeinsamen Einstellungen der Gruppe; ein Konto kann jedoch eigene Werte beibehalten. Siehe [„Gemeinsame Einstellungen“](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/#account-groups), [die Anleitung zu Import und Gruppen](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Accounts.md#import-accounts-and-share-settings) sowie [das Dashboard „MTProxy-Pool](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Proxies.md#pool-dashboard-and-custom-sources)“. ## Abmelden **„Konto → Bei Telegram abmelden“** (bei pausierter Überwachung) fordert Telegram auf, die Sitzung zu beenden, sodass diese auch aus den **„Einstellungen → Geräte**“ des Kontos verschwindet und die Sitzung aus dem Arbeitsbereich-Tresor entfernt wird. Das Protokoll, die Quellen, die Einstellungen und der Signaturschlüssel bleiben erhalten, und das Protokoll zeichnet die Abmeldung auf. Der Arbeitsbereich gehört weiterhin zu seinem Konto: Nur dieses Konto kann sich erneut damit verbinden. Wenn Telegram nicht antwortet, wird die Sitzung dennoch hier entfernt und dies wird im Bedienfeld angezeigt; beenden Sie sie in Telegram unter **„Einstellungen“ → „Geräte**“. ## Sichere Aufbewahrung von Kontodateien - Behandeln Sie jedes `.session`, jede TData-ZIP-Datei, jede StringSession, jeden Auth-Schlüssel und jede Konto-JSON-Datei wie ein Passwort. TgWitness speichert die importierten Autorisierungsdaten in seinem verschlüsselten Tresor; Sie können die Originaldateien anschließend löschen. - Führen Sie dieselbe Autorisierung nicht gleichzeitig in zwei Programmen aus. Telegram könnte diese widerrufen (`AUTH_KEY_DUPLICATED`), woraufhin beide Instanzen nicht mehr funktionieren. - Eine abgelaufene oder widerrufene Sitzung kann nicht durch eine Konvertierung wiederhergestellt werden. Bitte melden Sie sich erneut an. ## Fehlerbehebung | Meldung oder Symptom | Vorgehensweise | | --- | --- | | *Diese Sitzung kann nicht gelesen werden. Schließen Sie den ursprünglichen Client…* | Die SQLite-Datei ist geöffnet oder unvollständig (Sidecar-Datei `-journal`/`-wal`). Beenden Sie das ursprüngliche Programm ordnungsgemäß und kopieren Sie die Datei erneut. | | *Unterstützte Telethon-SQLite-Schemas: 7 und 8* / *Pyrogram … 2 und 3* | Die Datei wurde mit einer sehr alten oder unbekannten Bibliotheksversion erstellt. Melden Sie sich stattdessen per Telefon/QR-Code an. | | *Es werden ausschließlich autorisierte Produktionsnutzersitzungen unterstützt* | Die Pyrogram-Datei gehört zu einem Bot oder zum Testnetzwerk. | | *Das TData-Archiv umfasst mehr als 512 Einträge oder 32 MiB* | Bitte nur die ZIP-Dateien „`key_datas`“ und „`D877F783D5D3EF8Cs`“, nicht den gesamten Ordner. | | *TData kann nicht entschlüsselt werden. Überprüfen Sie den lokalen Passcode auf dem Desktop.* | Geben Sie den lokalen Passcode von Telegram Desktop unter **„Passcode“ oder „Sitzungstext“** ein. | | *Importieren Sie jeweils ein TData-Konto* | Telegram Desktop verfügte über mehrere Konten; siehe [„Nicht unterstützte Formate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#unsupported-formats)“. | | *Ausgewählte Dateien beschreiben verschiedene Konten oder API-Zugangsdaten* | Wählen Sie Dateien nur aus einem einzigen Konto aus. | | *Die JSON-Datei enthält keine unterstützten API-Anmeldedaten oder Autorisierungen.* | Überprüfen Sie die Feldnamen in [der JSON-Datei „Account](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#account-json)“. | | *Ausschließlich API-Metadaten* | Die JSON-Datei enthält keine Sitzung. Fügen Sie die Datei „`.session`“ hinzu oder verwenden Sie die Telefonnummer bzw. den QR-Code. | | *Der Auth-Key (HEX) muss alle 512 hexadezimalen Zeichen enthalten* | Der Schlüssel ist abgeschnitten oder enthält „`…`“. | | Die Konto-ID stimmt nicht mit dem importierten Konto überein | Die Benutzer-ID der Datei weicht von der von Telegram gemeldeten ab; die Datei bezieht sich auf ein anderes Konto. | | Das Konto gehört bereits zu einem anderen Arbeitsbereich | Öffnen Sie diesen Arbeitsbereich, anstatt das Konto zweimal hinzuzufügen. | | Verbunden, jedoch fehlt eine private Gruppe in der Chat-Liste unter **„Quellen“** | Überprüfen Sie die Mitgliedschaft. Der Picker überprüft die ersten 1.000 Dialoge; erhöhen Sie das Limit unter **„Parameter**“. | | Proxy-Verbindung fehlgeschlagen | Überprüfen Sie den Routing- und IP-Modus. „Automatic“ MTProxy versucht es mit einem anderen funktionierenden Eintrag. „Hide the address“ wartet; „Direct“ kann als letztes Mittel nach der konfigurierten Verzögerung eine direkte Verbindung herstellen. Siehe [Routing-Modi](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/#ip-modes). | Siehe auch: [Verbindung und Sicherheit](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/) für Proxys und Verschlüsselung, sowie [die Funktionsweise der Datenerfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/) hinsichtlich der nach der Anmeldung erfassten Inhalte. --- # Telegram · Zugriff und Berechtigungen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/access/ Legen Sie den Zugriff auf Konten und Chats fest, wählen Sie Berechtigungen aus, beschränken Sie Sitzungen und IP-Adressen und entziehen Sie den Zugriff. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Translation coverage: this edition includes material from the English original. Legen Sie den Zugriff auf Konten und Chats fest, wählen Sie Berechtigungen aus, beschränken Sie Sitzungen und IP-Adressen und entziehen Sie den Zugriff. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Erste Schritte](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) Gewähren Sie einem Prüfer Zugriff auf einen Chat, einem Analysten die Berechtigung zum Exportieren eines Falls oder einem Operator die Kontrolle über ausgewählte Konten. Jede Person erhält ihr eigenes Token. Das Haupt- Panel-Token verbleibt beim Administrator. [Einrichtung eines Kontos](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/) · [Verbindungswege](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/) · [Sicherheitsmodell](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/) ## Zwei Anwendungsbereiche, zwei unterschiedliche Aufgabenbereiche **Der Erfassungsumfang** bestimmt, was ein Konto aufzeichnet: ausgewählte Chats, einen Telegram-Ordner oder das gesamte Konto. **Der Zugriffsumfang** legt fest, welche dieser aufgezeichneten Konten und Chats eine andere Person einsehen und nutzen kann. Die Gewährung von Zugriff bedeutet nicht, dass man einem Telegram-Chat beitritt, die Erfassung startet oder Berechtigungen für das Telegram-Konto erhält. Ein Zugriff kann ausgewählte Arbeitsbereiche, ausgewählte Chats innerhalb dieser, alle Arbeitsbereiche oder jedes Konto einer [Kontengruppe](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/#bulk-import-and-account-groups) umfassen. **Alle Arbeitsbereiche, einschließlich später hinzugefügter,** umfassen auch zukünftige Konten. Ein Gruppenzugriff umfasst ebenfalls Konten, die dieser Gruppe später hinzugefügt werden. Wählen Sie Arbeitsbereiche explizit aus, wenn ein Fall auf diese beschränkt bleiben soll. ## Jemandem Zugriff gewähren 1. Melden Sie sich als Hauptadministrator an und öffnen Sie **„Zugriff**“. 2. Geben Sie unter **„Jemandem Zugriff gewähren**“ einen Namen ein, den Sie im Protokoll wiedererkennen werden. 3. Wählen Sie die Arbeitsbereiche und, falls erforderlich, die einzelnen Chats aus. 4. Wählen Sie aus, was diese Person tun könnte. **Die Ansicht** ist stets enthalten. 5. Legen Sie die Gültigkeitsdauer, die Anmelde-/Sitzungslimits und die zulässigen Adressen nach Bedarf fest. 6. Klicken Sie auf **„Zugriff erstellen**“. Kopieren Sie das Token jetzt: Es wird nur einmal angezeigt. 7. Senden Sie die Panel-Adresse und das Token privat. Der Empfänger gibt dieses Token auf der normalen Anmeldeseite ein; er benötigt weder Ihr Haupt-Panel-Token noch eine Telegram-Sitzung. Öffnen Sie das Fenster mit dem ausgestellten Token in einer separaten Browsersitzung und überprüfen Sie die sichtbaren Chats sowie die zulässigen Aktionen, bevor Sie es weitergeben. Access names remain in encrypted local storage and are resolved by the administrator's panel. Names are omitted from new access and workspace-creation audit records; existing signed records keep their original fields. ## Wählen Sie die Berechtigungen aus Verwenden Sie für eine rein textbasierte öffentliche Demonstration **die Option „Public Showcase“** anstelle des normalen Reviewer-Zugriffs. Dabei werden explizit ausgewählte öffentliche Kanäle, gespeicherte Bearbeitungen und Löschungen sowie signierte Statistiken angezeigt, wobei Autorenfelder unkenntlich gemacht und Dateien an der API-Grenze geschlossen werden. [Erstellen und überprüfen Sie ein Showcase](https://phishdestroy.github.io/TgWitness/de/docs/reference/showcase/). | Genehmigung | Was es ermöglicht | | --- | --- | | `view` | Lesen Sie freigegebene Chats, erfasste Nachrichten, Profile, Dateien und gefilterte Protokollaufzeichnungen. Immer enthalten. | | `export` | Der Export von Chat-Verläufen und Dossiers ist zulässig. Für den Export von Beweismaterial aus dem gesamten Arbeitsbereich ist Zugriff auf den gesamten Arbeitsbereich erforderlich. | | `sources` | Verwalten Sie Quellen, Momentaufnahmen und Profilerfassungen. Der auf Chats beschränkte Zugriff ist nur in zugelassenen Chats möglich; die kontoweite Quellenerkennung und die Umfangseinstellungen bleiben deaktiviert. | | `collect` | Einen Collector starten oder stoppen. Erfordert Zugriff auf den gesamten Arbeitsbereich, da die Erfassung Auswirkungen auf das Konto hat. | | `interact` | Führen Sie unterstützte Telegram-Interaktionen innerhalb des Zugriffsumfangs durch. Bei einem auf den Chat beschränkten Zugriff können keine kontoweiten Link-Vorschauen genutzt werden. | | `settings` | Ändern Sie die Erfassungseinstellungen, Zeitstempel, Benachrichtigungen, externe Kopien und Parameter. Erfordert Zugriff auf den gesamten Arbeitsbereich. | | `account` | Melden Sie sich bei Telegram an oder ab und verwalten Sie Verbindungswege. Erfordert Zugriff auf den gesamten Arbeitsbereich. | | `board.read` | Lesen Sie die Notizen im Case Board nur innerhalb des zulässigen Arbeitsbereichs und der zulässigen Chats. | | `board.write` | Fügen Sie Lesezeichen, Markierungen, Ausschnitte, Kommentare sowie Öffnungs- und Überprüfungsstatus hinzu. Erfordert außerdem „`board.read`“. | | `board.manage` | Verwalten Sie Sammlungen, endgültige Teamstatus und die Karten anderer Teilnehmer. Erfordert außerdem Lese- und Schreibzugriff auf das Board. | Only the main administrator can download the off-site replica recovery key. Delegated `settings` or `account` access does not grant that key. Berechtigungen und Geltungsbereich werden gemeinsam geprüft. Das Aktivieren einer Berechtigung führt nicht dazu, dass andere Chats geöffnet werden oder bei einem auf einen Chat beschränkten Zugriff eine arbeitsbereichsweite Aktion freigeschaltet wird. Für einen parallelen Export muss der Zugriff den exportierten Chat in jedem ausgewählten Konto abdecken. Ein erteilter Zugriff darf keine neuen Zugriffe erstellen, keine Sitzungen anderer Personen verwalten oder die Administratorkonsole öffnen. ### Drei nützliche Konfigurationen | Person | Geltungsbereich | Berechtigungen | | --- | --- | --- | | Rezensent | Aufgezeichnete Chats aus einem Fall | `view` | | Analyst, der eine Übergabe vorbereitet | Die zu untersuchenden und zu exportierenden Chats | `view`, `export`; fügen Sie `interact` nur hinzu, falls diese über Telegram agieren sollen | | Erfassungsoperator | Ausgewählte vollständige Arbeitsbereiche | `view`, `sources`, `collect`; fügen Sie `settings` oder `account` nur bei Bedarf hinzu | Zu den Startvoreinstellungen des Zugriffsformulars gehört auch das Fall-Dashboard: Prüfer können lesen, Analysten können lesen und schreiben, und Betreiber können es verwalten. Die Voreinstellungen bleiben bearbeitbar, und bestehende Berechtigungen werden nicht automatisch erweitert. Siehe [Fall-Dashboard](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/) für vererbte Chat-Bereiche und Exportdatenschutz. ## Beschränkungen und Sitzungen | Einleitung | So funktioniert es | | --- | --- | | Parallelsitzungen | Begrenzen Sie die Anzahl gleichzeitiger Sitzungen auf 1–100. Bei Erreichen der Obergrenze lehnen Sie die nächste Anmeldung ab oder beenden Sie die älteste Sitzung. | | Anmeldungen sind zulässig | Die Anzahl der erfolgreichen Verwendungen des Tokens zum Starten von Sitzungen ist begrenzt. Bestehende Sitzungen werden nicht beendet, nur weil die letzte zulässige Anmeldung genutzt wurde. | | Gültig bis | Eine absolute Ablauffrist für den Zugriff. Bei abgelaufenem Zugriff ist eine Anmeldung oder die weitere Übermittlung von Anfragen nicht mehr möglich. | | Minuten ohne Aktivität | Zeitlimit für Inaktivität in einer Sitzung: von 5 Minuten bis zu 30 Tagen. Erfolgreiche Anfragen verlängern dieses Limit; ein geöffnetes Fenster kann durch regelmäßige Abfragen seine Aktivität aufrechterhalten. | | Zulässige Adressen | Geben Sie bestimmte IP-Adressen oder CIDR-Subnetze an. Lassen Sie das Feld leer, um alle Adressen zuzulassen, sofern die Bindung bei der ersten Anmeldung nicht aktiviert ist. | | Bei der ersten Anmeldung verknüpfen | Bei der ersten erfolgreichen Anmeldung wird die zulässige Adresse für diesen Zugriff festgelegt. | Die IP-Adresse ist die vom Programm erkannte Client-Adresse. Wenn Sie sich hinter einem Reverse-Proxy oder einem Tunnel befinden, überprüfen Sie bitte die unter **„Offene Sitzungen“** angezeigte Adresse, bevor Sie sich auf IP-Regeln verlassen: Andernfalls könnte es den Anschein haben, dass sich mehrere Benutzer die Adresse des Proxys teilen. ## Zugriff ändern oder widerrufen Bearbeiten Sie einen Eintrag unter **„Gewährter Zugriff“**, um dessen Geltungsbereich, Berechtigungen oder Einschränkungen zu ändern. Änderungen am Geltungsbereich und an den Berechtigungen werden bei nachfolgenden Anfragen überprüft, einschließlich Anfragen aus bereits geöffneten Sitzungen. Das Widerrufen eines Zugriffs beendet dessen Sitzungen und macht das ausgestellte Token unbrauchbar. Über **„Offene Sitzungen“** kann der Administrator auch eine einzelne Sitzung beenden, ohne den gesamten Zugriff zu widerrufen. Saved export copies retain their creator, workspace, chat scope and required permissions. An issued access can list or download its own copies only while those permissions still apply; copies containing Case Board also require `board.read`. The administrator can retrieve all copies. Older copies without this metadata and group bundles are administrator-only. Download tickets and prepared file responses recheck access after preparing the file, before sending its bytes. Each access, including the administrator, can hold ten pending download tickets per workspace; the workspace-wide limit is 1,000. Tickets expire after 120 seconds and are single-use. Durch eine Widerrufung können bereits heruntergeladene Dateien nicht wiederhergestellt werden. Das Abmelden, das Sperren des Fensters oder das Beenden einer Sitzung stoppt einen laufenden Collector nicht. ## Was der Administrator sehen kann Prüfer und Analysten erhalten Informationen zum Erfassungsfortschritt ohne Proxy-Endpunkte, Pool-Diagnosen, Serverpfade oder rohe Verbindungsfehler. Für die Verbindungsdiagnose ist die Berechtigung „`account`“ für den gesamten Arbeitsbereich erforderlich. Das Lesen von Benachrichtigungen, Offsite-Kopien und Parametereinstellungen erfordert die Berechtigung „`settings`“. Vollständige Browser-User-Agent-Zeichenfolgen werden in Zugriffssitzungen nicht beibehalten. Bei einem Upgrade werden sie zudem aus dem veränderbaren Sitzungscache entfernt. Das Protokoll des Panel-Prozesses maskiert IP-Literale, URL-Anmeldedaten und gekennzeichnete Geheimnisse. Lokale Dienstprotokolle und zuvor signierte Journal-Einträge werden nicht überschrieben. Zugriffsregeln und signierte Anmeldeeinträge verwenden weiterhin die Client-Adresse. ### Den Hauptschlüssel ersetzen Verwenden Sie „**Access“ → „Meine Grenzen“ → „Administratorschlüssel** neu ausstellen“ oder führen Sie „ `tgwitness token rotate`“ von einer verwalteten Installation aus, während das Panel läuft. Alle bestehenden Browsersitzungen werden beendet, einschließlich der mit Kollegen- Tokens eröffneten Sitzungen. Der anfragende Browser erhält eine neue Sitzung; speichern Sie den neuen Administratorschlüssel, bevor Sie ihn ausblenden. Ausgestellte Kollegen-Tokens bleiben gültig, bis sie separat widerrufen werden. Bei einer Installation, die `TGWITNESS_TOKEN` verwendet, muss diese Umgebungseinstellung geändert und ein Neustart durchgeführt werden. ### Anfrage- und Proxy-Grenzen The API admits up to 600 requests per minute per client and credential family: panel, archive/MCP or witness. Authentication cooldowns are separate for these families. Ten rejected authentications within a minute start an exponential cooldown, from one second up to five minutes. A failed attempt after the cooldown increases it; ten minutes without a failed attempt resets escalation. Rejections return HTTP 429 and `Retry-After`. Limits are in memory, shared across workspaces in one panel process; restart clears them. Live streams are limited to four per bearer token and 32 for the panel process. Opening a stream also consumes the API request budget. Request bodies have a 60-second receive deadline, reduced to 10 seconds for login, demo access, archive API and witness-head paths, or 8 seconds for MCP transport. Each application permits four unfinished bodies per client address, with overall limits of 32 and 64 MiB of reserved route allowances. Requests without bodies do not consume these slots. Oversized bodies return 413, timed-out bodies return 408, and exceeded client capacity returns 429 with `Retry-After: 1`. Exhausted overall body capacity returns 503 with `Retry-After`. Weitergeleitete IP-Header werden ignoriert, es sei denn, der tatsächliche TCP-Peer gehört zu `TGWITNESS_TRUSTED_PROXIES` (durch Kommas getrennte IPs oder CIDRs). Setzen Sie `TGWITNESS_PROXY_HEADER` auf `x-forwarded-for` oder `cf-connecting-ip`. XFF wird vom nächstgelegenen Proxy in Richtung des ersten nicht vertrauenswürdigen Peers durchlaufen. Fehlerhafte oder doppelte Metadaten vertrauenswürdiger Adressen werden abgelehnt, sodass sie keine Proxy-Adresse aus der Zulassungsliste erben können. Der verwaltete Quick-Tunnel vertraut dem lokalen Cloudflare-Connector; die Eigen-Domain-Konfiguration vertraut lokalem Caddy. Direkte Bereitstellungen vertrauen standardmäßig keinem Proxy. Wenn Sie Uvicorn selbst starten, deaktivieren Sie dessen Proxy-Header-Verarbeitung, damit diese Grenze den tatsächlichen Peer empfängt. `TGWITNESS_PANEL_ALLOWED_IPS` beschränkt den gesamten Zugriff auf das Panel, einschließlich des Administrators, auf aufgeführte IP-Adressen oder CIDRs. Die Routing-Identity-Prüfung des Installationsprogramms bleibt öffentlich und gibt keine Kontodaten zurück. Fügen Sie die erforderliche lokale Verwaltungsroute ein, bevor Sie die Zulassungsliste aktivieren. Der Leitfaden „**START-HERE**“ für eine verwaltete Installation enthält die Anweisungen zur Dienstkonfiguration und Wiederherstellung. Ein API-Abfrage-Selektor vom Typ „`ws`“ muss den Arbeitsbereich im Anforderungspfad identifizieren; unbekannte, nicht übereinstimmende und doppelte Selektoren werden mit dem Status 404 abgelehnt. Panel-Skripte und -Stile enthalten SHA-384-Integritätsmetadaten. Eine Import-Map deckt zudem lokal importierte JS-Module in Browsern ab, die die Integrität von Import-Maps unterstützen. Die dynamisch generierte Sprachantwort erfolgt separat. Diese Prüfungen erkennen die Ersetzung von Assets im Vergleich zur ausgelieferten Seite; sie begründen jedoch kein Vertrauen in einen kompromittierten Server, der sowohl die Seite als auch deren Hashes ersetzen kann. **Das Protokoll seit dem Start** kombiniert Prozessprotokolle mit Protokollaktivitäten aus jedem Arbeitsbereich: Anmeldungen, Ablehnungen, Routenänderungen und Bedieneraktionen. Es handelt sich um eine In-Memory-Konsole für den aktuellen Prozess, nicht um eine dauerhafte Kopie jeder einzelnen Nachricht. Häufig auftretende Nachrichtenereignisse verbleiben im Protokoll, anstatt die Konsole zu überfüllen. Das Erteilen, Ändern und Widerrufen von Zugriffsrechten sowie das Starten oder Beenden von Sitzungen führen ebenfalls zur Erstellung signierter `access.*`-Protokollaufzeichnungen. Token sind in diesen Aufzeichnungen nicht enthalten. Ausgegebene Token und Sitzungszugangsdaten werden als Hash-Werte im verschlüsselten Tresor gespeichert. ****Hauptadministrator und Vertrauensgrenze**** Das Haupt-Panel-Token unterliegt keinen Einschränkungen. Browser-Anmeldungen mit diesem Token erstellen Sitzungen, die den vom Administrator konfigurierten Sitzungslimits unterliegen. Skripte, die das Haupt-Token direkt senden, behalten den vollen Zugriff und werden nicht als Browsersitzungen gezählt. Es handelt sich hierbei um eine Zugriffskontrolle auf Anwendungsebene innerhalb einer Installation. Alle Arbeitsbereiche nutzen gemeinsam den Serverprozess; es besteht keine Isolierung vom Host-Administrator. Halten Sie das Haupt-Token, die Telegram-Sitzungen, die Signaturschlüssel und das Datenverzeichnis geheim. Ein Witness-Token ist ein separater Checkpoint/Zustandsnachweis, kein Zugriffstoken für das Panel. --- # Telegram · Verbindung, Proxys und Datenschutz Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/ Authentifizierung, automatische Proxy-Pools, IP-Modi, Fallback-Richtlinie, externe Anfragen und Speicherung von Geheimnissen. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Authentifizierung, automatische Proxy-Pools, IP-Modi, Fallback-Richtlinie, externe Anfragen und Speicherung von Geheimnissen. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) Dieses Dokument beschreibt das Verhalten von TgWitness 0.8.0 und dessen Grenzen. Authentifizierung, Zugriff auf die Quelle, Netzwerkverbindung und Vollständigkeit der Erfassung sind separate Zustände. Informationen zu Anmeldeschritten, Dateiformaten und mehreren Konten finden Sie unter [„Konten und Sitzungsformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/)“. Informationen zu Ereignisrichtlinien und zum Verhalten bei einem Neustart finden Sie unter [„So funktioniert die Erfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/)“. ## Anleitung zur Verbindungsherstellung Unter „**Connection**“ kann der Administrator zwischen „**Dieses Konto**“, „**Eine Kontengruppe**“ oder „**Alle Konten**“ wählen und anschließend eine Route auswählen. „**Auswahl überprüfen**“ listet die betroffenen Konten auf. „**Vorbereiten und prüfen**“ testet die vorgeschlagene Route, ohne die gespeicherte zu ändern. „**Geprüfte Verbindung anwenden**“ führt eine erneute Überprüfung durch, unterbricht die Überwachung bei Bedarf, speichert die Route und setzt die bereits laufende Überwachung fort. Die Erfassung wird niemals in einem zuvor inaktiven Konto gestartet. Historien-Downloads bleiben angehalten und können separat fortgesetzt werden. Halten Sie aktive Exporte vor dem Wechsel an. Bei Gruppenänderungen behalten Konten standardmäßig ihre eigene Route bei. Deaktivieren Sie diese Option erst, wenn die Vorschau die von Ihnen beabsichtigten Änderungen anzeigt. Die Anwendung meldet das Ergebnis für jedes einzelne Konto; es handelt sich nicht um eine „Alles-oder-Nichts“-Transaktion über alle Datenbanken hinweg. Bei einem fehlgeschlagenen Wechsel werden die vorherigen Einstellungen des jeweiligen Kontos wiederhergestellt. Ein Fehlschlag bei der Wiederaufnahme wird ausdrücklich angezeigt. Vorschauen verfallen nach zehn Minuten, und Änderungen an den Verbindungseinstellungen oder der Gruppenmitgliedschaft erfordern eine neue Überprüfung. | Route | Was „TgWitness“ verwaltet | | --- | --- | | Direkt | Verbindungen vom Host; ein VPN eines externen Hosts wird nicht erkannt oder erzwungen. | | VPN | Ein WireGuard-Profil mit Volltunnel pro Konto, das von einem lokalen SOCKS5-Prozess im Userspace ausgeführt wird. Es wird keine Host-Schnittstelle und kein Treiber installiert. | | Mein Proxy | SOCKS5, HTTP CONNECT oder MTProxy-Anmeldedaten. Eine URL kann die Felder SOCKS5/HTTP ausfüllen. Bei Auswahl mehrerer Konten wird dieser eingegebene Proxy gemeinsam genutzt. | | Öffentliches MTProto | Der bestehende Pool weist „Telegram“-Routen zu. Externe Anfragen sind deaktiviert, bis in den erweiterten Einstellungen ein separater geeigneter Proxy konfiguriert wurde. | | WARP | Ein separater lokaler Tunnel für jedes ausgewählte Konto, mit WARP-Registrierung und einem WireGuard-Profil, das im Tresor dieses Kontos gespeichert ist. | Die Überprüfung der aktuellen Route verwendet einen neuen, nicht authentifizierten Telegram-Transport, nicht die Sitzung des Kontos. Bei HTTP-fähigen Routen wird zudem der HTTPS-Trace von Cloudflare über diese Route angefordert und die gemeldete Ausgangs-IP, das Land, der WARP-Status sowie der Zeitpunkt der Überprüfung angezeigt. Die gemessene Latenz ist die Verbindungsaufbauzeit von Telegram, nicht ein ICMP-Ping. Die WARP-Vorbereitung schlägt fehl, sofern der Trace nicht „WARP aktiv“ meldet. Diese Prüfungen stellen die Konnektivität fest, nicht die Authentizität oder Vollständigkeit der erfassten Nachrichten. Ein laufender lokaler Prozess allein ist keine erfolgreiche Exit-Prüfung. ### Portables WARP und WireGuard Dies ist eine inoffizielle WARP-Integration **** unter Verwendung von [wgcf 2.3.1](https://github.com/ViRb3/wgcf/releases/tag/v2.3.1) und [wireproxy 1.1.3](https://github.com/windtf/wireproxy/releases/tag/v1.1.3). Der Administrator stimmt der Einrichtung vor dem ersten Download oder der WARP- Registrierung ausdrücklich zu. Diese Einrichtungsverbindungen laufen direkt über GitHub und Cloudflare und geben die IP-Adresse des Rechners preis. Der normale Datenverkehr des Kontos behält seine bestehende Route bis zur Anwendung bei. Cloudflare wählt die Ausgangsadresse und das Land aus; separate Tunnel können sich eine Ausgangsadresse teilen. Die Länderauswahl, die periodische IP-Rotation und ein hostweiter VPN-Kill-Switch werden von dieser Funktion nicht bereitgestellt. Unterstützte Helper-Downloads: Linux und macOS x86-64/ARM64 sowie Windows x86-64. Die Artefakte werden anhand der im geprüften Quellcode enthaltenen „SHA-256“-Hashes überprüft, und zwischengespeicherte ausführbare Dateien werden vor dem Start erneut überprüft. Es wird kein Hilfsprogramm zum PATH hinzugefügt, als Systemdienst installiert oder mit einem öffentlichen Listener versehen. Alle Dateien befinden sich im Verzeichnis „`portable-routes/`“ des Arbeitsbereichs und in verschlüsselten Tresoreinträgen. Der Loopback-Listener „SOCKS5“ erfordert unabhängig generierte Anmeldedaten. Private Profile und WARP-Kontodaten werden mit dem vorhandenen Workspace-Tresor verschlüsselt. Während des Betriebs benötigt der Helper eine nur für den Eigentümer zugängliche Konfigurationsdatei im Klartext; diese wird bei einem normalen Beenden entfernt. Bei einem Host-Absturz kann diese Datei im nur für den Eigentümer zugänglichen Datenordner zurückbleiben. Dies verschlüsselt weder die Festplatte noch schützt es vor dem Administrator. Der Supervisor schließt den Tunnel, wenn die übergeordnete Pipe des Panels verschwindet. Ein fehlgeschlagener Tunnel ermöglicht niemals einen direkten Fallback. Ein Neustart des Panels stellt einen ausgewählten Tunnel wieder her; fehlgeschlagene Starts werden mit einer begrenzten Verzögerung erneut versucht. **„Stop tunnel** “ pausiert ebenfalls die Überwachung und behält den gestoppten Zustand bei. **„Start tunnel** “ startet den Tunnel; die Überwachung separat fortsetzen, sobald bereit. Hochgeladene WireGuard-Profile müssen eine Schnittstelle und einen Peer sowie vollständige IPv4- und IPv6-Routen enthalten und dürfen keine Hooks, Includes, Umgebungsersetzungen oder zusätzliche Listener enthalten. Öffentliche Endpunktadressen werden vor dem Start aufgelöst und festgelegt. Verwenden Sie ein externes VPN oder das SOCKS5-Gateway für OpenVPN/IPsec und private Endpunkte. ## Authentifizierungsmethoden **Die API-ID und der API-Hash identifizieren eine Anwendung; sie ersetzen nicht die Kontoanmeldung.** Sie sind in TgWitness optional. Prioritätsreihenfolge: ein im Formular eingegebenes Paar, dann eines aus einer importierten Konto-JSON-Datei, dann das im Arbeitsbereich gespeicherte Paar, dann der integrierte Pool von 50 öffentlichen Paare, die in zufälliger Reihenfolge ausprobiert werden, mit automatischer Rotation, wenn Telegram eines ablehnt. Nur das Telegram-Desktop-Paar (2040) wird zusammen mit einer passenden Beschreibung des Telegram-Desktop-Clients gesendet. Ihr eigenes Paar aus den API-Entwicklungstools unter [my.telegram.org](https://my.telegram.org) kann für alle Ihre Konten verwendet werden; jedes Konto verfügt weiterhin über eine eigene Autorisierung. | Vorgehensweise | Anforderungen | TgWitness-Support | | --- | --- | --- | | Telefonnummer, Code, optionale 2FA | Zugriff auf das Konto; API-Paar optional | Anmeldung im Panel | | Authentifizierungsschlüssel (HEX) + DC-ID | Vollständiger 512-Zeichen-Schlüssel und DC 1–5 | Registerkarte „Direct **Auth Key“**; optionale Benutzer-ID wird vor dem Speichern der Autorisierung überprüft | | Telethon StringSession | Eine gültige Sitzungs-Zeichenkette | Anmeldung im Panel | | Telethon SQLite `.session` | Abgeschlossener, konsistenter Text | Direkter Import von Schemata über das Bedienfeld 7/8; optionale Offline-Befehlszeilenschnittstelle (CLI) | | Pyrogram SQLite `.session` | Geschlossene Produktionssitzung | Direkter Import von Schemata über das Bedienfeld 2/3 | | Telegram Desktop TData ZIP | Ein modernes Konto; lokaler Passcode, falls geschützt | In-Memory-Konvertierung mit Prüfsummen- und Entschlüsselungsprüfungen | | JSON-Datei für das Konto | Unterstützte API-/Sitzungs-/Schlüssel-Felder | Die Metadaten allein reichen nicht aus, um die API-Anmeldedaten zu füllen; eine Anmeldung per Sitzung/Schlüssel oder per Telefon/QR-Code ist weiterhin erforderlich. | | QR-Anmeldung | Bestätigung durch eine autorisierte Telegram-App | Lokale QR-Code-Generierung, Ablauf/Wiederholungsversuch, optionale 2FA | | TDLib / Pyrogram StringSession | Weitere bibliotheksspezifische Formate | Nicht unterstützt | | Bot-Token | Ein Bot mit eigenem Zugriffs- und Aktualisierungsmodell | Wird von diesem Sammler nicht verwendet | Telegram wählt die Zustellung per Code; die Zustellung per SMS ist nicht garantiert. Ein API-Hash kann eine widerrufene Sitzung nicht wiederherstellen oder ein vergessenes 2FA-Passwort ersetzen. TgWitness speichert Anmeldecodes oder das Telegram-2FA-Passwort nicht auf der Festplatte. Bei einer privaten Quelle muss das Konto bereits über Zugriffsrechte verfügen. Ein Gruppenbenutzername ist nicht erforderlich. Ein Proxy oder ein Sitzungsimport gewährt weder Mitgliedschafts- noch Administratorrechte. Eine aktuelle Mitgliedschaft garantiert keinen Zugriff auf den Verlauf vor dem Beitritt. ## Eine Telethon-Sitzungsdatei importieren Telethon SQLite, Pyrogram SQLite und Telegram Desktop TData verwenden unterschiedliche Formate. Das Bedienfeld erkennt und konvertiert die unterstützten Strukturen; das Umbenennen einer Datei gilt nicht als Konvertierung. Wählen Sie unter **„Dateien“** eine Sitzung und die dazugehörige JSON-Datei aus und klicken Sie anschließend auf **„Konto verbinden**“. Es werden bis zu vier übereinstimmende Dateien und insgesamt 8 MiB akzeptiert. Einzelheiten zu TData/JSON finden Sie unter [„Formatbeschränkungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/)“. Es gibt keine Wiederherstellung des Passworts. Die Anmeldung per Telefon/2FA oder QR-Code erstellt eine separate Autorisierung. Der optionale, ausschließlich für Telethon vorgesehene Befehlszeilenpfad steht weiterhin zur Verfügung: 1. Beenden Sie den Client unter Verwendung der ursprünglichen Sitzung und erstellen Sie eine konsistente Kopie. Der Konverter lehnt Dateien mit einem unvollständigen WAL/Journal ab. Schließen Sie den ursprünglichen Client ordnungsgemäß, anstatt diese Dateien zu löschen, um die Überprüfung zu umgehen. 2. Führen Sie in der TgWitness-Umgebung folgenden Befehl aus: ``` python -m tgwitness.sessions account.session --out account.tgwitness-session ``` 1. Laden Sie unter **„Konto hinzufügen“ → „Dateien**“ das Ergebnis hoch oder fügen Sie den entsprechenden Text ein und fahren Sie fort. 2. Überprüfen Sie die angezeigte numerische Konto-ID, wählen Sie die Quellen aus und beginnen Sie mit der Beobachtung. **Die konvertierte Datei ist ein unverschlüsseltes Passwort für den Kontozugang.** Bewahren Sie ihn an einem geschützten Ort auf und übertragen Sie ihn niemals in ein Repository oder senden Sie ihn an einen externen Konvertierungsdienst. TgWitness speichert die autorisierte Sitzung in seinem verschlüsselten Tresor. Das Kopieren einer Sitzung führt nicht zur Erstellung einer separaten Autorisierung: Führen Sie keine parallelen Clients mit geklonten Authentifizierungsschlüsseln aus und gehen Sie nicht davon aus, dass Aktualisierungen unabhängig voneinander bereitgestellt werden. Die Konvertierung überträgt die Autorisierung, nicht jedoch die Originalnachrichten, den Entity-Cache oder einen dauerhaften Aktualisierungszeiger. Sie gewährleistet keine Wiederherstellung von Aktualisierungen über Prozessneustarts hinweg. ## MTProto, Telethon und Proxys MTProto ist das Protokoll von Telegram. Telethon ist die Python-Client-Bibliothek, die TgWitness verwendet. MTProxy ist ein Telegram-Transport-Proxy; SOCKS5 und HTTP CONNECT stellen allgemeine Tunnel bereit. Keines dieser Verfahren ersetzt die Kontoauthentifizierung. Speichern Sie die Route für jeden Arbeitsbereich unter **„Konto“ → „Einstellungen“ → „Verbindungseinstellungen“ → „Verbindungsroute ändern“**, bevor Sie sich anmelden. Neue Arbeitsbereiche verwenden standardmäßig **„Automatisch“ MTProxy · öffentliche Listen** mit **der Option „Adresse verbergen**“. Bestehende Arbeitsbereiche, die explizit „Direct“ verwendet haben, behalten einen Modus bei, der dies zulässt. ## IP-Modi Die Route bestimmt die Verbindung. Der IP-Modus, **der IP-Schutz** im Abschnitt „Konto“ des Panels, legt fest, wann die Adresse des Servers offengelegt werden darf. Diese Einstellungen führen nicht zur Installation eines VPNs und leiten auch nicht den gesamten Datenverkehr des Computers um. | Modus | Telegram | Externe Anfragen | | --- | --- | --- | | Adresse ausblenden (`hide`) | Verwenden Sie einen Proxy; warten Sie, falls keiner funktioniert. Es gibt keine direkte Ausweichmöglichkeit. | SOCKS5/HTTP ist erforderlich; Anfragen ohne entsprechenden Proxy werden abgelehnt. | | Direkt als letztes Mittel (`fallback`) | Der automatische MTProxy kann nach Ablauf der konfigurierten Verzögerung „Direct“ verwenden und anschließend wieder zu einem funktionierenden Proxy zurückkehren. | Bevorzugen Sie einen konfigurierten externen Proxy oder die SOCKS5/HTTP-Route des Kontos; andernfalls ist „Direct“ zulässig. | | Server hinter einem Tunnel oder VPN (`tunnel`) | Direkte Zugriffe und ein sofortiger automatischer Fallback auf den Pool sind zulässig. | Eine direkte Verbindung ist zulässig, wenn kein entsprechender Proxy konfiguriert ist. | Der Tunnel- oder VPN-Modus setzt voraus, dass Sie dieses Netzwerk separat verwalten. Ohne einen funktionierenden Tunnel können die Empfänger die eigene Adresse des Servers sehen. Wählen Sie den Modus entsprechend Ihrer tatsächlichen Netzwerkkonfiguration aus, nicht anhand des Namens der Option. ### Wählen Sie einen Pfad | Route | Einstellungen | Grenze | | --- | --- | --- | | Automatischer MTProxy | Integrierte Listen oder ein Operator-Katalog | Unterhält eine funktionierende Telegram-Verbindung; der direkte Fallback hängt vom IP-Modus ab | | Direkt | Tunnel- oder VPN-Modus | Telethon nutzt die Netzwerkroute des Hosts | | SOCKS5 | Host, Port, optionaler Benutzername/Passwort | python-socks, Remote-Destination-DNS aktiviert | | HTTP CONNECT | Host, Port, optionaler Benutzername/Passwort | Einfaches HTTP-CONNECT; TLS zum Proxy selbst ist nicht implementiert | | MTProxy | Host, Port, Geheimnis | Experimenteller Telethon-Transport; 32 Hexadezimalziffern oder „`dd`“ + 32 Hexadezimalziffern | Gefälschte TLS-`ee`-Geheimnisse werden abgelehnt. Die Normalisierung von Telethon 1.45 kann ein Präfix und eine Domain entfernen, implementiert jedoch kein Fake TLS. Fügen Sie `tg://proxy?server=…&port=…&secret=…` oder `https://t.me/proxy?server=…&port=…&secret=…` ein und wählen Sie **„Felder aus Link ausfüllen**“. Dadurch werden die Felder validiert und ausgefüllt, ohne dass eine Verbindung hergestellt oder gespeichert wird; überprüfen und speichern Sie die Route separat. Manuelle Felder bleiben verfügbar. Siehe [Telegram-Proxy-Links](https://core.telegram.org/api/links#proxy-links). ### Öffentliche Proxys, die von Ihrer Installation bereitgestellt werden Die integrierte Liste vereint vier Quellen: [SoliSpirit/mtproto](https://github.com/SoliSpirit/mtproto), [zakky8/mtproto-proxy-pro](https://github.com/zakky8/mtproto-proxy-pro), [kort0881/telegram-proxy-collector](https://github.com/kort0881/telegram-proxy-collector) und [3yed-61/MTP-Collector](https://github.com/3yed-61/MTP-Collector). Der mitgelieferte Snapshot enthält Endpunktdaten, Quellenangaben und Download-Daten. Die Auflistung eines Anbieters ist kein Beweis dafür, dass der Proxy funktioniert oder jedes Telegram-Update bereitstellt. **MTProxy** überprüft **automatisch** die Telegram-Transportverbindung, hält einen funktionierenden Proxy bereit und wechselt zu einem anderen, wenn dieser ausfällt. Arbeitsbereiche bevorzugen unterschiedliche Proxys, sofern genügend funktionierende Einträge verfügbar sind; eine eindeutige Ausgangsadresse kann nicht garantiert werden. Ausgefallene Proxys werden vor einem erneuten Versuch pausiert. Wenn keiner funktioniert, bestimmt der IP-Modus, ob die Erfassung warten muss oder eine direkte Verbindung nutzen darf. Ein Wechsel der Proxys hat keine Auswirkungen auf das Konto und löscht dessen Protokoll nicht. Routenauswahlen und -änderungen werden im signierten Protokoll aufgezeichnet. Solange automatische Routen aktiv sind, werden die Listen stündlich aktualisiert und Transportprüfungen standardmäßig alle zehn Minuten durchgeführt. Diese Intervalle sind konfigurierbar. **Das Aktualisieren öffentlicher Listen** löst eine Aktualisierung aus; das bloße Anzeigen der Liste ändert nichts an einer gespeicherten manuellen Route. **Telegram-Datenverkehr und HTTPS-Anfragen nutzen unterschiedliche Routen.** Listen-Downloads verwenden eine separate HTTPS-Verbindung sowie die bereitgestellte Route für externe Anfragen. „`TGWITNESS_PROXY_FEED_PROXY`“ überschreibt diese Route explizit durch einen HTTP/SOCKS5-Proxy; beide „Compose“-Varianten des Collectors leiten diese weiter. Der Hintergrundpool folgt dem Hauptarbeitsbereich. Es werden keine Telegram-Sitzungen, API-Zugangsdaten, Panel-Token oder Bot-Token an Feed-Anbieter gesendet. Anbieternamen, Erfassungsdaten und die Download-Route werden unter **„Woher die Liste stammt“** angezeigt. Ein MTProxy überträgt ausschließlich Telegram-Datenverkehr. HTTP-Vorgänge des Arbeitsbereichs wie Zeitstempel, Benachrichtigungen, externe Kopien und Quellprüfungen nutzen einen separaten SOCKS5/HTTP-Proxy, sofern konfiguriert, andernfalls die SOCKS5/HTTP-Route des Kontos. Fehlt beides, lehnt „Hide the address“ die Anfrage ab; die anderen Modi erlauben „Direct“. Externe Anfragen können deaktiviert werden. Ein explizit konfigurierter Feed-Download-Proxy bleibt eine separate Operator-Übersteuerung. Der unabhängige Witness-Dienst behält seine eigene Route bei. Bei vom Betreiber verwalteten privaten Diensten erlaubt die vorhandene Serverumgebungseinstellung „ `TGWITNESS_ALLOW_PRIVATE_DESTINATIONS=1`“ private Ziele und behält die Hostnamenauflösung auf Proxy-Seite bei. Sie kann nicht über das Panel aktiviert werden. Der „Nur-öffentlich“-Modus lehnt „`.onion`“-Ziele ab, bevor der öffentliche Resolver abgefragt wird; Tor-Onion-Dienste erfordern diese explizite Einstellung für private Ziele sowie einen geeigneten Proxy. Dieses DNS-Verhalten gilt für externe HTTP-Vorgänge, nicht für den Telegram-Transport. Cloudflare dokumentiert den [JSON-DNS-Endpunkt](https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/). ****Automatische Pool-Parameter**** Konfigurieren Sie unter „**Parameter → Automatischer MTProxy**“ die Fehlerschwelle, die Abklingzeit, die geplante Rotation, die Proxy-Freigabe und die zulässige Fallback-Verzögerung. | Kontrolle | Standard | | --- | --- | | Trennt die Verbindung vor dem Austausch | 3 innerhalb von 10 Minuten | | Proxy-Server, die pro Verbindungsversuch ausprobiert wurden | 3 | | Erste / maximale Pause nach einem Fehler | 10 Minuten / 6 Stunden | | Geplante Rotation | Deaktiviert; bei Fehler aktivieren | | Konten pro Proxy | 0: Bevorzuge separate Einträge, füge sie bei Bedarf zusammen. Setze 1 auf Warten auf einen exklusiven Eintrag. | | Verzögerung vor zulässigem direktem Fallback | 10-Minuten; Das Ausblenden der Adresse wird weiterhin abgelehnt Direct | | Feed-Aktualisierung / Transportprüfungen | 60-/10-Minuten; die Werte des Hauptarbeitsbereichs gelten für den gemeinsamen Pool | Unterschiedliche Proxys garantieren keine unterschiedlichen Ausgangsadressen. Diese Einstellungen setzen die Telegram-Beschränkungen nicht außer Kraft und beweisen keine Anonymität. Um die öffentliche Liste durch Ihren eigenen Betreiberkatalog zu ersetzen, konfigurieren Sie die folgende Überschreibung. Dadurch werden externe Abonnements vollständig deaktiviert, auch wenn das Array „`proxies`“ leer ist. Kopieren Sie [den leeren Katalog](https://github.com/phishdestroy/TgWitness/blob/main/deploy/proxies.config.example) nach „`proxy-config/proxies.json` “ und fügen Sie Ihre bereitgestellten öffentlichen Endpunkte hinzu: ``` {"format": "tgwitness-proxy-catalog-v1", "proxies": [ {"id": "project-eu", "label": "Project EU", "link": "tg://proxy?server=REPLACE_HOST&port=443&secret=REPLACE_SECRET"} ]} ``` Die Beispielwerte müssen ersetzt werden. Es werden bis zu 32 unterschiedliche Einträge akzeptiert. Die authentifizierte Auflistung gibt Labels/Hosts/Ports ohne gemeinsame Geheimnisse zurück; bei Auswahl eines Eintrags werden dessen Anmeldedaten im Workspace-Tresor gespeichert. Die Verfügbarkeit bleibt bis zu einem expliziten Transporttest ungeprüft. Bei einem fehlerhaften Katalog ist eine manuelle Konfiguration möglich. Native Ausführung: Legen Sie „`TGWITNESS_PROXY_CATALOG`“ als lokalen JSON-Pfad fest. Docker: ``` docker compose -f compose.yaml -f deploy/compose/compose.proxies.yaml up -d --build ``` Das Overlay wird schreibgeschützt unter dem Namen „`proxy-config`“ eingebunden; die Dateien müssen für die Container-UID 10001 lesbar sein. Dieses Verzeichnis ist von Git, dem Docker-Build-Kontext und den Quellarchiven ausgeschlossen. Dieser Katalog konfiguriert die Erfassungskonten; [der Witness-Bot](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) verwendet seine eigene HTTP/SOCKS5-Route, nicht MTProxy. Der direkte Fallback unterliegt dem oben beschriebenen IP-Modus. Unterbrechen Sie die Überwachung, bevor Sie eine Route ändern. Durch das Speichern werden alte Clients getrennt und unvollendete Anmeldungen abgebrochen; ein neuer Client verwendet die gespeicherte Route. Die Verknüpfung zwischen Konto und Protokoll/Sitzung bleibt bestehen. Einstellungen ersetzen die vorherige Route: Geben Sie die Proxy-Anmeldedaten bei der Bearbeitung erneut ein. Anmeldedaten werden mit `network.enc` verschlüsselt. Die API gibt weder den Benutzernamen, noch das Passwort oder den geheimen Schlüssel zurück. Signierte Datensätze enthalten den Routentyp und die Angabe, ob Anmeldedaten vorhanden sind, wobei der Endpunkt und geheime Schlüssel ausgeschlossen sind. Der Betreiber kann den Endpunkt im Bedienfeld einsehen. Geheime Felder werden nach dem Speichern, Sperren oder Wechseln von Arbeitsbereichen gelöscht. **Die Telegram-Verbindungsprüfung**, **die** auch vor der Anmeldung verfügbar ist, öffnet und schließt eine temporäre, nicht autorisierte Telegram-Verbindung über die Route. Es wird keine Verbindung zu einer IP-Prüfungs- Website hergestellt. Ein erfolgreicher Test stellt lediglich die Transportverbindung her, nicht jedoch den Zugriff auf Gruppen, die vollständige Zustellung oder Anonymität. Der Proxy gilt für die Verbindungen des Telegram-Clients, einschließlich der Medien-Downloads von Telegram-DCs. Browser, pip, SSH und manuell aufgerufene TSA-Tools verfügen über separate Routen. Der Proxy-Hostname kann lokal aufgelöst werden. „`rdns`“ wirkt sich auf Ziel-Hostnamen aus; Telegram stellt häufig numerische DC-IP-Adressen bereit. SOCKS5 und einfaches HTTP CONNECT verschlüsseln an sich weder die Proxy-Anmeldedaten noch den Tunnel zwischen Client und Proxy. MTProto schützt den Telegram-Datenverkehr separat. Verwenden Sie einen geeigneten sicheren Kanal zum Proxy in einem nicht vertrauenswürdigen Netzwerk. Private Gruppen sind Cloud-Chats; MTProto wandelt diese nicht in Ende-zu-Ende-verschlüsselte „Secret Chats“ um. ## Verschlüsselung und Signaturen | Ebene | Umsgesetzt | Verantwortung des Betreibers | | --- | --- | --- | | Telegram-Datenverkehr | Telethon MTProto | Vertrauen in die Plattform, Übertragungsweg und Verfügbarkeit | | Web-Panel | Bearer-Token, Standard-Loopback, Anforderungslimits | HTTPS oder SSH-Tunnel für den Fernzugriff | | Geheimnisse | Fernet für API-Zugangsdaten, Sitzungsdaten, Proxy-Zugangsdaten und den privaten Signaturschlüssel | Schützen Sie den Entschlüsselungsschlüssel und den laufenden Host | | Tresorschlüssel | Lokaler Schlüssel oder externer Hauptschlüssel für eine Neuinstallation | Getrennter, geschützter Speicher und Schlüssel-Backup | | Nachrichten und Anhänge | Speicherung der Anwendung im Klartext | Verschlüsselte Festplatte/Datenträger | | ZIP/JSONL/CSV/HTML | Integritätsprüfungen, keine Verschlüsselung der Inhalte | Schützen Sie exportierte Kopien und Übertragungen | | Herkunft und Zeitpunkt | Signiertes Protokoll, Prozessbeleg, RFC 3161-Tools | Vertrauenswürdiger Schlüssel, unabhängige Kontrollpunkte/TSA und Aufbewahrungsverfahren | **Der Speicherschutz** im Konto zeigt diese Zustände an. Das Panel-Token ist ein Zugriffsgeheimnis, kein Verschlüsselungspasswort. Es gewährt Administratorzugriff; [ausgestellte Token](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) können auf Konten und Chats beschränkt werden. Arbeitsbereiche teilen sich den Host-Prozess und sind keine isolierten Mandanten. BitLocker, LUKS, FileVault oder ein verwaltetes verschlüsseltes Volume können Speichermedien im Rahmen ihrer jeweiligen Bedrohungsmodelle schützen. Ein Administrator eines entsperrten, laufenden Rechners kann die Daten weiterhin lesen. Berücksichtigen Sie SQLite-WAL/SHM, Medien, temporäre Exporte, Auslagerungsspeicher, Backups sowie Browser-Downloads bei der Speicherplanung. Ein Docker-Volume ist nicht allein deshalb verschlüsselt, weil es sich um ein Volume handelt. TgWitness implementiert weder SQLCipher noch Objektverschlüsselung. ## Externer Hauptschlüssel Bei einer Neuinstallation legen Sie den Hauptschlüssel außerhalb des Datenverzeichnisses ab. Dadurch wird ein bestehender Tresor mit lokalem Schlüssel nicht automatisch migriert. Richten Sie ein Schlüsselverzeichnis ein, auf das nur die Dienstidentität Zugriff hat, und führen Sie anschließend folgenden Befehl aus: ``` python -m tgwitness.security create-master-key /private/keys/tgwitness-master.key export TGWITNESS_VAULT_KEY_FILE=/private/keys/tgwitness-master.key python -m tgwitness --data-dir /private/observations/new-case ``` PowerShell unter Verwendung der installierten Projektumgebung: ``` python -m tgwitness.security create-master-key E:\PrivateKeys\tgwitness-master.key $env:TGWITNESS_VAULT_KEY_FILE = 'E:\PrivateKeys\tgwitness-master.key' python -m tgwitness --data-dir E:\PrivateData\new-case ``` Binden Sie die Datei in Docker schreibgeschützt außerhalb von „`/data`“ ein, beispielsweise unter „ `/run/secrets/tgwitness-master.key`“, und setzen Sie die Umgebungsvariable auf diesen Pfad. Die UID des Dienstes muss Lesezugriff darauf haben. Übergeben Sie den Pfad – nicht die Schlüsselbytes – über Umgebungs- bzw. Konfigurationsdateien. Jeder Arbeitsbereich erhält ein zufälliges öffentliches Salt sowie einen eigenen Fernet-Schlüssel, der mittels HKDF-SHA256 abgeleitet wird. „`vault.external.json`“ speichert die Metadaten der Ableitung, nicht den Hauptschlüssel. Ein fehlender oder falscher Schlüssel führt zum Fehlschlagen des Startvorgangs, ohne dass dieser stillschweigend ersetzt wird. Bewahren Sie sowohl die Salt-Metadaten als auch den Hauptschlüssel zur Wiederherstellung auf. Alle Arbeitsbereiche leiten sich vom selben Hauptschlüssel ab; dessen Kompromittierung wirkt sich auf die gesamte Installation aus. Der laufende Prozess kann Geheimnisse entschlüsseln. Es handelt sich hierbei nicht um ein HSM oder ein Passwort-KDF. Beliebige, von Menschen festgelegte Passwörter werden nicht anstelle eines Zufallsschlüssels akzeptiert. Behalten Sie den bestehenden Schlüssel für bestehende Installationen bei, bis eine gezielte Migration durchgeführt und verifiziert wurde. Das Löschen von „`vault.key`“ oder das Ersetzen eines Hauptschlüssels kann den Zugriff auf Sitzungen/Signaturschlüssel zunichte machen. Bewahren Sie verschlüsselte Sicherungskopien und Schlüssel getrennt auf und testen Sie die Wiederherstellung in einer isolierten Instanz. --- # Telegram · Bereitstellung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/ Führen Sie TgWitness als Dienst unter Windows, Linux, macOS oder Docker hinter einer HTTPS-Verbindung aus, einschließlich Backups und Updates. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Führen Sie TgWitness als Dienst unter Windows, Linux, macOS oder Docker hinter einer HTTPS-Verbindung aus, einschließlich Backups und Updates. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) **Englisch** · [Russisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/ru/DEPLOYMENT.md) · [Ukrainisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/uk/DEPLOYMENT.md) · [Español](https://github.com/phishdestroy/TgWitness/blob/main/docs/es/DEPLOYMENT.md) · [Português (Brasil)](https://github.com/phishdestroy/TgWitness/blob/main/docs/pt/DEPLOYMENT.md) · [Türkçe](https://github.com/phishdestroy/TgWitness/blob/main/docs/tr/DEPLOYMENT.md) · [العربية](https://github.com/phishdestroy/TgWitness/blob/main/docs/ar/DEPLOYMENT.md) · [Farsi](https://github.com/phishdestroy/TgWitness/blob/main/docs/fa/DEPLOYMENT.md) · [Urdu](https://github.com/phishdestroy/TgWitness/blob/main/docs/ur/DEPLOYMENT.md) · [Hindi](https://github.com/phishdestroy/TgWitness/blob/main/docs/hi/DEPLOYMENT.md) · [Bahasa Indonesia](https://github.com/phishdestroy/TgWitness/blob/main/docs/id/DEPLOYMENT.md) · [Tiếng Việt](https://github.com/phishdestroy/TgWitness/blob/main/docs/vi/DEPLOYMENT.md) · [Vereinfachtes Chinesisch](https://github.com/phishdestroy/TgWitness/blob/main/docs/zh/DEPLOYMENT.md) ## Wählen Sie eine Installationsvariante Für das portable Paket entpacken Sie bitte „`TgWitness--windows-amd64-portable.zip`“ von GitHub Releases. Für die anderen Methoden laden Sie bitte die Quell-ZIP-Datei herunter und entpacken Sie diese oder klonen Sie das Repository und führen Sie anschließend im Projektverzeichnis Folgendes aus: | Installation | Start | Läuft es im Hintergrund? | | --- | --- | --- | | Portables Windows-Paket | `TgWitness.cmd` | Nein; lassen Sie das Fenster geöffnet. | | Native Windows-Version | `Start.cmd` | Nein; nutzen Sie die optionale Anmeldeaufgabe für den Hintergrundbetrieb. | | Native Linux-/macOS-Version | `sh start.sh` | Nein; verwenden Sie systemd/launchd für den Betrieb im Hintergrund. | | Docker auf jedem unterstützten Host | `docker compose up -d --build --wait` | Ja, solange der Docker-Daemon läuft. | | Docker-Hilfsprogramm unter Windows | `scripts\Docker.cmd` | Ja; der Helper wartet auf den Betriebszustand des Webservers. | | Docker-Hilfsprogramm unter Linux/macOS | `sh scripts/docker-start.sh` | Ja; der Helper wartet auf den Betriebszustand des Webservers. | Für einen Cloud-Server, der von Dritten überprüft werden können sollte – erstellt über die API des Anbieters, ohne SSH, ausschließlich über einen Cloudflare-Tunnel erreichbar – siehe [„High-Assurance-Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/)“. Beim nativen Start wird ein privates „`.venv`“ erstellt und die festgelegten Abhängigkeiten installiert. Docker erstellt diese innerhalb des Images, ohne dass Python auf dem Host erforderlich ist. Für die erstmalige Einrichtung ist ein Internetzugang erforderlich. Wird kein Python 3.11+ gefunden, fragt „`Start.cmd`“ vor der Installation von Python 3.12 für den aktuellen Windows-Benutzer nach (winget, andernfalls der python.org- Installer nach Überprüfung der Signatur der Python Software Foundation); es werden niemals Administratorrechte angefordert. Docker und Betriebssystemdienste bleiben weiterhin Voraussetzungen. Native und portable Installationen verwenden „`data/live`“ innerhalb ihres Ordners. Docker verwendet das Volume mit dem Namen „`tgwitness-data`“ unter „`/data`“. Dabei handelt es sich um separate Installationen, bis Sie das gesamte Datenverzeichnis bewusst migrieren. Erwarten Sie nicht, dass ein neuer Docker-Container native Konten automatisch erkennt. ## Installationsvoraussetzungen Für die native Installation sind Python 3.11 oder höher mit „`venv`“ und „`ensurepip`“, ein Internetzugang für die Installation der ersten Abhängigkeiten sowie ein beschreibbares Projektverzeichnis für „ `.venv`“ erforderlich. Das mitgelieferte Panel benötigt weder Node.js noch eine Frontend-Erstellung. Führen Sie den Launcher von Ihrem normalen Betriebssystem-Konto aus; Administrator- oder Root-Rechte werden von TgWitness nicht benötigt. - **Windows:** `Start.cmd` überprüft zunächst `py -3`, dann `python`, anschließend die standardmäßigen benutzerspezifischen und „Program Files“-Installationsordner und erfordert Version 3.11 oder höher. Sollte keine dieser Optionen funktionieren, bietet das Programm die oben beschriebene automatische benutzerspezifische Installation an. `py -3 start.py` funktioniert ebenfalls. Das portable Paket benötigt überhaupt kein Python. - **Linux:** `start.sh` probiert `python3.13`, `python3.12`, `python3.11`, `python3` und `python` aus und gibt den Installationsbefehl für apt, dnf, pacman, zypper, apk oder Homebrew aus, sofern keiner davon geeignet ist. Bei Debian-/Ubuntu-Installationen ist möglicherweise das `python3-venv`-Paket erforderlich, das zum ausgewählten Interpreter passt. Die ältere Standard-Python-Version einer Distribution muss durch Python 3.11+ ersetzt oder ergänzt werden. - **macOS:** Installieren Sie eine aktuelle Python-3.11-Distribution; gehen Sie nicht davon aus, dass ein vom Betriebssystem bereitgestellter Interpreter die Anforderungen erfüllt. Verwenden Sie „`python3 start.py`“ aus dem Projektverzeichnis. - **Docker:** Verwenden Sie Docker Engine/Desktop mit Compose v2.20 oder neuer. Docker Desktop muss unter Windows Linux-Container verwenden. Der Container installiert seine eigenen Python-Abhängigkeiten; auf dem Host ist keine separate Python-Installation erforderlich. ## Lokaler Computer Verwenden Sie „`Start.cmd`“ unter Windows oder „`sh start.sh`“ unter Linux/macOS. „`scripts\Setup.cmd`“ oder „`sh start.sh --setup-only`“ bereitet die Umgebung vor. Der Launcher installiert bei der ersten Verwendung die erforderlichen Abhängigkeiten; bei späteren Starts wird die Umgebung wiederverwendet. Für die Einrichtung und die Telegram-Erfassung ist ein Internetzugang erforderlich, das Durchsuchen bestehender Datensätze und das Erstellen von Exporten funktionieren jedoch offline. Führen Sie nach der Einrichtung „`python start.py --check`“ aus, um lokale Abhängigkeiten, Ed25519, den Speicher, die Schlüsselkonfiguration und die Empfangsadresse zu überprüfen, ohne einen Collector zu starten. Verwenden Sie „`--json`“ für eine strukturierte Ausgabe. Übergeben Sie die vorgesehenen Befehle „`--data-dir`“, „`--host`“ und „`--port`“. Die Überprüfung installiert keine Pakete, erstellt kein Protokoll und stellt keine Verbindung zu Telegram her; es handelt sich nicht um eine Integritäts- oder Abdeckungsprüfung. Der Startvorgang überprüft separat vorhandene Protokolle. „`python start.py --help`“ vermeidet ebenfalls eine Installation. Führen Sie nach dem Ausführen von „start.py“ die Zusatzbefehle mit „`.venv\Scripts\python.exe`“ unter Windows oder „`.venv/bin/python`“ unter Linux/macOS aus, oder aktivieren Sie diese Umgebung zunächst. Die folgenden „`python -m ...`“-Beispiele setzen voraus, dass die Umgebung aktiv ist. ``` python -m tgwitness --data-dir /path/to/private/data --host 127.0.0.1 --port 8787 ``` Umgebungsvariablen: TGWITNESS_DATA, TGWITNESS_HOST, TGWITNESS_PORT, TGWITNESS_TOKEN. TGWITNESS_VAULT_KEY_FILE wählt bei einer Neuinstallation den Modus mit externem Schlüssel aus; siehe unten. TGWITNESS_TOKEN muss, sofern angegeben, mindestens 24 Zeichen enthalten; verwenden Sie einen kryptografisch generierten Zufallswert. Ohne diese Angabe generiert die App ein 256-Bit-Zufallstoken in der Datei „panel-token.txt“. Die Umgehung der Umgebungsvariablen überschreibt diese Datei nicht. Starten Sie die Anwendung neu, um die Anmeldedaten zu rotieren. Ein Datenverzeichnis darf genau einem Prozess gehören. Eine plattformübergreifende Dateisperre des Betriebssystems verhindert versehentliche gleichzeitige Schreibvorgänge. Verwenden Sie einen Uvicorn-Worker. Das Panel kann eine beliebige Anzahl von Arbeitsbereichen verwalten, wobei zusätzliche Arbeitsbereichsverzeichnisse unter „profiles//“ liegen. Verwenden Sie für separate Service-Instanzen separate Verzeichnisse und Ports. SQLite-WAL-Dateien gehören in einen lokalen persistenten Speicher, nicht in ein Netzwerkdateisystem. Teilen Sie kein Volume zwischen Replikaten. ## Portables Windows-Paket Jede GitHub-Veröffentlichung enthält `TgWitness--windows-amd64-portable.zip` und dessen `.sha256`. Sie umfasst die offizielle, einbettbare Python-3.12-Laufzeitumgebung von python.org (Prüfsumme in `tools/build_portable.py` festgehalten), TgWitness und dessen festgelegte Abhängigkeiten sowie drei Startprogramme: | Datei | Zweck | | --- | --- | | `TgWitness.cmd` | Starten Sie das Panel; zusätzliche Optionen werden weitergeleitet, z. B. `TgWitness.cmd --port 8790` | | `TgWitness-Demo.cmd` | Starten Sie die synthetische Demo unter `data\demo` | | `TgWitness-Check.cmd` | Führen Sie die Bereitschaftsprüfung durch, ohne das Programm zu starten | Das angeheftete russische Morphologie-Wörterbuch und die PDF-Farbprofile sind für die Offline-Nutzung gebündelt. Die Paketierung erlaubt nur ihre bekannten Dateipfade innerhalb der Verzeichnisse der Abhängigkeit `data`; unerwartete Dateien in diesen Verzeichnissen führen zum Fehlschlagen des Builds. Entpacken Sie das gesamte Archiv in einen beschreibbaren Ordner wie beispielsweise „`Documents\TgWitness`“; führen Sie das Programm nicht direkt aus der ZIP-Datei oder aus dem Ordner „Programme“ aus. Die Laufzeitumgebung verwendet einen isolierten Modulpfad, sodass andere Python-Installationen und „`PYTHONPATH`“ keinen Einfluss darauf haben. Die Daten verbleiben im `data`-Ordner des Pakets. Um ein Update durchzuführen, beenden Sie TgWitness, entpacken Sie die neue Version in einen neuen Ordner und kopieren Sie den `data`-Ordner dorthin. Stellen Sie es selbst unter 64-Bit-Windows mit Python 3.12 zusammen: ``` python tools/build_portable.py ``` ## Container ``` docker compose up -d --build --wait ``` Dadurch wird ein benanntes persistentes Volume für /data erstellt. Der Web-Port wird auf 127.0.0.1:8787 abgebildet. Der Prozess läuft unter der UID 10001 mit eingeschränkten Berechtigungen, einem schreibgeschützten Root-Dateisystem sowie beschreibbaren Verzeichnissen /data und /tmp. `--wait` überprüft den Betriebszustand des Webservers, bevor es zurückkehrt; es stellt keine Telegram- Autorisierung oder -Zustellung her. Die bereitgestellten Hilfsprogramme verwenden nach dem Erstellen ein Bereitschafts-Timeout von 180 Sekunden . Das anfängliche Herunterladen von Abhängigkeiten kann länger dauern. Beide Basis-„Compose“-Dateien verwenden den Projektnamen „`tgwitness`“, sodass beim Entpacken einer neuen Version in ein anderes Verzeichnis nicht automatisch ein neues Datenvolume ausgewählt wird. Halten Sie nur eine Bereitstellung für dieses Projekt aktiv. Verwenden Sie für unabhängige Installationen einen eindeutigen Namen „ `docker compose -p NAME ...`“ und einen anderen Host-Port und behalten Sie bei Updates beide bei. Bei einer älteren Bereitstellung mit einem anderen Projektnamen verwenden Sie weiterhin deren ursprünglichen Namen zusammen mit „`-p`“; „`docker compose ls`“ listet vorhandene Projekte auf. Kopieren Sie `deploy/env.example` nach `.env` und ändern Sie `TGWITNESS_PORT` so, dass ein anderer Loopback-Port verwendet wird. Beispielsweise macht `TGWITNESS_PORT=8788` das Panel unter `http://127.0.0.1:8788` zugänglich; der Container lauscht weiterhin auf Port 8787. `.env` wird von Git ignoriert. Das anfängliche Token abrufen: ``` docker compose exec tgwitness cat /data/panel-token.txt ``` Nützliche Befehle: ``` docker compose ps docker compose logs --tail 100 -f docker compose stop docker compose up -d --wait ``` `restart: unless-stopped` startet den Collector nach einem Absturz oder einem Neustart des Docker-Daemons neu. Aktivieren Sie auf einem Linux-Server Docker beim Systemstart über den Dienstmanager Ihrer Distribution, in der Regel `sudo systemctl enable --now docker`. Unter Windows/macOS aktivieren Sie die Einstellung „Beim Anmelden starten“ in Docker Desktop. Das Abmelden vom Desktop, der Ruhezustand oder ein angehaltener Docker-Daemon die Datenerfassung unterbrechen. Ein explizit angehaltener Container bleibt angehalten, bis Sie ihn erneut starten. Das /tmp-Volume ist in der Beispielkonfiguration auf 512 MiB begrenzt. Die Exportkonstruktion verwendet stattdessen das „`temporary-exports/`“ jedes Arbeitsbereichs auf dem persistenten /data-Verzeichnis. Reservieren Sie dort Speicherplatz für gleichzeitige Exporte, das Wachstum von Journal/WAL, Medien und Backups. Der Launcher verwendet die Datei „deploy/constraints.txt“, um qualifizierte Versionen von Laufzeitabhängigkeiten festzulegen. Docker- und Hochsicherheitsserver werden anhand von „deploy/requirements.lock“ und „deploy/build.lock“ mit „pip --require-hashes“ installiert: Jede Paketdatei muss mit einem im Commit gespeicherten SHA-256-Hash übereinstimmen, sodass eine auf PyPI oder einem Mirror ersetzte Datei abgelehnt wird. Das Python-Basis-Image sowie die Betriebssystempakete erfordern weiterhin eine eigenständige Freigabeprüfung. Verwenden Sie den Befehl „docker compose down -v“ nur, wenn Sie beabsichtigen, das Protokoll und die Schlüssel zu löschen. Der Container-Statusbericht gibt Auskunft über die Verfügbarkeit des Webservers, nicht über die erfolgreiche Erfassung von Telegram-Nachrichten. Überprüfen Sie den Status des Collectors, den Heartbeat, Fehler und Abdeckungsereignisse im Dashboard. ### Profil eines unabhängigen Zeugen Der optionale `witness`-Dienst betreibt einen [unabhängigen Witness](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) in einem eigenen Container, mit eigenem Schlüssel und eigenem Protokoll im `witness-data`-Volume sowie lediglich einem schreibgeschützten Witness-Token für den Collector. Erstellen Sie das Token auf der **Witness**-Seite des Panels, fügen Sie es zusammen mit einem Bot-Token und einem Kanal zu `.env` hinzu und starten Sie anschließend das Profil: ``` docker compose --profile witness up -d # deploy/compose/compose.image.yaml: same flag docker compose logs witness # witness key fingerprint ``` Der Dienst erreicht den Collector innerhalb des Compose-Netzwerks unter `http://tgwitness:8787` (`TGWITNESS_WITNESS_COLLECTOR` überschreibt diesen, beispielsweise `/profiles/` für einen anderen Arbeitsbereich). Für einen Witness auf einem separaten Server, der von einer anderen Person betrieben wird, verwenden Sie dort `deploy/compose/compose.witness.yaml` , wobei `TGWITNESS_WITNESS_COLLECTOR` auf die HTTPS-Adresse des Collectors gesetzt ist; diese Datei enthält ausschließlich den Witness. ## Installieren Sie ein veröffentlichtes Image Kopieren Sie `deploy/env.example` nach `.env`. Setzen Sie `TGWITNESS_IMAGE` auf die veröffentlichte Version, wobei Sie den Repository-Pfad **in Kleinbuchstaben** verwenden, zum Beispiel: ``` TGWITNESS_IMAGE=ghcr.io/your-owner/your-repository:0.9.1 TGWITNESS_PORT=8787 ``` Führen Sie diese Datei separat aus, anstelle von „`compose.yaml`“: ``` docker compose --project-directory . -f deploy/compose/compose.image.yaml pull docker compose --project-directory . -f deploy/compose/compose.image.yaml up -d --wait docker compose --project-directory . -f deploy/compose/compose.image.yaml exec tgwitness cat /data/panel-token.txt ``` Auf dem Host sind weder eine Quellcode-Kompilierung noch Python oder ein Compiler erforderlich. Der Release-Workflow ist auf Linux-AMD64- und ARM64-Container ausgerichtet, einschließlich der Linux-VM von Docker Desktop. Verwenden Sie ein Versions-Tag oder „`ghcr.io/owner/repository@sha256:...`“ aus der Workflow-Zusammenfassung. Es ist weder ein bewegliches „`latest`“-Tag noch ein unbeaufsichtigtes Anwendungs-Upgrade konfiguriert. Die Image- und Quellvarianten nutzen dasselbe Datenvolumen, sofern ihre Projektnamen übereinstimmen. ## Automatisches HTTPS auf einem Server Verwenden Sie einen Server mit Docker, eine von Ihnen verwaltete Domain und einen dauerhaften lokalen Speicher. Richten Sie die A-/AAAA-Einträge der Domain auf den Server aus; veröffentlichen Sie AAAA nur, wenn der Server über IPv6 erreichbar ist. Erlauben Sie eingehenden TCP-Verkehr auf den Ports 80 und 443 sowie ausgehenden DNS-/HTTPS-Verkehr für die Zertifikatsausstellung. Diese Ports dürfen nicht bereits von anderen Diensten belegt sein. Kopieren Sie `deploy/env.example` nach `.env` und legen Sie einen Hostnamen fest, ohne Schema oder Pfad: ``` TGWITNESS_DOMAIN=watch.your-domain.org ``` Starten Sie den Quellcode-Build mit dem HTTPS-Overlay: ``` docker compose -f compose.yaml -f deploy/compose/compose.https.yaml up -d --build --wait docker compose -f compose.yaml -f deploy/compose/compose.https.yaml exec tgwitness cat /data/panel-token.txt ``` ``` docker compose --project-directory . -f deploy/compose/compose.image.yaml -f deploy/compose/compose.https.yaml up -d --wait ``` Verwenden Sie für ein veröffentlichtes Bild stattdessen „`deploy/compose/compose.image.yaml`“ als erste Datei. Behalten Sie beide „`-f`“-Argumente für spätere Status-, Protokoll-, Aktualisierungs- und Stoppbefehle bei. Caddy bezieht und erneuert ein Zertifikat, leitet HTTP-Anfragen auf HTTPS um und leitet Anfragen an den Collector im privaten Compose-Netzwerk weiter. Der Zertifikatsstatus verfügt über ein eigenes persistentes Volume. Der direkte Host-Port des Collectors bleibt ausschließlich für Loopback-Verbindungen reserviert. Die bereitgestellte Caddy-Konfiguration aktiviert keine Zugriffsprotokollierung. Öffnen Sie `https://watch.your-domain.org` und geben Sie das Panel-Token ein. Die Bereitschaftsprüfung bestätigt weder die Ausstellung eines Zertifikats noch die Erreichbarkeit von externen Servern. Sollte HTTPS nicht bereit sein, überprüfen Sie DNS, Firewall-Regeln sowie: ``` docker compose -f compose.yaml -f deploy/compose/compose.https.yaml logs --tail 100 caddy ``` Das bereitgestellte Caddy-Image folgt dem Tag „`2-alpine`“. Durch einen „Pull“ wird dieses Image aktualisiert; binden Sie einen getesteten Digest in Ihre Bereitstellung ein, falls Sie feste Infrastrukturversionen benötigen. ## Aktualisierungen und Sicherungen Behalten Sie den Namen des „Compose“-Projekts und das Datenvolumen bei allen Aktualisierungen bei. Stoppen Sie zunächst den Collector und erstellen Sie eine vollständige Sicherung. Für die standardmäßige, quellbasierte Bereitstellung: ``` docker compose stop docker compose cp tgwitness:/data ../tgwitness-backup-before-update ``` Verwenden Sie jedes Mal ein neues Sicherungsziel außerhalb des Repositorys und schützen Sie dieses als Material mit Kontozugriff. Der Beispielpfad dient nur zur Veranschaulichung; verwenden Sie Ihren privaten Speicherort für die Sicherung. Kopieren Sie das gesamte Verzeichnis, einschließlich versteckter Dateien, aller Arbeitsbereiche, Schlüssel, Protokolle und Medien. Sichern Sie einen externen Tresor-Hauptschlüssel separat, falls dieser konfiguriert ist. Eine ZIP-Datei mit Beweismaterial ist kein wiederherstellbares Anwendungs-Backup. Bei HTTPS bewahren Sie bitte auch die Caddy-Volumes auf, falls Sie den Status des Zertifikats bzw. des Kontos beibehalten müssen. Für eine Installation aus dem Quellcode laden Sie bitte die Dateien der neuen Version herunter und führen Sie folgenden Befehl aus: ``` docker compose up -d --build --wait ``` Für die Installation der Image-Version ändern Sie bitte „`TGWITNESS_IMAGE`“ in die gewünschte Version und führen Sie anschließend folgenden Befehl aus: ``` docker compose --project-directory . -f deploy/compose/compose.image.yaml pull docker compose --project-directory . -f deploy/compose/compose.image.yaml up -d --wait ``` Verwenden Sie die „Compose“-Datei(en) Ihrer Installation auch für die vorangehenden „stop“- und „copy“-Befehle. Behalten Sie „`.env`“, die benutzerdefinierte Konfiguration und denselben Projektnamen bei. „`down`“ behält benannte Volumes bei; „**`down -v`**“**löscht diese**. Kopieren Sie „`.venv`“ nicht zwischen Betriebssystemen oder Python-Versionen. Für native Updates stoppen Sie TgWitness, sichern Sie das gesamte Datenverzeichnis, ersetzen Sie die Quelldateien und führen Sie „`python start.py --setup-only`“ vor dem Start aus. Überprüfen Sie nach einem Update den Zugriff auf das Kontrollpanel, die Kontoidentität, den Beobachtungsstatus und die Abdeckung. Durch einen Neustart werden verpasste Telegram-Updates nicht wiederhergestellt. Ein Rollback erfordert möglicherweise die vor dem Update erstellte Sicherung, falls eine zukünftige Version die Speicherformate ändert. ## Entfernungsserver Beschränken Sie den Dienst auf Loopback und verwenden Sie einen SSH-Tunnel oder lassen Sie HTTPS an einem Reverse-Proxy enden. Die Basis-„Compose“-Datei ist ausschließlich lokal; das optionale „ `deploy/compose/compose.https.yaml`“-Overlay stellt Caddy für eine konfigurierte Domain bereit. Vermeiden Sie es, das Bearer-Token in URLs und Proxy-Protokollen offenzulegen. Ein Reverse-Proxy sollte die Anforderungsgröße und die Verbindungsraten begrenzen. Setzen Sie das Internet keinem unverschlüsselten HTTP aus. Beispiele für systemd, eine Windows-Anmeldeaufgabe, einen macOS-User-Agent und Caddy finden Sie im Verzeichnis [„deploy/“](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md). Überprüfen und passen Sie deren Pfade vor der Installation an. Es handelt sich hierbei um bereitgestellte Vorlagen, nicht um lokal ausgeführte Plattformkonfigurationen. Es wird kein Hintergrunddienst oder keine Hintergrundaufgabe durch den normalen Launcher registriert. Unter Windows speichert ein fensterloser `pythonw.exe`-Startvorgang die Start- und Serverdiagnosedaten in `logs/server.log` im Datenverzeichnis (5 MiB pro Datei, zwei rotierende Sicherungskopien). Bei Konsolenstarts werden die Konsolenprotokolle beibehalten. Die Protokollierung des HTTP-Zugriffs ist in beiden Modi deaktiviert. Schützen Sie die Protokolle zusammen mit dem Datenverzeichnis und überprüfen Sie diese, bevor Sie sie weitergeben. ## Neustart und Lücken Der zuletzt angeforderte Beobachtungsstatus wird beibehalten. War die Beobachtung aktiv, versucht das Programm beim Start, die Verbindung wiederherzustellen und ausgewählte Quellen fortzusetzen. Durch manuelles Anhalten wird diese Absicht aufgehoben. Ein fehlgeschlagener Neustart wird protokolliert und im Bedienfeld angezeigt. StringSession behält die Autorisierung bei, jedoch nicht den dauerhaften Aktualisierungs- bzw. Entitätsstatus von Telethon. Dialoge werden beim Start neu geladen. Telegram/Telethon kann einige Transportunterbrechungen während des Betriebs beheben, TgWitness erhebt jedoch keinen Anspruch auf dauerhafte Wiedergabe über Prozessneustarts hinweg. Bei jedem Start werden der vorherige Journal-Anfang und die Offline-Grenze aufgezeichnet. Der Monitor überprüft die Konnektivität alle 10 Sekunden und fügt jede Minute einen Heartbeat hinzu (**Parameter → „Liveness record every**“). Kurze Unterbrechungen können übersehen werden; eine bestehende Verbindung garantiert keine vollständige Übermittlung von Aktualisierungen. Snapshots sind explizite Momentaufnahmen des aktuellen Verlaufs und dienen niemals der Lückenfüllung. Die Medienwarteschlange wird in der SQLite-Datenbank des jeweiligen Arbeitsbereichs gespeichert. Eine Nachricht und der dazugehörige Auftrag werden atomar festgeschrieben. Unterbrochene laufende Aufträge werden beim Start wiederhergestellt und erneut ausgeführt. Jeder Download hat ein Basis-Timeout von 120 Sekunden zuzüglich der für seine Größe erforderlichen Zeit bei 256 KiB/s sowie ein Limit von 1–2.000 MiB pro Anhangstyp; Timeout, Geschwindigkeit und Wiederholungsversuche sind unter **„Parameter“** einstellbar. Der Collector überspringt Dateien, deren Größe unbekannt ist. Beim Anhalten bleiben die in der Warteschlange befindlichen Aufgaben erhalten. Bei Wiederholungsversuchen wird der ursprüngliche beobachtete Dateideskriptor verwendet, niemals die neueste Version einer anschließend bearbeiteten Nachricht. Vorübergehende Fehler unterliegen einer begrenzten Anzahl von Wiederholungsversuchen; Pausen bei „Media FloodWait“ bleiben nach einem Neustart erhalten. Die Medienwiederherstellung erfolgt getrennt von der Telegram-Update-Wiederherstellung und kann verschwundene Dateien nicht wiederherstellen. ## Sicherung, Wiederherstellung und Speicherkapazität Beenden Sie den Vorgang, bevor das **gesamte Datenverzeichnis** kopiert wird, einschließlich „vault.key“, „signing.enc“, „credentials.enc“, SQLite-Datenbank-/WAL-Dateien, Medien, Token, Checkpoints sowie aller Profile und Unterverzeichnisse. Stellen Sie die vollständige Kopie wieder her, während der Zieldienst angehalten ist. Fehlende Vault-Schlüssel oder eine Nichtübereinstimmung der Signaturschlüssel führen zu einem Fehlschlag beim Start; generieren Sie keine Schlüssel neu, um den Zugriff zu erzwingen. Bewahren Sie geheime Backups verschlüsselt und mit Zugriffskontrolle auf. Die ZIP-Dateien mit den Beweismitteln sind portable Prüfartefakte, keine Anwendungs-Backups oder Backups von Telegram-Sitzungen. Es erfolgt keine automatische Löschung nach einer bestimmten Aufbewahrungsfrist. Planen Sie Speicherplatz für alle Nachrichten, Rohdaten, Metadaten, Medien, temporäre Exporte und Backups ein. Starten Sie die Verifizierung und exportieren Sie Stream-Datensätze, anstatt das gesamte Protokoll zu laden. Ein Export fixiert einen Lese-Snapshot, während neue WAL-Schreibvorgänge fortgesetzt werden können; bei lang andauernden Exporten können WAL-Seiten beibehalten werden, sodass die Festplattenkapazität weiterhin eine Rolle spielt. ZIP-Dateien sind auf 4 GiB (unkomprimiert) begrenzt, um der Standardeinstellung des unabhängigen Prüfers zu entsprechen; **„Parameter → Größte signierte ZIP-Datei“** erhöht die Obergrenze, und solche Archive werden mit „`verify.py --max-gib N`“ verifiziert. Andere Formate haben keine Begrenzung der Ereignisanzahl. Unterstützte Browser streamen Antwortblöcke in eine vom Benutzer ausgewählte Datei. Andere Browser puffern maximal 128 MiB und leiten größere Übertragungen an die authentifizierte CLI weiter: ``` python -m tgwitness.download --token-file data/live/panel-token.txt --out evidence.zip ``` Verwenden Sie `--profile ID` aus **„Exports“ → „Workspace ID“** für einen anderen Arbeitsbereich, `--format zip|jsonl|csv|html` oder `--url https://your-server` für einen Remote-Server oder `--max-mib`, um das Übertragungslimit von 5 GiB zu ändern. Einfaches HTTP ist nur für Loopback zulässig. Token werden in Headern übertragen, Weiterleitungen werden abgelehnt, vorhandene Dateien werden nicht überschrieben und unvollständige Downloads werden nicht als abgeschlossene Dateien veröffentlicht. Falls TGWITNESS_TOKEN das generierte Token überschreibt, verwenden Sie eine separat geschützte Datei, die diesen aktiven Wert enthält: panel-token.txt wird durch die Überschreibung nicht überschrieben. Der SHA-256-Wert des Befehls dient lediglich als Übertragungsprüfsumme; überprüfen Sie die signierte ZIP-Datei unabhängig davon. Das Dashboard zeigt Medien in der Warteschlange bzw. fehlgeschlagene Medien, die ältesten ausstehenden Medien, freien Speicherplatz, Pausen bei Telegram- Anfragen sowie Quellen an, deren Zugriff noch nicht bestätigt ist. Diese Diagnosedaten stellen keine vollständige End-to-End-Überwachung der Datenübertragung dar. Arbeitsbereiche teilen sich einen Prozess; ein „lautes“ Konto kann daher dennoch andere beeinträchtigen. Separate Arbeitsprozesse, Aufbewahrung/Rotation, dauerhafte Wiederherstellung von Aktualisierungen sowie die vollständige Qualifizierung der Bereitstellung bleiben bestehen. Der bereichsbezogene Zugriff auf das Dashboard ist unter [„Zugriff und Berechtigungen“](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) dokumentiert; unabhängige Kontrollpunkte werden im [Zeugenleitfaden](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) behandelt. Detaillierte Anleitungen: [Verbindung/Sicherheit](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/) und [Betriebsmodi](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/). --- # Phala / Intel TDX · Hochsichere Bereitstellung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/ Ein gesicherter 24/7-Server bei Hetzner oder Phala Cloud, Gateway-DNS und Überprüfungen, die von Dritten wiederholt werden können. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Translation coverage: this edition includes material from the English original. Ein gesicherter 24/7-Server bei Hetzner oder Phala Cloud, Gateway-DNS und Überprüfungen, die von Dritten wiederholt werden können. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) Eine hochsichere Bereitstellung ergänzt die Archivüberprüfung um unabhängige Prüfungen der Erfassungsumgebung. Der Prüfer fragt die vom Cloud-Anbieter und von Cloudflare geführten Bereitstellungs- und Zugriffsprotokolle ab, und eine Intel-TDX-Bereitstellung fügt eine Hardware-Attestierung der Umgebung des Erfassers hinzu. Die normale Nutzung lokal und mit Docker bleibt unverändert. Hier läuft nichts, es sei denn, Sie führen eine Bereitstellung mit `python -m tgwitness.cloud`, und der Collector liest seinen Host nur, wenn die Bereitstellung `TGWITNESS_ASSURANCE`. Ablaufdiagramm · Operator → Server, Firewall ohne Eingangsregeln (Anbieter-API); Operator → Tunnel und DNS (Cloudflare-API); Server, Firewall ohne Eingangsregeln → Tunnel und DNS (nur ausgehend); Server, Firewall ohne Eingangsregeln → Auf dem Server erstellter Signaturschlüssel; Verifier, schreibgeschützte Token → Anbieterprotokoll und Firewall; Verifier, schreibgeschützte Token → Adresse des Tunnel-Konnektors und Ingress; Verifier, schreibgeschützte Token → Signierte /api/assurance-Erklärung; Verifier, schreibgeschützte Token → Beweismaterial-ZIP · Operator · Verifier,schreibgeschützte Token · Server, Firewall ohneEingangsregeln · Anbieterprotokoll undFirewall · Adresse desTunnel-Konnektors undIngress · Signierte/api/assurance-Erklärung · Beweismaterial-ZIP · Tunnel und DNS · Auf dem Server erstellterSignaturschlüssel · Anbieter-API · Cloudflare-API · nur ausgehend **Diagramm als Text** 1. Operator → Server, Firewall ohne Eingangsregeln (Anbieter-API) 2. Operator → Tunnel und DNS (Cloudflare-API) 3. Server, Firewall ohne Eingangsregeln → Tunnel und DNS (nur ausgehend) 4. Server, Firewall ohne Eingangsregeln → Auf dem Server erstellter Signaturschlüssel 5. Verifier, schreibgeschützte Token → Anbieterprotokoll und Firewall 6. Verifier, schreibgeschützte Token → Adresse des Tunnel-Konnektors und Ingress 7. Verifier, schreibgeschützte Token → Signierte /api/assurance-Erklärung 8. Verifier, schreibgeschützte Token → Beweismaterial-ZIP **Auf dieser Seite** - [Was ein Verifizierer überprüfen kann](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#what-a-verifier-can-check) - [Anbieter](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#providers) - [Vertrauliche VM auf der Phala Cloud (Intel TDX)](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#confidential-vm-on-phala-cloud-intel-tdx) - [Bevor Sie beginnen](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#before-you-start) - [Aus dem Panel](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#from-the-panel) - [Schneller Tunnel ohne Domain](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#quick-tunnel-without-a-domain) - [Bereitstellen](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#deploy) - [Debug-Bereitstellung und Sperre](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#debug-deployment-and-lock) - [Eine Bereitstellung entfernen](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#remove-a-deployment) - [Beliebiger Server (selbstzertifiziert)](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#any-server-self-attested) - [Überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#verify) - [Bericht zur Beweismittelübergabe](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#report-for-evidence-handover) - [Cloudflare als externer Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#cloudflare-as-an-outside-witness) - [Auslesen des Bereitstellungsergebnisses](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#reading-the-deployment-result) ## Was ein Prüfer überprüfen kann | Behauptung | Wie dies überprüft wird | Verwaltet von | | --- | --- | --- | | Der Server wurde zu einem bekannten Zeitpunkt über die API des Anbieters erstellt. | Das Server-Objekt und dessen Erstellung im eigenen Protokoll des Anbieters | Anbieter | | Niemand hat die Zugriffspfade des Anbieters genutzt | Protokoll von Konsolenanfragen, Rettungsmaßnahmen, Passwortzurücksetzungen, Neuinstallationen, ISO-Dateien, Images und Backups | Anbieter | | Es konnte keine Verbindung hergestellt werden | Die Firewall des Anbieters hat keine Regeln für eingehenden Datenverkehr; SSH wird ab dem ersten Start ausgeblendet. | Anbieter (Firewall), Host (SSH) | | Das Panel ist ausschließlich über den Tunnel erreichbar | Der Tunnel-Ingress leitet ausschließlich an das Panel weiter; der Connector läuft von der Serveradresse aus. | Cloudflare | | Genau diese Software läuft | Der signierte Hash des Quellcode-Baums des Collectors entspricht einem Checkout des bereitgestellten Commits | Collector, abgeglichen mit Git | | Der Signaturschlüssel wurde auf diesem Server erstellt | Der Schlüssel signiert eine Erklärung, in der die Server-ID des Anbieters und der Hash des empfangenen „cloud-init“ angegeben sind. | Collector, vom Anbieter überprüft | | Das Journal gehört zu diesem Schlüssel und diesem Server | Jeder Prozessstart im Evidenz-ZIP enthält die Host-Messung für diesen Server | Beweismaterial ZIP | Der Collector zeichnet den SSH-Status, Sitzungen, den Anmeldeverlauf und Startinformationen in signierten process-start- und `host.state`-Datensätzen auf. Auf einer gewöhnlichen VM handelt es sich dabei um lokale Bestandsdatensätze, die der Prüfer mit den unabhängigen Aufzeichnungen des Anbieters vergleicht. Die unten beschriebene Intel-TDX-Bereitstellung überprüft zusätzlich hardwaregestützte Messwerte. ## Anbieter | `--provider` | Anmeldedaten | Schreibgeschützter Zugriff für Verifier | Anbieterprotokoll für den Verifizierer | Aufbewahrt für | | --- | --- | --- | --- | --- | | `hetzner` | `HCLOUD_TOKEN` | Lese-Token desselben Projekts | Server- und Firewall-Maßnahmen | Solange die Ressourcen vorhanden sind | | `digitalocean` | `DIGITALOCEAN_TOKEN` | Schreibgeschütztes persönliches Zugriffstoken | Droplet-Aktionen | Solange das Droplet existiert | | `linode` | `LINODE_TOKEN` | `linodes`, `firewall`, `events` Schreibgeschützte Bereiche | Kontoereignisse, Versionen von Firewall-Regeln | 90 Tage | | `vultr` | `VULTR_API_KEY` | Benutzer mit Lesezugriff und der `activity_logs` Berechtigung | Aktivitätsprotokoll des Kontos (Methode, Pfad, Akteur) | 30 Tage, länger mit einem Abonnement für das Audit-Protokoll | | `aws` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` | `ec2:DescribeInstances`, `ec2:DescribeSecurityGroups`, `cloudtrail:LookupEvents` | CloudTrail-Ereignisverlauf | 90 Tage | | `phala` | `PHALA_CLOUD_API_KEY` | Ein API-Schlüssel desselben Arbeitsbereichs | Anwendungsrevisionen und CVM-Vorgänge: Änderungen an der Docker-Compose-Konfiguration und der Umgebung, Neustarts, Betriebssystem-Upgrades | Solange die Anwendung existiert | | `generic` | keine | keine | keine: **selbstbeglaubigt** | – | Verwenden Sie für jeden Fall ein eigenes Projekt, Team, Konto oder Unterkonto: Der schreibgeschützte Zugriff des Prüfers zeigt dann nur diese Bereitstellung an. Anmeldedaten werden aus `--provider-token-file` oder der oben genannten Variablen, niemals aus der Befehlszeile. Bei AWS enthält die Datei die Angabe `ACCESS_KEY_ID SECRET_ACCESS_KEY [SESSION_TOKEN]`; die Region ist `--location`. Was die Protokolle der einzelnen Anbieter nicht anzeigen können, wird in jedem Bericht vermerkt. Kurz gesagt: Hetzner protokolliert Konsolenanfragen; die Recovery-Konsole von DigitalOcean, Lish/Glish von Linode und die Webkonsole von Vultr werden als solche nicht protokolliert, sodass der Root-Zugang beim ersten Start gesperrt ist und eine Konsolenanmeldung eine Passwortzurücksetzung oder eine Änderung der Startkonfiguration erfordern würde, was protokolliert wird. Vultr gibt die Konsolenadresse an jeden Schlüssel zurück, der die Instanz lesen kann; weder der Datensatz noch der Bericht speichern diese. ## Vertrauliche VM auf der Phala Cloud (Intel TDX) Der `--provider phala` läuft der Collector in einer vertraulichen Intel-TDX-Virtual-Machine auf [Phala Cloud](https://phala.com/), die von dstack verwaltet wird. Der Host und die Mitarbeiter von Phala können dessen Speicher nicht auslesen, und der Prozessor signiert eine Bescheinigung darüber, was die Maschine beim Booten geladen hat. Der Verifizierer verlässt sich nicht blind auf die Angaben von Phala: `tgwitness.tdx` er überprüft jede Bescheinigung selbst, bis hin zur festgesteckten Intel SGX Root CA, anhand der Sperrlisten von Intel und der von Intel signierten Plattformdaten und lehnt Maschinen ab, die debuggt oder migriert werden können. | Eintrag erstellen | Was es zeigt | | --- | --- | | `tdx_binding` | Die Bescheinigung umfasst die signierte Erklärung des Erfassers und den Zufallswert dieser Anfrage. | | `tdx_quote` | Intel bürgt für die Bescheinigung; sie wird nur erteilt, wenn Intel die Plattform als auf dem neuesten Stand bewertet. | | `tdx_compose_hash` | RTMR3, das aus dem dstack-Ereignisprotokoll wiedergegeben wird, misst die App-Composes, die der Collector meldet. | | `tdx_compose` | Dieser Code entspricht Byte für Byte dem Code, der aus dem bereitgestellten Commit erstellt wird: Quelldateien sind über ihren Hash-Wert, beide Bilder über ihren Digest-Wert festverknüpft; es gibt keinen weiteren Code. | | `tdx_identity` | Die Bescheinigung stammt von der bereitgestellten Anwendung und Instanz, wobei Schlüssel aus dem KMS von Phala und einer verschlüsselten Festplatte verwendet werden. | | `tdx_os` | MRTD und RTMR0-2 entsprechen den Werten, die der Verifizierer aus dem von Dstack-TEE veröffentlichten Dstack-OS-Image berechnet, das anhand des von der CVM gemeldeten OS-Image-Hashes ermittelt wird, sowie aus den ACPI-Tabellen, die QEMU für die Konfiguration der VM erstellt: Firmware, Kernel, initrd, Befehlszeile mit dem Hash des Root-Dateisystems, Arbeitsspeicher, vCPUs und Geräte. Ein Entwicklungsimage schlägt fehl | The OS image (about 180 MB, of which 21 MB are kept) is downloaded once from [Dstack-TEE/meta-dstack](https://github.com/Dstack-TEE/meta-dstack/releases) into `dstack-images` beside the record; `--tdx-image FOLDER` uses another folder or an unpacked image, `--tdx-image none` skips the comparison. The measurement follows `dstack-mr` and the `qemu-acpi` crate of Dstack-TEE/dstack. Private measurement regressions compare QEMU's own ACPI output and a retained Phala Cloud quote; live qualification also needs the published image. `--tdx-measurements` still compares MRTD and RTMR0-2 given as JSON instead. Jeder im Protokoll erfasste Start des Collectors ist mit einer solchen Bescheinigung versehen, sodass `verify --evidence` jeden Start sowie das dabei gebootete Betriebssystem-Image überprüft. Die Anwendungsrevisionen von Phala und die Vorgänge des CVM dienen als Anbieterprotokoll: Eine nach der Bereitstellung geänderte Docker-Compose-Konfiguration führt zu einem Fehlschlag des Berichts, und Neustarts werden zur Überprüfung aufgelistet. Wählen Sie im Panel **Vertrauliche virtuelle Maschine · Phala Cloud** unter **Extras** → **Server 24/7** und fügen Sie einen Phala-Cloud-API-Schlüssel ein; der Quick-Tunnel funktioniert wie bei Hetzner. Über die Befehlszeile: ``` python -m tgwitness.cloud deploy --provider phala --name case-1 --server-type tdx.small \ --ref v0.8.0 --repository https://github.com/phishdestroy/TgWitness --quick-tunnel \ --provider-token-file phala-key.txt python -m tgwitness.cloud verify --record deployments/case-1/deployment.json \ --provider-token-file phala-key.txt --cloud-init deployments/case-1/docker-compose.yaml \ --source CHECKOUT_OF_COMMIT --fingerprint COLLECTOR_FINGERPRINT --report certificate.md python -m tgwitness.cloud check-report --report certificate.pdf --verifier-fingerprint VERIFIER_KEY ``` `--tdx-collateral` Liest Intels Zertifikate und Sperrlisten aus einer Datei aus, anstatt sie von Intel herunterzuladen. Gateway-DNS ist hier nicht verfügbar: Phala verfügt über keine Provider-Firewall für ausgehenden Datenverkehr. ### Attestierungszertifikat Bei einer Phala-Bereitstellung schreibt `verify --report certificate.md` zudem das Zertifikat: ein eigenständige Datei „`certificate.html`“ und eine A4-Datei „`certificate.pdf`“ mit dem Ergebnis, der Vertrauenskette von Intels Stammzertifikat bis zum Collector-Schlüssel, einem Vergleich mit gewöhnlichen und hochsicheren Servern, den Messwerten neben den aus dem veröffentlichten Image berechneten Werten, den Verantwortlichen für die einzelnen Teile, der Intel-Zertifikatskette, jeder Prüfung, dem Anbieterprotokoll sowie einer Anleitung zur Wiederholung der Überprüfung. Der JSON-Bericht bleibt die maßgebliche Aufzeichnung; die Seiten stellen ihn dar. Der Bericht ist mit Signaturen und Zeitstempeln digital versiegelt, und zwar in der Datei „`certificate.seal.json`“ sowie in den daneben liegenden Dateien „`.tsq`“ und „`.tsr`“: | Seal | Was es bietet | | --- | --- | | Qualifizierter elektronischer Zeitstempel, `http://tsa.belgium.be/connect` | RFC-3161-Zeitstempel über die exakten Bytes von `certificate.json` vom qualifizierten Vertrauensdienstleister der belgischen Föderalregierung (FPS Policy and Support, BOSA). Diese Stelle ist als qualifizierter Zeitstempeldienst mit dem Status „gewährt“ auf der EU-Vertrauensliste Belgiens aufgeführt; die Stammzertifizierungsstelle (Belgium Root CA6) und die Einträge der Liste, gemäß der am 20. Oktober 2026 veröffentlichten Liste, sind in `tgwitness/tsa_roots.py` festgehalten. Gemäß Artikel 41 der Verordnung (EU) Nr. 910/2014 gilt ein solcher Zeitstempel in jedem EU-Mitgliedstaat als hinsichtlich Datum und Uhrzeit sowie hinsichtlich der Integrität der Daten als korrekt. | | RFC 3161-Zeitstempel, FreeTSA | Ein zweiter, unabhängiger Zeitstempel | | Signatur des Verifizierers | Ed25519 über eine Anweisung, die den SHA-256-Wert des Berichts und jeden Zeitstempel mit dem eigenen Schlüssel des Verifizierers (`--sign-with FOLDER`, Standard: `~/.tgwitness/verifier`) angibt; das PDF trägt eine Signatur mit demselben Schlüssel | `--timestamp URL` (wiederholbar) wählt andere Zertifizierungsstellen aus, `--timestamp none` keine, `--sign-with none` lässt das Siegel ungesigniert. `check-report` überprüft den Hash des Berichts, die Signatur des Verifizierers, jeden Zeitstempel auf eine vertrauenswürdige Stammzertifizierungsstelle und deren qualifizierten Status sowie die Signatur der PDF-Datei. Die rechtliche Bedeutung eines qualifizierten Zeitstempels außerhalb der EU sowie des Berichts als Ganzes liegt im Ermessen des Gerichts oder der Behörde, die ihn erhält; das Siegel zeigt an, wann der Bericht existierte und dass er nicht verändert wurde. Eine Bescheinigung kann einen Fehler im TDX-Modul oder im Mikrocode von Intel sowie physischen Zugriff auf den Speicherbus nicht ausschließen. Wer auch immer die Anwendung im Konto von Phala kontrolliert, kann ein weiteres „Compose“ bereitstellen; dies erscheint als neue Revision mit einem neuen „Compose“-Hash. Der Host kontrolliert die Zeitquelle und das Netzwerk des Rechners. Bereitstellung, Überprüfung mit `--evidence`, Neustarts, der Vergleich des Betriebssystem-Images, das mit Signaturen und Zeitstempeln digital versiegelte Zertifikat sowie die Vernichtung wurden auf der Phala Cloud selbst ausgeführt; siehe [– der Lauf vom 4. November 2026 –](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#live-phala-cloud-deployment--4-november-2026). ## Bevor Sie beginnen 1. Eine Cloudflare-Zone, deren Konto-ID sowie ein API-Token mit den Berechtigungen **„Cloudflare Tunnel Edit“**, **„Zone Read“** und **„DNS Edit“**, bereitgestellt mit `--cloudflare-token-file` oder `CLOUDFLARE_API_TOKEN`. Für den Prüfer: **„Cloudflare Tunnel Read“**, **„DNS Read“** und, für das Audit-Protokoll, **„Account Settings Read**“. Ohne Domain benötigt ein [Quick-Tunnel](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#quick-tunnel-without-a-domain) nichts davon. 2. Anmeldedaten eines Anbieters mit Schreibzugriff auf ein dediziertes Projekt; `lock` verwendet dasselbe: - Hetzner: API-Token mit Lese- und Schreibberechtigung; - DigitalOcean: persönliches Zugriffstoken mit Schreibzugriff; - Linode: persönliches Zugriffstoken mit `linodes`, `firewall` sowie `events` Lese-/Schreibberechtigungen; - Vultr: API-Schlüssel eines dedizierten Kontos oder Unterkontos; - AWS: IAM-Anmeldedaten zulässig `ec2:DescribeVpcs`, `ec2:DescribeImages`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:RunInstances`, `ec2:CreateTags`, `ec2:DescribeInstances`, `ec2:DescribeSecurityGroupRules` und `ec2:RevokeSecurityGroupIngress`. 3. Der auszuführende Commit. Ein Release-Tag wird einmalig auf seinen Commit aufgelöst mit `git ls-remote`; der Server erhält immer nur den 40-Zeichen-Commit. ## Aus dem Panel Auf Ihrem eigenen Computer führt **„Extras → Server 24/7“** dasselbe `deploy` für Hetzner in drei Schritten: Wähle Europa oder die Vereinigten Staaten aus, füge einen Hetzner-Token (Lese- und Schreibzugriff) ein und überprüfe anschließend den Servertyp, den monatlichen Preis, die Adresse und die Version, die das Panel mit diesem Token ermittelt hat. Es wird nichts erstellt, bevor du bestätigst. Das Panel zeigt jeden Schritt an, wie `deploy` er meldet, anschließend die Adresse, das Panel-Token und den Fingerabdruck des Signaturschlüssels. Ohne Domain erhält der Server einen [Schnelltunnel](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#quick-tunnel-without-a-domain) ; **unter „Ihre Server“ → „Aktuelle Adresse suchen“** wird diese nach einem Neustart erneut abgerufen. Für eine feste Adresse unter Ihrer eigenen Domain öffnen Sie **„Optional · Ihre eigene Domain** “ und fügen ein Cloudflare-Token hinzu (der vorbereitete Link wählt „Zone lesen“, „DNS bearbeiten“ und „Cloudflare-Tunnel bearbeiten“ aus). Die Tokens werden bei jeder Anfrage vom Browser-Tab an TgWitness auf demselben Computer übertragen und nirgendwo gespeichert; der Bereitstellungsdatensatz, das redigierte „cloud-init“, das Panel-Token und, bei einem Schnell-Tunnel, der Adressschlüssel werden `deployments/NAME` im Datenverzeichnis gespeichert. Das Panel bietet dies nur dem Hauptadministrator über eine direkte Loopback-Verbindung an (`127.0.0.1`, keine Proxy- oder Tunnel-Header); ein über ein Netzwerk erreichbares Panel zeigt stattdessen die Befehle an . Die Version ist standardmäßig auf das Release-Tag des laufenden Panels gesetzt, das über die GitHub-API ermittelt wird. Standort, Servertyp und Preis stammen aus der Hetzner-API: `cpx22` sofern dort angeboten, andernfalls der günstigste x86-Typ mit mindestens 2 GB Arbeitsspeicher. ## Schneller Tunnel ohne Domain `--quick-tunnel` ersetzt `--zone`, `--cloudflare-account` und `--panel-host`; es ist kein Cloudflare- Konto oder -Token erforderlich: ``` python -m tgwitness.cloud deploy --provider hetzner --name case-2026-11 --server-type cpx22 \ --ref 0123456789abcdef0123456789abcdef01234567 --quick-tunnel --provider-token-file hetzner.token ``` Auf dem Server öffnet „cloudflared“ einen [schnellen Tunnel](https://developers.cloudflare.com/tunnel/get-started/quick-tunnels/) zum Panel: eine zufällige `https://….trycloudflare.com` Adresse, die sich ändert, sobald „cloudflared“ oder der Server neu gestartet wird. Ein kleiner Dienst auf dem Server veröffentlicht jede Adresse in einem zufälligen „ntfy.sh“- Thema, signiert (HMAC-SHA256) mit einem Schlüssel, der ausschließlich im Deployment-Verzeichnis gespeichert ist (`address-key.txt`) und wiederholt dies alle drei Stunden, da ntfy.sh Beiträge 12 Stunden lang aufbewahrt. `deploy` und **„Find the current address“** akzeptieren nur signierte Beiträge, sodass ein gefälschter Beitrag dich und dein Panel-Token nicht an die Adresse einer anderen Person weiterleiten kann. Das Thema ist im Protokoll und im veröffentlichten cloud-init enthalten: Wer auch immer darüber verfügt, kann die aktuelle Adresse ablesen, die weiterhin nach dem Panel-Token fragt. Der Server hält in keinem Fall einen eingehenden Port offen. Ein Verifizierer verfügt über keinen Adressschlüssel, und jeder, der das Thema liest, kann dort Beiträge verfassen. Daher veröffentlicht der Collector auch die Adresse selbst, signiert mit seinem eigenen Ed25519-Schlüssel, und `verify` übernimmt den neuesten Beitrag, der mit dem Collector-Schlüssel im Bereitstellungsdatensatz signiert ist; Beiträge werden nach dem Zeitpunkt sortiert, zu dem ntfy.sh sie empfangen hat, nicht nach dem von ihnen angegebenen Zeitpunkt. Ein Collector aus der Zeit vor dieser Änderung signiert nichts, und `verify` übernimmt daraufhin den neuesten Beitrag und gibt dies in der `statement`-Prüfung an; ein gefälschter Beitrag kann diese Prüfung lediglich zum Scheitern bringen, da die Adresse weiterhin mit dem Schlüssel des Collectors antworten muss. Was es kostet: Da kein Cloudflare-Konto Aufzeichnungen über einen Quick-Tunnel führt, meldet `verify` den Tunnel, den Connector und die DNS-Prüfung als nicht verfügbar, und das Ergebnis lautet bestenfalls `incomplete` (auf Phala Cloud wird die Prüfung stattdessen bestanden: Der Connector läuft innerhalb der gemessenen Docker-Compose-Konfiguration); die Anbieteraufzeichnungen, die Firewall, die signierte Erklärung, die Host-Messungen und der Installationsvergleich werden wie üblich geprüft. Der Byte-Vergleich mit dem Referenz-Installationsprogramm erfordert einen bereitgestellten Commit, der `--quick-tunnel` bereits kennt; ein 0.7.0-Checkout erstellt das Domain-Installationsprogramm und meldet den Unterschied. Cloudflare gewährt für Quick Tunnels keine Verfügbarkeitsgarantie, erlaubt 200 laufende Anfragen und überträgt keine Server-Sent-Events, sodass die Live-Aktualisierungen des Panels (Versionen ab 0.7.0) möglicherweise nicht über einen solchen Tunnel ankommen und eine Ansicht neu geladen werden muss; dieser Aspekt wurde noch nicht getestet. Für einen Fall, der zuverlässig funktionieren muss, verwenden Sie bitte Ihre eigene Domain. ## Bereitstellen Sehen Sie sich zunächst alles an, was gesendet wird. `plan` Es werden keine Anfragen an Provider oder Cloudflare gestellt: ``` python -m tgwitness.cloud plan --provider hetzner --name case-2026-11 --server-type cpx22 \ --ref 0123456789abcdef0123456789abcdef01234567 --zone example.org \ --cloudflare-account CLOUDFLARE_ACCOUNT_ID --panel-host case.example.org ``` Stellen Sie das Tool anschließend mit denselben Optionen und den Anmeldedaten bereit: ``` python -m tgwitness.cloud deploy --provider hetzner --name case-2026-11 --server-type cpx22 \ --ref 0123456789abcdef0123456789abcdef01234567 --zone example.org \ --cloudflare-account CLOUDFLARE_ACCOUNT_ID --panel-host case.example.org \ --witness-host case-witness.example.org \ --provider-token-file hetzner.token --cloudflare-token-file cloudflare.token ``` Servertypen für den Einstieg: `cpx22` (Hetzner), `s-1vcpu-2gb` (DigitalOcean), `g6-standard-1` (Linode), `vc2-1c-2gb` (Vultr), `t3.small` (AWS). `--location` und `--image` standardmäßig auf Ubuntu 24.04 des jeweiligen Anbieters in einer europäischen Region. `--repository` Übernimmt den Commit aus einem anderen https-Git-Repository, ohne Anmeldedaten in der URL (standardmäßig `https://github.com/phishdestroy/TgWitness.git`). `deploy` akzeptiert auch `--out` für ein anderes Bereitstellungsverzeichnis (Standard `deployments/NAME`; ein Verzeichnis, das bereits eine Bereitstellung enthält, wird abgelehnt) und `--wait`, die Anzahl der Minuten, die auf die signierte Bestätigung des Collectors gewartet werden soll: 1 bis 240, Standard 20 oder 60 für `generic`. Der Befehl: 1. Erstellt einen Cloudflare-Tunnel, dessen Ingress den Hostnamen des Panels an das Panel weiterleitet und, falls angegeben, den Hostnamen des Witness an `/api/witness/head` und `/api/assurance` nur; 2. Erstellt Proxy-CNAME-Einträge für diese Hostnamen und lehnt Namen ab, die bereits existieren; 3. Erstellt eine Provider-Firewall ohne eingehende Regeln und einen Server dahinter ohne SSH-Schlüssel, ohne Backups, ohne Konsolen-Agent und mit „cloud-init“, das SSH maskiert, Root sperrt, `cloudflared`, genau den Commit abruft, diesen überprüft und TgWitness als abgesicherten systemd-Dienst startet; 4. wartet auf die signierte Erklärung des Collectors und überprüft, ob darin dieser Server und der Hash dieses „cloud-init“ genannt werden. `deployments/case-2026-11/` Enthält dann: | Datei | Inhalt | Teilen? | | --- | --- | --- | | `deployment.json` | IDs, Hashes, die durchgeführten API-Aufrufe (Methode, Pfad, Status) und die erste signierte Aussage | Ja, mit dem Verifizierer | | `cloud-init.redacted.yaml` | Das genaue „cloud-init“-Skript, bei dem die beiden Geheimnisse durch `REDACTED` | Ja | | `panel-token.txt` | Das Panel-Token | Nein | Das Root-Passwort des Anbieters, das Tunnel-Token und das Panel-Token werden niemals gespeichert `deployment.json`. Veröffentlichen Sie den am Ende angezeigten Fingerabdruck des Collectors über einen Kanal, den Sie nicht allein kontrollieren, beispielsweise einen Witness-Kanal oder eine Nachricht an den Empfänger. Melden Sie sich bei Telegram unter `https://case.example.org` mit dem Panel-Token an, wie in der [Anleitung zum Konto beschrieben](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/). Panel-Aktionen werden im signierten Protokoll aufgezeichnet; es handelt sich dabei nicht um SSH-Sitzungen. Ein [Witness](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) kann abfragen `https://case-witness.example.org`. Es gibt kein SSH: Wenn der Bootstrap-Vorgang fehlschlägt, antwortet der Collector nicht. Löschen Sie den Server und führen Sie die Bereitstellung erneut durch oder verwenden Sie eine Debug-Bereitstellung, um die Ursache zu ermitteln. ### Geheimnisse in den Benutzerdaten Das „cloud-init“ enthält zwei Geheimnisse: das Panel-Token und das Cloudflare-Tunnel-Token. Der Signaturschlüssel gehört nicht dazu; er wird auf dem Server erstellt. Hetzner, DigitalOcean und Linode geben keine Nutzerdaten über ihre API zurück. Vultr gibt sie an jeden Schlüssel zurück, der die Instanz lesen kann, und EC2 über `DescribeInstanceAttribute`. Bei AWS sollten Sie dem Verifizierer nur die drei Aktionen aus der Tabelle gewähren, niemals `ec2:Describe*`. Bei Vultr ist davon auszugehen, dass der Schlüssel des Verifizierers beide Token lesen kann. Ein Tunnel-Token ermöglicht es jemandem, einen zweiten Connector auszuführen: `verify` meldet jeden Connector, der sich nicht auf dem Server befindet, und die Aussagen des Collectors können auf diese Weise nicht gefälscht werden, da jede einzelne eine neue Challenge signiert. Bei `--quick-tunnel` dem zweiten Geheimnis handelt es sich stattdessen um den Adressschlüssel: Wer ihn liest, kann eine falsche Adresse posten, die das Panel akzeptieren würde. In der öffentlichen Erklärung des Erfassers werden die Serveradresse und die Quellen der Anmeldungen nicht genannt; beides verbleibt im signierten Protokoll. ## Debug-Bereitstellung und Sperre `--debug-ssh-key KEY --debug-ssh-from 198.51.100.4` Verwaltet SSH für einen Schlüssel von einer Adresse oder einem kleinen Netzwerk, höchstens ein /24 für IPv4 oder ein /48 für IPv6. `KEY` ist bereits beim Anbieter registriert: der Name oder die ID eines SSH-Schlüssels im Hetzner-Projekt, die ID oder der Fingerabdruck eines SSH-Schlüssels im DigitalOcean-Team, ein Linode-Benutzername, dessen Profil-SSH-Schlüssel zu „root“ hinzugefügt wurden, die ID eines SSH-Schlüssels im Vultr-Konto oder der Name eines EC2-Schlüsselpaars in der Region. Diese Optionen gelten nicht für `generic`. Eine solche Bereitstellung wird als `debug` und wird **niemals** als „High-Assurance“ gemeldet. Wenn Sie fertig sind, führen Sie `sudo tgwitness-lock` als letzten Befehl der letzten SSH-Sitzung aus und gehen Sie anschließend wie folgt vor: ``` python -m tgwitness.cloud lock --record deployments/case-2026-11/deployment.json --provider-token-file hetzner.token ``` Die Firewall verliert jede eingehende Regel. Berichte zeigen dann an, wann SSH zugelassen war und wann es geschlossen wurde; dieses Fenster bleibt sichtbar. ## Bereitstellung entfernen `destroy` Löscht den Server und seine Firewall, die anhand des Labels der Bereitstellung identifiziert werden, sodass auch eine Bereitstellung, die auf halbem Weg fehlgeschlagen ist, entfernt wird, sowie anschließend die DNS-Einträge, die auf den Tunnel verweisen, und den Tunnel selbst. Das Journal und der Signaturschlüssel des Servers werden ebenfalls gelöscht: Exportieren Sie zuvor die Beweismittel. Der Datensatz bleibt erhalten und wird `removed`, mit den API-Aufrufen der Entfernung. ``` python -m tgwitness.cloud destroy --record deployments/case-2026-11/deployment.json --confirm case-2026-11 \ --provider-token-file hetzner.token --cloudflare-token-file cloudflare.token ``` Die Löschung über die API ist für Hetzner implementiert. Bei anderen Anbietern `destroy` wird vor dem Löschen angehalten und das zu löschende Label in der Konsole des Anbieters benannt. Ein manuell installierter Server (`generic`) verliert lediglich seinen Tunnel und seine DNS-Einträge. Eine schnelle Tunnel-Bereitstellung benötigt kein Cloudflare-Token: Der Tunnel endet beim Server, und die Beiträge verfallen bei ntfy.sh innerhalb von 12 Stunden. ## Beliebiger Server (selbstzertifiziert) `--provider generic` gilt für einen Server, der gekauft oder manuell installiert wurde. `deploy` Erstellt den Tunnel und die DNS-Einträge, schreibt `install.sh` (privat) und `install.redacted.sh` (zur Veröffentlichung) und wartet. Kopieren `install.sh` auf einen frisch installierten Ubuntu 24.04-Server und führen Sie es dort aus: ``` sudo bash install.sh ``` Es erfasst den Host in seinem ursprünglichen Zustand (Anmeldungen, Konten, `authorized_keys`, empfangende Sockets, Dienste, geplante Aufgaben, Pakete), installiert den Commit, aktiviert die Host-Firewall, löscht sich selbst, maskiert SSH und beendet die Sitzung. Der Bericht für einen solchen Server ist bestenfalls **SELBSTBESCHEINIGT**: Wer auch immer das Installationsprogramm ausgeführt hat, verfügte zuvor über Root-Rechte, und dem Prüfer steht kein Anbieterprotokoll zur Verfügung. Es ist dennoch besser als ein ungeklärter Server: Die Bestandsliste, der Hash des Installationsprogramms und jede spätere Anmeldung sind signiert. ## Überprüfen Der Prüfer benötigt `deployment.json`den veröffentlichten Installer, schreibgeschützte Zugangsdaten und, im Idealfall, einen Checkout des Commits sowie einen Nachweis ZIP: ``` git clone -c core.autocrlf=false https://github.com/phishdestroy/TgWitness.git checkout git -C checkout checkout 0123456789abcdef0123456789abcdef01234567 python -m tgwitness.cloud verify --record deployment.json \ --provider-token-file read-only.token --cloudflare-token-file cloudflare-read.token \ --fingerprint COLLECTOR_FINGERPRINT --cloud-init cloud-init.redacted.yaml \ --source checkout --evidence tgwitness-evidence.zip --report report.md ``` Jeder Anbieter und jeder Cloudflare-Wert wird vom Verifizierer zu diesem Zeitpunkt angefordert; der Datensatz liefert lediglich die IDs, nach denen gefragt werden soll. Der Exit-Code lautet 0 für **„PASS“**, 1 für **„FAIL“** und 2 für **„REVIEW“**, **„INCOMPLETE“** oder **„SELF-ATTESTED**“. `--fingerprint` sollte von einem unabhängigen Kanal stammen; ohne diesen wird der Schlüssel nur mit dem Datensatz des Betreibers verglichen. `python verify.py` überprüft den Nachweis ZIP weiterhin selbst, wie in [„Evidence“ beschrieben](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/). Anbieteraktionen werden klassifiziert: Erstellung und Start innerhalb von 30 Minuten nach der Erstellung werden akzeptiert; Konsole, Rettung, Passwortzurücksetzung, Neuinstallation, ISO, Images, Snapshots, Backups, Systems Manager, EC2 Instance Connect und Firewall-Öffnungen werden abgelehnt; Stromversorgungsaktionen und alles Unerwartete werden zur Überprüfung markiert. Eine unbekannte Aktion wird niemals unbemerkt durchgelassen. ## Bericht zur Übergabe von Beweismitteln `--report report.md` schreibt den Markdown-Bericht und `report.json` daneben: 1. Ergebnis, Fingerabdruck des Collector-Schlüssels, Bereitstellung, Anbieter, Commit, Server, Firewall, Tunnel; 2. jede Überprüfung mit ihrem Status und ihrer Quelle (Anbieter-API, Cloudflare-API, Collector-Auszug, Beweisjournal); 3. das Anbieterprotokoll mit der Bewertung jeder Aktion und, sofern vom Anbieter erfasst, dem Ausführenden; 4. die Cloudflare-Endpunkte, die die Verbindungen, die Konfiguration und das Audit-Protokoll des Tunnels enthalten; 5. die signierte Erklärung des Sammlers; 6. Was der Bericht feststellt und was nicht; 7. Befehle zur Reproduktion sowie das SHA-256-Element jeder Datei, die ihm übergeben wurde. Übergeben Sie den Bericht, `report.json`, `deployment.json`, das veröffentlichte Installationsprogramm und die Beweismittel ZIP. Erstellen Sie den Bericht frühzeitig: Die Protokolle der Anbieter werden nur für einen begrenzten Zeitraum aufbewahrt. ## Cloudflare als externer Zeuge Alles hier ist optional. Auch ohne Cloudflare-Konto läuft der Server weiterhin, und zwei davon sind derzeit in Betrieb: | Was | Was es zeigt | In TgWitness | | --- | --- | --- | | Schnelltunnel oder der Tunnel Ihrer Domain | Das Panel ist ausschließlich über den Tunnel erreichbar. | Der Server-Assistent, siehe oben | | drand-Relay `drand.cloudflare.com` | Die Einträge nach einer „drand“-Runde sind neuer als dieser: Das Tagebuch wurde fortlaufend verfasst. | Beweismodus, **Weitere Zeugen**, kein Konto ([Format](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#optional-records-in-evidence-mode-drand-and-telegram-devices)) | | Benachrichtigungen zum Tunnelstatus | wenn der Tunnel ausgefallen war, per E-Mail oder Webhook von Cloudflare | Richten Sie diese im Cloudflare-Dashboard ein | | Gateway-DNS (`--gateway-dns`oder **Cloudflare Gateway DNS** im Assistenten) | Jeder Name, den der Server abgefragt hat, wurde von Cloudflare über TLS beantwortet; die Hetzner-Firewall lässt keine anderen DNS-Zugriffe zu; ob eine Gateway-Richtlinie Antworten umschreiben könnte | Hetzner, kostenloser Zero-Trust-Tarif, keine Domain; `verify` überprüft die Firewall, den Standort, die Protokollierung, die Richtlinien, die Serverabfragen und das Audit-Protokoll; der „Evidence-Modus“ kopiert das Protokoll in das Journal | | Gateway zum Cloudflare One-Client auf dem Server, eine ausgehende Firewall, die nur Cloudflare zulässt | jede vom Server hergestellte Verbindung, nicht nur DNS | noch nicht implementiert | | Zugriff vor dem Panel | Wer hat sich wann im Panel angemeldet? | noch nicht implementiert: erfordert eine eigene Domain | | Protokollierung von SSH-Befehlen | Jeder Befehl in einer Debug-Sitzung | noch nicht implementiert | „Logpush“, das eine eigene Kopie von Cloudflare in R2 speichern würde, ist eine Enterprise-Funktion: Im kostenlosen Tarif antwortet Cloudflare `logpush is not enabled for this account`. Das Gateway-Protokoll bleibt dort 24 Stunden lang erhalten, sodass es im „Evidence Mode“ in das signierte Journal kopiert wird (**das Protokoll des Cloudflare Gateways über die DNS-Abfragen dieses Servers**, ein schreibgeschütztes Token mit „Account Analytics Read“). Ohne einen Zero-Trust-Plan hat ein Konto einen DNS-Standort. Wenn Cloudflare einen weiteren ablehnt, nutzt der Server den bestehenden, und seine Abfragen werden anhand ihrer Adresse unterschieden; dieser Filter benötigt ebenfalls „Zero Trust PII Read“ und `destroy` hinterlässt einen gemeinsam genutzten Standort. Eine Protokollabfrage erstreckt sich über höchstens drei Stunden, sodass das Kopieren und `verify` Lesen des Tages in Drei-Stunden-Fenstern. „Gateway DNS“ umfasst den System-Resolver. DNS über HTTPS auf Port 443 zu einem anderen Resolver sowie Verbindungen zu einer Adresse, die nirgendwo nachgeschlagen wird (zum Beispiel zu den Rechenzentren von Telegram), werden nicht im Protokoll erfasst. Cloudflare hat keinen Einblick in die Verschlüsselung von Telegram, in andere Geräte des Telegram-Kontos (die Geräteliste im „Evidence Mode“ erfasst diese von Telegram-Seite aus) oder in den Hypervisor des Anbieters. ## Auswerten des Bereitstellungsergebnisses Bei einer gewöhnlichen VM kontrolliert der Anbieter die Host-Infrastruktur, und der lokale Bestand wird zusammen mit den Aufzeichnungen des Anbieters überprüft. Bei Intel TDX überprüft der Prüfer zusätzlich die Hardware-Angaben, die Collector-Bindung, Compose sowie Betriebssystem-Messwerte. Lesen Sie die einzelnen Ergebnisse, um zu sehen, welche Prüfungen bestanden wurden oder nicht verfügbar waren. Historische Firewall-Details hängen vom Anbieter ab; Linode speichert Regelversionen. Der [-Validierungsdatensatz](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) listet getestete Bereitstellungen und verbleibende Live- Prüfungen auf, und der [-Verifizierungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) verknüpft diese Umgebungs- Prüfungen mit der Archivierung und Integrität. --- # Telegram · Anleitung zum Panel Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/ Alle Bildschirme des Panels: Chats, Tagebuch, Quellen, Exporte, Extras, Schutzmodi und die Code-Prüfung. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Alle Bildschirme des Panels: Chats, Tagebuch, Quellen, Exporte, Extras, Schutzmodi und die Code-Prüfung. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Erste Schritte](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) ![Erste Schritte](https://phishdestroy.github.io/TgWitness/assets/chapter-start.svg) [Erste Einrichtung und Einstellungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/) · [Konten](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/) · [Exportieren und verifizieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) · [Fallberichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) Was die einzelnen Bildschirme bewirken, was sie in das signierte Protokoll schreiben und wo sich die ausführliche Anleitung befindet. Das Fenster zeigt jeweils einen Arbeitsbereich an: ein Telegram-Konto mit eigenen Quellen, einem eigenen Protokoll und einem eigenen Signaturschlüssel. Mit dem Auswahlfeld oben in der Seitenleiste kann man zwischen den Arbeitsbereichen wechseln. Die Adresse enthält den Arbeitsbereich (`?ws=…`); solange die Adresse, der Auswähler und das geladene Konto nicht übereinstimmen, bleiben Aktionen gesperrt. Verwenden Sie die [Vergleichsmethoden](https://github.com/phishdestroy/TgWitness/blob/main/docs/COLLECTION-MODES.md), um zwischen Live- Beobachtung, vollständigem Verlauf, Exporten neuer Konten/Chats und der Übergabe gespeicherter Datensätze zu wählen. Die Seite Exporte enthält denselben Vergleich oberhalb der Download-Steuerelemente. **Auf dieser Seite** - [Orientierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#find-your-way) - [Hier beginnen](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#start-here) - [Chats](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#chats) - [Journal](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#journal) - [Quellen](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#sources) - [Exporte](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#exports) - [Einstellungen, Konten und Verbindung](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#settings-accounts-and-connection) - [Extras](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#extras) - [Schutzmodi](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#protection-modes) - [Weitere Tools](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#more-tools) ## Finden Sie sich zurecht Die täglichen Bereiche befinden sich oben in der Seitenleiste, **„Konten“** ist unter **„Arbeitsbereich“** zu finden, und alles andere ist unter **„Weitere Tools & Einstellungen“** zu finden. Der Schalter **für die Oberflächenebene** in der oberen Leiste legt fest, wie viele Bereiche angezeigt werden: | Ebene | Abschnitte in der Seitenleiste | | --- | --- | | Einfach | Startseite, Chats, Änderungen, Archive und Einstellungen | | Standard | Außerdem Case Board, Konten und Zugriff | | Experte | Außerdem: Quellen, Extras, „Das Archiv befragen“, Parameter, Konto, Systemprotokoll und Integrationen | Einfache Aufrufe: „Hier starten“, „Journal“ und „Exporte“, **„Startseite**“, **„Änderungen“** und **„Archive**“. Eine Stufe blendet lediglich Abschnitte aus. Eine ausgeblendete Funktion bleibt weiterhin aktiv, und der Server überprüft jede Berechtigung eigenständig. Stufe, Sprache, Design und Zeitzone werden pro Benutzer und Arbeitsbereich gespeichert; siehe [Einstellungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/). Die obere Leiste enthält außerdem: - **Zu einem Abschnitt springen** (Strg+K oder ⌘K auf einem Mac): Finden Sie einen Chat, einen Parameter oder einen Tagebucheintrag durch `#number`. Mit den Pfeiltasten navigieren, mit Enter öffnen, mit Esc schließen. - **Benachrichtigungen**: Probleme und Änderungen im Chat, die aus dem Journal abgeleitet wurden. **Mit „Alle als gelesen markieren“** wird der Zähler zurückgesetzt, und **„Benachrichtigungsregeln“** öffnet die Regeln. Die Zustellung an Telegram, Discord oder per E-Mail wird unter [„Extras → Benachrichtigungen“](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#notifications) eingerichtet. - Die Verbindungsanzeige für diesen Arbeitsbereich. **Der „Collector Health“-Status** unter der oberen Leiste unterteilt diesen in die Telegram-Verbindung, die Ereignisaufnahme, die Quellen und die Anhangswarteschlange. - **„Lock**“: Schließt das Fenster in diesem Browser. Die Sammlung läuft auf dem Server weiter. - Der Schutzmodus neben der Versionsnummer; siehe [Schutzmodi](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#protection-modes). Der Demo-Arbeitsbereich enthält fiktive Nachrichten und stellt niemals eine Verbindung zu Telegram her. Aktionen, die einen echten Arbeitsbereich verändern würden, werden dort abgelehnt. ## Hier beginnen Wählen Sie eine Aufgabe aus. **Mit „Mein Konto exportieren“** werden die Inhalte heruntergeladen, auf die das Konto derzeit Zugriff hat. **„Einer Untersuchung folgen“** protokolliert neue Nachrichten, beobachtete Bearbeitungen und Löschbenachrichtigungen aus den von Ihnen ausgewählten Chats. Die Einrichtungskarte zeigt die drei Schritte: Konto verbinden, Quellen auswählen, Beobachtung starten. Die Zielfrage bleibt auf dieser Seite stehen, bis Sie sie beantworten oder überspringen. Ein neuer Arbeitsbereich öffnet stattdessen die [erste Einrichtung](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/). ## Chats Gespeicherte Unterhaltungen, standardmäßig schreibgeschützt. - Durchsuche die Liste nach Namen oder ID. **Mit „Auswählen“** kannst du beobachtete Chats hinzufügen oder entfernen. **„Telegram-Link öffnen**“ akzeptiert einen Benutzernamen oder einen Einladungslink und speichert eine Vorschau im Journal. **„Beitreten / Öffnen und beobachten**“ tritt dem Chat bei und fügt ihn deinen Quellen hinzu; das Öffnen eines Bots sendet diesen `/start`. - Die Chat-Kopfzeile zählt die Nachrichten **gelöscht, Text beibehalten**, **vor dem Speichern gelöscht** und **Bei erneuter Überprüfung nicht gefunden**. Die Chat-Liste und die Benachrichtigungen verwenden dieselben Definitionen. Eine gelöschte Nachricht ist rot und behält ihren gespeicherten Text bei; eine bearbeitete Nachricht behält jede gespeicherte Version bei. Jede Löschung gibt an, was bekannt ist: wann sie gesehen wurde, dass Telegram nicht meldet, wer sie gelöscht hat, oder dass nur die Benachrichtigung angekommen ist. - **Der Ladeverlauf** zeigt die letzten 100, 250 oder 500 Nachrichten in dieser Ansicht und im Journal an. Um alle aktivierten Quellen zu laden, wählen Sie [„Quellen“ → „Vollständiger Verlauf](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#sources)“. - Mit **„Chat exportieren“** wird der gesamte sichtbare Verlauf als signierte `chat.json` und `chat.html`. Mehrere verbundene Konten können sich die Arbeit teilen: Jedes lädt seinen eigenen Bereich von Nachrichtennummern herunter und signiert seinen Teil, und das Konto, das den Export startet, signiert das Archiv. Siehe [„Einen Chat exportieren](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Chat-Export.md)“. - **Unter „Personen“** werden alle Personen aufgelistet, deren Nachrichten in diesem Chat gespeichert sind. Personenprofile sind standardmäßig deaktiviert, da es sich um personenbezogene Daten Dritter handelt. Sind sie für einen Chat aktiviert, zeigt ein Profil den Namen und den Verlauf der Benutzernamen, Telegram-Flags, Avatar-Hashes, Aktivitäten, wer wem antwortet, andere beobachtete Chats sowie erwähnte Wallets, Telefonnummern, Benutzernamen und Links an. Jede Angabe verweist auf den entsprechenden Datensatz. **Beim Exportieren von Profilen** wird eine signierte Datei gespeichert, optional in einem passwortgeschützten ZIP; beim Deaktivieren der Profile wird die Profildatei gelöscht. Siehe [Personenprofile](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#people-profiles). - **Profil jetzt speichern** erstellt einen Schnappschuss des Chats oder des Bot-Profils: Beschreibung, Mitglieder, Einladungslink, Bot-Befehle. ### Schreibgeschützt, Senden und Geheimnisse Zwei Schalter oberhalb der Nachrichten schützen das Konto und den Leser: - **Der schreibgeschützte Modus** ist aktiviert, wenn ein Chat geöffnet wird. Deaktivieren Sie diese Option, um Nachrichten zu senden oder Bot-Schaltflächen anzuklicken. Bei jeder Aktion wird gefragt: **„Als @Konto senden?**“ oder **„Diese Bot-Schaltfläche als @Konto anklicken?**“, um Sie darauf hinzuweisen, dass Chat-Teilnehmer dies sehen und dass die Aktion in das signierte Protokoll aufgenommen wird. **Die Option „In diesem Chat 10 Minuten lang nicht erneut fragen“** überspringt die Frage für eine Weile. Das Senden ist für das Ziel **„Beweismaterial für einen Fall**“ deaktiviert, sowohl im Bedienfeld als auch in der API. - **„Mask Secrets“** verbirgt alles, was wie ein Passwort, ein Anmeldecode, ein API-Schlüssel oder Hash, ein Bot-Token, eine Sitzungs-String, ein privater Schlüssel, ein JWT oder eine Zahlungskartennummer aussieht (Kartennummern werden anhand der Luhn-Summe überprüft). **Mit „Show“** wird ein Wert angezeigt; die Anzeige wird im Journal protokolliert. Auch das Deaktivieren der Maskierung für diesen Browser wird protokolliert. Es ändert sich lediglich die Anzeige: Die ursprünglichen Datensätze und alle Exporte behalten den vollständigen Text bei. ## Protokoll Alle vom Arbeitsbereich signierten Aufzeichnungen, sortiert nach dem neuesten Datum zuerst. - **Die Übersicht** zählt die beobachteten Nachrichten, aufgezeichneten Bearbeitungen, Löschmeldungen und ausgewählte Quellen. - **Ereigniszeitleiste** filtert nach Ereignistyp (alle, Bearbeitungen, Löschungen, Reaktionen, Mitgliedschaft, Berichterstattung), nach Text und nach Quelle. **Frühere Ereignisse laden** blättert zurück. - Öffnen Sie einen Datensatz, um dessen Details, Hash und Nutzdaten anzuzeigen. **Der Link zu diesem Datensatz** ist eine Adresse, über die derselbe Datensatz geöffnet wird. Mögliche vertrauliche Informationen werden in dieser Vorschau maskiert; bei Exporten bleibt das Original erhalten. - Das Protokoll ist schreibgeschützt: Im Bedienfeld kann kein Datensatz bearbeitet oder gelöscht werden. Überprüfen Sie dies unter **„Exporte“ → „Protokoll überprüfen“** oder `python -m tgwitness.verify`; siehe [„Exportieren und Überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/)“. ## Quellen Welche Unterhaltungen dieser Arbeitsbereich aufzeichnet und welche Inhalte daraus gespeichert werden. Änderungen gelten für zukünftige Aktivitäten; gespeicherte Aufzeichnungen bleiben erhalten. **„Chatliste aktualisieren“** liest die Chats und Ordner des Kontos aus. Es werden keine Nachrichten heruntergeladen. ### Geltungsbereich - **Was dieses Konto aufzeichnet** : **Ausgewählte Chats** (nur die Chats, die Sie hinzufügen), **Telegram-Ordner** (einer der Ordner des Kontos, einschließlich der Chats, die später hinzugefügt werden) oder **Gesamter Beitrag** (jeder Chat sowie jeder neue Chat, jede neue Gruppe, jeder neue private Chat oder jeder neue Bot, sobald er erscheint). **Untersuchungsmodus** ist für ein dediziertes Konto vorgesehen: Es zeichnet alles auf, was das Konto sieht, seine eigenen Nachrichten und Tastendrücke, und speichert das Profil jedes neuen Chats sowie die zuvor sichtbaren Nachrichten sofort. Das [Spezieller Leitfaden für Konten](https://phishdestroy.github.io/TgWitness/docs/dedicated-account/) erklärt, warum du niemals dein Hauptkonto verwenden solltest. - **Quellentypen** beschränken den Ordner- und den Gesamtkonto-Modus auf Kanäle, Gruppen, private Chats und Bots. **„Eigene Aktionen“** fügt die eigenen Nachrichten, Bearbeitungen und Tastenanschläge bei Antworten des Kontos hinzu. - **Wenn ein neuer Chat oder Bot erscheint**: Speichere dessen Profil und bis zu der gewählten Anzahl seiner zuletzt sichtbaren Nachrichten. Einschränkungen: Der veröffentlichte Cloud-Collector empfängt keine geheimen Chats. Die separate [-Pseudo-Secret-Schnittstelle und ihre Demo](https://phishdestroy.github.io/TgWitness/de/docs/reference/secret-chats/)-Version sind mit ihrem Entwicklungsstand und den noch bestehenden Mängeln dokumentiert. Es wird nichts aufgezeichnet, solange TgWitness nicht läuft; nach einem Neustart holt es nur das nach, was Telegram noch zurückgibt, und der Bericht zeigt die Lücke an. Chats, die über das Limit der Chat-Liste hinausgehen (1,000-Dialoge, sofern nicht in den Parametern geändert), werden hinzugefügt, sobald sie das nächste Mal aktiv werden. Inline-Bot-Schaltflächen, die in einer anderen App gedrückt werden, sind unsichtbar; die Antwort des Bots wird aufgezeichnet. ### Betroffene Chats Filtern Sie nach Status (**Aktiviert**, **Pausiert**, **Priorität**, **Ausgeschlossen**, **Unbestätigter Zugriff**, **Ignoriert**) und Typ und führen Sie dann Aktionen für eine Auswahl durch: aktivieren, pausieren, Priorität setzen oder entfernen, aus dem Umfang ausschließen oder entfernen. Das Status-Symbol zeigt nur den Status an; Aktionen befinden sich im Menü jeder Zeile mit einer Beschreibung ihrer Funktion. Das Pausieren und Ausschließen erfordert eine Bestätigung, auch bei Massenaktionen. Beim Entfernen einer Quelle wird nach deren Namen gefragt und die zugehörigen Personenprofile gelöscht; die gespeicherten Einträge verbleiben im Journal. Eine Quelle, die nicht in der Chat-Liste des Kontos angezeigt wird, ist **Empfang von Updates, die nicht in der Chat-Liste erscheinen**, während weiterhin Aufzeichnungen eingehen; andernfalls **Zugriff unbestätigt**. **Verfügbare Chats** fügt Chats mit **Ausgewählte hinzufügen** oder **Alle Treffer hinzufügen** hinzu. ### Vollständiger Verlauf Lädt den verfügbaren Verlauf jeder aktivierten Quelle in „Chats“ und das Journal. Der Fortschritt bleibt nach einem Neustart erhalten; Anhänge richten sich nach Ihren Medieneinstellungen. Siehe [Quellenverlauf](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/). ### Aufzeichnung - **Wählen Sie aus, welche Änderungen beibehalten werden sollen**: neue Nachrichten, Bearbeitungen, Löschbenachrichtigungen, sichtbare Reaktionen, Beitritte und Austritte. Eine Voreinstellung ändert das Formular; **mit „Aufzeichnungseinstellungen speichern“** wird sie übernommen. Das erneute Aktivieren einer Kategorie stellt verpasste Ereignisse nicht wieder her. - **Medien nach Möglichkeit sichern**: Anhänge bis zu einer bestimmten Dateigröße herunterladen, pro Typ zwischen 1 und 2.000 MiB festlegen und die Videolänge in Sekunden begrenzen (0 bedeutet keine Begrenzung). Jeder Download-Versuch wird mit einem Ergebnis protokolliert. - **Überprüfung**: Prioritätschats alle paar Minuten, andere Chats selten, damit das Konto die „FloodWait“-Grenzen von Telegram nicht überschreitet. Mit „0“ wird eine Gruppe deaktiviert. Markieren Sie Prioritätschats in der Liste mit dem Stern; die Anzahl der Chats pro Durchlauf und die Pause zwischen den Chats finden Sie unter „Parameter“. Siehe [Sammlung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/). ## Exporte **Unter „Downloads“** werden Dateien vorbereitet; unter **„Build-Bericht“** wird festgelegt, wie die Berichte aussehen sollen. | Was | Verwenden Sie es für | Anleitung | | --- | --- | --- | | Kontoexport | Ein aktueller Überblick darüber, was das Konto derzeit lesen kann | [Kontoexport](https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/) | | Kopie teilen | Eine vereinfachte Version eines fertigen Kontoexports | [Offenlegung](https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/#prepare-a-disclosure-for-a-lawyer-or-another-recipient) | | Signiert ZIP | Journal, Bericht, Anhänge und Verifizierungstools innerhalb einer festen Journalgrenze | [Exportieren und überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) | | Bericht im HTML-, PDF- und JSON-Format | Ein versiegelter, lesbarer Bericht | [Fallberichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) | | JSONL, CSV | Originalaufzeichnungen mit Signaturen; eine formelsichere Tabellenkalkulation | [Exportieren und überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) | | Auszug aus der Übergabe | Nur die Chats, Zeiträume und Personen, die ein Empfänger benötigt | [Beweismittel](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#investigation-handoff) | | Chat-Export | Ein Chat als signierte Datei `chat.json` und `chat.html` | [Einen Chat exportieren](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Chat-Export.md) | - **Die Verschlüsselung der oben genannten Downloads mit einem Passwort** (mindestens 12 Zeichen) speichert eine AES-256-Datei ZIP, die mit 7-Zip oder WinRAR geöffnet werden kann. Die darin enthaltene signierte Datei bleibt unverändert. Das Passwort wird nicht gespeichert. - **Vorbereitete Exporte** speichern bis zu 20 Dateien mit einer Gesamtgröße von bis zu 2 GiB sowie die aktuellste Datei für wiederholte Downloads, jeweils mit einem SHA-256. Die Vorbereitung einer Datei stellt keine Zustellung dar. - Wenn der Browser den Speicherdialog ablehnt, weicht das Panel auf einen normalen Download aus. - **Ihre Signaturidentität** zeigt den Schlüssel-Fingerabdruck an. **Checkpoint speichern** und **Signierte Ausführungsbestätigung herunterladen** liefern Ihnen Aufzeichnungen, die Sie außerhalb des Collectors aufbewahren können. **Anfrage für Zeitstempel vorbereiten** erstellt eine RFC-3161-Anfrage, ohne einen Dienst zu kontaktieren. ## Einstellungen, Konten und Verbindung - **Einstellungen**: Ziel, Verbindung, Aufzeichnungsumfang und Benutzeroberfläche. Siehe [„Erste Einrichtung und Einstellungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/settings/)“. - **Konten**: Jeder Arbeitsbereich mit seinem Status, seinen Quellen, Ereignissen und der Anhangswarteschlange. Filtern nach **„Erfordert Aufmerksamkeit“**, **„Wird gesammelt“**, **„Offline“ oder „Pausiert“** oder **„Nicht verbunden“**, eine Auswahl pausieren oder fortsetzen, Kontodateien in großen Mengen importieren und Gruppen verwalten. Siehe [Konten](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/). - **Konto**: Anmeldung und Verbindungsroute dieses Kontos. Direkt, ein WireGuard- Profil, Ihr eigener Proxy, der öffentliche MTProto-Pool oder WARP; bereiten Sie eine Route vor, prüfen Sie sie und wenden Sie sie dann auf dieses Konto, eine Gruppe oder alle Konten an. Siehe [„Verbindung“ und „](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/)[Proxys](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Proxies.md)“. ## Extras Optional: Ein Konto und Quellen reichen aus, um mit dem Sammeln zu beginnen. Nur die von Ihnen gewählte Option öffnet ihre Einstellungen, und es wird nichts automatisch verbunden. Die Karte **„Schutzstufe“** oben zeigt den [Schutzmodus](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#protection-modes) an. | Karte | Was es bietet | Anleitung | | --- | --- | --- | | Speicher & Speicherplatz | Backups, das Verschieben älterer Dateien in Ihre Cloud, eine Beweiskopie, die nicht gelöscht werden kann | [Speicher](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/) | | Ziel & Schutzstufe | Empfohlene Einstellungen für Ihr Ziel und zwei Skalen | [unten](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#goal-and-protection-level) | | Benachrichtigungen | Probleme, geänderte Nachrichten und eine tägliche Zusammenfassung; dein eigener Kontrollbot | [unten](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#notifications) | | Beweismaterial & Backups | Zeitstempel, weitere Zeugen und eine verschlüsselte externe Kopie | [unten](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#evidence-and-backups) | | Server rund um die Uhr | Ein Cloud-Server ohne SSH, der über das Panel erstellt und gelöscht wird | [Hohe Sicherheit](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#from-the-panel) | | Unabhängiger Zeuge | Signierte Checks, die in Ihrem Telegram-Kanal oder auf Discord veröffentlicht werden | [Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) | | Code-Prüfung | Vergleicht das laufende Programm mit einem öffentlichen GitHub-Commit | [unten](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#code-check) | ### Ziel und Schutzstufe Vier Fragen: 1. **Wozu dient es? Als** persönliches Protokoll, für Ermittlungen oder als Beweismaterial für einen Fall. 2. **Wie viel möchten Sie beobachten?** Einige Chats (bis zu etwa 50), viele Chats (bis zu etwa 500) oder ganze Konten. Dadurch wird die Obergrenze für die Chat-Liste auf 1.000, 3.000 oder 20.000 festgelegt. 3. **Fotos und Dateien?** Nur Text, Fotos und kurze Medien (Fotos 20 MB, Videos 100 MB) oder alles (Videos und Dokumente mit jeweils bis zu 1 GB). Bei der Option „Alles“ mit ganzen Konten bleiben zudem 4 GiB Speicherplatz frei. 4. **Wo läuft es? Auf** diesem Computer oder auf einem Server, der ständig in Betrieb ist. Der Vorschlag listet unabhängige Zeitstempel, „drand“ und die Geräteliste von Telegram auf, jeweils mit einer Zeile dazu, was hinzugefügt wird. Zeitstempel werden alle 60, 30 oder 10 Minuten für eine persönliche Aufzeichnung, eine Untersuchung oder Beweismittel gesetzt; „drand“ und die Geräteliste benötigen Zeitstempel. **Anwenden** ändert nur diese, die Anhangsrichtlinie und die beiden oben genannten Parameter. Jede Änderung ist ein Journaleintrag, dazu `setup.applied`. Benachrichtigungen, eine externe Kopie, ein Server, Gateway-DNS, die Codeüberprüfung und ein Zeuge werden als nächste Schritte mit eigenen Formularen angeboten. Zwei Skalen werden anhand der festgelegten Werte berechnet, nicht anhand des Ziels: | Umfang | Punkte | | --- | --- | | Glaubwürdigkeit | Signiertes Journal 1, Zeitstempel 3, drand 1, Geräteliste 1, Code-Prüfung, die übereinstimmt 1, Witness-Abfrage 1, beglaubigter Server 2, Gateway-DNS-Protokoll 1 | | Zuverlässigkeit | Ständig aktiver Server 3, externe Kopie 3, Object Lock 1, Problembenachrichtigungen 1 | **Maximal** 80 % Lesezugriffe, 50 % **hoch**, 25 % **mittel**, darunter **grundlegend**. Die Zuverlässigkeit berücksichtigt derzeit einen stets aktiven Server gemäß der Antwort auf Frage 4, bevor ein Server überprüft wird. ### Benachrichtigungen Benachrichtigungen werden über Apprise an Telegram, Discord, Slack, ntfy, E-Mail, Matrix und über 100 weitere Dienste gesendet. Wählen Sie einen Dienst aus, füllen Sie ein oder zwei Felder aus und senden Sie einen Test, oder fügen Sie Apprise-Adressen direkt ein. - **Probleme**: Festplatte fast voll, Konto abgemeldet, Fehler beim Erfassen, Kopieren oder beim Zeitstempel. Auf einem abgeschotteten Server stellen ein offener SSH-Port oder eine Anmeldung ebenfalls ein Problem dar. - **Änderungen**: gelöschte, bearbeitete und fehlende Nachrichten in beobachteten Chats, zusammengefasst in einer Benachrichtigung pro Überprüfung (jede Minute, sofern in den Parametern nicht anders festgelegt). - **Abgeschlossene Aufgaben**: Verlauf, Exporte und Sicherungskopien. - **Tägliche Zusammenfassung** zur gewählten Uhrzeit (Serverzeit). Benachrichtigungen enthalten Chat-Namen und Anzahlangaben. Nachrichtenauszüge sind standardmäßig deaktiviert; wenn sie aktiviert sind, verlässt der Nachrichtentext diesen Rechner. **Dein Operator-Bot** ist ein eigener Bot von @BotFather, der `/status` und `/stats`und optional `/pause`, `/resume` und `/copy`. Nur die aufgeführten Chats und Telegram-Benutzer-IDs können ihn nutzen; der Gesprächstext verbleibt im Arbeitsbereich. Verwenden Sie einen separaten Bot, wenn eine andere Anwendung dessen Befehle bereits empfängt. Siehe [Benachrichtigungen](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Notifications.md) und [Operator-Bot](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#operator-bot-and-completion-notices). ### Beweismaterial und Backups - **Unabhängige Zeitstempel** sendet nur das SHA-256 jedes signierten Checkpoints an RFC 3161- Autoritäten und OpenTimestamps-Kalender, alle 5 bis 1.440 Minuten. **Jetzt verankern** führt einen Durchlauf durch. Siehe [Zeitstempel](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/). - **Weitere Zeugen**, die jeweils deaktiviert sind, bis sie ausgewählt werden: die neueste „drand“-Runde, Telegrams Liste der angemeldeten Geräte ohne IP-Adressen und das Protokoll der Cloudflare Gateway-DNS-Abfragen des Servers . Siehe [optionale Aufzeichnungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#optional-records-in-evidence-mode-drand-and-telegram-devices). - **Die verschlüsselte Sicherung** kopiert das Journal, die Dateien, die Checkpoints und die Chat-Exporte in einen S3-kompatiblen Speicher (Wasabi, Amazon S3, Backblaze B2, Cloudflare R2, MinIO). Alles wird zunächst auf diesem Rechner verschlüsselt. **Laden Sie den Verschlüsselungsschlüssel herunter** und bewahren Sie ihn getrennt auf: Ohne ihn kann die Kopie nicht gelesen werden. „Object Lock“ im Governance- oder Compliance-Modus verhindert das Löschen von Objekten für eine festgelegte Anzahl von Tagen. Siehe [externe Kopie](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Off-site-Copy.md). ### Code-Prüfung Prüft, ob das installierte Programm mit einer veröffentlichten Version übereinstimmt. 1. Geben Sie ein GitHub-Repository (das offizielle ist bereits eingetragen) sowie ein Tag, einen Branch oder einen Commit ein. 2. **Jetzt prüfen** fragt über die Route dieses Arbeitsbereichs für externe Anfragen die GitHub-API ab, um die Dateiliste dieses Commits abzurufen. Es vergleicht die Git-Blob-ID jeder gemessenen Programmdatei mit dem Commit. Ein Windows-Checkout mit konvertierten Zeilenenden passt weiterhin. 3. Das Ergebnis listet geänderte, zusätzliche und fehlende Dateien auf (jeweils bis zu 50) und wird als ein `source.checked` Protokoll. Das Ergebnis gilt nur so lange als aktuell, wie die ausgeführten Programmdateien unverändert bleiben: Überprüfen Sie dies nach einem Update erneut. Es wird kein Token benötigt und es funktionieren nur öffentliche Repositorys; Chats und Anmeldedaten werden nicht hochgeladen. Eine Übereinstimmung identifiziert den Code auf der Festplatte. Es handelt sich nicht um eine Hardware-Attestierung; dazu siehe [Phala Cloud](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#confidential-vm-on-phala-cloud-intel-tdx). ## Schutzmodi Der Umschalter neben der Versionsnummer zeigt den gewählten Modus an und wie viele der 18 Schutzebenen aktiv sind, zum Beispiel `🟠 Witnessed 9/18`. **Das Ändern des Modus** unter **„Extras“ → „Schutzstufe“** öffnet die Auswahl. Ein Modus beschreibt ein Ziel und listet auf, was noch fehlt; Aufzeichnung, Signierung und gespeicherte Einstellungen sind in jedem Modus identisch. | Modus | Für | Fügt hinzu | | --- | --- | --- | | 🟢 Einfach | Einen Chat beobachten und eine Kopie aufbewahren | Chats, das Tagebuch und Chat-Exporte; die Signierung läuft im Hintergrund | | 🟡 Signiert | Meldungen an eine Plattform, einen Host oder eine Missbrauchsstelle | Signiertes Archiv, Journalprüfung, Checkpoints, Übergabeauszug | | 🟠 Beglaubigt | Fälle, in denen jemand behaupten könnte, der Datensatz sei verändert worden | Ein unabhängiger Zeuge, der signierte Journal-Köpfe veröffentlicht | | 🔴 Gerichtsfähig | Beweismaterial für einen Anwalt, die Polizei oder ein Gericht | Zeitstempel, eine verschlüsselte externe Kopie, Falldetails in Berichten | | 🟣 Von GitHub verifiziert | Aufzeichnungen, deren Software jeder überprüfen können muss | Code-Prüfung und Erfassung von GitHub Actions | | ⚫ Mossad | Fälle mit hohem Einsatz gegen einen finanzstarken Gegner | Ein abgeschotteter 24/7-Server, eine versteckte IP-Adresse, alle 18 Ebenen | Die Ebenen: jeder Datensatz wird signiert und verkettet; eine signierte Ausführungsbestätigung; Anhänge, die mit SHA-256 gespeichert werden; signierte Checkpoints; Nachprüfungen; Problemwarnungen; schreibgeschützter Witness-Zugriff; ein Witness, der planmäßig überprüft; RFC-3161-Zeitstempel; OpenTimestamps-Nachweise; ein verifizierter aktueller Zeitstempel; eine verschlüsselte externe Kopie; Fall-Details in Berichten; eine Code-Übereinstimmungsprüfung ; Telegram sieht die IP-Adresse dieses Geräts niemals; externe Anfragen über einen Proxy; Object Lock auf der Kopie; ein versiegelter Server mit Anbieterdaten. Eine deaktivierte Ebene verfügt über **„Einrichten“**, wodurch das entsprechende Formular geöffnet wird. Die Auswahl eines niedrigeren Modus erfordert eine Bestätigung und löscht nichts. ## Weitere Tools **Extras → Independent capture**: connect a separate browser or AyuGram recorder, pin its signing key, select capture options, start/pause, take snapshots and download verified signed archives. Each recorder has its own manual login, route, journal and key. Both connections start disabled. See the English [Independent capture guide](https://github.com/phishdestroy/TgWitness/blob/main/docs/OPTIONAL-CAPTURE.md). - **Das Archiv abfragen**: Gespeicherte Beobachtungen durchsuchen, die Quellen prüfen und dann entscheiden, ob sie an ein KI-Modell gesendet werden sollen. Siehe [Archivanalyse](https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/) sowie [lokale OCR und Transkription](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/). - **Parameter**: Begrenzungen und Tempo der Datenerfassung, erneute Überprüfungen, Downloads, Profile, Benachrichtigungen und Exporte. Suche nach Namen, Anzeige von **„Nur geänderte** Werte“ und Vorbereitung der Standardeinstellungen als Entwurf mit **„Standardeinstellungen wiederherstellen…“.** Mit**„Parameter speichern“** werden die Werte ab der nächsten Verwendung übernommen, und jede Änderung wird in einem Protokoll vermerkt. - **Zugriff**: separate Tokens für Prüfer, Analysten und Betreiber, beschränkt auf ausgewählte Arbeitsbereiche, Chats und Berechtigungen. Siehe [„Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/)“. - **Systemprotokoll** : Was dieser Prozess seit seinem Start getan hat (Verbindungen, Proxy-Änderungen, Anmeldungen, Ablehnungen, Einstellungsänderungen), wobei die IP-Adressen verborgen bleiben. **„Follow new lines“** sorgt dafür, dass die neueste Zeile im Blickfeld bleibt. Nachrichten verbleiben ausschließlich im Journal. - **Integrationen**: der KI-Anbieter, [schreibgeschützte MCP-Verbindungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/) und [signierte Webhooks](https://phishdestroy.github.io/TgWitness/de/docs/reference/webhooks/). - **Case Board**: private Teamnotizen, Lesezeichen und Ausschnitte neben den Beweismitteln. Siehe [Case Board](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/). - **GitHub Actions-Erfassung** unter „Exports“: ein aus Ihrem Fork erfasster Chat. Siehe [„Sealed Capture](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md)“. --- # Telegram · So funktioniert die Datenerfassung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/ Beobachtungsumfang, Live-Aktualisierungen, Nachprüfungen, Anhänge, eigene Aktionen und die Bedeutung von Lücken – Eintrag für Eintrag. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Beobachtungsumfang, Live-Aktualisierungen, Nachprüfungen, Anhänge, eigene Aktionen und die Bedeutung von Lücken – Eintrag für Eintrag. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Sammlung](https://github.com/phishdestroy/TgWitness/blob/main/docs/COLLECTION-MODES.md) ![Sammlung](https://phishdestroy.github.io/TgWitness/assets/chapter-collect.svg) TgWitness protokolliert, was ein verbundenes Telegram-Konto wahrnimmt. Das Protokoll bewahrt diese Wahrnehmungen, ihre Reihenfolge und den damit verbundenen Kontext. Es leitet keine nicht beobachteten Handlungen aus einer fehlenden Nachricht oder aus der Verbindung eines Kontos ab. **Auf dieser Seite** - [Von der Anmeldung bis zum Tagebuch](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#from-login-to-a-journal) - [Beobachtungsumfang: ausgewählte Chats, ein Ordner oder das gesamte Konto](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#observation-scope-chosen-chats-a-folder-or-the-whole-account) - [Umfang und Ereignisauswahl](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#scope-and-event-selection) - [Eigene Aktionen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#own-actions) - [Ermittlungsmodus: Teams beitreten und mit Bots kommunizieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#investigation-mode-joining-teams-and-talking-to-bots) - [-Überprüfungsstufen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#recheck-tiers) - [Nachrichtenverlauf und Zuordnung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#message-history-and-attribution) - [Historische Momentaufnahmen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#history-snapshots) - [Verarbeitung von Anhängen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#attachment-handling) - [Anhalten, sperren, Verbindung trennen und neu starten](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#pause-lock-disconnect-and-restart) - [Kontenisolierung und -überprüfung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#account-isolation-and-verification) ## Von der Anmeldung bis zum Protokoll Informationen zu selbstzerstörenden Fotos und Dateien finden Sie unter „[Selbstzerstörende Medien](https://github.com/phishdestroy/TgWitness/blob/main/docs/EPHEMERAL-MEDIA.md)“. Dort werden der Prioritäts-Worker, gespeicherte und nicht verfügbare Ergebnisse sowie die Grenzen der Blockierung von Lesebestätigungen im API-Collector erläutert. Ablaufdiagramm · Ein Benutzerkonto autorisieren → Wählen Sie zugängliche Gruppen und Kanäle aus; Wählen Sie zugängliche Gruppen und Kanäle aus → Einstellungen für Ereignisse und Anhänge speichern; Einstellungen für Ereignisse und Anhänge speichern → Beobachtung starten; Beobachtung starten → Erhalten Sie Updates vom aktiven Client; Erhalten Sie Updates vom aktiven Client → Richtlinien zu Quellen und Ereignissen anwenden; Richtlinien zu Quellen und Ereignissen anwenden → Eine signierte Beobachtung anhängen; Eine signierte Beobachtung anhängen → Das Protokoll einsehen oder exportieren; Eine signierte Beobachtung anhängen → Alle in der Warteschlange befindlichen Anhänge verarbeiten; Alle in der Warteschlange befindlichen Anhänge verarbeiten → Fügen Sie das Ergebnis des Downloads hinzu · Ein Benutzerkontoautorisieren · Wählen Sie zugänglicheGruppen und Kanäle aus · Einstellungen fürEreignisse und Anhängespeichern · Beobachtung starten · Erhalten Sie Updatesvom aktiven Client · Richtlinien zu Quellenund Ereignissenanwenden · Eine signierteBeobachtung anhängen · Das Protokoll einsehenoder exportieren · Alle in derWarteschlangebefindlichen Anhängeverarbeiten · Fügen Sie das Ergebnisdes Downloads hinzu **Diagramm als Text** 1. Ein Benutzerkonto autorisieren → Wählen Sie zugängliche Gruppen und Kanäle aus 2. Wählen Sie zugängliche Gruppen und Kanäle aus → Einstellungen für Ereignisse und Anhänge speichern 3. Einstellungen für Ereignisse und Anhänge speichern → Beobachtung starten 4. Beobachtung starten → Erhalten Sie Updates vom aktiven Client 5. Erhalten Sie Updates vom aktiven Client → Richtlinien zu Quellen und Ereignissen anwenden 6. Richtlinien zu Quellen und Ereignissen anwenden → Eine signierte Beobachtung anhängen 7. Eine signierte Beobachtung anhängen → Das Protokoll einsehen oder exportieren 8. Eine signierte Beobachtung anhängen → Alle in der Warteschlange befindlichen Anhänge verarbeiten 9. Alle in der Warteschlange befindlichen Anhänge verarbeiten → Fügen Sie das Ergebnis des Downloads hinzu Autorisierung, Zugriff auf eine Quelle, ein laufender Datenerfasser und die vollständige Übermittlung sind unterschiedliche Aspekte. Eine erfolgreiche Anmeldung gewährt nicht den Zugriff auf jede Gruppe. Eine hergestellte Transportverbindung bedeutet nicht, dass jede relevante Aktualisierung angekommen ist. ## Beobachtungsumfang: ausgewählte Chats, ein Ordner oder das gesamte Konto Quellen → **Der Beobachtungsumfang** bestimmt, welche Chats ein Arbeitsbereich aufzeichnet. | Modus | Aufzeichnungen | Neue Chats | | --- | --- | --- | | Ausgewählte Chats (Standard) | Nur die Chats, die Sie manuell hinzufügen | Wird niemals automatisch hinzugefügt | | Telegram-Ordner | Chats in einem der Ordner des Kontos: Chats, die namentlich aufgeführt sind, zuzüglich der Kategorien des Ordners (Kontakte, Nicht-Kontakte, Gruppen, Kanäle, Bots), abzüglich der ausgeschlossenen Chats und, sofern im Ordner angegeben, der archivierten Chats | Entsprechende Chats werden hinzugefügt, sobald sie aktiv werden; Chats, die Sie in Telegram zum Ordner hinzufügen, werden innerhalb einer Stunde erfasst. | | Gesamter Bericht | Jeder Chat, den das Konto sieht | Jeder neue Chat, jede neue Gruppe, jeder neue private Chat und jeder neue Bot wird in dem Moment hinzugefügt, in dem die erste Aktualisierung eintrifft. | - **Quellentypen** (Kanäle, Gruppen, private Chats, Bots) schränken die Modi „Ordner“ und „Gesamtes Konto“ ein. Ausgewählte Chats können beliebigen Typs sein, einschließlich privater Chats und Bots. - **Ausgeschlossene Chats** werden in keinem Modus aufgezeichnet. Im Ordner- und im Gesamtkonto-Modus führen die Funktionen *„Ausschließen“* und *„Entfernen“* bei einer Quelle dazu, dass diese in diese Liste aufgenommen wird, sodass sie vom Erfassungsbereich nicht erneut hinzugefügt wird. Wählen Sie den Chat erneut manuell aus (unter „Quellen“ oder aus den „Chats“), wird er aus der Liste entfernt. Die Liste fasst bis zu 5.000 Chats; wird diese Grenze überschritten, wird *der Befehl „Entfernen“* abgelehnt und der Chat kann stattdessen pausiert werden. - **Eigene Aktionen** (standardmäßig aktiviert): Nachrichten, die dieses Konto versendet, dessen Bearbeitungen sowie die Tastenanschläge auf der Antworttastatur. Bei Deaktivierung werden ausgehende Nachrichten und Bearbeitungen übersprungen. - Beim Wechsel zu einem Ordner oder zum gesamten Konto wird eine Bestätigung angefordert: Diese Modi zeichnen private Chats und Nachrichten Dritter auf und gehören ausschließlich in ein dafür vorgesehenes Konto. Die Bestätigung sowie jede Änderung des Erfassungsumfangs werden als signierte `scope.changed`-Datensätze gespeichert. - Durch den Scope hinzugefügte Chats erscheinen als Quellen mit der Kennzeichnung *„auto“* und werden als „`scope.applied`“ (zu Beginn und stündlich) oder „`source.discovered`“ (ein neuer Chat während der Beobachtung) aufgezeichnet. Beim Zurückwechseln zu ausgewählten Chats werden alle automatisch hinzugefügten Quellen angehalten. Was diese Modi nicht leisten können: - **Geheime Chats** fallen nicht unter diese Cloud-Erfassungsmodi. Eine separate [Implementierung für geheime Chats](https://phishdestroy.github.io/TgWitness/de/docs/reference/secret-chats/) befindet sich in der Entwicklung; sie ist in der dort dokumentierten Version des veröffentlichten Collectors nicht enthalten. - **Solange TgWitness nicht ausgeführt wird, erfolgt keine Aufzeichnung.** Nach einem Neustart fragt das Programm bei Telegram nach versäumten Aktualisierungen und überprüft die Chats erneut; nach längeren Ausfällen liefert Telegram jedoch nicht alle Daten zurück. In Berichten und in „`verify.py`“ werden solche Zeiträume als Lücken dargestellt (siehe [Erfassungsbereich](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#coverage-continuity-gaps-and-unobserved-ids)). - Zu Beginn werden nur die ersten 1.000 Dialoge aufgelistet (die Obergrenze ist unter **„Parameter“** festgelegt); ältere Chats werden hinzugefügt, sobald sie wieder aktiv werden. Der frühere Verlauf eines hinzugefügten Chats wird nicht abgerufen – erstellen Sie bei Bedarf einen Verlaufs-Snapshot oder einen vollständigen Chat-Export. - Sich ständig ändernde Ordnerstatus (stummgeschaltet, gelesen) werden nicht berücksichtigt: Solche Chats bleiben weiterhin im Beobachtungsbereich. - **Inline-Bot-Schaltflächen (Callback), die** in einer anderen App betätigt werden, sind für eine zweite Sitzung nicht sichtbar; die Antwort oder Bearbeitung des Bots wird aufgezeichnet. Tastatureingaben zur Beantwortung werden als ausgehende Nachrichten gesendet und mit „`button_press`“ gekennzeichnet. - Mehr Chats bedeuten mehr Anfragen. Telegram schränkt Konten bei einem als übermäßig erachteten Volumen ein, was ein weiterer Grund für die Verwendung dedizierter Konten ist. ## Umfang und Auswahl der Ereignisse Jeder Arbeitsbereich verfügt über eigene Quellen. TgWitness tritt keinen Gruppen bei, nimmt keine Einladungen an und listet nicht automatisch alle Mitglieder auf. Die Quellen müssen für das Konto bereits zugänglich sein. Beim Start gleicht der Collector ausgewählte Quellen mit den sichtbaren Dialogen des Kontos ab; die ersten 1.000 Dialoge werden überprüft, sofern unter **„Parameter → Chats aus der Liste des Kontos lesen**“ nichts anderes festgelegt ist. Eine fehlende Quelle wird als **„Zugriff unbestätigt“** markiert; es wird nicht davon ausgegangen, dass Sie entfernt wurden. | Einleitung | Erfasst | Auswirkung bei Deaktivierung | | --- | --- | --- | | Neue Nachrichten | Normale zugestellte Nachrichten | Bei späteren Bearbeitungen oder Löschungen steht möglicherweise kein zuvor erfasster Text zum Vergleich zur Verfügung. | | Bearbeitungen | Bereitgestellte bearbeitete Versionen der Nachrichten | Zwischenzeitliche Änderungen werden später nicht rekonstruiert. | | Löschungen | Löschhinweise mit festgelegter Geltungsbereich und Hinweise auf Kontoebene ohne festgelegten Geltungsbereich | Löschmeldungen werden nicht in das Protokoll aufgenommen. | | Reaktionen | Bereitgestellte Momentaufnahmen der Reaktionen | Separate Aktualisierungen zu Reaktionen werden nicht hinzugefügt. | | Mitgliedschaft | Versendung von Mitteilungen zum Mitgliederservice und Aktualisierungen für Teilnehmer | Diese Beobachtungen von Mitgliedern werden nicht hinzugefügt. | Die Einstellungen gelten für alle ausgewählten Quellen im Arbeitsbereich. Speichern Sie das Formular, um die Änderungen zu übernehmen; Änderungen werden mit signierten Vorher-Nachher-Werten protokolliert. Das Deaktivieren einer Kategorie führt nicht zur Löschung früherer Datensätze. Das erneute Aktivieren führt nicht zur nachträglichen Ergänzung versäumter Aktualisierungen. Betriebliche Protokolle und andere Ereignisse des Gruppendienstes bleiben von diesen Einstellungen unberührt. Nachrichten des Mitgliederservices können Nachrichtenprotokolle erstellen, wenn die Mitgliedschaft aktiviert ist, selbst wenn die normale Erfassung neuer Nachrichten deaktiviert ist. Erfasste Telegram- Objekte behalten eingebettete Metadaten bei; eine Einstellung ist keine Schwärzungsregel. **Löschungen in privaten Chats und normalen Gruppen** werden als Nachrichten-IDs ohne zugehörigen Chat erfasst. Diese Chats nutzen eine gemeinsame, kontoweite Nachrichten-ID-Sequenz; wenn also eine Nachricht mit dieser ID zuvor gespeichert wurde, ist der zugehörige Chat bekannt: Die Löschung wird in diesem Chat erfasst, wobei `chat_resolution` erläutert, wie dies geschieht. Niemals gespeicherte IDs bleiben eine **nicht zugeordnete Löschung** mit einer explizit unbekannten Quelle; der Collector unternimmt keine Vermutungen. Telegram gibt niemals an, wer eine Nachricht gelöscht hat; wenn die gelöschte Nachricht von diesem Konto gesendet wurde, wird dies im Datensatz vermerkt (`deleted_message_was_outgoing`), ohne den Löschenden namentlich zu nennen. ## Eigene Maßnahmen Vom beobachteten Konto gesendete Nachrichten werden mit „`outgoing`“ gekennzeichnet. Bei der Bearbeitung einer ausgehenden Nachricht wird darauf hingewiesen, dass in privaten Chats und Gruppen nur der Verfasser die Nachricht bearbeiten kann, während Beiträge in Kanälen auch von anderen Administratoren bearbeitet werden können. Wenn eine ausgehende Nachricht den Text einer Schaltfläche aus der zuletzt gespeicherten Antworttastatur in diesem Chat wiederholt, wird sie mit „`button_press`“ gekennzeichnet und enthält einen Link zu dem Datensatz der Tastatur. Der Ausschluss eigener Aktionen gilt auch für Hintergrundüberprüfungen und den automatischen Verlauf neuer Chats. Übersprungene ausgehende Nachrichten verschieben die Position der Überprüfung nach vorne, sodass sie spätere eingehende Nachrichten nicht blockieren können. Explizite Aktionen über das Bedienfeld und manuell angeforderte Verlaufs-Snapshots bleiben weiterhin aufgezeichnet. ## Ermittlungsmodus: Beitritt zu Teams und Kommunikation mit Bots **Quellen → Beobachtungsumfang → Untersuchungsmodus** bereitet den Umfang für ein spezielles Konto vor, das Team-Chats beitritt, Bots startet und an diese schreibt: das gesamte Konto, jeden Quellentyp, eigene Aktionen sowie für jeden Chat oder Bot, der erscheint, dessen Profil und die letzten 200 sichtbaren Nachrichten. Überprüfen Sie das Formular und klicken Sie auf **„Umfang speichern“**; der Wechsel zum gesamten Konto erfordert die übliche Bestätigung. - **Schaltflächen.** Schaltflächen unter einer Nachricht bleiben mit dieser erhalten und werden in **Chats** angezeigt: Links, Web- Apps, Anmeldelinks, zu kopierende Texte, Rückrufdaten, Inline-Abfragen, Anfragen nach einer Telefonnummer oder einem Standort. Links werden als Text angezeigt und vom Panel niemals geöffnet. Wenn ein Bot nur die Schaltflächen ändert (z. B. einen neuen Zahlungslink), handelt es sich um eine neue Version der Nachricht, sowohl bei Live-Updates als auch bei erneuten Überprüfungen. - **Neue Chats und Bots.** Im Ordner- und im Gesamtkonto-Modus **werden neue Chats oder Bots** unmittelbar nach ihrem **Erscheinen** gespeichert: - sein Profil als `source.profile`-Datensatz: Bot-Beschreibung und Befehle, der „Über“-Text eines Nutzers, einer Gruppe oder eines Kanals, Mitglieder, verknüpfter Chat und Einladungslink, sofern Telegram einen zurückgibt; - seine zuletzt sichtbaren Nachrichten (bis zu 1.000) als Verlaufs-Snapshot mit der Kennzeichnung „`new_chat`“: die früheren Nachrichten eines gerade betretenen Team-Chats oder das, was ein Bot gesagt hat, bevor die Beobachtung den Chat registriert hat. Bereits live gespeicherte Nachrichten werden nicht erneut aufgezeichnet. Chats, die sich bereits in der Liste befinden, wenn der Modus aktiviert wird, werden ohne Snapshots hinzugefügt. Ein FloodWait unterbricht diesen Vorgang vorübergehend und setzt ihn anschließend fort; Fehler werden protokolliert und die Live- Aufzeichnung des Chats wird fortgesetzt. Dies umfasst Wartezeiten während der Ermittlung der Identität des neuen Chats: Die ausstehende Profil-/Verlaufsaufgabe wird für einen erneuten Versuch beibehalten, und eine bereits bestehende, längere, kontoweite Wartezeit wird nicht verkürzt. - **Profile auf Anfrage.** **Chats → Profil → Profil jetzt speichern** speichert das aktuelle Profil einer beliebigen Quelle; das neueste wird über den Nachrichten angezeigt. - **Momentaufnahmen des Chat-Status (Vorschau).** Der Status außerhalb des Nachrichtenstroms ändert sich ohne eine Nachricht: Das Entpinnen jeder Nachricht hinterlässt keine Spur auf Nachrichtenebene, ein Administrator verliert seine Rechte, ein Geschenk wird ausgeblendet, umgewandelt, aufgewertet oder erstattet. Während der Beobachtung wird jede aktivierte Quelle regelmäßig ausgelesen und als signierter `chat.state`-Datensatz gespeichert: Titel, Benutzernamen, Beschreibung, Mitglieder- und Administratoranzahl, verknüpfter Chat, Slow-Modus, IDs der angehefteten Nachrichten (bis zu 100), Administratoren mit ihren Rechten und Titeln sowie Geschenke, die in Kanälen und Benutzerprofilen angezeigt werden (bis zu 100). Jeder Datensatz listet die Unterschiede zum vorherigen Snapshot auf: geänderte Felder mit Vorher- und Nachher-Angaben, hinzugefügte oder entfernte angeheftete Nachrichten, Administratoren und Geschenke, die hinzugefügt, geändert oder nicht mehr aufgeführt werden. Telegram gibt nicht an, wer etwas geändert hat oder wann dies zwischen den Snapshots geschehen ist. - Ein Teil, den Telegram zurückhält (zum Beispiel die Administratorliste eines Kanals für ein Mitglied, das kein Administrator ist), wird in `errors` benannt; sein früherer Wert wird beibehalten und in `carried_forward` aufgeführt, jedoch niemals als entfernt gemeldet. - Ein Datensatz, dessen einzige Änderungen Zählwerte sind, sowie eine Überprüfung, bei der keine Änderung festgestellt wurde, beziehen sich auf den letzten vollständigen Zustand mit `state_seq` und dem kumulativen `state_overrides`. Ein vollständiger Zustand wird mindestens alle sieben Tage und immer dann geschrieben, wenn sich etwas anderes als ein Zählwert ändert. - `parts_complete` kennzeichnet begrenzte Listen. Hinzufügungen erfordern eine vollständige frühere Liste, Entfernungen erfordern eine vollständige aktuelle Liste, und explizite leere Werte dokumentieren das Löschen. - **Parameter → Chat-Zustand** legt das Intervall fest (standardmäßig 12 Stunden, 0 deaktiviert Snapshots deaktiviert), die Pause zwischen den Quellen, welche Teile gelesen werden und ob Überprüfungen, bei denen keine Änderung festgestellt wurde, aufgezeichnet werden. `FLOOD_WAIT` und `FLOOD_PREMIUM_WAIT` stoppen die verbleibenden Snapshot-Anfragen, bewahren eine eventuell noch bestehende kontoweite Frist bei und lassen den unterbrochenen Chat nach dieser Wartezeit für einen weiteren Versuch zu. - **Nicht sichtbar.** Inline-Schaltflächen (Callback), die in einer anderen Telegram-App gedrückt werden, das Popup oder der Link, mit dem ein Bot auf einen solchen Druck reagiert, sowie Einladungslinks, die in einer anderen App verwendet werden, erreichen TgWitness nicht. Was der Bot danach sendet oder bearbeitet, wird protokolliert. ### Maßnahme aus der Podiumsdiskussion **„Chats“** enthält nun einen Mini-Client, der das Telegram-Konto des ausgewählten Arbeitsbereichs nutzt: - Verfassen Sie eine Klartextnachricht oder wählen Sie **„Antworten“** unter einer gespeicherten Nachricht. Die zurückgesendete ausgehende Nachricht wird auch dann aufgezeichnet, wenn der Erfassungsbereich ausgehende Aktualisierungen ausschließt. - Drücken Sie **die Schaltfläche „Press“** unter einem aktuellen Callback oder einer Text-Schaltfläche. Der Server ruft die Nachricht erneut ab und lehnt die Aktion ab, wenn die Eingabe von der gespeicherten Version abweicht. Callback-Bestätigungen behalten den Popup-Text, die Warnmarkierung und die URL von Telegram bei; die Antwort wird zudem unterhalb der Unterhaltung angezeigt. URLs bleiben als auswählbarer Text erhalten und werden nicht automatisch geöffnet. - Erweitern Sie **den „Telegram öffnen“-Link**, geben Sie `@username`, einen öffentlichen `https://t.me/name`-Link, `https://t.me/+invite` / `joinchat/invite` oder einen Bot-Link mit `?start=parameter` ein und klicken Sie auf **„Vorschau speichern**“. Der ursprüngliche Link und die Telegram-Vorschau werden vor dem Beitritt signiert. **Beitreten / Öffnen und Beobachten**: Anschließend tritt der Nutzer der Gruppe/dem Kanal bei oder öffnet den Nutzer/Bot, fügt den Chat als aktivierte Quelle hinzu und sendet „`/start`“ an einen Bot, einschließlich dessen Startparameters. Eine Beitrittsanfrage, die auf die Genehmigung durch den Administrator wartet, wird als „ausstehend“ und nicht als Mitgliedschaft erfasst. Aktivieren Sie **„Beobachtung starten“**, um eingehende Antworten in Echtzeit zu erfassen. Die Funktionen des Bedienfelds funktionieren auch, während die Beobachtung pausiert ist; es wird jedoch nur garantiert, dass deren direkte Antworten gespeichert werden. Neu hinzugefügte Quellen verwenden die konfigurierten Einstellungen für Profil und Verlauf, wenn die Beobachtung läuft. Wenn eine Quelle pausiert ist, aktivieren Sie sie unter **„Quellen“,** bevor Sie eine Nachricht senden oder deren Schaltflächen betätigen. `interaction.preview`, `interaction.requested` und `interaction.result` sind gewöhnliche signierte Protokollereignisse, die in den Beweismittelexporten enthalten sind. Anfragen identifizieren das Konto, die Nachricht/Schaltfläche oder den Vorschau-Datensatz sowie, ob die Überwachung aktiv war. Empfangsbestätigungen unterscheiden zwischen Erfolg, Ablehnung, ausstehender Genehmigung und einem unbekannten Ergebnis. Eine unterbrochene Anfrage könnte Telegram erreicht haben: Überprüfen Sie den Chat, bevor Sie eine neue Aktion starten. Durch die Wiederverwendung einer Anfrage-ID wird die gespeicherte Bestätigung abgerufen, ohne die Aktion zu wiederholen – auch nach einem Neustart. Das Fenster behält die ID bei, wenn während der aktuellen Seitensitzung eine mehrdeutige Antwort für dieselbe Aktion erfolgt. Es behält diese ID auch bei, wenn die Aktualisierung der Ansicht nach einer erfolgreichen Aktion fehlschlägt: Die Bestätigung bleibt sichtbar, und durch erneutes Klicken wird sie abgerufen. RPCs für Rückrufe und Beitritte verfügen über einen einzigen Versuchsversuch; wiederholbare Lesevorgänge behalten ihre konfigurierte Wiederholungsrichtlinie bei. Ein sofortiger Wechsel des Chats löscht den Entwurf und das Antwortziel und deaktiviert das Senden, bis die neue Konversation geladen ist. Dieser Mini-Client verarbeitet Text- und Callback-Schaltflächen. Für Web-Apps, Anmelde-, Telefon- und Standortanfragen, Zahlungen, Inline-Abfragen und Anhänge ist weiterhin ein Telegram-Client erforderlich; die gespeicherten Metadaten der Schaltflächen bleiben sichtbar. Die neuen Steuerelemente verwenden englischen Text. ## Stufen erneut überprüfen Bei Nachprüfungen wird Telegram erneut nach übersehenen Nachrichten, Bearbeitungen und Nachrichten abgefragt, die nicht mehr zurückgegeben werden. Mit einem Stern gekennzeichnete Quellen sind Prioritätsquellen, die standardmäßig alle 15 Minuten erneut überprüft werden; alle anderen Quellen alle 6 Stunden. Ausgewählte Chats werden zunächst als Prioritätsquellen behandelt, Chats, die über einen Ordner oder das gesamte Konto hinzugefügt wurden, als reguläre Quellen. Pro Durchlauf werden höchstens 30 Quellen erneut überprüft, und der Rest wartet bis zur nächsten Minute; nach einer erneuten Verbindung werden prioritäre Quellen zuerst berücksichtigt. Beide Intervalle werden unter „Quellen“ → „Aufzeichnungseinstellungen“ → „Erneute Überprüfung“ festgelegt (0 deaktiviert eine Stufe) und werden als „`recheck.changed`“ aufgezeichnet. Verpasste Nachrichten werden ab der Stelle abgerufen, an der der vorherige Durchlauf aufgehört hat, und zwar höchstens so viele, wie unter **„Parameter → Wiederhergestellte verpasste Nachrichten pro Chat und Durchlauf**“ festgelegt ist (standardmäßig 1.000). Nach einer längeren Unterbrechung füllt die erneute Überprüfung daher die gesamte Lücke, selbst wenn Live-Nachrichten, die neuer sind als die Lücke, zuerst gespeichert wurden . Ein Chat, der noch dabei ist, den Rückstand aufzuholen, wird in der nächsten Minute erneut überprüft, anstatt auf sein Tier-Intervall zu warten; `recheck.completed` zeigt `continues_after` , bis der Vorgang abgeschlossen ist. Vergleiche umfassen Nachrichtentexte, Entitäten, Tastatureingaben (einschließlich Löschvorgänge) sowie den Inhalt und die Identität von Anhängen. Das bloße Ändern von Datei-Zugriffshashes oder Dateiverweisen stellt keine Bearbeitung dar, ebenso wenig wie das, was Telegram von sich aus einträgt: das Laden einer Link-Vorschau, Aufrufe von Stories, durch dieses Konto freigeschaltete kostenpflichtige Medien sowie der Erhalt einer Rechnung. Jede gespeicherte Version in „Chats“ ist mit ihrem vollständigen Protokoll-Eintrag verknüpft, einschließlich der Medien-Metadaten. ## Nachrichtenverlauf und Zuordnung Angenommen, der Datensammler registriert „Besprechung um 10:00 Uhr“, sieht später „Besprechung um 11:00 Uhr“ und erhält anschließend eine Löschmeldung. Es werden drei unterschiedliche Einträge angefügt. Der ursprüngliche Text bleibt erhalten, die Bearbeitung wird als separate Version gespeichert, und die Meldung dokumentiert, dass eine Löschung festgestellt wurde. Sollte die Erfassung erst nach dem Verschwinden der ersten Version begonnen haben, ist dieser Text nicht mehr verfügbar. Sollten während der Offline-Phase mehrere Bearbeitungen stattgefunden haben, können nur die anschließend erfassten Versionen gespeichert werden. Eine Löschmeldung kann Inhalte, die nie erfasst wurden, nicht wiederherstellen. Der Absender einer Nachricht ist nicht automatisch der Bearbeiter. Telegram gibt in der Regel weder die Person an, die eine Nachricht gelöscht hat, noch den genauen Zeitpunkt der Löschung. Unbekannte Akteure bleiben unbekannt. Reaktions-Snapshots und Teilnehmer-Updates enthalten lediglich die Zahlen und Identitäten, die Telegram für das Konto sichtbar macht. Sequenznummern geben die Reihenfolge der Beobachtungen an. Der UTC-Zeitstempel des Erfassers entspricht dessen lokaler Uhrzeit; ein Zeitstempel der Telegram-Quelle wird separat gespeichert, sofern dieser bereitgestellt wird. Keiner der beiden Zeitstempel stellt einen unabhängigen, vertrauenswürdigen Zeitstempel dar. ## Momentaufnahmen der Historie Ein Snapshot ruft die neuesten sichtbaren Nachrichten einer aktivierten Quelle ab, bis zu 500 pro Anfrage. Die Ergebnisse werden als Beobachtungen des Verlaufs gekennzeichnet. Manuelle Snapshots reservieren ein freies Konto; pausieren Sie vorher ausdrücklich die Überwachung. Wiederholte Beobachtungen bleiben separate Einträge. Die Momentaufnahmen entsprechen den Richtlinien für Anhänge, bleiben jedoch von den Schaltvorgängen bei Live-Ereignissen getrennt. Sie rekonstruieren keine gelöschten Nachrichten oder fehlenden Zwischenversionen. Sie können eine Momentaufnahme anfordern, während der Vorgang angehalten ist; alle darin enthaltenen Anhänge werden in die Warteschlange gestellt und warten, bis die Beobachtung beginnt und der Download-Prozess abläuft. Der Lauf **Verlauf** ist eine eigene exklusive Aufgabe: Er liest die ausgewählten Quellen und lädt deren vorgemerkte Anhänge nacheinander herunter, ohne die Überwachung zu starten. Pausieren gibt das Konto frei; Fortsetzen führt den gespeicherten Lauf weiter. Datums-, Sprach- und Antwortfilter über mehrere freie Konten beschreibt [Verteilter Chat-Export](https://github.com/phishdestroy/TgWitness/blob/main/docs/DISTRIBUTED-EXPORT.md). ## Umgang mit Anhängen Der Download von Anhängen ist standardmäßig aktiviert und wird angehalten, sobald weniger als 1 GiB freier Speicherplatz verfügbar ist. Der Collector führt die Beobachtung der Nachrichten und den Download-Auftrag gemeinsam aus. Der Auftrag behält den ursprünglichen Medien-Deskriptor und die Größenrichtlinie bei, sodass ein später bearbeiteter Anhang nicht unbemerkt ersetzt wird. Downloads werden nach der Erfassung der Nachrichten ausgeführt. Ein abgeschlossener Download erzeugt einen „`media.saved` “-Datensatz mit dessen SHA-256-Hash und Byteanzahl. Übersprungene, fehlgeschlagene, erneut versuchte und unterbrochene Vorgänge führen zu unterschiedlichen Ergebnissen. Ein in der Warteschlange befindlicher Auftrag ist kein Nachweis dafür, dass die Datei gesichert wurde. Die fertige Datei muss zudem mit der Byteanzahl im ursprünglichen, beobachteten Anhangsdeskriptor übereinstimmen. Eine zu kurze oder unerwartet lange Antwort wird nicht als gesichertes Medium erfasst. Die Speichergrenzen werden **pro Dateityp** festgelegt: Fotos, Videos, GIFs und Animationen, Rund-Video-Nachrichten, Sprachnachrichten, Musik und Audiodateien, Sticker sowie Dateien. Jeder Typ kann deaktiviert werden und verfügt über ein eigenes Größenlimit von 1 bis 2.000 MiB; neue Arbeitsbereiche beginnen mit 20 MiB für Fotos, 100 MiB für Videos, 50 MiB für Dateien, Audio und Rundvideos, 20 MiB für Sprachnachrichten und GIFs sowie 5 MiB für Sticker. In neuen Arbeitsbereichen sind GIFs und Sticker deaktiviert, bis sie aktiviert werden. Arbeitsbereiche mit Richtlinien, die vor der Einführung der typbezogenen Begrenzungen gespeichert wurden, behalten alle Typen aktiviert und behalten ihre einheitliche Obergrenze für jeden Typ bei. *Die maximale Dateigröße* gilt für alle Typen gleichzeitig. Ein deaktivierter Typ erzeugt einen „`media.skipped`“-Datensatz; Dateien mit unbekannter Größe oder übergroße Dateien werden nicht heruntergeladen. Große Dateien erhalten zusätzliche Download-Zeit, basierend auf ihrer Größe und einer Basisgeschwindigkeit von 256 KiB/s. Aufträge bleiben nach einem Neustart erhalten, doch abgelaufene Verweise, verlorener Zugriff oder gelöschte Dateien können die Wiederherstellung dennoch verhindern. Wartende Aufträge behalten das für sie gespeicherte Limit bei, sodass eine Anhebung des Limits nur für neue Dateien gilt. Das Deaktivieren eines Typs oder das Herabsetzen seines Limits überspringt auch die davon ausgeschlossenen wartenden Dateien, für die jeweils ein „`media.skipped`“-Datensatz erstellt wird; das Deaktivieren von Downloads hält die Warteschlange an, bis sie wieder aktiviert werden. ## Anhalten, sperren, Verbindung trennen und neu starten | Handlung oder Zustand | Wirkung | | --- | --- | | Arbeitsbereich wechseln | Ändert die Ansicht des Panels; andere Collector-Instanzen behalten ihren Status bei. | | Das Fenster sperren oder einen Tab schließen | Der Server und die Überwachung bleiben dabei in Betrieb. | | Beobachtung unterbrechen | Hält diesen Collector an und bewahrt die in der Warteschlange befindlichen Anhänge auf. | | Eine Quelle deaktivieren | Verhindert künftige gezielte Erfassung; dafür in der Warteschlange befindliche Medienaufträge werden angehalten, solange die Funktion deaktiviert ist. | | Eine Quelle entfernen | Es ignoriert diese Quelle und löscht die zugehörigen Benutzerprofile; bereits gespeicherte Einträge verbleiben im Protokoll, das nur nachträglich ergänzt werden kann. Noch ausstehende Anhänge werden als fehlgeschlagen (`source_removed`) erfasst. Im Ordner- und im Gesamtkonto-Modus werden sie ebenfalls ausgeschlossen. | | Ändern Sie die Verbindungsroute | Erfordert eine Pause, schließt alte Clients und bricht unvollständige Anmeldungen ab. | | Beenden Sie den Python-Prozess | Alle Arbeitsbereiche werden angehalten; während der Offline-Zeit werden keine Beobachtungen vorgenommen. | | Neustart nach aktiver Beobachtung | Es wird versucht, den gespeicherten Umfang mithilfe der gespeicherten Sitzung fortzusetzen. Eine manuelle Unterbrechung hebt diese Absicht auf. | Der Collector protokolliert erkannte Verbindungsabbrüche, Wiederholungsversuche, Fehler, Starts/Stops und Heartbeats. Kurze Unterbrechungen können bei periodischen Verbindungsprüfungen übersehen werden. Nach einem Neustart werden versäumte Aktualisierungen ab der gespeicherten Aktualisierungsposition angefordert und beobachtete Chats werden regelmäßig erneut überprüft; siehe [Beweisformat](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#durable-collection-and-process-receipts-02). Ein Snapshot liefert Kontext; er beweist jedoch nicht, dass eine Lücke geschlossen wurde. ## Kontoisolierung und -überprüfung Jeder Arbeitsbereich verfügt über ein eigenes Protokoll, eigene Berechtigungen, einen eigenen Signaturschlüssel, eigene Richtlinien und eine eigene Warteschlange. Nur der aktive Client dieses Arbeitsbereichs kann Live-Beobachtungen einbringen. Abgelehnte, ausstehende, ersetzte und Verbindungstest-Clients können keine Live-Aktualisierungen in das Protokoll dieses Arbeitsbereichs schreiben. Verschiedene Konten können dieselbe Gruppe beobachten, ihre Protokolle bleiben jedoch getrennt. Jedes Ereignis enthält den vorherigen Hashwert und eine Ed25519-Signatur. Die Exporte umfassen das gesamte Arbeitsbereichsprotokoll anhand einer festen Sequenznummer. Panel-Filter filtern den Export nicht; die Erfassung kann über dessen Grenzen hinaus fortgesetzt werden, während der Export vorbereitet wird. **„Verify Journal“** überprüft die Ereigniskette und die Signaturen anhand des angezeigten Grenzwerts. Das Ergebnis wird gelöscht, sobald sich der Arbeitsbereich ändert, und das Bedienfeld identifiziert neue Datensätze, die nach der Überprüfung hinzugefügt wurden. Der ZIP-Export überprüft zudem die gesammelten Medien. Fingerabdrücke und Checkpoints sind unabhängig voneinander beizubehalten. Siehe den Abschnitt „ [Verifizierungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope)“ für Erfassungsprüfungen in jedem Modus sowie „[Täglicher Betrieb](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/)“ für die routinemäßige Datenerfassung. --- # Telegram · Geheime Chats: Implementierung und Demo Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/secret-chats/ Machen Sie sich mit der separaten Secret Chat-Implementierung vertraut, probieren Sie die fiktive Benutzeroberfläche aus und überprüfen Sie noch offene Fehler. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Machen Sie sich mit der separaten Secret Chat-Implementierung vertraut, probieren Sie die fiktive Benutzeroberfläche aus und überprüfen Sie noch offene Fehler. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) **Status geprüft am 6. November 2026:** Eine separate Implementierung für Secret Chats befindet sich in der Entwicklung. Sie wurde noch nicht in den veröffentlichten `main`-Zweig unter `3d23e52b647b` integriert. Der normale Collector und der Takeout-Export erfassen keine Secret Chats. Das interaktive Website-Szenario demonstriert die Benutzeroberfläche anhand fiktiver Daten; es ermöglicht keine Telegram-Kommunikation. ## Wo sich die Implementierung befindet Commit `0e60f88e` hat **Sources → Pseudo-secret** im lokalen Entwicklungszweig `fix/panel-routes-sessions` hinzugefügt. Der überprüfte Snapshot ist `bb8788fb685c`. Die Implementierung umfasst `tgwitness/secret_chats.py`, Anwendungsrouten, `tgwitness/static/views/secret-chats.js` und spezielle Tests. Das optionale `secret-chats`-Extra in diesem Zweig verwendet [KiaroSama/Telethon-Secret-Chat](https://github.com/KiaroSama/Telethon-Secret-Chat), das an `d87bf037b90060383c7b704d8a06ebb98c621c6f` angeheftet ist. Die Bibliothek implementiert das End-to-End-Chat-Protokoll von Telegram auf Basis der bestehenden Telethon-Autorisierung des Kontos. Die Installation dieser Bibliothek allein fügt die fehlende Integration zu `main` nicht hinzu. ## Funktionen der Entwicklungsschnittstelle | Maßnahme | Aufgezeichnetes Verhalten | | --- | --- | | Starte einen Chat anhand des Benutzernamens oder der Benutzer-ID | Senden Sie eine Anfrage; der andere Teilnehmer muss diese annehmen. | | Eine eingehende Anfrage annehmen | TgWitness wird zum empfangenden Endpunkt für diesen Chat. Die automatische Annahme ist eine separate Einstellung, die standardmäßig deaktiviert ist. | | Eine Nachricht senden oder empfangen | Füge einen ausgehenden oder eingehenden `secret_chat.message`-Eintrag hinzu und zeige ihn im Thread an. | | Anhang empfangen | Entschlüsseln Sie diese, speichern Sie die Bytes nach SHA-256 und protokollieren Sie `secret_chat.file`. | | Erhalten Sie eine Zeitangabe oder eine Löschbenachrichtigung | Halten Sie den Hinweis fest und bewahren Sie zuvor erfasste Inhalte auf. | | Überprüfen Sie die Unterhaltung | Zeige Nachrichten, Dateien, Hinweise und die Schlüsselvisualisierung an. Die geöffnete Registerkarte wird alle vier Sekunden aktualisiert. | In einer Entwicklungsversion, die die Integration enthält, aktiviert der Betreiber das Modul für das ausgewählte Konto und verbindet es. Das Starten, Akzeptieren und Senden erfordern die Berechtigung zur Interaktion sowie die Deaktivierung des Lese-Schutzes des Kontos. Der andere Teilnehmer muss einen neuen ausgehenden Chat akzeptieren. Diese Steuerelemente sind in der veröffentlichten Anwendung in der oben genannten Version nicht vorhanden. Es werden nur Chats berücksichtigt, die von dieser TgWitness-Sitzung erstellt oder akzeptiert wurden. Bestehende geheime Chats auf einem Smartphone verbleiben auf diesem Gerät. Ein Sitzungsimport liefert keine separaten Verschlüsselungsschlüssel dafür. Schlüsselmaterial und Zähler für geheime Chats werden im Workspace-Tresor gespeichert; gespeicherte Nachrichten und entschlüsselte Dateien unterliegen den üblichen Sicherheitsvorkehrungen für den Workspace-Speicher. ## Demonstration auf der Website Das Szenario „**Try Secret Chat**“ auf der Website eröffnet eine fiktive Unterhaltung. Es ermöglicht dem Leser, eine Anfrage zu starten, deren Annahme zu simulieren, eine Beispielnachricht zu senden, eine vorgefertigte Antwort und eine Datei zu erhalten sowie einen Timer und einen Löschhinweis zu überprüfen. Eine eingehende Anfrage kann ebenfalls angenommen werden. Die Steuerelemente kennzeichnen simulierte Aktionen des Gegenübers explizit. Dieses Szenario läuft im Browser-Speicher. Durch Zurücksetzen oder Neuladen wird es gelöscht. Es erfolgt keine Anmeldung, kein Kontakt zu Telegram, keine Erstellung echter Verschlüsselungsschlüssel und keine Änderung der signierten Beispiel-Downloads. Die angezeigten Nachrichten stellen keine signierten Beweise dar. Das Szenario veranschaulicht die beabsichtigte Interaktion; es bescheinigt nicht, dass die Entwicklungsimplementierung fertiggestellt ist. ## Prüfungen und noch bestehende Mängel Die fünf bestehenden Tests decken die Persistenz verschlüsselter Schlüssel, den Lebenszyklus und Nachrichtenaufzeichnungen sowie die Richtlinie zur Annahme eingehender Nachrichten, das schreibgeschützte Senden und den Export von Anhängen ab. Sie wurden bei der Überprüfung am 6. November anhand der festgesteckten Bibliothek erfolgreich bestanden. Drei zusätzliche synthetische Prüfungen reproduzierten Fehler im selben Snapshot: | Ergebnis | Folge | | --- | --- | | Schließung umgeht `read_only` | Der Close-Pfad kann eine Remote-Aktion ausführen, wenn Interaktionen blockiert werden sollen. | | Die Duplikatsuche durchsucht nur die jüngsten Datensätze v500. | Eine ältere Wiedergabe kann nach einem Neustart ein Duplikat erzeugen. | | Ein fehlgeschlagener Download eines Anhangs löscht dessen ausstehenden Eintrag | Ein vorübergehender Fehler führt zum Verlust des Wiederholungsauftrags. | Es handelt sich um offene Fehler, die auch im veröffentlichten Audit dokumentiert sind. Fünf bestandene Tests decken diese Fehler nicht ab. Die Überprüfung erfolgte anhand synthetischer Arbeitsbereiche und simulierter Telegram- Vorgänge; ein Live-Handshake wurde nicht wiederholt und die Eignung für den produktiven Einsatz nicht geprüft. --- # Telegram · Quellhistorie laden Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/history/ Laden Sie vergangene Nachrichten aus aktivierten Quellen, halten Sie den Vorgang an und setzen Sie ihn fort, und überprüfen Sie einen signierten Fortschrittsbericht. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Laden Sie vergangene Nachrichten aus aktivierten Quellen, halten Sie den Vorgang an und setzen Sie ihn fort, und überprüfen Sie einen signierten Fortschrittsbericht. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Sammlung](https://github.com/phishdestroy/TgWitness/blob/main/docs/COLLECTION-MODES.md) ![Sammlung](https://phishdestroy.github.io/TgWitness/assets/chapter-collect.svg) Überprüfen Sie in „**Sources**“ die aktivierten Chats, unterbrechen Sie die Beobachtung, wählen Sie Standard-API oder Takeout-Export und wählen Sie anschließend „**Vollständigen Verlauf laden**“. Der Durchlauf korrigiert diese Quellenliste und liest die verfügbaren früheren Nachrichten in Chats und das signierte Beobachtungsprotokoll ein. Medien verwendet die vorhandenen Einstellungen für Anhänge und die dauerhafte Download-Warteschlange. Dies ist unabhängig vom signierten JSON/HTML-Export pro Chat. Für eine kontoweite Erfassung wählen Sie **Gesamtes Konto**, starten Sie die Beobachtung, um die Quellliste zu laden, und überprüfen Sie diese Liste, bevor Sie den Verlauf starten. Die Begrenzung der Dialogliste gilt weiterhin (standardmäßig 1,000, einstellbar unter Parameter). Ein erfolgreicher Durchlauf beweist nicht, dass jeder Kontodialog aufgelistet wurde. Später entdeckte oder aktivierte Chats erfordern einen weiteren Durchlauf. Halten Sie die Beobachtung an, bevor Sie den Verlauf starten; jeweils nur eine Erfassung kann ein Konto erfassen. Wählen Sie ein bis fünf Anhangs-Worker aus und legen Sie fest, ob verfügbare Aktuelle Aktionen beibehalten und zuvor gespeicherte Versionen verglichen werden sollen. Die Entnahme erfordert möglicherweise eine Genehmigung in Telegram und eine vom Server festgelegte Wartezeit. Diese Optionen bleiben bei der Wiederaufnahme unverändert. Siehe [Backfill-Verhalten und Beweiskontrakt](https://github.com/phishdestroy/TgWitness/blob/main/docs/BACKFILL.md) für Details zu Transport, Wiederholungsversuchen und Vertrauenswürdigkeit. ## Pause, Neustart und Teilergebnisse - **Verlauf anhalten** unterbricht das Einlesen. **Verlauf fortsetzen** setzt den Ablauf ab der zuletzt gespeicherten Nachricht in jeder Quelle fort; beim Neustart der App bleibt der Ablauf ebenfalls angehalten, bis er fortgesetzt wird. Zur Fortsetzung ist dasselbe inaktive Telegram-Konto erforderlich. - Die Nachrichtenbeobachtung, die Anhangsverarbeitung und die Cursor-Festschreibung erfolgen in einer einzigen Transaktion. Bei einem fortgesetzten Lauf werden bereits festgeschriebene Beobachtungen nicht wiederholt. Bei einer Live-Erfassung oder einem separaten, explizit gestarteten Lauf kann dieselbe Nachricht unabhängig davon beobachtet werden. - Jede Quelle (jeder Telegram-Split-Bereich in Takeout) legt beim ersten Lesen eine obere Nachrichten-ID fest. Neuere Nachrichten gehören zur Live-Beobachtung und nicht zu den verbleibenden historischen Seiten dieser Quelle. - Nicht zugängliche Quellen und Quellen, die während der Erfassung deaktiviert wurden, bleiben als fehlgeschlagen oder übersprungen sichtbar. Andere Quellen werden weiterverarbeitet; das Gesamtergebnis ist unvollständig. - FloodWait-Verzögerungen berücksichtigen die gespeicherte Backoff-Zeit des Kontos. Bei vorübergehenden Fehlern werden bis zu fünf Wiederholungsversuche unternommen; bei Erschöpfung der Kontingente und geringem Speicherplatz wird die Ausführung mit erhaltenem Cursor unterbrochen. - **Beendet diesen Verlaufslauf.** bewahrt gespeicherte Beobachtungen. Es entfernt diese nicht und bricht keine Anhangsaufträge der Standard-API ab. Das Beenden von Takeout markiert die verbleibenden Takeout-Dateien als übersprungen; beim Anhalten bleiben sie wiederherstellbar. Ein neuer Lauf liest aktivierte Quellen erneut ein. Die Vervollständigung des Verlaufs bezieht sich ausschließlich auf das Auslesen des Verlaufs. Anhänge können noch ausstehen, fehlschlagen oder durch die konfigurierte Richtlinie ausgeschlossen werden. Überprüfen Sie Medienbestätigungen im Protokoll und in der Anhangswarteschlange; nur eine abgeschlossene Bestätigung mit erhaltenen Bytes gilt als gespeicherter Anhang. Der Verlaufsvorgang ist eine explizite Snapshot-Anfrage und unterscheidet sich von Schaltern, die Kategorien zukünftiger Live-Ereignisse auswählen. ## Übertragen und überprüfen Speichern Sie den **signierten Fortschrittsbericht** und verwenden Sie anschließend **„Beweismaterial exportieren“**, um das Protokoll und die gespeicherten Anhänge herunterzuladen. Ein späterer Export des Beweismaterials kann zusätzliche Datensätze enthalten; der Bericht bindet seine Zähler an das Protokollpräfix zum Zeitpunkt seiner Erstellung. Führen Sie den Verifizierer aus einem vertrauenswürdigen Checkout dieser Version aus: ``` python tgwitness/verify.py tgwitness-history-report.json --evidence evidence.zip --fingerprint TRUSTED_FINGERPRINT ``` Behalten Sie den erwarteten Fingerabdruck des Signaturschlüssels separat bei. Der Verifizierer überprüft die Berichtsignatur, das Beweisarchiv, den Bericht-Checkpoint, den Quellplan, das Konto sowie die Anzahl der gespeicherten bzw. nicht verfügbaren Nachrichten. Neue Durchläufe binden zudem den Quellfortschritt und Optionen an signierte Cursor-Ereignisse. Ohne `--evidence` werden nur der signierte Bericht und dessen interne Konsistenz geprüft. Ältere Fortschrittsfelder und Anhangszusammenfassungen bleiben signierte Aussagen des Sammlers. Der Beweisprüfer überprüft archivierte Medienbytes. Weder das Signieren noch das Vervollständigen des verfügbaren Verlaufs beweisen die Herkunft aus Telegram, einen atomaren Snapshot oder historische Vollständigkeit. Nachrichten können sich während des Lesens ändern; gelöschte Nachrichten und zwischenzeitliche Bearbeitungen außerhalb der verfügbaren Jüngsten Aktionen sowie geheime Chats werden nicht wiederhergestellt. Ein Betreiber, der den Signaturschlüssel kontrolliert, kann ein Protokoll fälschen, bevor externe Verpflichtungen bestehen. Verwenden Sie separat gespeicherte Kontrollpunkte oder einen unabhängigen Zeugen für die dokumentierten Eigenschaften zur Manipulationserkennung. Der Erfassungscursor entspricht dem lokalen Arbeitsbereichszustand. Das Wiederherstellen einer Beweismittel-ZIP-Datei allein stellt keinen ausstehenden Erfassungsauftrag oder eine Telegram-Sitzung wieder her. Bewahren Sie die Arbeitsbereichssicherung auf, falls eine Fortsetzung des ursprünglichen Auftrags erforderlich ist. --- # Telegram · Arbeitsabläufe und Funktionen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/ Täglicher Betrieb des Dashboards: Betriebsmodi, Überwachungskategorien, Parameter, Benachrichtigungen, Exporte, Datensicherung und Kapazität. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Täglicher Betrieb des Dashboards: Betriebsmodi, Überwachungskategorien, Parameter, Benachrichtigungen, Exporte, Datensicherung und Kapazität. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) Verwenden Sie für Ihre erste Verbindung [Konten und Sitzungsformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/). Eine Erläuterung zu gespeicherten Versionen, Ereignisrichtlinien und Lücken finden Sie unter [„So funktioniert die Erfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/)“. Dieser Leitfaden behandelt den täglichen Betrieb und die Wiederherstellung. Eine verwaltete Installation umfasst **, START-HERE.html,** und **, START-HERE.txt sowie** neben dem Startprogramm, wobei der Repository-Link und die Befehle auf den jeweiligen Installationspfad zugeschnitten sind. Führen Sie `tgwitness guide --print` über SSH aus oder `tgwitness paths`, um das tatsächliche Datenverzeichnis zu ermitteln. Bei einer Root-Installation über systemd werden private Zustandsdaten unter `/var/lib/tgwitness-…` gespeichert; `/opt/tgwitness` enthält das Programm. Bei einem verwalteten temporären Cloudflare-Tunnel sperrt „`tgwitness tunnel off`“ den öffentlichen Zugriff, während das lokale Panel und die Datenerfassung weiterlaufen. „`tgwitness tunnel on`“ aktiviert ihn; „`tgwitness tunnel restart`“ erstellt eine neue Tunnelverbindung. Verwenden Sie „`tgwitness open`“, um die aktuelle Adresse anzuzeigen. Eine explizite Deaktivierung bleibt auch nach einem Neustart des Dienstes bestehen. „`tgwitness stop`“ stoppt sowohl das Panel als auch die Datenerfassung. **Auf dieser Seite** - [Ablauf für den Operator](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#operator-workflow) - [Arbeit teilen, ohne den Hauptschlüssel weiterzugeben](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#share-work-without-sharing-the-main-key) - [Laufzeitmodi](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#runtime-modes) - [Überwachungskategorien](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#monitoring-categories) - [Benachrichtigungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#notifications) - [Anordnung der Bedienelemente](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#panel-layout) - [Bereitstellungsumgebungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#deployment-environments) - [Startprüfungen und Exporte](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#startup-checks-and-exports) - [Sicherung, Wiederherstellung und Unterbrechungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#backup-restore-and-interruptions) - [Kapazität und Aufbewahrungsdauer](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/#capacity-and-retention) ## Arbeitsablauf für Bediener Ablaufdiagramm · Wählen Sie Speicherort und Schlüsselschutz → Öffnen Sie das Fenster mit dem entsprechenden Token; Öffnen Sie das Fenster mit dem entsprechenden Token → Wählen Sie einen Arbeitsbereich aus; Wählen Sie einen Arbeitsbereich aus → Direkte oder Proxy-Route konfigurieren; Direkte oder Proxy-Route konfigurieren → Geben Sie Ihre Telefonnummer ein oder wählen Sie Dateien / QR-Code aus; Geben Sie Ihre Telefonnummer ein oder wählen Sie Dateien / QR-Code aus → Überprüfen Sie die Kontoidentität und wählen Sie zugängliche Gruppen aus; Überprüfen Sie die Kontoidentität und wählen Sie zugängliche Gruppen aus → Richten Sie Richtlinien für Ereignisse und Anhänge ein und beginnen Sie anschließend mit der Überwachung; Richten Sie Richtlinien für Ereignisse und Anhänge ein und beginnen Sie anschließend mit der Überwachung → Fehler, Zugriff, Warteschlangen und Festplattenspeicher überwachen; Fehler, Zugriff, Warteschlangen und Festplattenspeicher überwachen → Unabhängige Kontrollpunkte beibehalten; Unabhängige Kontrollpunkte beibehalten → Material exportieren und verifizieren · Wählen Sie Speicherortund Schlüsselschutz · Öffnen Sie das Fenstermit dem entsprechendenToken · Wählen Sie einenArbeitsbereich aus · Direkte oderProxy-Routekonfigurieren · Geben Sie IhreTelefonnummer ein oderwählen Sie Dateien /QR-Code aus · Überprüfen Sie dieKontoidentität undwählen Sie zugänglicheGruppen aus · Richten SieRichtlinien fürEreignisse und Anhängeein und beginnen Sieanschließend mit derÜberwachung · Fehler, Zugriff,Warteschlangen undFestplattenspeicherüberwachen · UnabhängigeKontrollpunktebeibehalten · Material exportierenund verifizieren **Diagramm als Text** 1. Wählen Sie Speicherort und Schlüsselschutz → Öffnen Sie das Fenster mit dem entsprechenden Token 2. Öffnen Sie das Fenster mit dem entsprechenden Token → Wählen Sie einen Arbeitsbereich aus 3. Wählen Sie einen Arbeitsbereich aus → Direkte oder Proxy-Route konfigurieren 4. Direkte oder Proxy-Route konfigurieren → Geben Sie Ihre Telefonnummer ein oder wählen Sie Dateien / QR-Code aus 5. Geben Sie Ihre Telefonnummer ein oder wählen Sie Dateien / QR-Code aus → Überprüfen Sie die Kontoidentität und wählen Sie zugängliche Gruppen aus 6. Überprüfen Sie die Kontoidentität und wählen Sie zugängliche Gruppen aus → Richten Sie Richtlinien für Ereignisse und Anhänge ein und beginnen Sie anschließend mit der Überwachung 7. Richten Sie Richtlinien für Ereignisse und Anhänge ein und beginnen Sie anschließend mit der Überwachung → Fehler, Zugriff, Warteschlangen und Festplattenspeicher überwachen 8. Fehler, Zugriff, Warteschlangen und Festplattenspeicher überwachen → Unabhängige Kontrollpunkte beibehalten 9. Unabhängige Kontrollpunkte beibehalten → Material exportieren und verifizieren Authentifizierung, Transportverbindung, Zugriff auf eine Gruppe und Vollständigkeit der Übermittlung sind unterschiedliche Eigenschaften. Ein grüner Verbindungsstatus bedeutet nicht, dass alle Ereignisse erfasst wurden. ## Arbeiten teilen, ohne den Hauptschlüssel weiterzugeben Offener **Zugriff**, um einem Prüfer oder Analysten ein eigenes Token zuzuweisen. Wählen Sie die Konten und Chats aus, die diese Personen öffnen dürfen, und erteilen Sie ihnen anschließend Berechtigungen zum Anzeigen, Exportieren oder Ausführen von Aktionen. Ein Operator, der die Erfassung startet oder stoppt, benötigt Zugriff auf den gesamten Arbeitsbereich; ein Prüfer kann auf einen einzelnen Chat beschränkt werden. Sitzungslimits, Ablaufzeiten und IP-Regeln sind unabhängig von der Telegram-Kontoautorisierung. Siehe [„Zugriff und Berechtigungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/)“. Verwenden Sie **„Offene Sitzungen“,** um eine Verbindung zu beenden, oder widerrufen Sie den Zugriff, um alle zugehörigen Sitzungen zu beenden. Die Administratorkonsole fasst die Aktivitäten der laufenden Prozesse über alle Arbeitsbereiche hinweg zusammen. Beim Schließen einer Sitzung läuft die Erfassung weiter. ## Ausführungsmodi | Modus | Maßnahme | Verhalten | | --- | --- | --- | | Demo | scripts\Demo.cmd oder `--demo` | Synthetische Daten; Verknüpfungen zu echten Konten deaktiviert | | Anmerkung | Beobachtung starten | Erfassung der bereitgestellten Aktualisierungen für ausgewählte Quellen | | Historischer Überblick | Quellen → Momentaufnahme der Versionsgeschichte | Bis zu 500 aktuelle Nachrichten; keine Rekonstruktion aller vergangenen Änderungen | | Pause | Beobachtung unterbrechen | Erfassung unterbrechen, dabei Daten und Aufträge in der Warteschlange beibehalten | | Überprüfung/Übergabe | Exporte | ZIP, JSONL/CSV/HTML, Checkpoint, Prozessbestätigung und Zeitstempelanforderung | | Mehrere Konten | Arbeitsbereiche oder die oberste Schaltfläche „**+**“ | Beliebig viele separate Arbeitsbereiche in einem Prozess | Der lokale Demo-Zugriff wird automatisch ohne manuelle Token-Eingabe freigeschaltet. Dabei kommt eine auf die Prozesslaufzeit begrenzte Funktion zum Einsatz, die ausschließlich für den direkten Loopback-Zugriff auf eine isolierte synthetische Demo gilt; das Token für das Hauptpanel wird nicht offengelegt. Bei echten Arbeitsbereichen sowie beim Remote- oder Proxy-Zugriff auf die Demo bleibt die Token-Authentifizierung bestehen. Der Demo-Zugang gewährt keine Telegram-Berechtigung. ## Überwachungskategorien ![Überwachungseinstellungen pro Konto mit synthetischen Quelldaten](https://phishdestroy.github.io/TgWitness/assets/sources.png) Wählen Sie in **Quellen → Aufzeichnung → Wählen Sie aus, welche Änderungen beibehalten werden sollen** neue Nachrichten, Bearbeitungen, Löschbenachrichtigungen, Reaktions-Updates und Mitgliederereignisse unabhängig voneinander aus. Die Standardeinstellung behält alle Kategorien bei. **Nachrichten, Bearbeitungen und Löschungen** behält den ursprünglichen Kontext bei, deaktiviert jedoch separate Reaktions- und Mitglieder-Updates. **Alle sichtbaren Aktivitäten** stellt alle fünf wieder her. Voreinstellungen ändern das Formular; drücken Sie **Aufzeichnungseinstellungen speichern**, um sie anzuwenden. Die gespeicherte Richtlinie gilt für alle ausgewählten Quellen in diesem Arbeitsbereich. Andere Arbeitsbereiche behalten ihre eigenen Einstellungen bei. Bei jeder tatsächlichen Änderung werden signierte Vorher-Nachher-Werte aufgezeichnet; die aktuelle Richtlinie wird zudem in Prozessbelegen und Beobachtungsstartprotokollen erfasst. Das Deaktivieren einer Kategorie löscht frühere Beobachtungen nicht. Durch erneutes Aktivieren werden versäumte Änderungen nicht nachträglich erfasst. In dieser Version gibt es keine gruppenspezifische Übersteuerung von Kategorien. Behalten Sie die Erfassung neuer Nachrichten bei, wenn frühere Inhalte von Bedeutung sind: Eine Löschmeldung kann keinen Text wiederherstellen, der nie erfasst wurde. Betriebs- und Erfassungsprotokolle sowie andere Ereignisse im Zusammenhang mit Gruppendiensten werden stets beibehalten. Explizite Verlaufs-Snapshots sind unabhängig von der Auswahl der Live-Kategorien und können Dienstmeldungen enthalten. Diese Einstellungen führen nicht zur Schwärzung von Reaktions- oder Mitglieder-Metadaten, die in einem ansonsten erfassten Telegram-Objekt eingebettet sind. Ein Verlaufs-Snapshot kann Anhänge in die Warteschlange stellen, während er angehalten ist. Starten Sie die Beobachtung, um diese zu verarbeiten. „In der Warteschlange“ bedeutet nicht „heruntergeladen“. Eine nicht verfügbare Originaldatei wird nicht durch eine neuere bearbeitete Version ersetzt; die Ergebnisse werden separat aufgezeichnet. **Mit „Lock“** werden der Browserzugriff und geheime Felder gelöscht, die Erfassung läuft jedoch weiter. Auch beim Schließen eines Tabs läuft der Prozess weiter. Das Beenden des Python-Prozesses oder -Dienstes stoppt die Erfassung unabhängig vom Status des Browsers. Das Löschen eines zusätzlichen Arbeitsbereichs stoppt dessen Datenerfassung und entfernt dessen lokale Daten. Sollte eine gesperrte Datei oder ein Dateisystemfehler den Löschvorgang unterbrechen, meldet das Bedienfeld den Fehler und führt den Arbeitsbereich weiterhin als nicht verfügbar (`DeletionPending`) auf. Schließen Sie Programme, die dessen Dateien öffnen, und versuchen Sie **den Löschvorgang** erneut. Ein Neustart von TgWitness belässt diesen Arbeitsbereich im angehaltenen Zustand und stellt das teilweise entfernte Protokoll oder die Schlüssel nicht wieder her. Eine erfolgreiche Löschung wird erst dann protokolliert, wenn das Verzeichnis entfernt wurde; separat exportierte oder gesicherte Kopien unterliegen weiterhin ihrer eigenen Aufbewahrungsrichtlinie. ## Benachrichtigungen Öffnen Sie **„Extras“ → „Benachrichtigungen“ → „Konfigurieren**“. TgWitness verwendet Apprise, um Benachrichtigungen an Matrix, Telegram, Discord, Slack, ntfy, E-Mail und andere unterstützte Dienste zu senden. Sie können einem Arbeitsbereich mehrere Ziele hinzufügen. 1. Geben Sie pro Zeile eine Apprise-Ziel-URL ein. Verwenden Sie den [Servicekatalog und die URL-Formate](https://appriseit.com/services/) für Ihren Dienst. 2. Aktivieren Sie die Option **„Benachrichtigungen senden**“ und wählen Sie anschließend Problemwarnungen, Änderungen in beobachteten Chats sowie eine tägliche Zusammenfassung aus. Die Uhrzeit in der Zusammenfassung richtet sich nach der Serverzeit. 3. Aktivieren Sie die Option**„Kurze Auszüge einbeziehen“,** wenn Sie möchten, dass Text aus gelöschten und bearbeiteten Nachrichten in den Benachrichtigungen gespeichert wird. 4. Klicken Sie auf **„Benachrichtigungen speichern**“ und anschließend auf **„Test senden“**, um die Zustellung zu überprüfen. Verwenden Sie für Ihren eigenen Empfänger [den JSON-Webhook](https://appriseit.com/services/json/) von Apprise. Beispielsweise sendet „`jsons://notify.example.org/tgwitness`“ JSON über HTTPS an diesen Endpunkt. Dies ist ein fiktives Beispiel; ersetzen Sie es durch Ihr eigenes Ziel. Ziele und Einstellungen gehören zum ausgewählten Arbeitsbereich. Änderungsbenachrichtigungen umfassen die überwachten Quellen, einschließlich neu hinzugefügter Chats. Die Glocke in der oberen Leiste listet zudem aktuelle Probleme und Änderungen in Chats auf. In der Demo sind die Benachrichtigungssteuerelemente sichtbar, das Versenden ist jedoch deaktiviert. Konfigurieren Sie die Zustellung in einem realen Arbeitsbereich. Benachrichtigungen nutzen die Direct-, SOCKS5- oder HTTP-Route dieses Arbeitsbereichs; MTProxy kann sie nicht weiterleiten. Nicht-HTTP-Ziele wie SMTP erfordern eine direkte Route. ## Layout der Seiten ![Arbeitsbereich für die Anbindung unter Verwendung synthetischer Daten](https://phishdestroy.github.io/TgWitness/assets/connection.png) **Das Protokoll** zeigt Beobachtungen, Suchfunktionen und Filter an. Bei einer Bearbeitung werden die erfassten Versionen angezeigt; bei einer Löschung wird der vorherige Inhalt angezeigt, sofern verfügbar. Unbekannte Quellenangaben bleiben ausdrücklich gekennzeichnet. Zahlenangaben sind unter **„Übersicht“** verfügbar; Details zur Erfassung verbleiben im lokalen Leitfaden. Öffnen Sie eine bearbeitete Nachricht, um ihre Versionen über **Änderungen im Text** oder **Nebeneinander** zu vergleichen; **Rohdaten** zeigt die gespeicherten Felder an. Änderungen an versteckten Links und Bot-Schaltflächen werden separat angezeigt. Öffnen Sie eine Anhangsvorschau, um gespeicherte Bilder, Audio- oder Videodateien zu prüfen; über die Download-Schaltfläche bleibt das gesicherte Original verfügbar. **Live** aktualisiert das Journal und die Chats, sobald Datensätze eintreffen. Pausieren Sie es während der Überprüfung oder nutzen Sie die Schaltfläche für neue Ereignisse, wenn Sie bereit sind; die Erfassung läuft im Hintergrund weiter. **Ctrl/Cmd+K** findet Panel-Aktionen und durchsucht das Journal. **Der Bereich „Quellen“** umfasst den Überwachungsumfang (ausgewählte Chats, einen Telegram-Ordner oder das gesamte Konto), zugängliche Chats aller Art, ausgewählte Quellen mit Prioritätssternen, Einstellungen für Anhänge und Nachprüfungen sowie Momentaufnahmen des Verlaufs. Private Quellen werden anhand des Dialogs/der ID ohne öffentlichen Link ausgewählt. Der Zugriffsstatus beschreibt die letzte Überprüfung, nicht dauerhafte Berechtigungen. Filtern Sie Quellen, aktivieren Sie deren Kontrollkästchen und aktivieren, pausieren oder markieren Sie sie anschließend gemeinsam als prioritär. In der Liste der verfügbaren Chats verwendet **Ausgewählte hinzufügen** Ihre Auswahl; **Alle Treffer hinzufügen** nutzt die aktuelle Suche und den Typfilter. Unter **„Chats → Personen“** werden alle Personen mit gespeicherten Nachrichten aufgelistet; sind die Personenprofile für den Chat aktiviert, öffnet ein Klick das Profil der jeweiligen Person mit Links zu den Protokollen. **Witness** erstellt schreibgeschützte Witness-Token, zeigt an, wann jeder Witness zuletzt überprüft wurde, und stellt die Befehle und Optionen zur Verfügung, um einen ([unabhängigen Witness](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/)) auszuführen. **Unter „Parameter“** sind alle Grenzwerte und Zeitrhythmen des Arbeitsbereichs zusammengefasst, die nicht auf einer anderen Seite aufgeführt sind: die Anzahl der gelesenen Dialoge, die Häufigkeit der Neuauswertung der Chat-Liste, Heartbeat- und Checkpoint-Intervalle, der Startpuffer, die Verteilung der Anfragen bei erneuten Überprüfungen (erste Verzögerung, Chats pro Durchlauf, Pause zwischen Chats, wiederhergestellte und erneut angeforderte Nachrichten), Festplattenreserve, Timeouts und Wiederholungsversuche bei Downloads, wonach bei Benutzerprofilen gesucht wird (einschließlich Ihrer eigenen regulären Ausdrücke), Umfang und Häufigkeit von Benachrichtigungen, Limits für Snapshots, ZIP-Dateien und Browser-Downloads sowie Telegram- Client-Timeouts und Wiederholungsversuche. Jedes Feld zeigt seinen Wertebereich und den Standardwert an; geänderte Felder sind markiert und können einzeln oder alle zusammen wiederhergestellt werden. Jede Änderung wird als „`parameters.changed`“ mit den Werten vor und nach der Änderung protokolliert, und die Aufzeichnungen zum Beginn der Beobachtung nennen die jeweils geltenden Werte. Die Werte gelten ab ihrer nächsten Verwendung; Zeitlimits und Wiederholungsversuche des Clients gelten ab der nächsten Verbindung. Überprüfungsintervalle, Anhangstypen und -größen sowie Intervalle für Sicherungskopien und externe Kopien bleiben auf ihren eigenen Seiten und können beliebige Werte innerhalb ihres Bereichs annehmen, nicht nur voreingestellte Werte. Die Glocke in der oberen Leiste listet aktuelle Probleme und Änderungen in den überwachten Chats auf; ungelesene Einträge werden gezählt, bis sie als gelesen markiert werden. Änderungen werden nach Chat und Stunde gruppiert („12 gelöscht, 1 bearbeitet, 0 nicht gefunden“), und Probleme wie eine Abmeldung oder ein voller Speicherplatz bleiben in der Liste, unabhängig davon, wie aktiv die Chats sind. **Die Kontoeinrichtung** beginnt im Feld für die Telefonnummer. **Wenn Sie fortfahren**, gelangen Sie direkt zur Codeeingabe; API-Anmeldedaten werden nur abgefragt, wenn diese fehlen. QR-Code und Dateiimport sind alternative Registerkarten. Gespeicherte API-Anmeldedaten werden nur innerhalb des jeweiligen Arbeitsbereichs wiederverwendet. Der Eingabebildschirm enthält keine Seitenleiste, keine Statistiken und keine Einrichtungsabschnitte. Das Symbol **„Einstellungen**“ öffnet die Steuerelemente für API, Proxy, Speicher und zusätzliche Konten. Neue Installationen beginnen hier; verbundene Konten ohne ausgewählte Quellen beginnen bei **„Chats auswählen**“. Das Ändern der Route erfordert eine Unterbrechung der Überwachung und bricht einen noch nicht abgeschlossenen Anmeldevorgang ab. Ein bestehendes Protokoll kann nicht im Hintergrund mit einem anderen Telegram-Konto verknüpft werden. **Der Export** überprüft die Integrität des Protokolls und erzeugt portierbare Dateien. Die Arbeitsbereichs-ID kann an die Download-Befehlszeilenschnittstelle übergeben werden. Jeder Export versieht ein vollständiges Protokoll mit einem Präfix; spätere Ereignisse werden in einem nachfolgenden Export erfasst. Suchfilter ändern den Umfang des Pakets nicht. Detaillierte Informationen zur Signatur und zum Erfassungsumfang finden Sie unter **„Verifizierung und Einschränkungen**“. Das Dashboard zeigt unter „Collector**-Status“** den Status des Collectors, Medien in der Warteschlange bzw. fehlgeschlagene Medien, die ältesten ausstehenden Medien, freien Speicherplatz, angehaltene Anfragen sowie Quellen an, deren Zugriff unter **„Collector-Status“**noch nicht bestätigt ist. Diese Details sind zunächst ausgeblendet und auf der Registerkarte „Konto“ verborgen. Eine Einrichtungskarte zeigt den nächsten Schritt an: ein Konto verbinden, Quellen auswählen oder die Überwachung starten. Die Konto-Liste ist eine Momentaufnahme zum Zeitpunkt des Ladens; der ausgewählte Arbeitsbereich wird regelmäßig aktualisiert. Es handelt sich hierbei nicht um einen SLA-Monitor mit mehreren Prozessen. Die Benutzeroberfläche nutzt lokale Ressourcen und Textdarstellung für Quellinhalte. Desktop- und schmale Chromium-Layouts wurden getestet. Dies stellt keine vollständige Zertifizierung der Barrierefreiheit dar; die Bewertung der Benutzerfreundlichkeit durch Screenreader und durch Menschen erfolgt weiterhin separat. ## Bereitstellungsumgebungen | Umfeld | Installation | Verifizierungsstatus | | --- | --- | --- | | Windows-PC/Server | Python 3.11+, Skripte: „Setup.cmd/Start.cmd“, Verzeichnis für private Daten | Lokal getestet unter Windows/Python 3.12 | | Linux-Server/VPS | Python-venv, dedizierter Service-Benutzer, HTTPS/SSH | Beispiele für Code, CI und systemd werden bereitgestellt; die Ausführung erfolgt nicht auf diesem Host | | macOS | Python-venv, Vordergrundprozess oder User-Agent | Beispiel für „launchd“ bereitgestellt; separate Installationsprüfung erforderlich | | Docker/Compose | Persistenter Speicher, ein Worker | Definition und CI-Laufzeitprüfung werden bereitgestellt; Docker ist lokal nicht verfügbar | | Mobilbrowser | Stellen Sie eine Verbindung zum geschützten Panel auf einem laufenden Server her | Getestet mit schmalem Chromium-Layout; der Collector läuft nicht unter iOS/Android | Portabilität bedeutet, dass kein Cloud-Dienst und kein Frontend-Build zwingend erforderlich sind. Jedes Zielsystem benötigt jedoch weiterhin kompatible Python-/Krypto-Abhängigkeiten sowie lokalen Festplatten- und Netzwerkzugriff. Siehe [DEPLOYMENT.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) und [die Service-Vorlagen](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md). Arbeitsbereiche teilen sich CPU, Arbeitsspeicher und eine Ereignisschleife. Verwenden Sie zur Prozessisolierung unterschiedliche Instanzen, Ports, Datenverzeichnisse und Kontoberechtigungen. Es gibt kein einheitliches Kontrollpanel für separate Instanzen. Richten Sie niemals mehrere Worker auf eine einzige Datenbank aus. ## Startvorgänge und Exporte Führen Sie „`python start.py --check`“ aus, bevor Sie eine vorbereitete Umgebung starten. Fügen Sie „`--json`“ für maschinenlesbare Prüfungen hinzu oder übergeben Sie die vorgesehenen Werte für „`--data-dir`“, „`--host`“ und „`--port`“. Der Befehl überprüft die Voraussetzungen, ohne dass eine Telegram-Anmeldung erforderlich ist oder ein Protokoll erstellt wird. Er überprüft weder ein Protokoll noch stellt er die Aufnahmebereitschaft sicher; die Protokollüberprüfung erfolgt beim Start der Anwendung. Ein belegter Port kann lediglich auf eine bereits vorhandene Instanz hinweisen. Browser, die die File System Access API unterstützen, speichern Exporte über einen beschreibbaren Stream. Andere Browser puffern maximal 128 MiB. Verwenden Sie die Streaming-CLI für größere Exporte oder für Browser ohne Datei-Streaming: ``` python -m tgwitness.download --token-file data/live/panel-token.txt --out evidence.zip ``` Fügen Sie „`--profile ID` “ aus „Exports“ für einen untergeordneten Arbeitsbereich hinzu. Verwenden Sie „`--url https://server` “ für den Fernzugriff. Einfaches HTTP wird nur für Loopback-Ziele akzeptiert. Das Token wird aus einer Datei gelesen und in einem Header gesendet; es wird weder ausgegeben noch in eine URL eingefügt. Weiterleitungen werden abgelehnt. Vorhandene Ziele werden nicht überschrieben. Bei fehlgeschlagenen Übertragungen wird die temporäre Teil-Datei entfernt. Der gemeldete SHA-256-Wert ist eine Übertragungsprüfsumme; überprüfen Sie die signierte ZIP-Datei separat anhand eines vertrauenswürdigen Fingerabdrucks/Checkpoints. ## Sicherung, Wiederherstellung und Unterbrechungen 1. Die Überwachung unterbrechen und den Vorgang ordnungsgemäß beenden. 2. Kopieren Sie das gesamte Datenverzeichnis: Datenbanken, WAL/SHM (falls vorhanden), Medien, `credentials.enc`, `signing.enc`, `network.enc`, Tresorschlüssel/Metadaten, Token, Checkpoints und jedes `profiles/`-Verzeichnis. 3. Im Modus mit externem Schlüssel sind der Hauptschlüssel separat aufzubewahren und jeder „ `vault.external.json`“-Wert zu sichern. Durch die Generierung eines neuen Schlüssels lassen sich die alten Geheimnisse nicht wiederherstellen. 4. Führen Sie die Wiederherstellung durch, während das Zielsystem angehalten ist; konfigurieren Sie den ursprünglichen Schlüssel, beschränken Sie den Zugriff und überprüfen Sie die Integrität, bevor Sie den Vorgang fortsetzen. 5. Erfassen Sie Ausfallzeiten und Verifizierungsergebnisse. Eine Momentaufnahme des Verlaufs kann nicht beweisen, dass während der Unterbrechung keine Löschungen stattgefunden haben. Die ZIP-Dateien mit den Beweismitteln enthalten keine Sitzungsdaten oder privaten Schlüssel und stellen keine vollständigen Service-Backups dar. Vier Elemente werden unterschiedlich geschützt: | Was | Schutz | | --- | --- | | Dateien ohne Passwort exportieren (Standardeinstellung) | Nicht verschlüsselt. Signiert, sodass Änderungen nachweisbar sind, aber jeder, der die Datei besitzt, kann sie lesen. | | Dateien mit einem Passwort exportieren | Wenn Sie ein Passwort festlegen, wird der fertige Export unverändert in eine WinZip-ZIP-Datei mit AES-256-Verschlüsselung gespeichert, die sich mit 7-Zip und WinRAR öffnen lässt; das Passwort wird nicht gespeichert ([Beweismittelbehandlung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/)). | | Die Protokoll-Datenbank und die auf der Festplatte gespeicherten Anhänge | Nicht durch TgWitness verschlüsselt; verwenden Sie eine verschlüsselte Festplatte oder ein verschlüsseltes Volume | | Telegram-Sitzungen und Signaturschlüssel | Verschlüsselt im Datenverzeichnis (`credentials.enc`, `signing.enc`, `network.enc`) | Ein Vollsicherungs-Backup ist das oben beschriebene Verzeichnis mit den gesicherten Daten, kein Export. Verwenden Sie für beides einen geschützten Speicher und einen kontrollierten Übertragungsmechanismus. Vorläufige Server-Exporte werden im Verzeichnis „ `temporary-exports/`“ des jeweiligen Arbeitsbereichs gespeichert; abgeschlossene Antworten werden bereinigt, und unterbrochene Exportdateien werden beim nächsten Start entfernt, solange die Instanzsperre dieses Arbeitsbereichs aufrechterhalten wird. Ein Ereignis zur Wiederherstellung der Verbindung garantiert nicht die Wiederherstellung zwischenzeitlicher Änderungen. Persistente Medienaufträge und der Telegram-Aktualisierungsstand bleiben nach einem Neustart erhalten; siehe [Beweismittelformat](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#durable-collection-and-process-receipts-02). ## Kapazität und Aufbewahrungsdauer Standardgrenzwerte, die alle unter **„Parameter“** geändert werden können: die ersten 1.000 Dialoge, 500 Nachrichten pro Snapshot, 4 GiB unkomprimierter, signierter ZIP-Inhalt (größere Archive erfordern „ `verify.py --max-gib N`“) und ein 128 MiB großes Browser-Fallback. Anhänge belegen 1–2.000 MiB pro Typ unter **„Quellen“ → „Anhänge**“. Die Download-Befehlszeilenschnittstelle ist standardmäßig auf 5 GiB Datenübertragung eingestellt. Der verfügbare Speicherplatz kann eine untere Grenze darstellen. Reservieren Sie Speicherplatz für Protokolle, Medien, WAL, temporäre Exporte und Sicherungen. Exporte nutzen das Datenvolumen anstelle der 512 MiB „`/tmp`“-Einstellung von Compose. Messen Sie Ereignisse pro Sekunde, das Alter der Warteschlange, Medienbytes und die Festplattenlatenz, anstatt lediglich Gruppen zu zählen. Synthetische lokale Benchmarks garantieren keine Telegram-Zustellung. Es erfolgt keine automatische Löschung bei Aufbewahrungsfristen. Das Entfernen des Endes eines Protokolls macht dessen Bezug zu den aufbewahrten Kontrollpunkten ungültig. Prioritäre Nachprüfungen sind bereits vorhanden: Mit einem Stern markierte Quellen werden standardmäßig alle 15 Minuten erneut überprüft, andere alle 6 Stunden (siehe [Nachprüfungsstufen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#recheck-tiers)). Passwortgeschützte Exporte sind wie oben beschrieben verfügbar. Live-Telegram-/Proxy-Akzeptanz, dauerhafte Wiedergabe, Admin-Protokoll und Reaktionsabfrage, isolierte Worker, Verschlüsselung des lokalen Protokolls und der Medien durch TgWitness selbst sowie unabhängige Überprüfung bleiben separate Arbeitsbereiche. Der bereichsbezogene Zugriff ist unter [„Zugriff und Berechtigungen“](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) dokumentiert. Siehe [READINESS.md](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/READINESS.md), [LIVE_ACCEPTANCE.md](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/LIVE_ACCEPTANCE.md) und [VERIFICATION.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/). --- # Telegram · Untersuchungsmodus Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/ Umfassende Untersuchungen ganzer Konten über Kanäle, Gruppen, private Chats und Bots hinweg – vom Untersuchungsumfang bis hin zu einem verifizierten Fallpaket. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Umfassende Untersuchungen ganzer Konten über Kanäle, Gruppen, private Chats und Bots hinweg – vom Untersuchungsumfang bis hin zu einem verifizierten Fallpaket. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) Verfolgen Sie einen Fall über Kanäle, Gruppen, private Chats und Bots hinweg, von der ersten Erfassung bis hin zu einer zitierfähigen Zeitleiste und einer überprüfbaren Übergabe. Die interaktive Website-Version finden Sie unter `/docs/cases/`; [Anweisungen zur Vorschau](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/PUBLISHING.md#preview-the-website-locally). **Auf dieser Seite** - [Beispielfall: Ein Ziel ändert sich über vier Unterhaltungen hinweg](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#worked-case-a-destination-changes-across-four-conversations) - [1. Den Sachverhalt definieren und den gesamten Bericht zusammenstellen](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#1-define-the-case-and-collect-the-whole-account) - [2. Alle Quellen erfassen und den historischen Kontext ermitteln](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#2-inventory-every-source-and-acquire-historical-context) - [3. Behalten Sie den sich entwickelnden Fall und die bewussten Interaktionen bei.](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#3-preserve-the-evolving-case-and-deliberate-interactions) - [4. Beobachtungen über Chats hinweg verknüpfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#4-connect-observations-across-chats) - [5. Erstellen der chatübergreifenden Zeitleiste](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#5-build-the-cross-chat-timeline) - [6. Fügen Sie Konto-Perspektiven hinzu, ohne deren Herkunft zu verlieren.](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#6-add-account-perspectives-without-losing-their-origin) - [7. Fallübergabe zusammenstellen und überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#7-assemble-and-verify-the-case-handoff) - [Untersuchung anpassen](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/#adapt-the-investigation) ## Beispielfall: Eine Änderung des Zielortes über vier Unterhaltungen hinweg Eine Ankündigung verweist auf einen Bot. Eine Einsatzgruppe bespricht ein neues Zahlungsziel, und die Tastatur des Bots zeigt dieses an. Die Ankündigung wird bearbeitet, in einer privaten Folgenachricht wird das Ziel wiederholt, und eine Gruppennachricht verschwindet. Die Fragen lauten: Was wurde vor und nach der Änderung beobachtet, welche Telegram- Konten haben die einzelnen Einträge gepostet, wo erschien das Ziel, welche Bytes der Anhänge wurden erhalten und welche Zeitintervalle bleiben unbekannt? Alle Namen, IDs, Zeitangaben und Verweise auf das Protokoll in diesem Beispiel sind fiktiv. Der Arbeitsablauf nutzt aktuelle Funktionen; die Fallübersicht dient lediglich der Veranschaulichung und ist kein automatischer , von der Anwendung generierter Graph. Ablaufdiagramm · Kanäle → Arbeitsbereichsprotokoll; Gruppen → Arbeitsbereichsprotokoll; Private Chats → Arbeitsbereichsprotokoll; Bots → Arbeitsbereichsprotokoll; Arbeitsbereichsprotokoll → Alle Quellen durchsuchen; Arbeitsbereichsprotokoll → Personenprofile mit Verweisen auf die entsprechenden Aufzeichnungen; Arbeitsbereichsprotokoll → Gespeicherte Versionen und Empfangsbestätigungen für Anhänge; Alle Quellen durchsuchen → Chronologie der Analysten und Quellenverzeichnis; Personenprofile mit Verweisen auf die entsprechenden Aufzeichnungen → Chronologie der Analysten und Quellenverzeichnis; Gespeicherte Versionen und Empfangsbestätigungen für Anhänge → Chronologie der Analysten und Quellenverzeichnis; Arbeitsbereichsprotokoll → Signierte Beweisdatei im ZIP-Format; Chronologie der Analysten und Quellenverzeichnis → Fallübergabe mit separat verifizierten Beweismitteln; Signierte Beweisdatei im ZIP-Format → Fallübergabe mit separat verifizierten Beweismitteln · Kanäle · Gruppen · Private Chats · Bots · Arbeitsbereichsprotokoll · Alle Quellen durchsuchen · Personenprofile mitVerweisen auf dieentsprechendenAufzeichnungen · Gespeicherte Versionen undEmpfangsbestätigungen fürAnhänge · Signierte Beweisdatei imZIP-Format · Chronologie der Analystenund Quellenverzeichnis · Fallübergabe mit separatverifiziertenBeweismitteln **Diagramm als Text** 1. Kanäle → Arbeitsbereichsprotokoll 2. Gruppen → Arbeitsbereichsprotokoll 3. Private Chats → Arbeitsbereichsprotokoll 4. Bots → Arbeitsbereichsprotokoll 5. Arbeitsbereichsprotokoll → Alle Quellen durchsuchen 6. Arbeitsbereichsprotokoll → Personenprofile mit Verweisen auf die entsprechenden Aufzeichnungen 7. Arbeitsbereichsprotokoll → Gespeicherte Versionen und Empfangsbestätigungen für Anhänge 8. Alle Quellen durchsuchen → Chronologie der Analysten und Quellenverzeichnis 9. Personenprofile mit Verweisen auf die entsprechenden Aufzeichnungen → Chronologie der Analysten und Quellenverzeichnis 10. Gespeicherte Versionen und Empfangsbestätigungen für Anhänge → Chronologie der Analysten und Quellenverzeichnis 11. Arbeitsbereichsprotokoll → Signierte Beweisdatei im ZIP-Format 12. Chronologie der Analysten und Quellenverzeichnis → Fallübergabe mit separat verifizierten Beweismitteln 13. Signierte Beweisdatei im ZIP-Format → Fallübergabe mit separat verifizierten Beweismitteln ## 1. Definieren Sie den Fall und erfassen Sie den gesamten Sachverhalt 1. Verbinden Sie das Erfassungskonto in einem eigenen Arbeitsbereich. Erfassen Sie im [Case Board](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/) oder in Ihrem Fallregister die Fallreferenz, die Konto-ID, den Arbeitsbereich und den Beginn der Beobachtung. Bewahren Sie den Fingerabdruck des vertrauenswürdigen Signaturschlüssels separat auf. 2. Für ein spezielles Erfassungskonto öffnen Sie **„Quellen“ → „Beobachtungsumfang“ → „Ermittlungsmodus**“. Die Voreinstellung wählt **„Gesamtes Konto**“, Kanäle/Gruppen/private Chats/Bots, eigene Aktionen, Quellenprofile sowie die letzten 200 sichtbaren Nachrichten für neu entdeckte Quellen aus. Überprüfen Sie die Auswahl, klicken Sie auf **„Umfang speichern**“ und schließen Sie die Bestätigung des Umfangs ab. Hauptkonten verwenden ausgewählte Chats oder einen Ordner; die Erfassung des gesamten Kontos ist für Konten verfügbar, die zur Untersuchung markiert sind. 3. **Laden Sie Chats** und vergleichen Sie die Quellen mit der Dialogliste des Kontos. Überprüfen Sie die Ausschlüsse. **Der Parameter „Chats, die aus der Liste des Kontos gelesen werden“** ist standardmäßig auf 1.000 eingestellt und erlaubt bis zu 20.000. Quellen, die über das Listenlimit hinausgehen, werden hinzugefügt, sobald sie aktiv werden. Zeichnen Sie auf, was tatsächlich erfasst wurde. 4. Wählen Sie in **den Aufzeichnungseinstellungen „Alle sichtbaren Aktivitäten**“ aus und speichern Sie die Überwachungseinstellungen. Überprüfen Sie die Anhangstypen/-beschränkungen sowie den freien Speicherplatz. 5. Beobachtung starten. Überprüfen Sie eine kontrollierte neue Nachricht, eine Bearbeitung und eine Löschung und speichern Sie anschließend die Testreferenzen sowie etwaige Fehler. Der Erfassungsumfang für das gesamte Konto erfasst alle für das Konto sichtbaren Aktivitäten im Rahmen der gespeicherten Einstellungen. Es greift nicht auf geheime Chats zu und tritt auch nicht automatisch jeder verknüpften Gruppe bei. Außerdem werden nicht alle bestehenden Unterhaltungen nachträglich erfasst. Siehe [Erfassungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#observation-scope-chosen-chats-a-folder-or-the-whole-account). ## 2. Erfassen Sie alle Quellen und ermitteln Sie den historischen Kontext Führen Sie ein Quellenverzeichnis mit einer Zeile pro Chat: | Fachgebiet | Aufzeichnen | | --- | --- | | Identität | Arbeitsbereich, Konto-ID, numerische Chat-ID, Titel und Typ | | Sichtbarkeit | Mitgliedschaft/Rolle, bestätigter oder unbestätigter Zugriff, Ausschlüsse | | Live-Erfassung | Startzeitpunkt, ausgewählte Ereignistypen und spätere Richtlinienänderungen | | Verlauf des Protokolls | Angeforderte/fertiggestellte Momentaufnahmen, Begrenzung, Zeitangaben und Verweise auf Aufzeichnungen | | Vollständiger Verlauf | Signierter Dateiname für den Export pro Chat, Begrenzung sowie Abschluss/Fehlschlag | | Anhänge | Vollständige Medienbelege, Hashes, Dateigrößen sowie Ergebnisse zu übersprungenen bzw. fehlgeschlagenen Vorgängen | | Umfang | Ausfälle, unvollständige Erfassung, „FloodWait“, nicht verfügbare Nachrichten und andere Lücken | Verwenden Sie für jede Quelle die geeignete Erfassungsmethode: - **„Vollständigen Verlauf** in **Quellen laden“** lädt verfügbare frühere Nachrichten aus aktivierten Quellen in das Arbeitsbereichsprotokoll. Die Funktion unterstützt das Anhalten/Fortsetzen sowie einen signierten Fortschrittsbericht. Siehe [„Verlaufserfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/)“. - **Der Verlaufs-Snapshot** speichert die zuletzt sichtbaren Nachrichten im Beobachtungsprotokoll. Der standardmäßige Höchstwert beträgt 500; unter **„Parameter → Größter Verlaufs-Snapshot“** kann dieser Wert auf 10.000 erhöht werden. Dabei handelt es sich um aktuelle Verlaufsbeobachtungen, nicht um rekonstruierte Bearbeitungen. - **„Gesamten Chat exportieren“ → „Gesamten Chat exportieren**“ oder **„Chats“ → „Chat exportieren**“ ruft den derzeit sichtbaren Verlauf eines Chats in ein separates, signiertes `chat.json`-/ `chat.html`-Bundle ab. Wiederholen Sie diesen Vorgang für die Quellen des Falls und bewahren Sie jedes Ergebnis auf. - **Wenn ein neuer Chat oder Bot erscheint,** können dessen Profil und bis zu 1.000 der letzten Nachrichten gespeichert werden; im Untersuchungsmodus werden 200 ausgewählt. Bestehende Chats erhalten diese Aufzeichnung nicht rückwirkend, wenn der Modus aktiviert wird. - **Das Herunterladen sichtbarer Anhänge** bewahrt die Byte-Anzahl gemäß der konfigurierten Richtlinie. Erforderlich ist eine vollständige „`media.saved`“-Quittung mit SHA-256 und Byte-Angabe. Ein in der Warteschlange befindlicher Auftrag, eine Miniaturansicht oder ein Dateiname gilt nicht als bewahrter Anhang. Ein vollständiger Chat-Export füllt das Protokoll oder die Personenprofile **nicht** mit allen darin enthaltenen Nachrichten. Verwenden Sie**„Vollständigen Verlauf laden“** oder begrenzte Protokoll-Snapshots für den Verlauf, den Sie innerhalb von TgWitness analysieren möchten. Überprüfen Sie die Liste der aktivierten Quellen, bevor Sie einen Verlaufslauf starten. Keine der beiden Methoden stellt Material wieder her, das Telegram nicht mehr zurückgibt. ## 3. Erfassung des sich entwickelnden Sachverhalts und der bewussten Interaktionen Markieren Sie Chats zu aktiven Fällen als vorrangige Quellen. Überprüfen Sie die Intervalle für erneute Überprüfungen, die fortlaufende Nachverfolgung und die Ergebnisse der Medienauswertung. Lassen Sie den Collector während der Nutzung des Kontos weiter beobachten. Verwenden Sie **„Chats“ → „Profil“ → „Profil jetzt speichern“,** um Metadaten der Quelle wie Beschreibungen und Bot-Befehle zu erhalten. Dies ist unabhängig von Personenprofilen, die aus gespeicherten Nachrichten abgeleitet werden. Wenn es in dem Fall darum geht, einer Quelle zu folgen oder mit einem Bot zu interagieren: 1. **Telegram-Link öffnen → „Vorschau speichern“** zeichnet den angegebenen Link und die angezeigte Vorschau vor einer Aktion auf. 2. **„Join / open and observe“** führt den Beitritt/das Öffnen durch und sendet den Startparameter eines Bots, sofern dieser angegeben wurde. Eine zur Genehmigung anstehende Beitrittsanfrage wird als „pending“ (ausstehend) protokolliert. 3. Vom Bedienfeld ausgegebene Textantworten und unterstützte Tastenbetätigungen behalten „ `interaction.requested`“ und „`interaction.result`“ bei. Rückrufbestätigungen können den zurückgegebenen Popup-Text, den Alarmstatus und die URL beibehalten. Es handelt sich hierbei um echte Kontoaktivitäten. Callback-Aufrufe in einer anderen Telegram-App sind für den Erfasser nicht sichtbar, obwohl die daraus resultierenden Nachrichten oder Bearbeitungen möglicherweise sichtbar sind. Der Mini-Client führt keine Web-App-, Zahlungs-, Telefon- oder Standort-Workflows durch. Das genaue Verhalten entnehmen Sie bitte [den Panel-Interaktionen](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/#act-from-the-panel). ## 4. Verknüpfung von Beobachtungen über verschiedene Chats hinweg Wählen Sie im **Protokoll „Alle Quellen**“ aus und durchsuchen Sie die aufgezeichneten Inhalte. Öffnen Sie die entsprechenden Einträge und notieren Sie sich den Arbeitsbereich, den Chat, die Nachrichten-ID, die Reihenfolge und den Datensatz-Hash. Öffnen Sie in einem entsprechenden Chat **„Personen**“**→ „Profile aktivieren**“ und überprüfen Sie eine Person: - Im Laufe der Zeit erfasste Namen/Benutzernamen sowie die numerische Telegram-ID. - Antwortbeziehungen mit Verweisen auf die Quelldatensätze. - **Ebenfalls enthalten sind …** andere Chats in diesem Arbeitsbereichsprotokoll, in denen diese ID geschrieben hat. - Aktivitäten, Bearbeitungen/Löschungen sowie erwähnte Wallets, Telefone, Benutzernamen und Links. - Gespeicherte Avatar-Metadaten und ähnliche zwischengespeicherte Avatare mit Angabe ihrer jeweiligen Herkunft. Öffnen Sie die zitierten Datensätze, bevor Sie ein abgeleitetes Profil in einer Feststellung verwenden. Profile beziehen sich auf Personen mit gespeicherten Nachrichten, nicht auf jedes einzelne Gruppenmitglied. **Der Parameter „→ Datensätze pro Tatsache“** begrenzt die Referenzliste, nicht die Anzahl der zugrunde liegenden Aktivitäten. Erwähnungen und Ähnlichkeiten bei Avataren sind Anhaltspunkte; sie begründen weder Eigentumsverhältnisse noch Identität. Im Beispiel: | Link | Aufzeichnungen | Unterstützte Beobachtung | | --- | --- | --- | | Derselbe Absender-Account | Gruppe Nr. 146 und privater Folgebeitrag Nr. 205 | Beide geben die Telegram-Absender-ID 71001 an | | Gleiche Zieladresse | #146, Bot-Tastatur #173, Kanalbearbeitung #188, private Nachricht #205 | Alle enthalten „`pay.example.invalid/new`“; Eigentumsverhältnisse bzw. Kontrollverhältnisse sind nicht geklärt. | | Dieselbe gespeicherte Datei | Medienbelege Nr. 151 und Nr. 209 fertiggestellt | Die vollständigen SHA-256-Werte stimmen für die gespeicherten Bytes überein | | Angabe der Kanalquelle | #101 und #188 | Ordnen Sie einen Kanalbeitrag nicht dem Nutzer 71001 zu, ohne dass ein Absender angegeben ist. | Vergleichen Sie die Hashes der Anhänge mit den zugehörigen Nachrichtenreferenzen und gruppieren Sie die Zeitleisten der Konten nach den in diesen Datensätzen angegebenen Telegram-IDs. Bewahren Sie die Arbeitsnotizen des Teams auf [dem](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/) [Case Board](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/) auf: Setzen Sie Lesezeichen für die Datensätze, auf die Sie sich stützen, wie z. B. #146, #188 und #205, markieren Sie die genaue Zielzeichenfolge und speichern Sie einen Ausschnitt jeder aufgezeichneten Aktion zwischen zwei Datensätzen oder in einem Zeitbereich. Notizen und Statusangaben bewahren die Überprüfung durch das Team in einem eigenen, signierten Verlauf auf, der von den Beobachtungen der Quelle getrennt identifizierbar ist. ## 5. Erstellen Sie die chatübergreifende Zeitleiste Verwenden Sie die gespeicherten Versionen in **Chats** und deren Links **zum Protokoll-Eintrag Nr. …** . Kombinieren Sie im **Protokoll alle Quellen** mit **Bearbeitungen**, **Löschungen** und **der Berichterstattung**. Behalten Sie sowohl `source_at`, sofern vorhanden, als auch `observed_at` bei. | Beispielhafte Beobachtungsdauer | Referenz | Anmerkung | | --- | --- | --- | | 09:00 | Kanal #101 | Ursprüngliches Ziel erfasst | | 09:12 | Gruppe #146; Medien #151 | Neues Ziel veröffentlicht; Dateidownload abgeschlossen | | 09:16 | Bot Nr. 173 | Die Tastatur zeigt auf das neue Ziel | | 09:20 | Kanal Nr. 188 | Ankündigung bearbeitet; beide gespeicherten Versionen bleiben erhalten | | 09:24 | Privat #205; Medien #209 | Die gleiche Absender-ID wiederholt sich im Empfängerfeld; die gleichen Dateibyte bleiben erhalten | | 09:28 | Gruppe Nr. 231 | Löschmeldung erhalten; Löschender und genauer Zeitpunkt der Löschung unbekannt | Zwischen diesen Beispielverweisen liegen weitere Aufzeichnungen vor. Sequenznummern ordnen Beobachtungen; Verlaufs-Snapshots können ältere Quelldaten enthalten und später eintreffen als Live-Ereignisse. Unterscheiden Sie zwischen Snapshots, wiederhergestellten Nachrichten, Löschmeldungen und Ergebnissen, bei denen bei einer erneuten Überprüfung keine Daten mehr vorhanden sind. Kennzeichnen Sie Lücken in der Erfassung als unbekannte Intervalle. Eine spätere Erfassung von Verlaufsdaten begründet nicht rückwirkend eine lückenlose Beobachtung. ## 6. Fügen Sie Konto-Perspektiven hinzu, ohne deren Herkunft zu verlieren Verwenden Sie für jedes einzelne Konto einen separaten Arbeitsbereich und wiederholen Sie dessen Bestandsaufnahme. Bewahren Sie bei jedem Vergleich die Konto-ID, die Rolle, den Fingerabdruck des Signaturschlüssels und die Quellenangaben auf. Nachrichtennummern sind keine globalen Identifikatoren, die über Chats und Konten hinweg gelten. „Case Board“ verwaltet quellverknüpfte Notizen und Sammlungen innerhalb jedes Arbeitsbereichs. Auf dem Gruppenbildschirm wird der Kontostatus gemeinsam überprüft, und es können separate Arbeitsbereichs-Exporte gebündelt werden. Korrelieren Sie diese Quellen in Ihren Fallnotizen oder Analyse-Tools; jedes Protokoll behält seine eigene Herkunft und seinen eigenen Signaturschlüssel bei. Eine globale Suche oder eine zusammengeführte, arbeitsbereichsübergreifende Zeitleiste wird nicht generiert. Der Export mehrerer Konten eines Kanals/einer Supergruppe erfasst den Verlauf dieses Chats unter Verwendung der berechtigten Konten. Bei umfangreicheren Projekten sollten Sie die Grenzen durch einen [unabhängigen Zeugen](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) wahren. Verwenden Sie kontrollierte Zustellungsprüfungen, um den Erfassungsweg und die Sichtbarkeit jedes Kontos zu überprüfen. ## 7. Zusammenstellung und Überprüfung der Fallübergabe Fassen Sie diese Informationen in einem von einem Analysten zusammengestellten Fallverzeichnis zusammen: | Material | Zweck | | --- | --- | | Fallnotizen und Quellenverzeichnis | Fragen, Erfassungsrichtlinien, Zugriffsrechte/Rollen, Ergebnisse, alternative Erklärungen und Lücken | | Zeitleiste | Angaben zu Zeitpunkten sowie Verweise auf Arbeitsbereich, Chat, Nachricht und Sequenz für jeden Eintrag | | Case Board Export und Ausschnitte, falls verwendet | Quellenverknüpfte Lesezeichen, Zitate, Teamnotizen, Sammlungen, Revisionsverlauf und ausgewählte Datensätze, die mit der ZIP-Datei der Beweismittel abgeglichen wurden | | Signierte Beweisdatei im ZIP-Format pro Arbeitsbereich | Vollständiges Protokoll, Manifest und enthaltene, gesicherte Medien; Filterfelder schränken den Protokollexport nicht ein | | Separat signierte Personenprofil-Dateien | Abgeleitete Referenzen wurden anhand der entsprechenden Beweismittel im Arbeitsbereich überprüft | | Signierte vollständige Chat-Exporte | Erfassung des aktuell sichtbaren Verlaufs, getrennt vom Beobachtungsprotokoll | | Vertrauenswürdige Fingerabdrücke und frühere Kontrollpunkte | Wichtige Identitätsmerkmale und Grenzen des gespeicherten Protokolls | | Witness-Artefakte, sofern konfiguriert | Separates Protokoll, signierte Einträge und Witness-Fingerabdruck | | Verifizierungsergebnisse und Hashes der bereitgestellten Dateien | Was wurde überprüft, welche Bytes wurden übertragen und an wen? | Aus einer vertrauenswürdigen Installation, mit Dateinamen und dem tatsächlichen Fingerabdruck jedes Arbeitsbereichs: ``` 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 python -m tgwitness.verify board-slice.json --evidence evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 ``` Behalten Sie die tatsächlichen Verifizierungsergebnisse und Originalartefakte bei. Exportieren Sie Arbeitsbereichsnotizen aus dem Case Board zusammen mit dem zitierten Quellenmaterial. Stellen Sie arbeitsbereichsübergreifende Ergebnisse im obersten Fallverzeichnis zusammen; jedes TgWitness-Artefakt verfügt über eine eigene Signatur und ein eigenes Verifizierungsverfahren. ## Passen Sie die Untersuchung an | Fall | Trace | Liefern | | --- | --- | --- | | Bot-gesteuerte Streitigkeiten bezüglich Bestellungen/Zahlungen | Ankündigung des Eintrags → Vorschau des gespeicherten Links → Startparameter des Bots → Nachrichten- und Tastaturversionen → Rückmeldebestätigungen über das Panel → Nachverfolgung in privaten Chats und Gruppen | Beobachtete Zeitachse von Angeboten und Antworten sowie verifizierte Quellen; ein Zahlungslink allein stellt keinen Zahlungsnachweis dar | | Gelöschte Nachrichten nach einem Vorfall | Alle betroffenen Chats → gespeicherte Originale/Bearbeitungen → Ergebnisse bei Löschung oder Fehlen bei erneuter Überprüfung → erhaltene Medien → Berichterstattung und andere Perspektiven des Kontos | Gespeicherte Versionen und explizit angegebene unbekannte Zeitintervalle; keine fiktiven Löschakteure | | Ein Teilnehmer verwendet in verschiedenen Chats unterschiedliche Namen | Numerische Absender-ID → Name/Benutzername im Verlauf → Antworten → andere beobachtete Chats → zitierte Ziele/Dateien | Eine Zeitleiste der Aktivitäten eines Telegram-Kontos mit Links zu den entsprechenden Quelldatensätzen | [Referenz zur Sammlung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/) · [Überprüfung von Personenprofilen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#people-profiles) · [Übergabe von Beweismitteln](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#investigation-handoff) · [Validierung abgeschlossen](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) --- # Telegram · Funktionen und Einschränkungen Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/features/ Das aktuelle Erfassungsmodell, Workflows für mehrere Konten, Exporte und operative Grenzen von TgWitness. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Das aktuelle Erfassungsmodell, Workflows für mehrere Konten, Exporte und operative Grenzen von TgWitness. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Projektreferenz](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Projektreferenz](https://phishdestroy.github.io/TgWitness/assets/chapter-project.svg) TgWitness sichert Telegram-Konversationen, auf die verbundene Konten Zugriff haben, erfasst festgestellte Änderungen und erstellt überprüfbare Exporte. Diese Referenz beschreibt das Erfassungsmodell, aktuelle Arbeitsabläufe und deren Grenzen. **Auf dieser Seite** - [Standalone-Anwendung](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#standalone-application) - [Gemeinsame Untersuchungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#shared-investigations) - [Archivierungswerkzeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#archive-tools) - [Optionale Extras](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#optional-extras) - [Protokoll und private Quellen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#protocol-and-private-sources) - [Mehrere Konten](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#multiple-accounts) - [Erfassung und Zuordnung](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#capture-and-attribution) - [Kapazität und Telegram-Beschränkungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#capacity-and-telegram-limits) - [Zuverlässigkeit und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#reliability-and-recovery) - [Beweismodell](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#evidence-model) - [Export, Bereitstellung und Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#export-deployment-and-handoff) - [Kriterien für stabile Veröffentlichungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/features/#stable-release-criteria) ## Eigenständige Anwendung TgWitness verfügt über eine eigene Installation, ein eigenes Datenverzeichnis und einen eigenen Release-Zyklus. Die mitgelieferte Weboberfläche übernimmt die Einrichtung und Überprüfung; exportierte Datensätze können eigenständig verwendet werden. Der Betreiber verbindet seine Konten, wählt die für jedes Konto sichtbaren Quellen aus und erhält ein gespeichertes Beobachtungsprotokoll. Das Dashboard zeigt Inhalte, gespeicherte Änderungen, die Herkunft der Beobachtungen sowie bekannte Lücken an. Ein anderer Ermittler kann das exportierte Material überprüfen. Das Panel unterscheidet zwischen Kontoautorisierung, Zugriff auf eine Quelle, Collector-Aktivität und erfasster Abdeckung. Überprüfen Sie diese Zustände gemeinsam, wenn Sie ein Intervall mit wenigen Nachrichten oder ein Verbindungsproblem bewerten. ## Gemeinsame Ermittlungen Ein Administrator kann [Zugriffstoken](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) ausstellen, [die](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) auf Arbeitsbereiche und einzelne Chats beschränkt sind, mit Berechtigungen pro Aktion, IP-Einschränkungen, Ablaufdaten, Anmeldebeschränkungen und Sitzungskontrolle. Ein Prüfer mit Lesezugriff kann einen Fall einsehen, ohne die Telegram-Autorisierung oder den Schlüssel für das Hauptfenster zu erhalten. Der auf Chats beschränkte Zugriff bleibt getrennt von kontoweiten Einstellungen und vollständigen Journal-Exporten. Automatic MTProxy unterhält funktionierende Telegram-Routen aus vier öffentlichen Quellen oder einem Betreiberkatalog. [IP-Modi](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/#ip-modes) legen fest, ob bei einem Ausfall auf einen anderen Proxy gewartet werden muss oder eine ausdrücklich zugelassene direkte Route genutzt werden darf. Externe HTTP-Anfragen verfügen über eine separate Route und einen Deaktivierungsschalter. ## Archivierungstools [Die Erfassung von Verlaufsdaten](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/), [die Suche und Analyse im Archiv](https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/),[ein schreibgeschütztes MCP](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/), [lokale OCR/Transkription](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/) und[ausgehende Webhooks](https://phishdestroy.github.io/TgWitness/de/docs/reference/webhooks/) sind in 0.7.1 enthalten. Analyseberichte und erkannter Text bleiben getrennt von den erfassten Ereignissen. [„Case Board“](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/) fügt quellverknüpfte Lesezeichen, Zitate, Notizen und Sammlungen innerhalb eines Arbeitsbereichs hinzu. Der [Berichtskonstruktor](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) wählt Material, Abschnitte und eines von acht Designs für unterstützte HTML-/PDF-Exporte aus. ## Optionale Zusatzfunktionen Die tägliche Einrichtung erfolgt über „Konto“ → „Quellen“ → „Beobachtung“. **„Extras“** ist ein separater Bereich mit einem Telegram-Witness-Bot und einer GitHub-Erfassungsvorschau. Bei jedem werden zunächst die Verfügbarkeit und die Anforderungen angegeben, bevor die Einstellungen angezeigt werden. Durch Auswahl einer Karte werden Anweisungen geöffnet; es erfolgt keine Registrierung oder Aktivierung eines Dienstes. Die Einrichtung des Bots erfolgt in drei Schritten: Erstellen eines Lesezugriffs, Auswählen der Veröffentlichungseinstellungen und Starten auf dem Witness-Host. Netzwerk- und Veröffentlichungsoptionen, bestehende Verbindungen sowie Verifizierungsbefehle werden auf Anfrage angezeigt. Die heruntergeladene Konfiguration unterscheidet sich von einem laufenden Witness. Beim Wechseln von Zusatzoptionen bleibt der Entwurf erhalten; Kontoänderungen und Sperren löschen das temporäre Token und das Formular. Die integrierte Anleitung enthält Anweisungen zum Start. [GitHub Actions](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md)starten einen angehefteten Collector aus Ihrem Fork, erfassen einen Chat und erzeugen eine verschlüsselte Übergabe mit Workflow-Herkunftsnachweis. ## Protokoll und private Quellen **MTProto ist das Protokoll von Telegram; Telethon ist die Python-Bibliothek, die TgWitness verwendet, um MTProto zu nutzen.** Es handelt sich dabei nicht um alternative Verbindungsmethoden. Die Datenerfassung erfolgt über MTProto; der optionale „Witness“ veröffentlicht signierte Prüfberichte über die Bot-API. Jeder Arbeitsbereich verfügt über einen eigenen autorisierten Client und einen eigenen Aktualisierungsstrom für das Konto. TgWitness wählt Beobachtungen aus konfigurierten Quellen aus und stellt separate, explizite Anfragen für Funktionen wie Verlaufs-Snapshots und Medien-Downloads. Eine private Quelle benötigt keinen öffentlichen Benutzernamen. Der Telegram-Peer-Typ und die numerische ID sind die Identifikatoren; Titel und Benutzernamen können sich ändern. Der Zugriff hängt von der bestehenden Mitgliedschaft und den Berechtigungen ab. TgWitness tritt Quellen nicht automatisch bei und umgeht auch nicht die Beitrittsgenehmigung. Ein Zugriffshash von einem anderen Konto ist kein universelles Zugriffstoken. Das Erfassungsmodell muss versteckte Verlaufsdaten vor dem Beitritt, Teilnehmer- und Administratorrollen, den Widerruf von Sitzungen, die Entfernung oder Änderung von Berechtigungen, die Migration von Gruppen zu Supergruppen, Themen und Foren, verknüpfte Diskussionen, Kanalidentitäten sowie nicht verfügbare Anhänge berücksichtigen. Nicht jede Kombination wurde bereits in der Praxis getestet. Die Sichtbarkeit der Quellen wird beim Start des Collectors überprüft. Fehlt eine Quelle aus dem begrenzten Dialogergebnis, bedeutet dies, dass **der Zugriff nicht bestätigt ist**, nicht jedoch, dass eine Entfernung nachgewiesen wurde. Eine nicht verfügbare Quelle verhindert nicht die Beobachtung anderer zugänglicher Quellen. Fügen Sie niemals Einladungslinks oder echte Sitzungen in öffentliche Fixtures ein. ## Mehrere Konten Das Panel unterstützt eine beliebige Anzahl von **Arbeitsbereichen**, von denen jeder über folgende Merkmale verfügt: - Autorisierung, verschlüsselter Speicher und Verbindungsweg. - SQLite-Protokoll und Ed25519-Signaturidentität. - Ausgewählte Quellen, Medienwarteschlange und Erfassungseinstellungen. - Überwachungsstatus, Fehler, Kontrollpunkte und Exporte. Das Wechseln des angezeigten Arbeitsbereichs stoppt keinen anderen Collector. Eine doppelte Kontoautorisierung über verschiedene Arbeitsbereiche hinweg wird abgelehnt. Ein Protokoll, das bereits an ein Telegram-Konto gebunden ist, kann keinem anderen Konto zugewiesen werden; eine erneute Verbindung desselben Kontos ist jedoch zulässig. Dadurch bleiben die Kontoidentität und der relevante Nachrichten-ID-Bereich erhalten. Die Anwendung legt keine feste Anzahl von Arbeitsbereichen fest. Jeder Arbeitsbereich führt seine eigenen Collector- Aufgaben zur Verbindungsüberwachung, zum Herunterladen von Medien, zu Nachprüfungen und zur Erfassung neuer Chats innerhalb eines gemeinsamen Python-Prozesses und einer gemeinsamen Ereignisschleife aus. Der Durchsatz hängt von der Arbeitslast ab. Zur Prozessisolierung sollten separate Installationen, Ports und Datenverzeichnisse verwendet werden. Weisen Sie jedem Konto die Quellen zu, auf die es zugreifen kann. Verschiedene Konten können dieselbe Gruppe beobachten, doch ihre Beobachtungen bleiben getrennt und behalten ihre Herkunft bei. Zwei Konten auf einem vom Betreiber kontrollierten Rechner gelten nicht als zwei unabhängige Zeugen. **Der Export „Group“** bündelt die separat signierten ZIP-Dateien der Arbeitsbereiche mit einer signierten Dateiliste, die deren Arbeitsbereichs-IDs, Hashes und Fingerabdrücke der Signaturschlüssel enthält. Jedes Protokoll behält seine eigene Abgrenzung bei. Erstellen Sie eine kombinierte, arbeitsbereichsübergreifende Zeitleiste in Fallnotizen oder Analysetools, wobei diese Quellenverweise erhalten bleiben. ## Erfassung und Zuordnung Unter „Quellen“ stehen pro Konto Schaltflächen für neue Nachrichten, Bearbeitungen, Löschungen, Reaktionen und Mitgliedschaften zur Verfügung. Voreinstellungen behalten entweder alle Kategorien oder Nachrichten/Bearbeitungen/Löschungen bei. Die Richtlinie gilt für die ausgewählten Gruppen des Arbeitsbereichs, bleibt auch nach einem Neustart erhalten und wird mit den Änderungen vor und nach der Anpassung signiert. Standardmäßig werden alle Kategorien beibehalten. Das Deaktivieren einer Kategorie führt nicht zum Löschen alter Datensätze; das erneute Aktivieren stellt verpasste Ereignisse nicht wieder her. Betriebliche Aufzeichnungen, andere Gruppen-Service-Ereignisse und explizite Verlaufs-Snapshots sind separat. Erfasste Telegram-Objekte können eingebettete Metadaten beibehalten, unabhängig von den Schaltflächen für separate Aktualisierungen. Es gibt noch keine gruppenspezifischen Kategorie-Überschreibungen. | Material | Jetzt erfasst | Grenze | | --- | --- | --- | | Nachricht | Text, Peer-/Nachrichten-IDs, Metadaten des Absenders, Antworten und ursprünglicher Update-Envelope | Wird als für das Konto sichtbare Beobachtung gespeichert, die vom Erfasser signiert wurde | | Bearbeiten | Neu erfasste Version und alle zuvor gespeicherten Versionen | Zwischenzeitliche Bearbeitungen während Ausfallzeiten können verloren gehen; der Absender ist nicht zwangsläufig der Bearbeiter. | | Löschung | Benachrichtigung und gegebenenfalls zuvor erfasste Inhalte | In der Regel keine Angabe des Löschers oder des genauen Zeitpunkts der Aktion | | Löschhinweis auf Kontoebene | Ursprünglicher Hinweis; zu den abgeschlossenen Datensätzen gehören der gespeicherte Chat und die Korrelationsmethode | Es muss genau eine zuvor gespeicherte Übereinstimmung aus einem privaten Chat oder einer normalen Gruppe im Umfang vorhanden sein; andere IDs bleiben „`deletion.unscoped`“. Kanal- und Supergruppen-IDs sind von dieser Korrelation ausgeschlossen. | | Reaktion | Ausgegebene Zählerstände und sichtbare aktuelle Identitäten | Eine vollständige Liste der verfügbaren Reaktoren erfordert separate Abfragen; Kanäle können Identitäten verbergen | | Mitgliedschaft | Service-Meldungen und zugestellte Teilnehmer-Updates | Die Sichtbarkeit hängt von der Rolle und der Art des Chats ab; fehlende Ereignisse bedeuten nicht zwangsläufig, dass keine Aktivitäten stattgefunden haben. | | Administratoraktionen | Relevante bereitgestellte Updates und eine Momentaufnahme des Admin-Logs in den Exporten von Kanal-/Supergruppen-Chats | Der Export liest das Protokoll, sofern es für das exportierende Administratorkonto verfügbar ist; eine kontinuierliche Abfrage des Administratorprotokolls ist nicht Teil dieses Prozesses. | | Anhang | Beschreibung der Originalversion, heruntergeladene Bytes/SHA-256 und Ergebnisse der Versuche | Eine gelöschte Datei ist möglicherweise nicht wiederherstellbar; die neueste Version wird nicht ersetzt. | | Geschichte | Eindeutige Momentaufnahme der aktuell sichtbaren Nachrichten | Es werden nicht alle Bearbeitungen oder gelöschten Inhalte rekonstruiert. | | Erfassungsprozess | Start/Stopp, Heartbeat, Fehler, Einstellungen, Umfang und signierte Ausführungsbestätigung | Lokales Inventar; GitHub und TDX fügen [-unabhängige Umgebungsprüfungen hinzu](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) | Die Benutzeroberfläche nennt das im Quellereignis angegebene Konto und behält beobachtete Namen und Benutzernamen bei. Wenn im Ereignis der Akteur fehlt, bleibt dieses Feld im Bericht unbesetzt. ## Kapazität und Telegram-Beschränkungen Es gibt keine allgemeingültige Anzahl von Chats, die mit garantierter Qualität überwacht werden können. Die Kapazität hängt von der Spitzenanzahl an Ereignissen pro Sekunde, dem Volumen und der Größe der Anhänge, zusätzlichen RPCs, aktiven Konten, Festplattenlatenz/freiem Speicherplatz, Netzwerkbedingungen, Telegram-Beschränkungen, akzeptabler Verzögerung und der Warteschlangentiefe ab. Telegram unterscheidet zwischen passiver Zustellung und aktivem Short-Polling. In der aktualisierten Dokumentation werden zusätzliche „`updates.getChannelDifference`“-Aufrufe für offene Kanäle/Supergruppen beschrieben und maximal **zehn gleichzeitig per Short-Polling abgefragte Quellen** empfohlen. Dies stellt weder eine Begrenzung auf zehn ausgewählte Gruppen noch eine Garantie für Vollständigkeit dar. | Modus | Zweck | Status | | --- | --- | --- | | Standardbeobachtung | Erfassung der von ausgewählten Quellen übermittelten Aktualisierungen | Umsgesetzt | | Prioritätsüberprüfungen | Mit einem Stern markierte Quellen verwenden ihr eigenes konfigurierbares Intervall und haben bei jedem begrenzten Überprüfungsprozess Vorrang. | Implementiert mit Verlaufs- und Nachrichtenabfragen | Der Prioritätsstern steuert diese Nachprüfungen. Zusätzliche „`updates.getChannelDifference` “-Short-Polling-Abfragen werden nicht als separater Benutzermodus bereitgestellt. Beliebige Abfragen mit hoher Frequenz, die „FloodWait“ ignorieren oder von einer linearen Kapazität durch zusätzliche Konten ausgehen, stellen kein gültiges Modell zur Dimensionierung dar. Die Standardgrenzen liegen bei den ersten 1.000 aufgelisteten Dialogen, bis zu 500 Nachrichten pro Verlaufs-Snapshot, 1–2.000 MiB pro erfasster Datei je nach Typ sowie 4 GiB unkomprimierter, signierter ZIP-Inhalte; diese Werte können pro Arbeitsbereich unter **„Parameter“** angepasst werden. Exporte unterliegen keiner festen Obergrenze für die Anzahl der Ereignisse. Der Browser-Fallback ist standardmäßig auf 128 MiB begrenzt; die Streaming-CLI verfügt über ein konfigurierbares Übertragungslimit, standardmäßig 5 GiB. ## Zuverlässigkeit und Wiederherstellung Zu den implementierten Funktionen gehören SQLite-WAL/synchrone Transaktionen; atomare Schreibvorgänge für Nachrichten und Medienaufträge; persistente Aufträge und Wiederholungsverzögerungen; Deskriptoren für Originalversionen; begrenzte Wiederholungsversuche; persistentes „FloodWait“ für Medien; Medien-Downloads außerhalb der Netzwerkwartezeit des Text-Ereignisses; Exporte mit stabilem Präfix, während spätere Schreibvorgänge fortgesetzt werden; atomare Einstellungen und Prüfprotokolle; Beibehaltung der gültigen Autorisierung nach fehlgeschlagener Ersatzanmeldung; Isolierung eines beschädigten zusätzlichen Arbeitsbereichs; explizite Wiederverbindungsversuche; eindeutige Meldung von Autorisierungsverlusten; sowie Erkennung von Änderungen der Wanduhrzeit mithilfe einer monotonen Uhr. Die PTS/QTS/SEQ-Werte von Konten und Kanälen werden gespeichert und nach einem Neustart wiederhergestellt, und die überwachten Chats werden regelmäßig erneut überprüft; siehe [Beweisformat](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#durable-collection-and-process-receipts-02). Das regelmäßige Speichern der Position stellt keine atomare, verlustfreie Bestätigung der Protokollakzeptanz dar. Zu Beginn jedes Vorgangs werden der vorherige Kopf und die Offline-Grenze aufgezeichnet. Der aktuelle Verlauf wird nicht zur Lückenbehebung herangezogen. Die Differenzspeicherung von Telegram ist begrenzt; `differenceTooLong` kann nicht alle verschwundenen Inhalte rekonstruieren. Unwiederherstellbare Lücken müssen ausdrücklich gekennzeichnet bleiben, selbst wenn ein späterer Verlaufs-Snapshot erfolgreich ist. ## Beweismodell Jedes Ereignis erfasst eine Sequenz, die lokale Beobachtungszeit in UTC, die Quellzeit (sofern angegeben), die Art des Ereignisses, die Quelle, den Akteur (sofern angegeben), die ursprüngliche Nutzlast, den vorherigen Hashwert und die Signatur. Bei der Erfassung von Nachrichten werden zudem das Konto des Erfassers und der Ausführungskontext gespeichert. Der signierte Prozessbeleg enthält eine zufällige Lauf-ID; TgWitness/Python/OS/Abhängigkeitsversionen; SHA-256-Werte der Quelldateien und einen aggregierten Fingerabdruck; das ursprüngliche Konto, den Umfang und die Einstellungen; UTC-/monotone Messwerte; sowie den vorhergehenden Protokollkopf. Einstellungsänderungen, Start-/Stoppvorgänge und Fehler werden in dasselbe Protokoll eingetragen. Kontrollpunkte werden beim Start, alle fünf Minuten während der Überwachung (einstellbar) sowie bei ordnungsgemäßem Beenden gespeichert. Ein gespeicherter lokaler Kontrollpunkt kann ein Zurücksetzen auf ein früheres Protokollpräfix erkennen. | Funktionsweise | Was damit erreicht wird | | --- | --- | | Datei-SHA-256 | Die Bytes stimmen mit einem bekannten Digest überein | | Ereignis-Hash-Kette | Aufzeichnung der Reihenfolge/Verknüpfung in Bezug auf eine bekannte Grenze | | Ed25519 | Signatur unter einem bestimmten Schlüssel | | Unabhängig gespeicherter Kontrollpunkt | Der nachfolgende Text entspricht den beibehaltenen Grenzen. | | Analyse der Programmdatei | Selbstbericht des Collectors über erfasste Dateien | | Gültige, unabhängige TSA-Antwort | Vorhandensein bestimmter Bytes zum TSA-Zeitpunkt unter expliziten Vertrauensannahmen | Die Vorbereitung von RFC-3161-Anfragen und die Überprüfung der Antworten mittels OpenSSL sind implementiert. Der „Evidence Mode“ übermittelt zudem Checkpoint-Hashes an konfigurierte Zeitstempel-Dienste. Die Antwort der Behörde ist zu speichern und zu überprüfen, um einen unabhängigen Zeitanker zu etablieren. Siehe [TIMESTAMP.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/). Behalten Sie Kontrollpunkte unabhängig bei, kontrollieren Sie den Zugriff auf Signaturschlüssel, führen Sie Übertragungsprotokolle und überprüfen Sie Exporte mit vertrauenswürdiger Software. Der [Überprüfungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) erläutert, wie sich diese Kontrollen gegenseitig ergänzen und welche Vertrauensannahmen gelten. ## Export, Bereitstellung und Übergabe Eine signierte ZIP-Datei enthält die Originaldateien im JSONL-, CSV- und HTML-Format sowie erhaltene Anhänge, Hashes, ein signiertes Manifest und ein praktisches Verifizierungswerkzeug. Sie umfasst einen Arbeitsbereich und ein festes, vollständiges Protokollpräfix. Suchfilter im Bedienfeld entfernen Datensätze nicht stillschweigend. Geheime Schlüssel, Token und Telegram-Sitzungen werden ausgeschlossen; die ursprünglichen Beobachtungen können dennoch personenbezogene Daten und Telegram-Metadaten enthalten. Speichern Sie den ZIP-Digest, den vertrauenswürdigen Fingerabdruck, den Checkpoint, die Prozessquittung und die Übergabe separat. Verwenden Sie ein Verifizierungsprogramm aus einer vertrauenswürdigen Installation, anstatt ausführbarem Code allein deshalb zu vertrauen, weil er in der untersuchten ZIP-Datei enthalten ist. Die Browser-Oberfläche wird lokal ohne Node.js, CDNs oder externe Schriftarten bereitgestellt. Ein Operator-Token steuert die Installation. Für den Fernzugriff sind HTTPS oder ein SSH-Tunnel erforderlich. Native Python- und Container-Definitionen werden bereitgestellt, zusammen mit Service-Beispielen im [Verzeichnis „deploy/“](https://github.com/phishdestroy/TgWitness/blob/main/deploy/README.md); durchgeführte Plattformprüfungen sind separat aufgeführt. Der Standard-Arbeitsbereich verwendet das Datenstammverzeichnis; zusätzliche Arbeitsbereiche verwenden „`profiles//`“. Für die Datensicherung müssen der Prozess angehalten und der vollständige Daten-/Schlüsselsatz vorhanden sein. Die ZIP-Dateien mit den Beweismitteln sind keine Anwendungssicherungen. Für Geheimnisse kann ein externer Hauptschlüssel für ein neues Datenverzeichnis verwendet werden; die Verschlüsselung von Protokoll und Medien erfolgt über die Festplatte bzw. das Volume des Betreibers. Siehe [CONNECTION-SECURITY.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/) und [OPERATIONS.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/operations/). ## Kriterien für stabile Veröffentlichungen Vor einer stabilen Veröffentlichung bitte folgenden Hinweis hinzufügen: 1. Echte private Gruppen, Supergruppen, Foren und Kanäle mit Mitglieder-/Administratorrollen sowie verborgenem/sichtbarem Verlauf, einschließlich Anmeldung/2FA, Widerruf und Zugriffsverlust. 2. Kontrollierte Bearbeitungen, Löschungen, Reaktionen, Mitgliedschaften und Medien im Zusammenhang mit bekannten Handlungen. 3. Prozess- oder Serverausfälle, Festplattenausfälle oder volle Festplatten, abgelaufene Dateiverweise, „FloodWait“, Netzwerkausfall, beschädigte Dateien und Datenbank-Rollback. 4. Dauerbetrieb mit mehreren Konten unter Berücksichtigung von Verzögerungen, Warteschlangen, Speicher- und Festplattenressourcen, einschließlich sowohl ruhiger als auch aktiver Quellen. 5. Unterbrechung zwischen dem Fortschreiten des MTProto-Status und der Annahme des Protokolls. 6. Saubere Installation auf der vorgesehenen Betriebssystem-/Container-Matrix und verifizierte Wiederherstellung aus dem Backup. 7. Unabhängige Überprüfung von Sicherheitsaspekten, Signaturen sowie Zuordnungs- und Beweisangaben. Der bereichsbezogene Zugriff auf das Panel wird unter [„Zugriff und Berechtigungen“](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) beschrieben. Version 0.6 unterstützt das in [ACCOUNTS.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/) beschriebene begrenzte TData für ein einzelnes Konto sowie den Import von Kontodateien. Lesen Sie vor der Veröffentlichung die Nutzungsbedingungen der Telegram-API durch. Referenzen zur Forschung und Erkenntnisse zur Plattform finden Sie in [RESEARCH.md](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/RESEARCH.md). --- # Telegram · Case-Board-Referenz Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/ Lesezeichen, exakte Markierungen, Aktionsausschnitte, Diskussionen, bereichsbezogener Zugriff und der von Case Board verwendete Verlauf der signierten Anmerkungen. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Lesezeichen, exakte Markierungen, Aktionsausschnitte, Diskussionen, bereichsbezogener Zugriff und der von Case Board verwendete Verlauf der signierten Anmerkungen. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) Case Board bietet einem Ermittlungsteam eine gemeinsame Arbeitsansicht des gespeicherten Materials. Setzen Sie ein Lesezeichen für eine Beobachtung, markieren Sie eine bestimmte Passage, speichern Sie eine Reihe von Aktionen und besprechen Sie diese mit Kollegen. Karten behalten ihre Quellenverweise und den signierten Revisionsverlauf bei. Team-Anmerkungen verbleiben im Arbeitsbereich und sind separat von den ursprünglichen Telegram-Beobachtungen erkennbar. [Beweismodell](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) · [Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) · [Berichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) ![Zusammenfassung der Ermittlungsergebnisse](https://phishdestroy.github.io/TgWitness/assets/case-board.png) **Auf dieser Seite** - [Arbeiten mit einem Fall](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/#work-with-a-case) - [Berechtigungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/#permissions) - [Gespeicherte Verträge](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/#stored-contracts) - [-API und Exporte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/#api-and-exports) - [Betriebsgrenzen](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/#operating-limits) ## Arbeiten mit einem Fall Öffnen Sie **„Untersuchung“ → „Case Board“** im Standard- oder Expertenmodus. Die Sprache richtet sich nach dem jeweiligen Bereich. Verwenden Sie **die** **Schaltfläche** **„Zum Board hinzufügen“** neben einem Tagebucheintrag oder einer gespeicherten Chat-Nachricht, oder markieren Sie diese und drücken Sie **B**. Das Lesezeichen wird mit einem Klick zum Posteingang hinzugefügt. Bearbeiten Sie dessen Titel, Etiketten und Notiz oder verschieben Sie es in eine Sammlung. Eine geänderte Karte wird mit einer signierten Revision versehen; beim Entfernen bleibt der Verlauf erhalten. Wählen Sie für einen ersten Fall eine Erfassung aus und fügen Sie die Datensätze hinzu, die eine Frage beantworten. Verwenden Sie Kommentare, um die Interpretation zu überprüfen, und nutzen Sie anschließend **„Präsentation“**, um die Karten und den Quellenkontext durchzugehen. Wählen Sie das Material für das Case Board separat im [„Report Studio“](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) aus, wenn Sie das Ergebnisdokument vorbereiten. Das Speichern eines Ausschnitts konfiguriert nicht automatisch die Datenfilter eines Berichts. Markieren Sie Text innerhalb einer gespeicherten Chat-Nachricht, um **„Highlight → Board“** anzuzeigen. Wählen Sie die Farbe aus und fügen Sie eine Notiz hinzu. Der Server überprüft das genaue Zitat und die gespeicherte Version, einschließlich Emojis, RTL-Text und Kombinationszeichen. Die Benutzeroberfläche bildet eine Auswahl nicht durch maskierten oder transformierten Text ab. Wählen Sie mit Umschalt-Klick zwei Datensätze in einem Chat aus, um **einen Ausschnitt dazwischen** zu erstellen, verwenden Sie **den Ausschnitt nach Zeit** oder speichern Sie die aktuellen Filter des Journals für Chat, Zeitraum und Ereignistyp. Ein gespeicherter Ausschnitt verfügt über ein eigenes maßgebliches Prädikat: Beim Öffnen im Journal werden auch mehrere Chats, Begrenzungen der Nachrichtenanzahl und Akteur-Filter angewendet. **„Seit Lesezeichen hinzugefügte Datensätze anzeigen“** isoliert die späteren Ergänzungen. Das Ändern von Journal-Filtern beendet den Ausschnitt. Unter „Personen“ verwendet **„Aktionen dieser Person ausschneiden“** die aufgezeichnete Akteur-ID; es wird nicht davon ausgegangen, dass der Verfasser einer Nachricht diese bearbeitet, gelöscht oder darauf reagiert hat. Der „Slice“-Dialog zeigt eine Vorschau der Anzahl an, bevor die Erstellung zugelassen wird. „`all`“ umfasst alle aufgezeichneten Arten, einschließlich Momentaufnahmen, Bearbeitungen, Löschungen, Reaktionen, Aktualisierungen von Mitgliedschaften/Diensten, eigener Aktionen, Schaltflächen, Medienausgaben, wiederhergestellter Nachrichten und zukünftiger Ereignistypen. Die Auswahl beschreibt gespeicherte Beobachtungen. Löschbenachrichtigungen für unbekannte Chats stellen einen separaten Kontext dar, der nur bei Zugriff auf den gesamten Arbeitsbereich verfügbar ist und niemals einem der ausgewählten Chats zugeordnet wird. Sammlungen haben einen festgelegten Chat-Umfang. Ein leerer Umfang bedeutet den gesamten Arbeitsbereich. Eine Sammlung kann keine Karten außerhalb ihres Umfangs enthalten; ein auf einen Chat beschränkter Teilnehmer kann keine umfassendere Sammlung einsehen. Der Posteingang ist eine virtuelle Sammlung für nicht zugewiesene Karten. Suche und Filter gelten nur für sichtbare Karten; Threads und Erwähnungen erben die Zugriffsrechte der übergeordneten Karte. Gelöschte Kommentare werden in der Diskussion als „Tombstone“ angezeigt. Es wird kein Verlauf der Betrachter aufgezeichnet. **Die Präsentationsansicht** öffnet alle Karten in der ausgewählten Sammlung und bietet die Ansichten „Karte“, „Quellenkontext“ und „Teamkommentare“ sowie die Tastaturbefehle „Zurück“ und „Weiter“. Sie bietet keine Bearbeitungsfunktionen. Der normale Feed ist paginiert; die Präsentationsansicht lädt die Liste seitenweise und ruft jeweils die Details einer einzelnen Karte ab. ## Berechtigungen Alle Vorgänge erfordern die Berechtigungen „`view`“, „workspace/chat scope“ und „`board.read`“. „`board.write`“ fügt Karten, Kommentare, Verschiebungen sowie den Status „offen“ oder „überprüft“ hinzu. „`board.manage`“ ermöglicht die Verwaltung der Sammlung, den Status „bestätigt“ oder „abgelehnt“ sowie die Überarbeitung oder Entfernung von Karten anderer Benutzer. Ein Status ist eine Teamentscheidung, kein Ergebnis einer kryptografischen Überprüfung. Zugriffsvoreinstellungen: Prüfer = Lesen; Analyst = Lesen/Schreiben; Operator = Lesen/Schreiben/Verwalten, zusätzlich zu ihren bestehenden Berechtigungen. Bestehende Berechtigungen führen nicht automatisch zur Erlangung neuer Rechte. Der Hauptadministrator verfügt über alle Rechte und veröffentlicht als **„Hauptadministrator**“. Verwenden Sie benannte Berechtigungen zur Zuordnung. In den Erwähnungen werden nur aktuelle Zugriffe aufgeführt, die die vollständige übergeordnete Karte lesen können. Ein Zugriffsrecht für Chat A kann keine Karte oder keinen Ausschnitt für A+B erhalten, selbst wenn die ID erraten oder eine falsche „`target.chat_id`“ angegeben wird. Die Metadaten des Ziels werden anhand des signierten Ereignis-Hashes auf dem Server ermittelt. Sammlungen, Diskussionszahlen, zugehörige Karten und Live-Benachrichtigungen werden vor der Antwort gefiltert. exports erfordern sowohl „`export`“ als auch „`board.read`“; ein bestehender Exporter ohne Board-Zugriff erhält das normale Beweismittelarchiv ohne Teamnotizen. SSE überprüft vor jedem Stapel die aktuellen Berechtigungen erneut. ## Gespeicherte Verträge Genau wie Beobachtungen werden Anmerkungen transaktional in eine nur-anfügen-fähige SQLite-Tabelle im Arbeitsbereich geschrieben. „`annotations.jsonl`“ ist der exakte kanonische Export aus demselben Lese-Snapshot wie „`events.jsonl`“. Es gibt keinen zweiten konkurrierenden Anmerkungsspeicher und kein „`board.activity`“-Journalereignis. Jede Zeile enthält genau: ``` { "seq": 1, "at": "2026-11-02T14:00:00.000+00:00", "access_id": "admin", "access_label": "Main administrator", "kind": "board.bookmark", "payload": {"id": "32 lowercase hex digits", "target": {"event_hash": "64 lowercase hex digits"}}, "previous_hash": "64 zeroes for the first record", "hash": "SHA-256 described below", "signature": "base64 Ed25519 signature" } ``` Das obige verkürzte Beispiel veranschaulicht den „Envelope“; tatsächliche Nutzdaten enthalten ihre Modell- Standardwerte und vom Server aufgelöste Zielfelder. API-Anfrageschemata befinden sich unter „ [`tgwitness/schemas`](https://github.com/phishdestroy/TgWitness/blob/main/tgwitness/schemas/board-bookmark.json)“ und werden aus den Laufzeit-Pydantic- Modellen durch das `python tools/build_board_schemas.py` generiert. Zusätzliche Anfragefelder werden abgelehnt. IDs werden serverseitig generiert, wenn sie weggelassen werden. Urheberschaft, Zeit, Snapshot und Signatur können nicht vom Aufrufer angegeben werden. Benannte Berechtigungs-IDs folgen dem bestehenden 16-Hex-Format von Access; Karten-IDs sind 32 Hex. Das kanonische JSON ist in UTF-8, mit sortierten Objektschlüsseln, ohne Leerzeichen zwischen den Tokens, mit unescaped Unicode und ohne NaN/Unendlichkeitswerte. Der Anmerkungs-Hash ist ein SHA-256 des kanonischen Objekts, das das `format: "tgwitness-annotations-v1"` sowie alle sieben Envelope-Felder bis einschließlich `previous_hash` enthält. Dieses Format-Tag trennt seine Hash-Domäne von den Beobachtungen. Die Signatur ist Ed25519 über die 32 Roh-Hash-Bytes. Die Sequenz beginnt bei 1. Revisionen behalten die Karten-ID bei und benennen den vorhergehenden Annotations-Hash in „`supersedes`“; sie können den Chat-Gültigkeitsbereich nicht ändern. Verschiebungen, Statusänderungen und Löschungen sind separate Datensätze. Die SQLite-Tabelle lehnt UPDATE- und DELETE-Befehle ab. `case-board.json` enthält `{statement, signature}`. Die kanonische Aussage wird durch den Workspace-Schlüssel signiert und enthält `format: "tgwitness-case-board-v1"`, `public_key`, `created_at`, `journal_head`, `meaning` und `state`. Der Status ist eine deterministische Wiedergabe: `annotations_head`, ein geordnetes Array `items` (Sammlungen, Karten, Kommentare einschließlich Tombstones) und `status_history`. Elemente behalten ihren letzten Annotations-Hash, ihre Sequenz, ihren Autor und ihre Zeit sowie den ursprünglichen Ersteller und den Erstellungszeitpunkt über alle Revisionen hinweg bei. Die Wiedergabe überprüft Revisionen, übergeordnete Elemente, Sammlungsverweise und doppelte Aktions-IDs. „`manifest.json`“ und neue Checkpoints binden ebenfalls „`annotations_head`“. Bewahren Sie einen Checkpoint unabhängig auf, um eine Verkürzung oder ein Überschreiben mit einem kopierten Signaturschlüssel zu erkennen. ### Textversionen „`range.start`“ ist ein nullbasierter Unicode-Codepunkt-Offset, „`length`“ ist eine positive Codepunktanzahl, und „`quote`“ muss genau der Teilzeichenfolge von „`payload.text`“ oder „`payload.caption`“ am Ziel- Ereignis entsprechen. Es wird keine NFC/NFKC, Groß-/Kleinschreibung oder Graphem-Normalisierung angewendet. Python-String-Slices und JavaScript-`Array.from(text)` implementieren dieselbe Indizierung. Die Kombination von Markierungen und ZWJ-Emojis kann mehrere Codepunkte einnehmen. „`range.version`“ ist der Hash des Zielereignisses, nicht die aktuelle Nachrichtenversion oder der UTF-16-Entity-Offset von Telegram. Spätere Bearbeitungen verschieben eine Markierung niemals automatisch. ### Identität und Zeit unterteilen „`query`“ akzeptiert genau eine „`chat_id`“ oder nicht leere „`chat_ids`“, optional inklusive „`from`“/„`to`“, inklusive „message-ID“-Grenzen (nur ein Chat), „`kinds: "all"`“ oder exakte/Präfix-Platzhalter-Arten, explizite „`actors`“, „`search`“, „`hide_system`“ und „`include_unscoped`“. „Journal“-Artengruppen werden zu ihren exakten Prädikaten erweitert. Die Suche nutzt die NFC-/Case-Folded-Payload-Suche des Journals, ohne den signierten Quelltext zu verändern. Datumsangaben erfordern eine Zeitzone und werden auf UTC normiert. Datumsangaben filtern **„observed_at**“. Telegrams „`source_at`“ wird separat angezeigt. Eine Löschung ohne Quellzeitstempel hat keinen fiktiven Löschzeitpunkt. Ein später Datensatz, der außerhalb eines Zeitintervalls beobachtet wird, wird nicht in dieses aufgenommen; ein Message-ID-Ausschnitt kann eine spätere Löschung für diese Message-IDs enthalten. „`snapshot`“ legt den Erstellungszeitpunkt, die Grenze zwischen Journalsequenz und Hash, die Anzahl der Übereinstimmungen sowie die erste und letzte Sequenz und den „`result_hash`“ fest. Letzterer ist der SHA-256-Hash des kanonischen UTF-8-JSON-Arrays der übereinstimmenden Ereignis-Hashes, lexikografisch sortiert, einschließlich `[]` für einen leeren Ausschnitt. Er enthält außerdem genaue Typanzahlen und eine 24-Bin-Miniatur der Beobachtungszeit. Ein „Slice“ speichert eine Abfrage, keine doppelten Quelldatensätze . Beim Export listet „`board/slices/.json`“ aktuelle Hashes sowie hinzugefügte/entfernte Sequenzen auf. Der Verifizierer rekonstruiert zunächst das ursprüngliche Ergebnis an der Erstellungsgrenze und anschließend das aktuelle Ergebnis. Hinzugefügte Datensätze werden als Änderungsfakt gemeldet. Das Entfernen eines ursprünglichen Ereignisses unterbricht die unveränderliche Beweiskette; es wird nicht stillschweigend als gewöhnliche Entfernung aus einem Slice akzeptiert. Reaktions-Snapshots weisen unvollständige Listen der jüngsten Akteure auf. Der Explorer vergleicht benachbarte Snapshots desselben Chats/derselben Nachricht, einschließlich eines Vorgängers außerhalb des Ausschnitts, und meldet aggregierte Zählungsdifferenzen **zwischen den Beobachtungen**. Bei fehlenden jüngsten Akteuren wird nicht behauptet, dass diese eine Reaktion entfernt hätten. Der erste Snapshot hat keinen abgeleiteten früheren Zustand. Akteurbeobachtungen bleiben dem Snapshot zugeordnet, in dem sie bereitgestellt wurden, und nicht einem fiktiven Aktionszeitpunkt. ## API und Exporte `GET /api/board` akzeptiert collection/chat/author/label/state/from/to/q/kind/comments, offset/limit sowie die Sortierreihenfolge „neueste“ und „älteste“. `GET /api/board/card/{id}` gibt eine Karte, eine Quellenvorschau, den Thread, den Statusverlauf und zugehörige Karten zurück. Die Unterroute „Teilnehmer“ gibt zulässige Erwähnungsoptionen zurück. `POST /api/board/{bookmark|highlight|slice|collection|comment|status|move|remove}` fügt einen Datensatz hinzu. `POST /api/board/slice-preview` berechnet eine Abfrage. Slice-Datensätze werden unter `GET /api/board/slice/{id}/records` paginiert; bei der Neuberechnung wird stets der aktuelle stabile Lese-Snapshot verwendet. Live `/api/stream` sendet payload-freie `board`-Benachrichtigungen, unabhängig von Journal-Cursorn. `GET /api/board/export` gibt ein signiertes Dokument zurück. Bei chatbegrenztem Zugriff wird eine eindeutig gekennzeichnete, signierte **Offenlegung** bereitgestellt, niemals die Anmerkungen eines anderen Chats oder die gesamte Kette. Vollständige Beweismittel-ZIPs enthalten „`annotations.jsonl`“, ein signiertes „`case-board.json`“ sowie „Slice“-JSON-Anhänge. HTML/PDF/JSON-Berichtseinstellungen ermöglichen die Auswahl „kein Board“, Lesezeichen/Ausschnitte ohne Diskussion oder Karten mit Kommentaren. Der Abschnitt trennt Teammeinungen ausdrücklich von Beobachtungen. Berichtsdatenfilter schränken auch die lesbaren Notizen ein; vollständige signierte Quelldateien im Beweismaterial-ZIP bleiben unverändert. `GET /api/board/slice/{id}/export` erzeugt einen signierten JSON-Auszug „`tgwitness-board-selection-v1`“; `?format=csv` erzeugt eine übersichtliche Tabelle ohne eigenständige Signatur. Behalten Sie das JSON und die ZIP-Datei bei: ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_KEY_SHA256 --board python -m tgwitness.verify board-slice.json --evidence evidence.zip --fingerprint TRUSTED_KEY_SHA256 python -m tgwitness.verify case-board.json --evidence evidence.zip --fingerprint TRUSTED_KEY_SHA256 ``` Die Auswahlprüfung authentifiziert die signierte Erklärung, die exakten Quelldatensätze und die Vollständigkeit der Abfrage an der angegebenen Grenze. Die Beweisdatei im ZIP-Format kann neuer sein, muss jedoch dieses Präfix enthalten. Ein fehlendes Ziel wird explizit gemeldet. Ein anderer ursprünglicher Slice-Snapshot, eine geänderte Anmerkung, ein nicht übereinstimmender Wiedergabestatus oder eine geänderte Quelle führen zum Fehlschlagen. Alte Archive ohne Anmerkungen behalten ihr bestehendes Verifizierungsverhalten bei. Die Übergabe ist standardmäßig auf **„Nicht einbeziehen“** eingestellt. Die explizite Einbeziehung projiziert Karten über die bereits minimierten Datensätze, lässt unzugängliche/ausgelassene Ziele weg, unterdrückt Hervorhebungen, deren Quelltext minimiert wurde, bereinigt Teamtext nach denselben Erwähnungs-/Kontaktregeln und ersetzt optional Ermittlerbezeichnungen durch R01, R02… in Metadaten und bekannten Vorkommen in Notizen. Es wird keine ursprüngliche „ `annotations.jsonl`“-Datei offengelegt. Die signierte „`tgwitness-case-board-handover-v1`“-Sidecar-Datei und der Bericht enthalten dasselbe minimierte Material. Die Slice-Zählungen beschreiben nur offengelegte Datensätze, wobei ursprüngliche Snapshot-/Abfrage-Akteur-Details zurückgehalten werden. Freitext-Namen, die dem Minimierer nicht bekannt sind, müssen weiterhin überprüft werden, wie dies auch bei gewöhnlichen Übergaben der Fall ist. Diese Ableitung erhebt keinen Anspruch darauf, die ursprünglichen Annotationssignaturen nach der Schwärzung beizubehalten. ## Anwendungsgrenzen Zu den Parametern gehören weiche Begrenzungen von 10.000 Karten und 50.000 Kommentaren, eine „Slice“-Seite mit bis zu 5.000 Datensätzen sowie die Steuerung der Medienvorschau. Weiche Begrenzungen lösen eine Warnung aus, ohne den Verlauf zu löschen. Feed-Seiten umfassen höchstens 200 Karten. Eigenständige JSON-Ausschnitte sind auf 64 MiB begrenzt; schränken Sie die Abfrage ein oder verwenden Sie die signierte ZIP-Datei für umfangreicheres Material. Der eigenständige Verifizierer begrenzt die Wiedergabe von Anmerkungen auf 256 MiB. Externe Benachrichtigungen zu Kommentaren sind in Case Board weder aktiviert noch implementiert. Die automatisierte Abnahme der Funktion nutzt fiktive Daten und einen simulierten Telegram-Transport, um Speicherung, Zugriff, Darstellung und Exporte zu überprüfen. Den Umfang der Beweismittelprüfungen entnehmen Sie bitte [dem Verifizierungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) . --- # Telegram · Archivanalyse Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/ Durchsuchen Sie gespeicherte Nachrichten, überprüfen Sie KI-Eingaben und erstellen Sie Analyseberichte mit Quellenangaben. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Durchsuchen Sie gespeicherte Nachrichten, überprüfen Sie KI-Eingaben und erstellen Sie Analyseberichte mit Quellenangaben. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) [Anleitung zum Arbeitsablauf](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) Verwenden Sie **das Protokoll** für die lokale Suche ohne KI; [die Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/) (Vorschau) erkennt Wortformen, Phrasen, Domains und @Benutzernamen. Für **„Ask the archive**“ müssen Sie zunächst einen Anbieter unter **„Integrationen“** aktivieren und konfigurieren. Über die Arbeitsbereichsauswahl wählen Sie das Konto aus; über das Formular wählen Sie Chats und den Beobachtungszeitraum aus. Die Abfrage läuft lokal. Eine exakte Phrase oder Domain grenzt die Suche ein; eine Nachrichten-ID fordert gespeicherte Versionen an. Überprüfen Sie die Auszüge und öffnen Sie deren Protokoll-Einträge oder den Kontext. Es gibt keine Vektordatenbank und keine automatischen Telegram-Aktionen. ## Anbieter und Einwilligung Die KI ist in jedem Arbeitsbereich standardmäßig deaktiviert. Nur der Hauptadministrator kann das Modell, den Endpunkt, den verschlüsselten API-Schlüssel, Kontext-/Ausgabebegrenzungen, das Timeout und das tägliche Anfrage-Kontingent konfigurieren. Der Schlüssel wird niemals an den Browser zurückgegeben. Lassen Sie das Schlüsselfeld leer, um den aktuellen Schlüssel beizubehalten, oder entfernen Sie ihn explizit. Ollama verwendet seinen dokumentierten [`/api/chat`-Endpunkt](https://docs.ollama.com/api/chat) mit nicht-streamingbasierter JSON-Ausgabe. Die Standardadresse lautet `http://127.0.0.1:11434` auf dem TgWitness-Server. Der Betreiber kann sie mithilfe von `TGWITNESS_AI_LOCAL_ENDPOINT` ändern; hierbei handelt es sich nicht um eine modellgesteuerte Adresse. Installieren Sie das ausgewählte Modell selbst. TgWitness lädt es nicht automatisch herunter. Der kompatible Anbieter erwartet eine Basis-URL, die auf `/v1` endet, sowie das [„Chat Completions“-Protokoll](https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create): `messages`, JSON-Antwortmodus, `max_completion_tokens` und `choices[0].message.content`. Dienste, bei denen diese Felder fehlen, werden nicht unterstützt. Bei Verbindungstests wird synthetischer Text gesendet, der auf das Anfragekontingent angerechnet wird. Jede Anfrage nutzt die im Arbeitsbereich konfigurierte externe Route. Eine blockierte Route oder ein ausschließlich für Telegram bestimmter MTProxy führt zu einem Fehler; es erfolgt kein direkter Wiederholungsversuch. Eine bewusst konfigurierte lokale Ollama-Adresse ermöglicht ein privates Ziel. Ein Loopback-AI- Endpunkt erfordert die externe „Direct“-Route des Arbeitsbereichs; Proxy-Routen werden vor der Übertragung abgelehnt. Für andere private Dienste gilt die bestehende Opt-in-Möglichkeit für private Ziele auf Serverebene. Die Vorschau zeigt den Endpunkt und die externe Route, einschließlich des Proxy-Hosts, sofern zutreffend. Eine Änderung dieser Route erfordert eine neue Vorschau. Vor der Generierung zeigen **die an das Modell gesendeten Daten** die Anfrage an: Frage, markierte Auszüge, Ereignistypen, Beobachtungszeitpunkte und Abdeckungsmarker. Telegram- Sitzungen, Rohdatenfelder, Anbieterschlüssel, Anhangsbytes und das vollständige Protokoll sind nicht Teil dieses Kontexts. Deaktivieren Sie unerwünschte Quellen und stimmen Sie anschließend der Verarbeitung ausdrücklich zu. Externe Anbieter können übermittelte Inhalte gemäß ihren eigenen Richtlinien aufbewahren. Lokale Ausführung bedeutet, dass der Endpunkt lokal ist; dies ist keine Garantie für das Verhalten eines unabhängig konfigurierten Dienstes. Weltweit sind höchstens zwei gleichzeitige Anfragen an den Anbieter zulässig, eine pro Arbeitsbereich. Eine Vorschau läuft nach zehn Minuten ab und kann eine Antwort generieren. Die vom Anbieter gemeldeten Token-Zahlen werden angezeigt; eine Kostenschätzung erscheint erst, wenn sowohl Eingangs- als auch Ausgangstarife konfiguriert wurden. Fehlgeschlagene Versuche verbrauchen ebenfalls das tägliche Anfragedatenvolumen. Automatische Wiederholungsversuche verbrauchen kein zusätzliches Datenvolumen. ## Quellen und Einschränkungen Die Suche nutzt den [Volltextindex](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#ask-the-archive-and-mcp), sobald dieser vollständig ist: die besten Treffer aus den ausgewählten Chats, einschließlich Wortformen. Abfragen zu aktuellen Änderungen oder zu den Versionen einer einzelnen Nachricht sowie Suchvorgänge während der Erstellung des Indexes nutzen eine begrenzte lexikalische Suche in den neuesten Datensätzen. Die Vorschau nennt die Methode. Die Suche liefert bis zu 24 Quellen; lange Texte werden um den Treffer herum gekürzt. Abgekürzte Auszüge und unvollständige Ergebnismengen werden gekennzeichnet. Der Zeitraum bezieht sich auf **den Beobachtungszeitraum** und stellt keine Behauptung dar, dass der Telegram-Verlauf vollständig ist. Ereignisse, die den gesamten Arbeitsbereich betreffen, werden beim Zugriff auf Chat-Ebene zurückgehalten. Fehlende Daten werden als im verfügbaren Archiv nicht gefunden beschrieben. Das Modell erhält keine Hilfsmittel. Seine Quell-IDs werden anhand der ausgewählten Datensätze abgeglichen, Hashwerte werden erneut überprüft, und zitierte Zeichenfolgen müssen in diesen Datensätzen vorkommen. Unbekannte IDs, geänderte Zitate und nicht zitierte Behauptungen führen zur Ablehnung der Antwort. Die Anwendung erstellt Links; vom Modell generierte URLs werden nicht als Quellenangaben verwendet. Diese Prüfungen stellen die Existenz der Quelle und die Genauigkeit der Zitate fest, nicht die Richtigkeit einer Schlussfolgerung. Überprüfen Sie Schlussfolgerungen anhand der Datensätze, bevor Sie sich auf sie verlassen. ## Berichte Speichern Sie eine geprüfte Antwort als separaten Analysebericht. Dieser enthält die Modellzusammenfassung, die beobachtete Chronologie, extrahierte Links und Handles, Bearbeitungs-/Löschprotokolle, Erfassungsgrenzen sowie Hash-Werte der Quellereignisse. Der Anbieter, das Modell, der Endpunkt, die Uhrzeit und die Version der Prompt-Vorlage werden ebenfalls angegeben. Es werden keine Identitäten automatisch zusammengeführt. Änderungen und Notizen der Analysten werden getrennt von der Modellzusammenfassung gespeichert. Berichte befinden sich in verschlüsselten abgeleiteten Dateien, mit einem Index außerhalb des signierten Ereignisstroms; die ursprünglichen Ereignisse und Medien bleiben unverändert. Nur der Eigentümer oder Administrator kann einen Bericht öffnen, und der Zugriff auf die Quelle wird erneut überprüft. Für den Download ist zudem eine Exportberechtigung erforderlich. Version 1 signiert keine Berichte und impliziert nicht, dass die Schlussfolgerungen des Modells verifizierte Beweise sind. Beschränkungen: 100 Berichte pro Arbeitsbereich und 100 Analystenüberarbeitungen pro Bericht. Informationen zu manueller OCR und Transkripten finden Sie unter [„Medienverarbeitung](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/)“. Informationen zum Kundenzugang finden Sie unter [„MCP](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/)“. --- # Telegram · Volltextsuche Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/search/ Suche nach gespeicherten Nachrichten anhand von Wortformen, genauen Phrasen, Domains und @Benutzernamen, wobei die besten Treffer zuerst angezeigt werden und der Index mit dem signierten Protokoll verknüpft ist. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Suche nach gespeicherten Nachrichten anhand von Wortformen, genauen Phrasen, Domains und @Benutzernamen, wobei die besten Treffer zuerst angezeigt werden und der Index mit dem signierten Protokoll verknüpft ist. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) [Analyse des Archivs](https://phishdestroy.github.io/TgWitness/de/docs/reference/analysis/) · [Lokale OCR und Transkription](https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) **Vorschau.** Wählen Sie im **Protokoll** neben dem Suchfeld **„Beste Übereinstimmung · Wortformen“** aus. Die Ergebnisse werden nach BM25 sortiert und umfassen auch andere Formen desselben Wortes: *„перевод“* findet *„переводом“* und *„переводы“*, *„transfer“* findet *„transfers“*, eine chinesische Phrase wird ohne Leerzeichen gefunden. **„Neueste zuerst · exakter Text“** behält die vorherige Teilstring-Suche über den gesamten Datensatz bei. Der Index besteht aus abgeleiteten Daten. Er wird aus dem signierten Protokoll neu erstellt, ist selbst niemals signiert und wird niemals exportiert. Die ursprünglichen Datensätze bleiben unverändert. **Auf dieser Seite** - [Suchsyntax](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#search-syntax) - [Sprachen](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#languages) - [Speicherort des Index](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#where-the-index-lives) - [Ergebnisse und das signierte Journal](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#results-and-the-signed-journal) - [Erkannter Text](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#recognized-text) - [Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#access) - [Das Archiv und MCP befragen](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#ask-the-archive-and-mcp) - [Abhängigkeiten](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#dependencies) - [Benchmark](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#benchmark) ## Suchsyntax | Schreiben | Ergebnisse | | --- | --- | | `перевод карта` | Einträge, die beide Wörter in beliebiger Form enthalten | | `"переводом на карту"` | Der genaue Wortlaut in dieser Reihenfolge | | `бонус OR подарок` | Beliebiges Wort | | `перевод -казино` | Einträge ohne das ausgeschlossene Wort | | `example.com` | Die Domain und ihre Subdomains, auch in versteckten Links und Button-URLs | | `@username`, `t.me/username` | Erwähnungen und Links des Kontos sowie die von ihm gesendeten Nachrichten | | `#tag` | Der Hashtag | | `+79991234567`, eine Wallet-Adresse, eine E-Mail-Adresse | Der gleiche Wert in Text oder Links | | `from:@username`, `from:123456` | Nachrichten von diesem Absender | | `chat:-1001234567890` | Ein Chat; er kann nur Ihren eigenen Zugriff einschränken | | `id:42` | Gespeicherte Versionen von Nachricht 42 | | `since:2026-01-01 until:2026-01-31` | Beobachtungszeitraum; ein Datum ohne Uhrzeit umfasst den gesamten Tag | | `kind:edited` | Nur Bearbeitungen (`new`, `snapshot`, `edited`, `recovered`) | | `source:ocr`, `source:transcription`, `source:all` | Erkannter Text anstelle von oder zusammen mit Nachrichten | Präpositionen und andere Funktionswörter werden ignoriert, wenn andere Wörter vorhanden sind. Ähnlich aussehende Buchstaben, die in einem Wort gemischt vorkommen (z. B. ein lateinisches *„a“* in einem kyrillischen Wort), Unicode-Buchstaben in voller Breite sowie dekorative Unicode-Buchstaben und unsichtbare Zeichen werden normalisiert. ## Sprachen Die Sprache wird für jeden Datensatz anhand des Skripts und der Buchstaben ermittelt: | Skript | Übereinstimmung | | --- | --- | | Kyrillisch | Russische und ukrainische Lemmata mit [pymorphy3](https://github.com/no-plagiarism/pymorphy3). Ohne das optionale ukrainische Wörterbuch wird ein einfacher ukrainischer Stemmer verwendet. | | Latein | Englischer Snowball-Stemmer; diakritische Zeichen werden ignoriert | | Chinesisch, Japanisch, Koreanisch, Thailändisch, Laotisch, Khmer, Myanmarisch | Überlappende Zeichenpaare: Jede Phrase wird ohne Leerzeichen gefunden. Chinesische Suchanfragen werden mit Jieba in Wörter aufgeteilt. | | Weitere Skripte | Wörtliche Übersetzung | Das ukrainische Wörterbuch (`pymorphy3-dicts-uk`) wird unter der GPL-3.0 vertrieben und ist daher standardmäßig nicht installiert. Installieren Sie es mit `pip install "tgwitness[uk-dictionary]"`; der Index erkennt den neuen Analysator und erstellt sich neu. ## Wo sich der Index befindet | Modus | Speicherung | Verwendung | | --- | --- | --- | | Auf Festplatte (Standard) | `search/fulltext.sqlite3` im Arbeitsverzeichnis | Große Archive; übersteht Neustarts | | Nur im Arbeitsspeicher | Keine Daten auf der Festplatte; wird bei jedem Start neu erstellt | Keine abgeleitete Kopie des Nachrichtentextes auf der Festplatte | | Aus | Kein Index; **Neueste zuerst · exakter Text** bleibt erhalten | Minimale Installationen | Der Hauptadministrator wählt den Modus unter **„Journal“ → „Filter“ → „Suchindex“** für jeden Arbeitsbereich aus. `TGWITNESS_FULLTEXT=disk|memory|off` Er legt die Standardeinstellung für Arbeitsbereiche fest, die keine eigene Auswahl haben. Durch Umschalten auf „Speicher“ oder „Aus“ wird die Datei gelöscht. Die Indexdatei verfügt über denselben Schutz wie das Protokoll: Sie befindet sich im Verzeichnis für private Daten . Sie ist nicht verschlüsselt und wird nicht in Backups oder externen Kopien gespeichert. Neue Einträge werden innerhalb von Sekunden im Hintergrund indiziert; bei einer Suche wird zudem zunächst ein kurzer Rückstand indiziert, sodass ein gerade erst gespeicherter Eintrag gefunden wird. Ein bestehendes Protokoll wird nach der Aktualisierung indiziert, ohne das Panel zu blockieren; bis dahin umfassen die Ergebnisse die indizierten Einträge, und das Protokoll zeigt den Fortschritt an. **Der Neuaufbau des Index** beginnt erneut ab dem ersten Eintrag. ``` python -m tgwitness index status --data-dir data/live python -m tgwitness index rebuild --data-dir data/live --json ``` `rebuild` Das Panel muss beendet werden (ansonsten Exit-Code 3). Bei `--json`, enthält die Standardausgabe nur das Ergebnis; der Fortschritt wird an die Standardfehlerausgabe geleitet. ## Ergebnisse und das signierte Protokoll Der Index speichert die Sequenznummer und den Hash des letzten Protokoll-Eintrags, den er abdeckt, und gleicht diese beim Öffnen mit dem Protokoll ab. Ein ersetztes, wiederhergestelltes oder bearbeitetes Protokoll führt zu einer Neuerstellung. Jede Antwort meldet diese Position, und jeder Treffer wird anhand seiner Sequenznummer aus dem signierten Protokoll zurückgelesen: Der Index entscheidet, welche Einträge in welcher Reihenfolge angezeigt werden, niemals jedoch über deren Inhalt. Der Chat-Zugriff gilt für das eigene Chat-Feld des Protokolls, nicht für den Inhalt des Index. ## Erkannter Text OCR-Ergebnisse und Transkripte verbleiben in ihren verschlüsselten Artefakten. Ihr Index existiert nur im Arbeitsspeicher und wird nach Abschluss eines Erkennungsauftrags neu erstellt. Ein Treffer erscheint in seinem `media.saved` Datensatz, gekennzeichnet als maschinelle Erkennung mit Angabe der Engine, des Modells und eines Auszugs; er wird niemals als in Telegram gesendeter Text dargestellt. Derselbe Index dient der **Suche nach erkanntem Text**, die weiterhin auch einfache Teilzeichenfolgen abgleicht. ## Zugriff Der Chat-bezogene Zugriff findet nur Datensätze aus den jeweiligen Chats, einschließlich des erkannten Textes ihrer Anhänge. `chat:` und andere Filter können diese Menge lediglich eingrenzen. Der Indexstatus, der beim zugriffsbegrenzten Zugriff angezeigt wird, lässt die Gesamtzahlen des Protokolls außer Acht. Nur der Hauptadministrator kann den Modus ändern oder den Index neu erstellen. ## Fragen Sie das Archiv und MCP **„Ask the Archive“** bezieht seine Quellen aus diesem Index, sobald dieser fertiggestellt ist: die besten Übereinstimmungen aus den ausgewählten Chats, wobei ein gespeicherter Text nur einmal gezählt wird. Es werden bis zu 24 Quellen gesendet; lange Texte werden um die Übereinstimmung herum gekürzt und als abgeschnitten markiert. Anfragen zu den letzten Änderungen, gespeicherten Versionen einer Nachricht und Suchanfragen, während der Index noch erstellt wird, nutzen den vorherigen chronologischen Abruf. Die Vorschau zeigt an, welche Methode verwendet wurde. MCP-Clients können `search_messages` mit `ranked=true` aufrufen und mit `next_offset`. Verbindungen mit eingeschränktem Zugriff erhalten nur ihre eigenen Chats. Die nummerierte Paginierung umfasst unabhängig von der Seitengröße höchstens die ersten 1,000-Ergebnisse. Grenzen Sie die Suche, den Chat oder den Zeitraum ein, um weitere Treffer zu prüfen. Bei der Suche nach Neueste zuerst werden Nachrichten, OCR- und Transkriptionsergebnisse vor der Auswahl jeder Seite sortiert. ## Abhängigkeiten | Paket | Lizenz | Warum | | --- | --- | --- | | pymorphy3, pymorphy3-dicts-ru, DAWG2-Python | MIT | Russische und ukrainische Lemmata; Wörterbücher werden lokal geladen | | snowballstemmer | BSD-3-Klausel | Englische Wortstämme, reines Python | | jieba | MIT | Segmentierung chinesischer Suchanfragen, reines Python (nur Quellcode-Verteilung) | | pymorphy3-dicts-uk (optional) | GPL-3.0 | Vollständiges ukrainisches Wörterbuch | SQLite FTS5 benötigt den `unicode61` Tokenizer ist erforderlich; dieser ist Teil von SQLite in aktuellen Python-Builds. Ohne ihn meldet die Best-Match-Suche, dass er nicht verfügbar ist. ## Benchmark `python tools/bench_fulltext.py --messages 1000000 --work `Erstellt ein deterministisches, signiertes Protokoll aus gemischten russischen, ukrainischen, englischen, chinesischen und japanischen Nachrichten mit Links und Handles in 200 Chats, erstellt den Index und misst die Dauer typischer Suchvorgänge (50 Ergebnisse, Median aus 7 Durchläufen). Gemessen unter Windows 11, Intel Core i9-13900K, 128 GB RAM, Python 3.12.10, SQLite 3.49.1, Daten auf einem exFAT-Laufwerk, Analysator `fulltext-v1+pymorphy3-ru+light-uk+snowball-en`: | Maßnahme | Ergebnis | | --- | --- | | Signiertes Protokoll | 1.000.000 Nachrichten, 1,50 GiB, in 19 Minuten geschrieben | | Erstellung eines Indexes aus dem Protokoll | 71 s, etwa 14.141 Nachrichten pro Sekunde | | Indexdatei | 58 MiB, 3,8 % des Protokolls | | Suche direkt nach einem neuen Eintrag | Median 8 ms, P95 9 ms | | Vorherige Teilstringsuche, dasselbe Protokoll | `перевод` 3,2 s, `银行转账` 2,6 s, `verify-account.example` 2,6 s | | Suche | Übereinstimmende Datensätze | Beste Übereinstimmung, Median | S. 95 | Neueste zuerst, Median | | --- | --- | --- | --- | --- | | Allgemeine Wörter, Wortformen: `перевод` | 134,403 | 82 ms | 85 ms | 7 ms | | Zwei Wörter: `оплата карта` | 28,996 | 43 ms | 43 ms | 14 ms | | Seltenes Wort: `розыгрыш подарок` | 28,881 | 42 ms | 47 ms | 13 ms | | Genauer Wortlaut: `"переказ коштів на картку"` | wird nicht gezählt | 35 ms | 36 ms | 6 ms | | Domain mit Subdomains: `verify-account.example` | 12,435 | 17 ms | 17 ms | 3 ms | | @Benutzername: `@support_desk_bot` | 10,331 | 15 ms | 16 ms | 3 ms | | Chinesisch ohne Leerzeichen: `银行转账` | 17,691 | 23 ms | 24 ms | 3 ms | | Japanisch: `リンク` | 16,603 | 23 ms | 25 ms | 3 ms | | Englischer Stamm: `withdrawal` | 27,775 | 26 ms | 26 ms | 2 ms | | ODER und Ausschluss: `бонус OR подарок -казино` | 268,034 | 190 ms | 193 ms | 19 ms | | Chat-Filter: `chat:-1000000000007 перевод` | 652 | 9 ms | 9 ms | 6 ms | | Zeitraumfilter: `since:2026-01-01 until:2026-01-31 выплата` | 115,732 | 155 ms | 156 ms | 81 ms | Eine exakte Phrase wird wörtlich bei Kandidaten in der Rangfolge überprüft, bis die Seite voll ist; daher wird deren Gesamtzahl nicht mitgezählt. Die Bearbeitungszeiten steigen mit der Anzahl der übereinstimmenden Datensätze; durch Eingrenzung des Chats oder des Zeitraums lassen sich umfassende Suchen beschleunigen. Das synthetische Korpus wiederholt einen kleinen Wortschatz, sodass häufige Wörter weitaus mehr Datensätze treffen als in echten Chats. --- # Telegram · Schreibgeschütztes MCP Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/ Verbinden Sie einen MCP-Client mit ausgewählten Arbeitsbereichen und Chats mit zeitlich begrenztem, widerrufbarem Zugriff. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Verbinden Sie einen MCP-Client mit ausgewählten Arbeitsbereichen und Chats mit zeitlich begrenztem, widerrufbarem Zugriff. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Archiv-Integrationen](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/) ![Archiv-Integrationen](https://phishdestroy.github.io/TgWitness/assets/chapter-integrations.svg) Verbinden Sie einen Analysten-Client mit ausgewählten Arbeitsbereichen und Chats. TgWitness stellt **im Panel-Prozess unter `/mcp` einen Streamable-HTTP-Dienst** bereit. Jede Verbindung verfügt über ein eigenes Token, eine eigene Ablaufzeit und zulässige Tools. MCP kann keine Telegram-Nachrichten versenden, keine Einstellungen ändern und das signierte Protokoll nicht modifizieren. Die gleichen Verbindungen funktionieren auch über die [Befehlszeile](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/). [Anleitung zum Arbeitsablauf](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) **Auf dieser Seite** - [Installieren und überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/#install-and-check) - [Verbindung herstellen](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/#issue-a-connection) - [Verbinden Sie Ihren Client](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/#connect-your-client) - [Cloudflare-Tunnel](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/#cloudflare-tunnel) - [Werkzeuge und Grenzen](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/#tools-and-boundaries) ## Installation und Prüfung Verwenden Sie die Python-Umgebung, in der das Panel ausgeführt wird. Aus einem Quellcode-Checkout: ``` # Windows PowerShell & .\.venv\Scripts\python.exe -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]' & .\.venv\Scripts\python.exe start.py --check ``` ``` # Linux / macOS .venv/bin/python -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]' .venv/bin/python start.py --check ``` Starten Sie das Panel nach der Installation mit dem üblichen Datenverzeichnis und den gewohnten Startargumenten neu. Die Bereitschaftsprüfung sollte `[PASS] mcp: streamable-http available` enthalten. **Integrations → MCP** zeigt den Laufzeitstatus sowie einen Installationsbefehl an, der die tatsächliche Python-Programmdatei des Servers verwendet. **Re-check** aktualisiert diesen Status ohne erneutes Laden der Seite; es werden dabei keine Pakete installiert und der Server wird nicht neu gestartet. Das MCP-Extra nutzt das offizielle [MCP-Python-SDK](https://github.com/modelcontextprotocol/python-sdk).`deploy/constraints-mcp.txt` legt das getestete SDK und die Abhängigkeiten fest. ## Verbindung erstellen 1. Geben Sie eine Bezeichnung ein und wählen Sie die Workspaces und Chats aus, die der Client lesen darf. 2. Wählen Sie Tools einzeln aus oder nutzen Sie eine Voreinstellung. Es werden nur implementierte Tools angeboten. 3. Wählen Sie 1, 7, 30 oder 90 Tage oder eine benutzerdefinierte Gültigkeitsdauer zwischen einer Minute und 90 Tagen. 4. Klicken Sie auf **Create connection**. Das Token wird einmalig neben der Client-Konfiguration angezeigt. 5. Kopieren Sie das Token und die Konfiguration und führen Sie anschließend **Check connection** aus. Dadurch wird MCP initialisiert und die freigegebenen Tools werden aufgelistet; **es werden keine Nachrichten gelesen**. Das Ergebnis zeigt die Protokollversion, die Tool-Namen, deren Anzahl und die verstrichene Zeit. 6. Klicken Sie auf **Done**, sobald die Zugangsdaten gespeichert sind. Das Polling behält das Formular und die einmalig angezeigte Karte bei. Das Sperren des Panels löscht angezeigte Geheimnisse. Die Liste zeigt die letzte Nutzung, das zuletzt verwendete Tool, die Adresse und die Anfragen der letzten Minute. **Revoke** beendet den Zugriff. **Rotate token** widerruft die alten Zugangsdaten und stellt einen Ersatz mit demselben Geltungsbereich, denselben Tools und derselben Gültigkeitsdauer aus; kopieren Sie das Ersatz-Token sofort, da es nur einmalig angezeigt wird. Panel-Login-Tokens und Telegram-Zugangsdaten funktionieren nicht als MCP-Tokens. ## Client verbinden Wählen Sie den Client im Panel aus und kopieren Sie die generierte Konfiguration. Konfigurationen verwenden Secret-Referenzen oder explizite Platzhalter; das Token wird separat kopiert. | Client | Konfiguration | Zusammenhang | | --- | --- | --- | | Claude-Code | `.mcp.json` | HTTP, `type: "http"`, Bearer-Header | | Claude Desktop | `claude_desktop_config.json` | Lokale stdio-Bridge | | Cursor | `.cursor/mcp.json` | HTTP mit Umgebungsvariablen-Header | | VS Code Local | `.vscode/mcp.json` | HTTP mit Passwort-Eingabe über `promptString` | | Windsurf | `mcp_config.json` | HTTP mit Platzhalter für Bearer-Header | | Andere Clients | URL und Authorization-Header | Streamable HTTP | TgWitness verwendet Bearer-Tokens ohne OAuth-Discovery. Verwenden Sie die lokale stdio-Bridge für Clients, deren Remote-Connector OAuth voraussetzt. Bei VS Code gelten Eingabevariablen für die **Local**-Umgebung und werden nicht an Copilot-Sitzungen weitergeleitet. Konfigurationsreferenzen: [Claude Code](https://code.claude.com/docs/en/mcp), [Cursor](https://prod.cursor.com/docs/mcp), [VS Code](https://code.visualstudio.com/docs/agents/reference/mcp-configuration). Der kanonische Einstiegspunkt für eine lokale Bridge lautet: ``` python -m tgwitness.mcp_server --url https://your-panel.example/mcp ``` Verwenden Sie die lokale Python-Installation des Clients, in der das MCP-Extra installiert ist. Setzen Sie `TGWITNESS_MCP_TOKEN` in dessen geschützter Umgebung. Halten Sie Zugangsdaten aus Befehlsargumenten und URLs heraus. `tgwitness-mcp` ist derselbe Einstiegspunkt. Das alte Modul `tgwitness.mcp_bridge` und der Name `TGWITNESS_ARCHIVE_TOKEN` bleiben als Kompatibilitätspfade mit einer Warnung erhalten; neue Konfigurationen verwenden `mcp_server` und `TGWITNESS_MCP_TOKEN`. ## Cloudflare Tunnel Leiten Sie die Route `/mcp` des Panels weiter und behalten Sie den Bearer-Header bei. Das Öffnen der MCP-Einstellungen als Administrator registriert die aktuelle Origin des Panels für diesen Durchlauf. Für eine stabile Adresse, die sofort nach einem Neustart verfügbar ist, konfigurieren Sie `TGWITNESS_PUBLIC_URL` vor dem Starten des Panels mit der HTTPS-Origin des Panels. Beliebige Host- und Weiterleitungs-Header registrieren keine vertrauenswürdige Adresse. Host- und Origin-Prüfungen weisen fremde Browser-Origins ab. Antworten verwenden `Cache-Control: no-store`; Autorisierungswerte werden niemals protokolliert. Eine `*.trycloudflare.com`-Adresse ist temporär. Wenn ein Tunnel-Neustart den Hostnamen ändert, aktualisieren Sie die konfigurierte öffentliche URL sowie die MCP-URL jedes Clients. Verwenden Sie einen stabilen Hostnamen für gespeicherte Client-Konfigurationen. ## Tools und Systemgrenzen | Tool | Liest | | --- | --- | | `list_workspaces` | Freigegebene Workspaces | | `list_chats` | Freigegebene Chats | | `search_messages` | Gespeicherter Nachrichtentext innerhalb des ausgewählten Zeitraums; `ranked=true` nutzt [Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/) (Wortformen, beste Treffer zuerst, `next_offset` Seitenumschaltung) | | `get_message_versions` | Erfasste Versionen und Löschbeobachtungen | | `get_message_context` | Benachbarte erfasste Nachrichten-IDs | | `get_journal_event` | Einen bereinigten Datensatz mit seiner Quellreferenz | | `get_capture_status` | Erfassungsstatus, zulässige Erfassungsdatensätze und `gap_summary`: Nie beobachtete Nachrichtennummern, pro Kanal oder Supergruppe sowie für die kontoweite Sequenz ([Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#missing-message-numbers-gap_summary)); wählen Sie einen Chat aus, um dessen aufgelistete Lücken anzuzeigen | | `get_activity_stats` | Nachrichten nach UTC-Stunde und Wochentag, Tage mit Spitzenauslastung, Anteile an Bearbeitungen und Löschungen, Absender, Domains und `@handles`, mit Erfassungsbereich ([Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/#activity-statistics)) | | `get_messages_by_date` | Gespeicherte Nachrichten eines Kalendertags in einer benannten IANA-Zeitzone (`Europe/Kyiv`, `UTC`), gemäß der von Telegram gemeldeten Uhrzeit; `from_utc` und `until_utc` den berechneten Tag angeben, einschließlich Sommerzeit | | `get_pinned_messages` | Im aktuellen Chat-Status-Snapshot angeheftete Nachrichten mit ihren gespeicherten Versionen sowie die live beobachteten Benachrichtigungen zum Anheften und Lösen der Anheftung | | `get_chat_stats` | Einfache Zählung der gespeicherten Datensätze für einen Chat oder alle Chats im Erfassungsbereich, erste und letzte Beobachtung sowie `gap_summary`; nutzen Sie es vor einem umfangreichen Lesevorgang | | `get_topics` | Forenthemen aus den Nachrichten des Dienstes „Themen speichern“: Titelverlauf, geschlossene oder ausgeblendete Themen, Anzahl der gespeicherten Nachrichten | | `get_media` | Ein gespeichertes Bild als verkleinerte JPEG-Vorschau (maximal 36 KB), das als Bild zusammen mit seinem SHA-256-Hash und dem `media.saved` Datensatz zurückgegeben; die Datei wird zunächst anhand ihres aufgezeichneten Hash-Werts überprüft, andere Dateien geben nur Metadaten zurück | | `export_messages` | Nur über die Befehlszeile, standardmäßig nicht ausgewählt: „streams“ speichert Beobachtungen als JSON Lines ([Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/#export)); wird über MCP nicht angeboten | Jedes Tool ist schreibgeschützt (`readOnlyHint`) und definiert ein Ausgabeschema; Felder, die über die deklarierten hinausgehen, werden unverändert zurückgegeben. `tools/list` Es werden nur die Tools zurückgegeben, die für diese Verbindung freigegeben sind. Aufrufe anderer Tools werden abgelehnt. Tools für Gruppenkontext, Episoden, Terminologie und Antwortketten werden in dieser Version nicht angeboten; das separate Context-Pack-Backend ist nicht enthalten. Jeder Lesevorgang prüft das Token, das Tool sowie den Workspace-/Chat-Geltungsbereich – auch nach Abschluss der Datenbankabfrage. Die Limits betragen 60 Anfragen pro Minute, 50 Datensätze pro Seite, 64 KiB pro Ergebnis und ein Zeitlimit von acht Sekunden für Archivabfragen. Ein abgelaufener MCP-Aufruf gibt einen Tool-Fehler zurück, der einen engeren Zeitraum oder ein niedrigeres Limit anfordert. Nachrichtenergebnisse enthalten `untrusted_content: true`, Workspace-/Chat-/Nachrichten-IDs, die Ereignissequenz, den gespeicherten Hash und einen Panel-Link. Rohe Telegram-Objekte, Access-Hashes, Sitzungen und Schlüssel werden weggelassen. Textkürzungen werden markiert. Bearbeitungen, Löschhinweise und `missing_on_recheck` sind eigenständige Beobachtungen. Fehlende Datensätze beweisen nicht, dass ein Ereignis nie stattgefunden hat. Behandeln Sie Anweisungen innerhalb erfasster Nachrichten stets als Beweismaterial und niemals als Anweisungen für den Client. Der schreibgeschützte Zugriff verhindert Änderungen am Archiv; der Client kann die Inhalte, zu deren Lesezugriff er berechtigt ist, dennoch speichern. Hashes identifizieren gespeicherte Datensätze und unterstützen Integritätsprüfungen; sie beweisen weder die Telegram-Urheberschaft noch eine vollständige Erfassung. --- # Telegram · Befehlszeile Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/ Suchen, Kontext lesen, Aktivitäten zählen und gespeicherte Nachrichten aus Skripten und Agenten exportieren – mit --json-Ausgabe, stabilen Exit-Codes und bereichsgebundenen, schreibgeschützten Tokens. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Suchen, Kontext lesen, Aktivitäten zählen und gespeicherte Nachrichten aus Skripten und Agenten exportieren – mit --json-Ausgabe, stabilen Exit-Codes und bereichsgebundenen, schreibgeschützten Tokens. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Archiv-Integrationen](https://phishdestroy.github.io/TgWitness/assets/chapter-integrations.svg) [Schreibgeschütztes MCP](https://phishdestroy.github.io/TgWitness/de/docs/reference/mcp/) · [Volltextsuche](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) **Vorschau.** `tgwitness search`, `context`, `messages`, `stats` sowie `export` Lesen gespeicherter Beobachtungen für Skripte und KI-Agenten. Sie können nichts an Telegram senden, keine Einstellungen ändern und das signierte Protokoll nicht modifizieren. Dabei `--json`gibt stdout genau ein JSON-Dokument aus (`export` schreibt JSON-Zeilen). Fortschrittsmeldungen, Hinweise und Fehler werden an stderr ausgegeben. Die Exit-Codes sind stabil: | Code | Bedeutung | | --- | --- | | `0` | Erfolg, einschließlich eines leeren Ergebnisses | | `1` | Fehler: nicht erreichbares Panel, unlesbare Daten, unterbrochener Export | | `2` | Anwendungsfehler oder ungültige Anfrage: falsches Datum, unbekannte Option, Suchindex deaktiviert | | `3` | Derzeit nicht verfügbar: Der Arbeitsbereich ist in einem aktiven Panel geöffnet, oder das Panel fordert dazu auf, es später erneut zu versuchen (Ratenbegrenzung, Zeitüberschreitung). | | `4` | Zugriff verweigert: fehlendes, abgelaufenes oder widerrufenes Token, ein Chat außerhalb des Gültigkeitsbereichs, ein Tool, das dies nicht zulässt | ## Zwei Lesemöglichkeiten **Über das Panel (`--url`).** Der Befehl nutzt dieselbe scoped archive API wie MCP. Erstellen Sie eine Verbindung unter **„Integrationen“ → „MCP**“: Wählen Sie Arbeitsbereiche und Chats, Tools und eine Gültigkeitsdauer aus und kopieren Sie anschließend einmalig das Token. Die Verbindung ist schreibgeschützt, beschränkt auf diese Chats, auf 60 Anfragen pro Minute begrenzt und kann jederzeit widerrufen oder erneuert werden. Panel-Anmeldetoken und Telegram-Anmeldedaten funktionieren hier nicht. ``` export TGWITNESS_URL=https://panel.example.org # default http://127.0.0.1:8787 export TGWITNESS_MCP_TOKEN=tgw_mcp_... # or --token-file path tgwitness search 'перевод карта' --json ``` Ein Remote-Panel benötigt HTTPS; einfaches HTTP wird nur für `127.0.0.1`, `localhost` und `::1`. Proxy-Umgebungsvariablen werden ignoriert und Weiterleitungen abgelehnt, sodass das Token ausschließlich die von Ihnen angegebene Adresse erreicht. **Direkt aus einem angehaltenen Arbeitsbereich (`--data-dir`).** Liest das Datenverzeichnis mit vollständigem lokalem Zugriff, ohne Token. Verwenden Sie es auf einer Kopie eines Datenverzeichnisses oder während die Erfassung angehalten ist. Signierte Datensätze werden niemals verändert; wie beim Panel kann das Öffnen eines Arbeitsbereichs dazu führen, dass die daraus abgeleiteten Indizes auf den aktuellen Stand gebracht werden. Wenn das Panel den Arbeitsbereich geöffnet hat, beendet sich der Befehl mit dem Code `3`; lesen Sie stattdessen über das Panel. Ohne `--data-dir`, `TGWITNESS_DATA`, `./data/live` oder das Datenverzeichnis der Installation, auf der der Befehl ausgeführt wird, wird verwendet. `--workspace ID` wählt einen Arbeitsbereich aus (Standard `default`). `tgwitness messages --workspaces` listet diejenigen auf, die Sie lesen dürfen. ## Befehle | Befehl | Ergebnis | | --- | --- | | `tgwitness search QUERY [--chat ID] [--since] [--until] [--any] [--limit N] [--offset N]` | Die besten Treffer zuerst, mit Wortformen, exakten Phrasen in Anführungszeichen, Domains und `@username` ([Syntax](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#search-syntax)) | | `tgwitness search QUERY --exact [--before SEQ]` | Genauer Wortlaut, neueste Einträge zuerst, ohne Index | | `tgwitness context CHAT_ID MESSAGE_ID` | Gespeicherte Nachrichten innerhalb von zehn Nachrichten-IDs auf beiden Seiten | | `tgwitness messages` | Chats, die Sie lesen können | | `tgwitness messages CHAT_ID [--since] [--until] [--before SEQ]` | Gespeicherte Nachrichten des Chats, die neuesten zuerst | | `tgwitness messages CHAT_ID --message ID` | Jede gespeicherte Version und jeder Löschdatensatz einer Nachricht | | `tgwitness stats [--chat ID] [--sender ID] [--since] [--until] [--top N]` | Aktivitätsstatistiken, siehe unten | | `tgwitness export [--chat ID] [--since] [--until] [--output FILE]` | Gespeicherte Beobachtungen als JSON-Zeilen in der Reihenfolge des Protokolls | Datumsangaben erfolgen `2026-10-01` (UTC-Mitternacht) oder ISO-Zeiten mit Zeitzone `2026-10-01T09:00+03:00`. Für `search`, `messages` und `export` wählen sie den Beobachtungszeitpunkt. Seiten fassen bis zu 50 Datensätze: Befolgen Sie `next_offset` (`--offset`) für die rangierte Suche und `next_before` (`--before`) an anderer Stelle. Die rangbasierte Suche endet bei 1,000 Ergebnissen. Die letzte Seite kann kürzer sein als `--limit`; schränken Sie die Abfrage, den Chat oder den Zeitraum ein, wenn mehr passende Beobachtungen vorhanden sind. Jedes Nachrichtenergebnis enthält `untrusted_content: true`den Arbeitsbereich, den Chat und die Nachrichten-IDs, die Protokollsequenz, den Hash des gespeicherten Datensatzes und einen Panel-Link. Bearbeitungen, Löschhinweise und `missing_on_recheck` sind separate Datensätze. Das Fehlen eines Datensatzes bedeutet nicht, dass ein Ereignis nie stattgefunden hat. ### Aktivitätsstatistiken `stats` Zählt die gespeicherten Beobachtungen für einen Chat, einen Absender oder alle Chats im Erfassungsbereich: - Nachrichten nach UTC-Stunde und nach Wochentag (Montag an erster Stelle), verkehrsreichste Stunden und Tage; - bearbeitet, gelöscht und `missing_on_recheck` Freigaben; - Absender mit Nachrichtenanzahl sowie Zeitangaben für die erste und letzte Nachricht; - die häufigsten Domains und `@handles`, einmal pro Nachricht über alle gespeicherten Versionen hinweg gezählt; - Erfassungsbereich: `coverage.gap` Aufzeichnungen sowie – für den Zugriff auf den gesamten Arbeitsbereich – Zeiträume ohne Heartbeat eines verbundenen Collectors (`collector_liveness`). Der Zeitraum bezieht sich auf **die von Telegram gemeldete Zeit der Nachricht**. Die Anzahl der Stunden und Wochentage kann dabei helfen, die Zeitzone des Absenders abzuschätzen; sie legt diese jedoch nicht fest. Die Zahlen werden auf Anfrage aus dem Protokoll berechnet und nicht gespeichert. Jedes Ergebnis nennt den Protokollanfang, den es abdeckt, wenn Ihr Zugriff den gesamten Arbeitsbereich umfasst. Das Einlesen endet nach fünf Sekunden über das Bedienfeld oder `--timeout` Sekunden lokal (Standardwert 30); danach `complete` ist „false“ und `partial` bezeichnet den ersten Datensatz, der nicht gelesen wurde. In diesem Fall werden nur die neuesten Datensätze gezählt. ### Exportieren `export` Schreibt pro gespeicherter Beobachtung (neue Nachrichten, Snapshots, Bearbeitungen, wiederhergestellte Nachrichten, Löschbenachrichtigungen, `missing_on_recheck` und gespeicherte Mediendateien ) in der Reihenfolge des Protokolls. Jede Zeile enthält dieselben Felder wie die anderen Einträge, einschließlich des vollständigen Textes. Bei `--output`wird die Datei unter einem `.partial` Namen abgelegt und erst nach dem Abschlussprotokoll des Panels umbenannt; ein unterbrochener Export hinterlässt keine Datei und beendet den Vorgang mit dem Code `1`. `--output` überschreibt niemals eine vorhandene Datei. Mit `--output` und `--json`wird über stdout eine Zusammenfassung ausgegeben: Datensatzanzahl, letzte Journal- Sequenz und, bei Zugriff auf den gesamten Arbeitsbereich, der Journal-Anfang. Ein Export über das Panel erfordert eine Verbindung, die **den Export von Nachrichten** zulässt **(nur über die Befehlszeile)**; diese Option ist standardmäßig nicht ausgewählt. Diese Datei ist eine Arbeitskopie und kein Beweismittel: Für eine überprüfbare Übergabe verwenden Sie den signierten Export unter **„Exporte“**, der `python -m tgwitness.verify`überprüft wird. Das Panel überprüft den Zugriff vor der Ausgabe jedes Datensatzes erneut, einschließlich des Abschlussdatensatzes. Ein widerrufener oder abgelaufener Zugriff führt zu einem unvollständigen Export. Lazy-Page-Lesevorgänge teilen sich das Limit der Archiv-Worker mit anderen Abfragen und unterliegen einer begrenzten Wartezeit. ## Agent-Fähigkeit [`.agents/skills/tgwitness-cli/SKILL.md`](https://github.com/phishdestroy/TgWitness/blob/main/.agents/skills/tgwitness-cli/SKILL.md) erklärt einem Agenten, wie diese Befehle zu verwenden sind, wie Datensätze zu zitieren sind und wie mit erfasstem Text umzugehen ist. Agenten, die `.agents/skills` laden diese aus einem Repository-Checkout . Für Claude Code kopieren Sie den `tgwitness-cli` Ordner in `.claude/skills/` in Ihr Projekt oder `~/.claude/skills/`. ## MCP und die Befehlszeile Beide nutzen dieselben Verbindungen, Gültigkeitsprüfungen und Beschränkungen. MCP-Ergebnisse sind auf eine 64-KiB-Seite begrenzt, daher bietet MCP keinen Massenexport an; die Befehlszeile gibt die Daten per Stream aus. `get_activity_stats` ist für beide verfügbar. --- # Telegram · Lokale OCR und Transkription Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/media-analysis/ Erkennen Sie erfasste Bilder und Audiodateien mit einem lokalen Worker; verknüpfen Sie den abgeleiteten Text weiterhin mit der Quelldatei. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Erkennen Sie erfasste Bilder und Audiodateien mit einem lokalen Worker; verknüpfen Sie den abgeleiteten Text weiterhin mit der Quelldatei. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) [Anleitung zum Arbeitsablauf](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) Öffnen Sie einen `media.saved`-Protokoll-Eintrag, wählen Sie **„Anhang erkennen“** und wählen Sie anschließend unter **„Archiv befragen“** entweder „OCR“ oder „Transkription“ aus. Die Verarbeitung erfolgt manuell und lokal. Es gibt keinen Cloud-Medienmodus und keinen automatischen Upload. Die ursprünglichen Anhangsdaten und das „ `media_sha256`“-Protokoll bleiben unverändert; der erkannte Text wird ausdrücklich als maschinelle Erkennung gekennzeichnet und separat zusammen mit dem Quell-Hash, der Engine-/Modellversion, der Sprache, den Parametern und der Fertigstellungszeit gespeichert. Transkripte behalten die zurückgegebenen Zeitstempel bei. Durchsuchen Sie diese Ergebnisse mithilfe **der Suche nach erkanntem Text** und des OCR-/Transkript-Filters oder wählen Sie erkannten Text als Quelle für eine **„Journal** Best-Match“-Suche. Beide suchen nach Wortformen über einen [In-Memory-Index](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#recognized-text). Hierbei handelt es sich um eine separate Suche in abgeleiteten Daten; sie wandelt die maschinelle Erkennung nicht stillschweigend in den ursprünglichen Telegram-Text um und fügt ihn auch nicht zu signierten Ereignissen hinzu. ## Richten Sie den optionalen Worker ein Version 1 erfordert einen Linux-Host mit einem lokalen Docker-Daemon. Unter Windows kann TgWitness in einer Linux-VM/WSL-Umgebung mit einem eigenen lokalen Daemon ausgeführt werden. Das Panel entschlüsselt niemals selbst einen nicht vertrauenswürdigen Anhang. ``` docker build -f deploy/media-worker/Dockerfile -t tgwitness-media:local . export TGWITNESS_MEDIA_IMAGE=tgwitness-media:local ``` Setzen Sie diese Variablen in der TgWitness-Serviceumgebung und starten Sie den Dienst neu. Der Daemon-Socket ist standardmäßig auf „`/var/run/docker.sock`“ eingestellt; bei rootlosen Bereitstellungen kann „ `TGWITNESS_DOCKER_SOCKET`“ festgelegt werden. Der Worker nutzt explizit diesen Unix-Socket anstelle eines entfernten Docker-Kontexts. Geben Sie die Docker-API nicht für Panel-Benutzer frei und mounten Sie den Socket nicht innerhalb des Erkennungscontainers. Für die Transkription installieren Sie separat ein CTranslate2-kompatibles Whisper-Modell und legen Sie anschließend `TGWITNESS_WHISPER_MODEL_DIR` auf dessen Verzeichnis fest. Der Worker lädt es mit `local_files_only=True`; das ausgewählte Modell und die Eingabe werden schreibgeschützt eingebunden. Siehe die [Dokumentation zum Laden von Modellen](https://github.com/SYSTRAN/faster-whisper) der Engine. Das mitgelieferte OCR-Image enthält trainierte Daten für Englisch und Russisch. Integrieren Sie bei Bedarf eine weitere Sprache in Ihr Image; die Sprachcodes entsprechen [denen der Tesseract-Befehlszeilenschnittstelle](https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html). Während der Verarbeitung wird kein Modell abgerufen. Die Erstellung/der Download des Setups kann eine Netzwerkverbindung erfordern; bei jedem einzelnen Erkennungscontainer ist die Netzwerkverbindung deaktiviert. Installieren Sie das Image, bevor Sie es aktivieren; die Laufzeitumgebung verwendet „`--pull=never`“. ## Grenzen und Wiederherstellung Der Container läuft als Benutzer ohne Sonderrechte mit einem schreibgeschützten Root-Zugang, reduzierten Rechten, `no-new-privileges` , einer CPU, 2 GiB Arbeitsspeicher, einer PID-Begrenzung und einem begrenzten temporären Dateisystem. Es werden nur eine verifizierte Kopie der ausgewählten Datei und ein optionales Modellverzeichnis eingebunden. Die Datenbank, der Tresor und die Sitzung des Collectors werden nicht eingebunden. Die [Docker-Laufzeit-Flags](https://docs.docker.com/reference/cli/docker/container/run/) erzwingen diese Beschränkungen; es handelt sich hierbei um eine Containergrenze, nicht um eine Hardware-Enklave. Dateien sind auf 50 MiB begrenzt, Bilder auf 20 Millionen Pixel, Audiodateien auf 30 Minuten mit bekannter Dauer und die Verarbeitung auf fünf Minuten. Es läuft jeweils nur ein Worker, mit maximal 20 Aufgaben in der Warteschlange bzw. in Ausführung und 100 gespeicherten Aufgaben pro Arbeitsbereich. „Cancel“ stoppt den Container; „Retry“ erstellt einen neuen Auftrag, der mit dem vorherigen Versuch verknüpft ist. Unterbrochene Aufträge werden nach dem Neustart entsprechend gekennzeichnet. Die Verarbeitung kann fehlschlagen, wenn ein Modell die konfigurierten Grenzen nicht einhalten kann; ohne Isolierung läuft es nicht im Hintergrund weiter. --- # Telegram · Ausgehende Webhooks Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/webhooks/ Sendet definierte Ereignisse mit HMAC-Signaturen, Wiederholungsversuchen und Zustellstatus an HTTPS-Empfänger. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Sendet definierte Ereignisse mit HMAC-Signaturen, Wiederholungsversuchen und Zustellstatus an HTTPS-Empfänger. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Archiv-Integrationen](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/) ![Archiv-Integrationen](https://phishdestroy.github.io/TgWitness/assets/chapter-integrations.svg) [Anleitung zum Arbeitsablauf](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md) Öffnen Sie **„Integrationen“ → „Ausgehende Webhooks“** im ausgewählten Arbeitsbereich. Fügen Sie einen HTTPS-Empfänger hinzu, wählen Sie „Collector/Media/Export“-Ereignisse aus und wählen Sie optional Chats für neue Beobachtungen und Änderungen aus. Der Nachrichtentext ist standardmäßig deaktiviert. Durch das Aktivieren von Auszügen werden den Ereignissen zu Nachrichtenänderungen maximal 1.000 Zeichen hinzugefügt; Telegram-Rohdatenfelder und Anmeldedaten werden niemals gesendet. Kopieren Sie den HMAC-Schlüssel einmalig in die geschützte Konfiguration des Empfängers. Er wird im Tresor von TgWitness verschlüsselt und kann nicht über das Panel abgerufen werden. Löschen Sie ein Ziel und erstellen Sie es neu, um es zu rotieren. **Senden Sie synthetische**Testwarteschlangen einen Test ohne Chat-Inhalt; aktualisieren Sie den Zustellstatus, um das Ergebnis zu sehen. Die Bereitstellung erweitert den bestehenden Benachrichtigungskreislauf neben Apprise. Sie nutzt die externe Route des Arbeitsbereichs und bestehende Einschränkungen für private Ziele. Es findet keine direkte Ausweich- oder Weiterleitung statt. URLs dürfen keine Anmeldedaten, Abfragezeichenfolgen oder Fragmente enthalten; private Adressen erfordern die Netzwerk-Zustimmung auf Serverebene, keine Einstellung, die ein Panel-Benutzer umgehen kann. ## Nutzdaten und Signatur Schema: [`tgwitness.webhook/1`](https://github.com/phishdestroy/TgWitness/blob/main/integrations/webhook.schema.json). Jede Nutzlast enthält `event_id`, `timestamp`, `workspace`, `type`, `synthetic` und Zähler. Protokollbasierte Ereignisse enthalten ihre Reihenfolge und ihren Hashwert. Der Abschluss eines vollständigen Exports und synthetische Tests sind Übermittlungsereignisse ohne erfundenen Verweis auf ein signiertes Protokoll. Telegram-Löschbenachrichtigungen und `missing_on_recheck` bleiben eigenständige Typen. Der Header „`X-TgWitness-Signature`“ lautet „`t=UNIX_SECONDS,v1=HEX_HMAC_SHA256`“. Berechnen Sie den HMAC über die exakten Bytes „`timestamp + "." + raw_request_body`“, wobei das angezeigte Geheimnis als UTF-8-Bytes verwendet wird. Vergleichen Sie die Signaturen in konstanter Zeit, bevor Sie den Textkörper analysieren oder darauf reagieren. Verwerfen Sie Zeitstempel, die mehr als fünf Minuten von Ihrer Uhr abweichen. Der Zeitstempel wird bei jedem Zustellversuch aktualisiert. Verwenden Sie „`event_id`“ als Idempotenzschlüssel in einem dauerhaften Speicher mit einer atomaren Eindeutigkeitsbeschränkung vor Nebenwirkungen. Eine gültige Signatur allein verhindert nicht, dass eine kürzlich erfolgte Anfrage erneut abgespielt wird. Bewahren Sie verarbeitete IDs mindestens für die gesamte Wiederholungsdauer auf; bewahren Sie sie länger auf, wenn der Empfänger gespeicherte Ereignisse erneut verarbeiten kann. ## Wiederholungsversuche Übermittlungen werden dauerhaft vor HTTP-Anfragen in eine Warteschlange gestellt. Es wird die „At-Least-Once“-Semantik verwendet: Eine verlorene Bestätigung oder ein Neustart kann dazu führen, dass ein Ereignis erneut mit derselben ID übermittelt wird. Es gibt acht Versuche mit exponentiellem Backoff, beginnend bei 15 Sekunden und begrenzt auf eine Stunde. Für einen Erfolg ist eine 2xx-Antwort erforderlich. Abgebrochene Aufträge hinterlassen einen sichtbaren Fehler; eine Zustellung ist nach Ablauf der Wiederholungsversuche nicht mehr garantiert. Die Warteschlange fasst 1.000 Zustellungen. Ist sie voll, wird das Scannen der Protokollereignisse unterbrochen und fortgesetzt, sobald wieder Speicherplatz verfügbar ist. Ein vollständiger Export, der nicht in die Warteschlange gestellt werden kann, löst einen sichtbaren Warteschlangenfehler aus. Pro Benachrichtigungsdurchlauf werden bis zu fünf Zustellversuche unternommen, und die letzten 100 Versuchsdatensätze werden gespeichert. Durch das Entfernen eines Ziels werden auch dessen ausstehende Zustellungen entfernt. ## n8n-Beispiel Importieren Sie [den Beispiel-Workflow](https://github.com/phishdestroy/TgWitness/blob/main/integrations/n8n-tgwitness.json). Er ist inaktiv und enthält keine vertraulichen Daten oder nachgelagerte Aktionen. Legen Sie „`TGWITNESS_WEBHOOK_SECRET`“ in der n8n-Worker-Umgebung fest, gewähren Sie dieser Umgebung Zugriff und aktivieren Sie die integrierte Funktion „`crypto`“ für den Code-Knoten. Das Beispiel nutzt die Option „raw-body“ des Webhook-Knotens, überprüft Signatur und Aktualität und bestätigt validierte Ereignisse. Dies entspricht der [dokumentierten Implementierung](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Webhook/Webhook.node.ts) des Knotens. Bevor Sie SIEM-Einträge oder Benachrichtigungen hinzufügen, richten Sie einen dauerhaften, idempotenten Speicher ein, der mit `event_id` verschlüsselt ist. Beschränken Sie die Bearbeitung von n8n-Workflows und die Aufbewahrung von Ausführungsprotokollen entsprechend den Daten, die Sie zum Versand ausgewählt haben. TgWitness fügt keine eingehenden Befehle hinzu. --- # Telegram · Öffentliches Showcase Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/showcase/ Veröffentlichen Sie gespeicherte Nachrichten ausgewählter öffentlicher Kanäle und signierte Momentaufnahmen über zeitlich begrenzte, widerrufbare Links. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Veröffentlichen Sie gespeicherte Nachrichten ausgewählter öffentlicher Kanäle und signierte Momentaufnahmen über zeitlich begrenzte, widerrufbare Links. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) **„Zugriff → Öffentliches Showcase“** erstellt eine separate, schreibgeschützte Seite unter Verwendung des bestehenden Access-Token-Systems. Es liest die gespeicherten Beobachtungen der Installation aus. Es startet keinen Kollektor, meldet sich nicht bei Telegram an und richtet keinen Kanal für einen Besucher ein. ## Eine Seite veröffentlichen 1. Speichern Sie für jeden öffentlichen Kanal, den Sie anzeigen möchten, ein Quellprofil. Ein Kanal muss in seinem zuletzt gespeicherten Profil einen öffentlichen Benutzernamen haben; Gruppen und private Chats kommen nicht in Frage. 2. Offener **Zugriff → Öffentlicher Showcase** (oder `/showcase-manage.html`) als Administrator. 3. Wählen Sie Kanäle aus bis zu 16 Arbeitsbereichen aus, geben Sie den Titel der öffentlichen Seite ein und wählen Sie eine Gültigkeitsdauer des Links von 1, 7 oder 30 Tagen. Interne Arbeitsbereichsbezeichnungen werden nicht veröffentlicht. Es können bis zu 64 Kanäle einbezogen werden. 4. Überprüfen Sie den Text der ausgewählten Kanäle vor der Veröffentlichung und klicken Sie anschließend auf **„Vorschau der ausgewählten Datensätze**“. Die Vorschau verwendet dieselbe serverseitige Projektion wie die Besucherseite. 5. Klicken Sie auf **„Showcase-Link erstellen**“. Kopieren Sie den Link, solange er sichtbar ist. Öffnen Sie ihn in einem separaten Browser, um die Seite des Empfängers zu überprüfen, bevor Sie ihn weiterleiten. Der Link enthält ein Zugriffstoken im URL-Fragment. Die Seite entfernt das Fragment vor dem Absenden von API-Anfragen und tauscht es gegen eine Browsersitzung aus. Jeder, der den Link besitzt, kann das ausgewählte Material bis zum Ablauf oder zur Widerrufung öffnen. Neue Links erlauben 100 gleichzeitige Sitzungen, die jeweils höchstens eine Stunde dauern. Bestehende Zugriffskontrollen können über die Grant-API auch Adressbeschränkungen und Anmeldebegrenzungen durchsetzen. Der normale Prüferzugriff ist ein anderer Modus und umfasst weiterhin die ursprünglich zugelassenen Nachrichten und Dateien. ## Was Besucher sehen | Sichtbar | Privat gehalten | | --- | --- | | Ausgewählte Titel öffentlicher Kanäle, Benutzernamen und Daten der Profilbeobachtung | Kontoidentitäten, interne Arbeitsbereichsbezeichnungen und nicht ausgewählte Quellen | | Erfasster Text und jede gespeicherte Bearbeitung | Strukturierte Absender-IDs, Namen, Benutzernamen, Telefonnummern und Profilwerte | | Löschmeldungen mit dem zuvor gespeicherten Text, sofern verfügbar | Anhänge, Avatare, Miniaturansichten, Dateinamen und Originaldaten | | Markierungen, die anzeigen, dass ein Autor/Profil oder ein Anhang erfasst wurde | Metadaten zu Weiterleitungen und Antworten, Netzwerkwege, IP-Adressen und Anmeldedaten | | Ereignisanzahlen für ausgewählte Kanäle, aktuelle Sammlungsschalter, Heartbeat- und Checkpoint-Intervall | Steuerelemente für die Datenerfassung und gängige APIs zum Export von Beweismaterial | | Signatur-Fingerabdruck, Journal-Checkpoint und Konsistenznachweis | Signaturschlüssel und Telegram-Sitzungen | **Der Text öffentlicher Nachrichten wird nicht automatisch anonymisiert.** Ein Name, eine Erwähnung, eine Telefonnummer oder ein Link, die in der Nachricht enthalten sind, bleiben Teil dieses Textes. `Redacted`Dies gilt für die strukturierten Autoren-/Profilfelder. Überprüfen Sie den tatsächlich ausgewählten Inhalt vor der Veröffentlichung, einschließlich beibehaltener Bearbeitungen und Löschungen. Die Berechtigung spiegelt das **zuletzt gespeicherte Quellprofil** wider, nicht eine Live-Abfrage bei Telegram. Wenn ein nachfolgendes Profil keinen öffentlichen Kanal-Benutzernamen mehr enthält, schließen neue Anfragen den Kanal aus. Aktualisieren Sie die Quellprofile, wenn sich die öffentliche Sichtbarkeit ändert. Leser haben möglicherweise bereits Material gespeichert, das sie zuvor erhalten haben. Die ursprünglichen signierten Datensätze bleiben unverändert. Die angezeigte Projektion wird separat signiert und enthält Hashes, die auf die ursprünglichen Datensätze verweisen. Eine Projektionssignatur authentifiziert die angezeigte Aussage; es handelt sich nicht um die Signatur des ursprünglichen Ereignisses über redigierte Bytes. ## Signaturen und Kontinuität prüfen Erweitern Sie **„Fingerabdruck & signierter Checkpoint“** und laden Sie einen Snapshot herunter. Nach einer Seitenaktualisierung enthält der Download den vorherigen Browser-Snapshot und einen Merkle- Konsistenznachweis zwischen deren Journalgrenzen. Die automatische Aktualisierung erfolgt einmal pro Minute, solange die Seite sichtbar ist und ihre erste Seite mit Beobachtungen anzeigt. Nachdem Sie TgWitness installiert haben, überprüfen Sie die heruntergeladene Datei offline: ``` python -m tgwitness.showcase_verify showcase.json --fingerprint TRUSTED_COLLECTOR_SHA256 ``` Der Fingerabdruck muss von einer separat vertrauenswürdigen Referenz stammen. Um einen Vergleich mit einem von Ihnen selbst gespeicherten Snapshot durchzuführen, verwenden Sie `--previous earlier.json`; dies überschreibt den vorherigen Snapshot, der im Download enthalten ist. Der aktuelle Nachweis muss an dieser gespeicherten Grenze beginnen. Authentifizierte Clients können diesen Nachweis mit `GET /api/showcase/{workspace_id}?challenge=<32-hex-random>&from_count=`. Ein kürzeres Journal gibt einen HTTP-409-Fehler zurück, anstatt die Grenze stillschweigend zurückzusetzen. Der signierte Checkpoint wird für das **gesamte Collector-Journal** festgeschrieben, einschließlich seiner Datensatzanzahl und des undurchsichtigen Head-Hash. Die angezeigten Nachrichtenzahlen gelten nur für die ausgewählten öffentlichen Kanäle. Die Seite listet niemals den Inhalt des anderen Journals auf. Es handelt sich um Ereigniszahlen, nicht um die Anzahl eindeutiger Nachrichten. Die Einstellungen beschreiben die aktuelle Konfiguration, nicht jedes frühere Aufzeichnungsintervall. Die Signatur- und Konsistenzprüfung kann Änderungen im Verhältnis zu einer festgelegten Grenze erkennen. Sie führt keine unabhängige Neuzählung der signierten Zähler durch, bescheinigt nicht die Telegram-Herkunft, weist keine lückenlose Erfassung nach und ersetzt keinen unabhängigen Zeugen. Verwenden Sie für diese Überprüfung den [Evidenzprüfer](https://github.com/phishdestroy/TgWitness/blob/main/docs/TRUST.md), [den unabhängigen Zeugen](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) und [den in Testmaßstab erstellten Datensatz](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/). Synthetische Installationen sind sichtbar als „synthetisch“ gekennzeichnet. ## Seite widerrufen oder hosten Verwenden Sie **„Revoke“** im Showcase-Manager oder im bestehenden Abschnitt **„Zugriff“,** um den Link zu schließen und alle zugehörigen Sitzungen zu beenden. Der Besucher löscht angezeigte Datensätze, sobald eine Anfrage feststellt, dass der Zugriff beendet wurde. Ablaufdatum und Berechtigungen werden bei jeder Anfrage überprüft. Showcase-Berechtigungen können nicht direkt in einen gewöhnlichen Panel-Zugriff umgewandelt werden; erstellen Sie eine neue Berechtigung, um den Modus zu ändern. Die Seite wird über die bestehende HTTPS-Adresse der Installation bereitgestellt. Das Veröffentlichen eines Links öffnet keinen neuen Port, erstellt keinen Tunnel und ändert keine DNS-Einstellungen. Der HTML-Code und die API bleiben auf der Installation des Nutzers. Ein Besucher der Demo kann mit diesem Zugriff die üblichen APIs für Nachrichten, Profile, Medien, Export oder Verwaltung nicht nutzen. --- # Telegram · So funktioniert das Beweismaterial Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/ Hash-Kette, Signaturen, Kontrollpunkte und Zeugen werden anhand der genauen Formeln erläutert, die der Verifizierer verwendet. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Hash-Kette, Signaturen, Kontrollpunkte und Zeugen werden anhand der genauen Formeln erläutert, die der Verifizierer verwendet. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Beweise und Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) TgWitness bewahrt die von einem Erfassungskonto beobachteten Inhalte auf, verknüpft diese Beobachtungen zu einem signierten Protokoll und ermöglicht es einer anderen Person, einen Export anhand eines vertrauenswürdigen Schlüssels und eines zuvor gespeicherten Prüfpunkts zu verifizieren. Die [lokale Dokumentationswebsite](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/PUBLISHING.md#preview-the-website-locally) enthält zusätzlich interaktive Beispiele unter `/docs/concepts/`, einen Checkpoint-Entscheidungs-Explorer unter `/docs/witness/` sowie Anleitungen für [das Case Board](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/), [die Berichtsgestaltung](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) und [Auszüge zur Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#handover-extract). Alle Beispielnachrichten, Zahlenangaben und Verzögerungen sind fiktiv. Hashes in der Chain-Sandbox werden mit SHA-256 im Browser berechnet. Es werden keine Daten an Telegram gesendet. **Auf dieser Seite** - [Eine Nachricht ändert sich; Beobachtungen sammeln sich an](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#a-message-changes-observations-accumulate) - [Was ein Hash abdeckt](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#what-a-hash-covers) - [Was ein früherer Checkpoint hinzufügt](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#what-an-earlier-checkpoint-adds) - [Wo ein Witness hingehört](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#where-a-witness-belongs) - [Testdurchführung anhand bekannter Aktionen](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#test-delivery-against-known-actions) - [Wählen Sie einen Arbeitsablauf aus](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/#pick-a-workflow) ## Eine Nachricht ändert sich; Beobachtungen sammeln sich an Sequenzdiagramm · Telegram → Collector: Neue Nachricht: Treffen um 10:00 Uhr; Collector → Signiertes Protokoll: Nachricht.new anhängen; Telegram → Collector: Bearbeitet: Treffen um 11:00 Uhr; Collector → Signiertes Protokoll: Nachtrag: Nachricht.bearbeitet; Telegram → Collector: Hinweis zur Löschung; Collector → Signiertes Protokoll: Nachtrag: message.deleted; Anmerkung zu Signiertes Protokoll: Original + Bearbeitung + Löschvorgang bleiben erhalten · Telegram · Collector · Signiertes Protokoll · Neue Nachricht: Treffen um 10:00 Uhr · Nachricht.new anhängen · Bearbeitet: Treffen um 11:00 Uhr · Nachtrag: Nachricht.bearbeitet · Hinweis zur Löschung · Nachtrag: message.deleted · Original + Bearbeitung + Löschvorgang bleibenerhalten **Diagramm als Text** 1. Telegram → Collector: Neue Nachricht: Treffen um 10:00 Uhr 2. Collector → Signiertes Protokoll: Nachricht.new anhängen 3. Telegram → Collector: Bearbeitet: Treffen um 11:00 Uhr 4. Collector → Signiertes Protokoll: Nachtrag: Nachricht.bearbeitet 5. Telegram → Collector: Hinweis zur Löschung 6. Collector → Signiertes Protokoll: Nachtrag: message.deleted 7. Anmerkung zu Signiertes Protokoll: Original + Bearbeitung + Löschvorgang bleiben erhalten Diese vereinfachte Abfolge geht davon aus, dass Telegram jede Aktualisierung zugestellt hat und das ausgewählte Konto diese einsehen konnte. Auch operative Ereignisse werden im Protokoll erfasst. Eine Löschmeldung gibt weder den Löschenden noch einen genauen Löschzeitpunkt an. Wiederholte Zustellungen gelten als separate Beobachtungen; es erfolgt keine protokollweite Unterdrückung von Duplikaten. ## Was ein Hash abdeckt ![Beobachten, kodieren, hashen und signieren: Jedes neue Ereignis enthält den vorhergehenden Hashwert.](https://phishdestroy.github.io/TgWitness/assets/evidence-chain-animated.svg) Lesen Sie die Formel von innen nach außen: „**C**“ wandelt die neun Felder in exakte Bytes um; **„SHA-256“** erzeugt deren Digest; **„hex“** gibt an, wie dieser Digest gespeichert wird. Der vorherige Hash ist bereits im Ereignis enthalten. **„unhex“** wandelt den gespeicherten Hash wieder in die 32 Bytes um, die Ed25519 signiert. [Statisches Ketten-Diagramm](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-chain-static.svg) Sei C(ei) das kanonische UTF-8-JSON der neun Ereignisfelder. Der erste Datensatz `previous_hash` besteht aus 64 Nullen. Jeder nachfolgende Datensatz enthält den hexadezimalen Hash des vorhergehenden Datensatzes: hi = hex(SHA256(C(ei))) σi = Ed25519.Sign(sk,unhex(hi)) Die Signatur umfasst die 32 Rohdaten-Byte des Digests. Die Hash-Eingabe enthält genau `seq`, `observed_at`, `source_at`, `kind`, `chat_id`, `message_id`, `actor_id`, `payload` und `previous_hash`. Objektschlüssel sind sortiert; Leerzeichen und ASCII- Escape-Zeichen werden weggelassen; NaN und Unendlich werden verworfen. Siehe die [genaue Kodierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#event-canonicalization). Ablaufdiagramm · 64 Nullen → Eintrag 1 / Hash h1; Eintrag 1 / Hash h1 → Eintrag 2 enthält h1 / Hash h2; Eintrag 2 enthält h1 / Hash h2 → Eintrag 3 enthält h2 / Hash h3; Eintrag 3 enthält h2 / Hash h3 → Signierter Checkpoint: Zählung 3, Überschrift h3 (an anderer Stelle aufbewahren) · 64 Nullen · Eintrag 1 / Hash h1 · Eintrag 2 enthält h1 /Hash h2 · Eintrag 3 enthält h2 /Hash h3 · Signierter Checkpoint:Zählung 3, Überschrifth3 · an anderer Stelle · aufbewahren **Diagramm als Text** 1. 64 Nullen → Eintrag 1 / Hash h1 2. Eintrag 1 / Hash h1 → Eintrag 2 enthält h1 / Hash h2 3. Eintrag 2 enthält h1 / Hash h2 → Eintrag 3 enthält h2 / Hash h3 4. Eintrag 3 enthält h2 / Hash h3 → Signierter Checkpoint: Zählung 3, Überschrift h3 (an anderer Stelle aufbewahren) | Wechseln Sie zum bereitgestellten Protokoll | Was erkennt es? | | --- | --- | | Ändern Sie Datensatz 2, ohne dessen gespeicherten Hash zu verändern | Der neu berechnete Ereignis-Hash weicht ab; seine Signatur deckt das geänderte Ereignis nicht mehr ab | | Rekonstruktion des veränderten Datensatzes und aller nachfolgenden Hash-Werte | Die ursprünglichen Signaturen sind ungültig; ein gespeicherter Prüfpunkt an der betroffenen Grenze weist ebenfalls Abweichungen auf | | Entfernen Sie den Anhang, behalten Sie jedoch das verbleibende Präfix bei | Ein früherer gespeicherter Kontrollpunkt jenseits des angegebenen Präfixes zeigt, dass der Export zu kurz ist | | Ein Ersatzprotokoll mit einem anderen Schlüssel neu signieren | Ein separat vertrauenswürdiger Schlüssel-Fingerabdruck weist die Ersatzidentität zurück | ![Das Ändern eines gespeicherten Feldes verändert dessen Digest; das Neuerstellen von Hashes stellt die ursprünglichen Signaturen nicht wieder her.](https://phishdestroy.github.io/TgWitness/assets/evidence-tamper-animated.svg) **Probieren Sie die Logik bei Datensatz 2 aus:** Ändern Sie „`Meet at 11:00`“ in „`Meet at 12:00`“ im gespeicherten Ereignis. Der neu berechnete Hash stimmt nun nicht mehr überein. Durch die Neuberechnung der nachfolgenden Kette können deren Verknüpfungen zwar wiederhergestellt werden, doch die ursprünglichen Signaturen können die neuen Digests nicht mehr abdecken. Eine beobachtete Bearbeitung in Telegram wird hingegen zu einem neuen Protokoll-Eintrag. [Diagramm der statischen Änderungen](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-tamper-static.svg) Hash-Links allein verhindern nicht, dass jemand eine Ersatzkette neu berechnet. Vertrauen entsteht durch die Überprüfung der Signaturen unter einem unabhängig vertrauenswürdigen Schlüssel und den Abgleich mit Referenzen, die außerhalb des Collectors aufbewahrt werden. ## Was ein früherer Prüfpunkt hinzufügt ![Behalten Sie die Zählung 3 und die Überschrift h3 bei; ein späterer Export von 4 Datensätzen wird an Position 3 überprüft.](https://phishdestroy.github.io/TgWitness/assets/evidence-checkpoint-animated.svg) **Der Referenzwert bleibt unverändert, während das Protokoll wächst.** Wenn der Prüfpunkt angibt: „3 Datensätze, Kopf h3“, kann ein Export mit vier Datensätzen erfolgreich sein, indem h3 an Position 3 abgeglichen wird. Der aktuellste Kopf ist h4, der sich voraussichtlich unterscheidet. Ein Export mit nur zwei Datensätzen schlägt fehl. [Statisches Checkpoint-Diagramm](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-checkpoint-static.svg) Nach Überprüfung der Checkpoint-Signatur ist Folgendes erforderlich: Nexport ≥ Ncheckpoint and hexport[Ncheckpoint] = Hcheckpoint Ein Export kann über einen Prüfpunkt hinausreichen. Er muss an der beibehaltenen Grenze übereinstimmen. Der eigentliche Prüfer überprüft zudem die Abfolge jedes Ereignisses, den vorherigen Link, den Hashwert und die Signatur. Würde man nur den abschließend gespeicherten Kopf vergleichen, würde ein veränderter innerer Datensatz übersehen werden, dessen gespeicherter Hashwert nicht aktualisiert wurde. ## Wo ein Zeuge hingehört Ablaufdiagramm · Collector / Kontositzung / Schlüssel A → Endpunkt für schreibgeschützte Checkpoints; Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Separates, signiertes Zeugenprotokoll; Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Endpunkt für schreibgeschützte Checkpoints (Überprüfung anfordern); Endpunkt für schreibgeschützte Checkpoints → Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B (Signierte Antwort); Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Kanal mit signierten TGW1-Beiträgen (Bot-API / eigenes Token) · Host A · Host B · Collector / Kontositzung /Schlüssel A · Endpunkt fürschreibgeschützteCheckpoints · Witness / festgesteckterSammelschlüssel / eigenerSchlüssel B · Separates, signiertesZeugenprotokoll · Kanal mit signiertenTGW1-Beiträgen · Überprüfung anfordern · Signierte Antwort · Bot-API / eigenes Token **Diagramm als Text** 1. Collector / Kontositzung / Schlüssel A → Endpunkt für schreibgeschützte Checkpoints 2. Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Separates, signiertes Zeugenprotokoll 3. Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Endpunkt für schreibgeschützte Checkpoints (Überprüfung anfordern) 4. Endpunkt für schreibgeschützte Checkpoints → Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B (Signierte Antwort) 5. Witness / festgesteckter Sammelschlüssel / eigener Schlüssel B → Kanal mit signierten TGW1-Beiträgen (Bot-API / eigenes Token) Der Witness protokolliert Rückgängigmachungen, unterschiedliche Kopfzeilen bei gleicher Zählung, geänderte Schlüssel, ungültige Antworten und fehlende Rückmeldungen. Eine höhere Zählung allein belegt nicht, dass alle früheren Einträge unverändert geblieben sind; vergleichen Sie den Export mit den gespeicherten Prüfpunkten. Ein Witness auf einem anderen Host verhindert, dass er von einem Ausfall des Collector-Hosts betroffen ist; ein separater Betreiber sorgt für zusätzliche Unabhängigkeit. Der „Witness“ bestätigt den vom „Collector“ gemeldeten Journalstatus. Verwenden Sie einen kontrollierten Zustellungstest, um zu überprüfen, welche Telegram-Aktionen ein Erfassungskonto erreicht haben. Siehe [Einrichtung des „Witness](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/)“. ## Testdurchführung unter Berücksichtigung bekannter Maßnahmen Verwenden Sie eine Kontrollgruppe, separate Sammelkonten und einen neuen Marker. Senden, bearbeiten und löschen Sie gezielt und überprüfen Sie die Erfassung zwischen den einzelnen Schritten. Legen Sie die erwarteten Aktionen und einen Stichtag fest, bevor Sie die Ergebnisse überprüfen. R = |observed∩expected| / |expected| Δ t = treceipt - taction Es zählen nur übereinstimmende erwartete Aktionen; doppelte Empfangsbestätigungen erhöhen den Zähler nicht. Der Nenner muss ungleich Null sein. Eine fehlende Empfangsbestätigung weist keine gemessene Verzögerung auf. Dokumentieren Sie die Unsicherheit der Zeitangaben; verwenden Sie Ihre eigene kontrollierte Löschzeit, da Telegram den genauen Zeitpunkt der Löschung nicht angibt. Ein Ergebnis wie 5/6 (83,3 %) beschreibt die Testaktionen, nicht die Vollständigkeit des gesamten Telegram-Datenverkehrs. ## Wählen Sie einen Arbeitsablauf aus Die [vollständige Anleitung zur Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) verfolgt den Verlauf eines Vorfalls über einen Kanal, eine Gruppe, einen Bot und einen privaten Chat hinweg: 1. Aktivieren Sie auf einem dedizierten Erfassungskonto den Untersuchungsmodus für das gesamte Konto und erstellen Sie eine Bestandsliste der zugänglichen Chats. Verwenden Sie ausgewählte Chats oder einen Ordner für ein Hauptkonto. 2. Erfassen Sie Protokoll-Momentaufnahmen, den vollständigen Verlauf pro Chat sowie erhaltene Anhänge. 3. Speichern Sie Live-Änderungen sowie alle absichtlichen Interaktionen mit den Bedienfeldern zusammen mit den entsprechenden Belegen. 4. Verfolgen Sie numerische Absender-IDs, Antwortbeziehungen, wiederkehrende Empfänger und Datei- Hashes anhand zitierter Datensätze und Personenprofile. 5. Fügen Sie im Case Board quellverknüpfte Notizen und Sammlungen hinzu. Rekonstruieren Sie eine chatübergreifende Zeitleiste mit Zeitstempeln und expliziten Lücken. 6. Vergleichen Sie die Arbeitsbereiche anderer Konten, wobei deren Ursprünge und Schlüssel getrennt bleiben. 7. Stellen Sie die signierten Protokolle, Profile und Verlaufsexporte zusammen und überprüfen Sie diese anhand von Fallnotizen. Der Leitfaden unter „`/docs/cases/`“ auf der Website enthält eine interaktive Fallkarte sowie Varianten für Streitigkeiten mit Bots, gelöschte Nachrichten und Teilnehmer, die ihren Namen ändern. Das Case Board speichert Notizen und Sammlungen innerhalb eines Arbeitsbereichs. Gruppenexporte stellen separate Arbeitsbereichspakete zusammen; die arbeitsbereichsübergreifende Korrelation und eine kombinierte Zeitleiste bleiben Aufgabe der Analysten. [Abgeschlossene Validierung und verbleibende Arbeiten](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) · [Exportieren und verifizieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#investigation-handoff) · [Beginnen Sie mit einem Konto](https://phishdestroy.github.io/TgWitness/de/docs/reference/quickstart/) --- # Telegram · Berichtskonfiguration und -überprüfung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/ Berichtsfilter, acht Designs, Inhaltsvorlagen, gespeicherte Änderungsverläufe und die Bewertung sind in den signierten Exporten enthalten. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Berichtsfilter, acht Designs, Inhaltsvorlagen, gespeicherte Änderungsverläufe und die Bewertung sind in den signierten Exporten enthalten. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ![Untersuchung](https://phishdestroy.github.io/TgWitness/assets/chapter-investigate.svg) Verwandeln Sie ausgewählte Beobachtungen in einen lesbaren Fallbericht: mit Fragestellung, Umfang, gespeicherten Änderungen, Diagrammen, Ergebnissen und Quellenangaben. Jeder Bericht bietet dem Empfänger die Möglichkeit, das gelieferte Material zu überprüfen und den Erfassungsumfang der Datenerhebung zu begutachten. Der Abschnitt **„Grundlage des Vertrauens und Einschränkungen“** erscheint in Protokoll-, Übergabe-, Chat-, Konto- und Freigabeberichten. Protokoll- und Übergabe-PDFs verwenden dieselbe Bewertung wie ihr signiertes „`report.json`“-Dokument. ZIP-Manifeste enthalten „`case_assessment`“ im signierten Manifest. Diese Bewertung wird zusammen mit dem exportierten Material übermittelt. Die ursprünglichen Beobachtungen behalten ihre bestehenden Signaturen bei. ## Dokumentformate und Lesereihenfolge ### Report Studio Öffnen Sie **„Exporte“ → „Konfigurieren“ und „Vorschau**“. Gehen Sie die folgenden Schritte durch: **„Daten“ → „Gestaltung & Inhalte“ → „Vorschau**“: 1. Verwenden Sie den gesamten Arbeitsbereich oder wählen Sie Chats, Autoren, einschließlich UTC-Beobachtungsdaten und Ereignistypen aus. Laden Sie den Katalog, um nach Chats und Autoren zu suchen, oder geben Sie deren Telegram-IDs ein. Autorenfilter gleichen aufgezeichnete Absender-IDs ab; eine Löschmeldung ohne Absender entspricht keinem Autorenfilter. 2. Wählen Sie ein Seitendesign aus und legen Sie anschließend Diagramme, Teilnehmerbezeichnungen, das Protokoll und Ihre schriftlichen Erkenntnisse fest. Bei einer Änderung des Designs bleiben diese Einstellungen erhalten. 3. Erstellen Sie die Vorschau. Sie zeigt tatsächliche Zahlen, Aktivitäten, Teilnehmer, Beispiel- Datensätze, gespeicherte Änderungen und fehlende Nachrichtennummernbereiche an. Durch Ändern einer Auswahl wird die Vorschau als veraltet markiert. Speichern Sie die Datei, bevor Sie HTML, signiertes PDF, signiertes JSON oder die ZIP-Datei mit den Beweismitteln herunterladen. Die Datenvorschau erfasst das vollständige, stabile Protokollpräfix, nicht nur eine anfängliche Stichprobe. Nur angezeigte Beispielzeilen und lange Listen sind begrenzt; ihre ausgelassenen Zählwerte werden angezeigt. Ein späterer Export erstellt einen neuen stabilen Snapshot, sodass die laufende Erfassung die Zahlen erhöhen kann. Umfang, Zählwerte und Quellenidentität sind im signierten Bericht enthalten. Das Öffnen oder Anzeigen des Formulars in der Vorschau speichert es nicht. **Leitfaden zur Rechtsordnung.** Öffnen Sie unter Dokumentdetails den Punkt **Leitfaden zur Rechtsordnung · optional** , um eine Rechtsordnung sowie ein zivil-/handels- oder strafrechtliches Verfahren auszuwählen. Der Anhang enthält die Rechtsgrundlage, Quellenlinks, Vorbereitungshinweise und den Stand der Forschung. Zusammenfassungen und Erläuterungen zu den Erfassungssicherheitsmaßnahmen in der Landessprache sind optional. Standardmäßig ist keine Gerichtsbarkeit ausgewählt. Diese Auswahlmöglichkeiten gehören zum Arbeitsbereich und sind von gespeicherten Layoutkonfigurationen sowie impliziten Standardeinstellungen für das Teilen und Kopieren ausgeschlossen. Siehe [Standardwerte, unterstützte Berichte und Recherchegrenzen](https://github.com/phishdestroy/TgWitness/blob/main/docs/JURISDICTION_GUIDANCE.md) . **Wählen Sie die Empfängerkopie aus.** Diagramme und das Protokoll verwenden die ausgewählten Datensätze. Integrität, Aufbewahrung und Erfassungsbereich beschreiben das vollständige Quellprotokoll. Die Beweismittel-ZIP-Datei enthält die Originaldatensätze und Anhänge. Verwenden Sie [eine minimierte Übergabe,](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#handover-extract) wenn ein Empfänger nur ausgewählte, zulässige Daten erhalten soll. ### Lesen Sie Änderungen, Löschungen und fehlende IDs Eine Bearbeitung zeigt den gespeicherten Text **„Vorher“** und **„Nachher“** an und hebt die geänderten Wörter hervor. Eine Löschung zeigt die letzte vor der Meldung gespeicherte Version an. Wenn kein früherer Inhalt erfasst wurde, wird dies im Bericht vermerkt. Wenn Sie nur Bearbeitungen oder Löschungen auswählen, bleiben die vorherigen Versionen als explizit gekennzeichneter Kontext außerhalb der Filter verfügbar. Nicht relevante Meldungen werden diesen Verlaufsdaten nicht hinzugefügt. **Nicht beobachtete Nachrichten-IDs** sind Lücken zwischen bekannten Nummern in den ausgewählten Chats und dem aus dem Datum abgeleiteten ID-Bereich. Jeder bekannte Quelldatensatz wird überprüft, bevor eine Nummer als nicht beobachtet deklariert wird: Das Herausfiltern eines anderen Autors, eines Ereignistyps oder eines Datums darf keine falsche Lücke erzeugen. Benachbarte gespeicherte Nachrichten werden als Kontext gekennzeichnet. Eine fehlende Nummer belegt nicht, dass eine Nachricht existierte oder gelöscht wurde; Löschmeldungen und erfolglose Nachprüfungen bleiben separate Ereignistypen. ### Wählen Sie ein Design Für HTML-Berichte zu Protokollen und Einzelchats sowie für signierte PDF-Berichte stehen acht Seitenlayouts zur Verfügung. Sie basieren auf denselben Datensätzen und Berechnungen, unterscheiden sich jedoch in Bezug auf Titelseiten, Typografie, Kapitelüberschriften, Tabellen und Abstände. | Gestaltung | Schreibstil | | --- | --- | | Klassisch | Eine klassische Akte mit dunklem Einband und nummerierten Abschnitten. | | Redaktionelle Hinweise | Eine gerahmte Titelseite mit Serifenschrift, breiten Rändern und einer schmalen Kapitelleiste. | | Hintergrundinformationen | Ein kompaktes Deckblatt mit marineblauem Buchrücken, kurzen Überschriften und eng gesetzten Tabellen. | | Analytik | Ein Cover im Umfrage-Stil, modulare Diagrammtafeln und Abbildungen in Monospace-Schrift. | | Technisch | Ein liniertes Register, eine nummerierte Referenzleiste und präzise Vergleichstabellen. | | Übersicht | Ein Panorama-Titelbild, großzügige Abstände und auffällige Übersichtsgrafiken. | | Lesereihe | Eine Abschnittsleiste und gruppierte Kapitel für Ergebnisse, Umfang, Änderungen und das Beobachtungsprotokoll. | | Ledger & Margin | Nummerierte Kapitel mit breitem Rand, exakte Diagramme und Tabellen sowie ein separates Nachrichtenprotokoll. | Das Design wird pro Arbeitsbereich gespeichert und im signierten Exportmanifest erfasst. HTML funktioniert offline, unterstützt helle und dunkle Designs und passt sich an schmale Bildschirme sowie Sprachen mit Schreibrichtung von rechts nach links an. Native PDFs verwenden mitgelieferte Schriftarten; das „Editorial“-Design umfasst „Noto Serif“ unter der mitgelieferten SIL Open Font License. Lesereihen sowie „Ledger & Margin“ gelten auch für Kontoübersichten, Konto-Chats und das Teilen von Kopien. Für PDF-Dateien in Chinesisch, Japanisch und Koreanisch ist zusätzlich eine geeignete Schriftart auf dem Server erforderlich, wie beispielsweise „Noto Sans CJK“, die systemweit installiert oder im Verzeichnis „`TGWITNESS_FONT_DIR`“ abgelegt sein muss. Ist diese nicht verfügbar, enthält die ZIP-Datei die HTML- und JSON-Berichte. Diese beiden Entwürfe umfassen ein lesbares Protokoll ohne JavaScript. Bei umfangreichen Exporten enthält diese Ansicht bis zu 500 vollständige Datensätze innerhalb eines Eingabebudgets von 8 MiB; der Bericht kennzeichnet die Obergrenze und enthält Links zum vollständigen Viewer sowie zu den Quelldatensätzen. Das Kontoverzeichnis und der Beziehungsindex beschreiben dasselbe Lesebeispiel, nicht alle Teilnehmer. Diagramme des vollständigen Journals behalten ihren separat angegebenen Umfang bei. ### Inhalt auswählen | Inhaltsverzeichnis | Standardmäßig enthalten | | --- | --- | | Fallakte | Aktivitäten, Beobachtungszeitpunkte, Teilnehmer, Chats und das Transkript der Aufzeichnung. | | Hintergrundinformationen | Eine Aktivitätsübersicht ohne Teilnehmerranglisten oder das Transkript. | | Überprüfung der Aktivitäten | Aktivitäten, Beobachtungszeitpunkte, Teilnehmer, Chats und deren Zusammensetzung, mit Quellenangaben und genauen Zahlen. | | Individueller Bericht | Ihre eigene Kombination aus Diagrammen, Transkripten und Vorschauen. | Beim Ändern einer Voreinstellung bleiben Ihr Design, die Falldetails und die schriftliche Analyse erhalten. Integritätsprüfungen, Erfassungsgrad, Einschränkungen und Anweisungen zur Verifizierung bleiben in jedem Design erhalten. Quelldatensätze im ZIP-Archiv bleiben unverändert, wenn ein Diagramm oder ein Transkript ausgeblendet wird. Die optionalen **Untersuchungsnotizen** enthalten die Frage, die Methode, die Ergebnisse und die Schlussfolgerung, die vom Verfasser des Berichts verfasst wurden. Geben Sie in den Ergebnissen die Quelldatei und die Datensatznummern an. Die Signatur sichert diese vom Verfasser verfassten Aussagen zusammen mit dem Bericht; die Beobachtungen aus der Quelle und die Interpretation des Verfassers bleiben identifizierbar. Bei minimierten Übergaben werden diese privaten Notizen und vollständigen Tagebuchdiagramme weggelassen. Die Auswahlmöglichkeiten für Diagramme und Untersuchungen gelten für Tagebuchberichte. Wählen Sie Aktivitäten im Zeitverlauf, die UTC-Heatmap nach Wochentag/Stunde, Teilnehmer-Rankings, Chat- Rankings und die Zusammensetzung der Datensätze aus. Wählen Sie 5–30 rangierte Gruppen und neutrale Teilnehmer- Aliase oder Konto-IDs aus. Unbekannte Absender und die übrigen Teilnehmer werden in separaten Zeilen angezeigt. Aliase wirken sich nur auf Diagramme aus; die Quelldatensätze enthalten weiterhin die tatsächlichen Identitäten. Die Designvorschau wird anhand des ungespeicherten Entwurfs aktualisiert und verwendet dabei Komponenten für Produktionsdeckblatt, Untersuchung und Diagramme, beschränkt auf Übereinstimmungen innerhalb der ersten 50.000 Quelldatensätze. Die Datenvorschau unten berechnet die vollständige Auswahl. Sie ist ausdrücklich nicht signiert und speichert keine Bearbeitungen. Die Schaltflächen „Deckblatt“ und „Diagramme“ wechseln den jeweiligen Abschnitt. Dies ist keine vollständige PDF-Vorschau. **Mit „Berichtseinstellungen speichern“** werden die Auswahlmöglichkeiten auf zukünftige Exporte angewendet; bereits signierte Dateien sind unveränderbar. Das PDF verwendet das ausgewählte Deckblatt, die Typografie, das Kapitellayout und dieselben ausgewählten Aggregate wie HTML und signiertes JSON. Vertrauensbewertung, Abdeckungsbeschränkungen und Überprüfungsanweisungen bleiben erhalten. Das Ausblenden von Diagrammen oder des lesbaren Transkripts entfernt keine autoritativen Quellzeilen aus der ZIP-Datei. Deaktivierte Diagrammreihen werden im analytischen JSON-Format weggelassen; verwenden Sie einen minimierten Export, um die Offenlegung von Quelldatensätzen einzuschränken. Filter zur Datenauswahl gelten für Protokollberichte; Konto- und Freigabe-Exporte behalten ihren eigenen Erfassungs- und Offenlegungsumfang bei. Gemeinsame Design- und Diagrammeinstellungen werden in neue Chat-/Konto-Exporte und Vorschauen zur Kontofreigabe übernommen. Die Sprach- und Datenschutzeinstellungen für Konten und Freigaben bleiben unabhängig; private Fall- und Untersuchungsnotizen werden nicht in diese Exporte kopiert. Konto- und Freigabereports bleiben als HTML-Dateien durch ihr signiertes Archivmanifest geschützt. Das Journal, die minimierte Journalübergabe und Einzel-Chat-Kits stellen ebenfalls signierte PDFs bereit. ### Was die Diagramme aussagen Protokollaktivitäten und Heatmaps erfassen neue, historische, wiederhergestellte, bearbeitete, gelöschte und bei erneuter Überprüfung fehlende **Beobachtungen**, sortiert nach dem Beobachtungszeitpunkt des Collectors in UTC. Heartbeats und Empfangsbestätigungen für Anhänge werden ausgeschlossen. Teilnehmer-Rankings zählen nur neue, historische und wiederhergestellte Nachrichtenbeobachtungen: Ein Absender wird nicht als Bearbeiter oder Löscher deklariert. Wiederholte Beobachtungen können dieselbe Telegram-Nachricht beschreiben. Die Protokollanalysen behalten die Zählungen nach Art, Verweise auf den ersten/letzten Datensatz und den SHA-256-Hash der Quelldatei „ `events.jsonl`“ bei. Zahlenangaben enthalten exakte Werte in HTML und PDF. Tägliche Zeitintervalle werden nach 366 aufgezeichneten Tagen auf Monate umgestellt; Diagramme fassen diese zu höchstens 36 Intervallen gleicher Breite zusammen. Bei mehr als 100.000 eindeutigen Identifikatoren oder 1.200 Monaten ist das betroffene Diagramm nicht verfügbar, während die genauen Gesamtzahlen weiterhin verfügbar bleiben. Snapshot- und Kontofreigabe-Diagramme zählen nur die enthaltenen Zeilen mit Nicht-Dienst-Nachrichten, unter Verwendung der aufgezeichneten Nachrichtenzeit. Freigabe-Aggregate werden nach der Schwärzung und Filterung berechnet. Diese Diagramme verwenden höchstens 90 gleich breite UTC-Datumsintervalle und behalten bis zu 10.000 Gruppierungswerte bei; überschüssige Zählwerte werden explizit ausgewiesen und abgeglichen. Das letzte Intervall kann kürzer sein. Unbekannte oder ungenaue Datumsangaben fließen nicht in Zeitdiagramme ein. Ein leeres Intervall bedeutet, dass keine Beobachtungen enthalten sind; bei Lücken die Abdeckung prüfen. Diese Diagramme beschreiben gespeicherte Aktivitäten. Unbekannte Absender bleiben eine separate Kategorie, und jede Überprüfung wird einzeln ausgewiesen. Sofern enthalten, wird „`analytics.json`“ durch die signierten Datei-Hashes des Archivs geschützt. Der Journal-`report.json` bettet dieselbe ausgewählte Aggregation ein. Die Signaturprüfung erkennt geänderte Bytes. Um die Zahlen zu überprüfen, berechnen Sie die Journal-Aggregate mit „`report_analytics.Analytics`“ und „`selected`“ neu oder die Snapshot-Aggregate mit „`snapshot_analytics.collect`“ und „`project`“. ### Anomalieindikatoren **Vorschau.** Beweisberichte enthalten einen Abschnitt **Anomalieindikatoren**, der von registrierten Prozessoren berechnet wird (`tgwitness/metrics/`, eine Datei pro Metrik). Der Bericht nennt jeden Prozessor, der ausgeführt wurde, zusammen mit seiner Version und gibt dessen Methode unter der Tabelle an, sodass die Berechnung anhand von `events.jsonl` mit `tgwitness.metrics.run` wiederholt werden kann. | Prozessor | Was es zeigt | | --- | --- | | `first_time_posters_over_time`, Version 1 | Erstmalige Poster und Nachrichten pro UTC-Tag. Eine Markierung erfordert mindestens fünf erstmalige Poster und das Dreifache ihres Medians, wobei das Nachrichtenvolumen höchstens das 1.5-fache ihres Medians betragen darf. Die Basislinie umfasst mindestens sieben Beobachtungstage innerhalb der letzten 14 Kalendertage, nach einer sieben Tage dauernden Aufwärmphase. | | `service_vs_message_ratio`, Version 1 | Unterscheidung zwischen den gespeicherten Nachrichtennummern pro Chat und dem Anteil, der von Servicemeldungen belegt wird. Es wird eine Nummerierung beschrieben; es wird keine bestimmte fehlende Nummer erklärt. | | `join_leave_per_month`, Version 1 | Neuanmeldungen, Abmeldungen sowie Löschungen oder Sperren pro Monat, jeweils eine pro Person, Chat, Änderung und Tag. | | `pinned_per_month`, Version 1 | Gefestigte Servicemeldungen, Aufhebungen der Feststellung sowie festgesteckte Nachrichten, die zwischen Momentaufnahmen des Chat-Status hinzugefügt oder entfernt wurden, pro Monat. | **Parameter → Berichtsmetriken** wählt Prozessoren und die Anzahl der angezeigten Zeilen aus, auch in gefilterten Berichten. Tages- und Monatstabellen zeigen die neuesten Zeilen an, Tabellen zum Service-Anteil ordnen Chats nach der Anzahl der gespeicherten Nachrichten. Die Summen beziehen sich auf jede Zeile. Erstellen Sie ausgehend von einem Quell-Checkout alle acht oben aufgeführten Entwürfe aus derselben fiktiven Zeitschrift: ``` python tools/build_report_styles.py --output test-results/report-styles ``` Öffnen Sie die resultierende Datei „`index.html`“, um vollständige HTML-Berichte, signierte PDFs und ZIP-Dateien zu vergleichen. Jedes Layout basiert auf demselben Quellprotokoll. Verwenden Sie für jeden Durchlauf ein neues Ausgabeverzeichnis, damit zuvor signierte Beispiele erhalten bleiben. ![Fiktives HTML-Dossier](https://phishdestroy.github.io/TgWitness/assets/dossier-en.png) Die HTML-Seite beginnt mit einem Fallüberblick und Kennzahlen. Die nummerierte Beweiskarte verlinkt auf jeden Befund, die ihn stützenden Fakten, Einschränkungen und die unabhängige Überprüfung. Durchsuchbare Datensätze und stabile Datensatzverweise bleiben im Offline-Viewer verfügbar. Das Design passt sich an schmale Bildschirme, verschiedene Designs und Browser ohne JavaScript an. Das signierte PDF verfügt über ein eigenes A4-Deckblatt, eine Berichtsreferenz und einen QR-Code, eine Zusammenfassung, eine Beweiskarte, nummerierte Feststellungen und Dokumenten-Lesezeichen. Die Seiten- Kopf- und Fußzeilen kennzeichnen den Bericht. Ein QR-Code identifiziert das Material; er ist kein eigenständiges Verifizierungsergebnis. Browser-Ausdrucke sind von diesem kryptografisch signierten PDF getrennt. Die Beobachtungszeitleiste ordnet aufgezeichnete Beobachtungszeiträume und Unterbrechungen auf derselben UTC-Achse an. Leere Bereiche bedeuten keine abgeleitete Abdeckung; die detaillierten Tabellen behalten die genauen Intervalle bei. Die ZIP-Datei enthält die lesbaren Berichte, signierte JSON-Dateien, Quelldatensätze und Anweisungen zur Verifizierung. Erstellen Sie ein neues, fiktives Dossier in Englisch/Russisch/Deutsch mit der installierten Entwicklungsumgebung: ``` python tools/build_dossier_example.py --output test-results/my-new-dossier ``` Jedes Sprachverzeichnis enthält die Dateien „`report.html`“, „`report.pdf`“, „`report.json`“ und „`dossier.zip`“. Vorhandene Beispielverzeichnisse werden niemals überschrieben. Zur Erstellung werden weder ein Telegram- Konto noch ein externer Zeitstempel-Dienst oder eine Netzwerkverbindung verwendet. ![Die ersten drei Seiten des fiktiven, signierten PDF-Dokuments](https://phishdestroy.github.io/TgWitness/assets/dossier-pdf.png) ## Ein konkreter Fall Bei einem Protokoll mit 1.200 Einträgen und einem validierten Zeitstempel bei Eintrag 1.000 identifiziert der Bericht 200 spätere Einträge außerhalb des Zeitraums dieses Zeitstempels. Dies ist eine Obergrenze für das Vorhandensein eines Checkpoints, kein Nachweis für den Versandzeitpunkt jeder einzelnen Nachricht . Wenn drei weitere Zeitstempeldateien die Validierung nicht bestehen oder nicht validiert werden können, werden sie separat gezählt und können keine positive Schlussfolgerung liefern. Ein verwendbarer Zeitstempel muss alle folgenden Prüfungen bestehen: Sein Abdruck stimmt mit dem Checkpoint überein, seine Signatur lässt sich zum Zeitpunkt der Stempelung auf eine vertrauenswürdige TSA-Root zurückverfolgen, und die Signatur, der Schlüssel, die Zählung und der Kopf des Checkpoints stimmen genau mit dem Journal-Präfix überein. Das bloße Parsen eines Zeitstempels oder das Vorhandensein einer OTS-Quittung reicht nicht aus. Der Leser muss die vertrauenswürdige TSA-Root selbstständig auswählen und die Überprüfung wiederholen. OTS benötigt eine eigene Bitcoin-Bestätigungsprüfung. | Berichtsstatus | Bedeutung | | --- | --- | | Beim Export geprüft | Der Exporteur hat die angegebene Überprüfung durchgeführt; eine unabhängige Wiederholung ist dennoch erforderlich. | | Aufgezeichnet; Überprüfung erforderlich | Die zugrunde liegende Beobachtung oder Aussage des Bedieners wird aufgezeichnet; es handelt sich nicht um eine unabhängige Bestätigung. | | Nicht in diesem Text enthalten | Der Text enthält keine Belege für diese Behauptung. Es wird nicht gesagt, dass es anderswo keine gibt. | | Nicht unabhängig überprüft | Der Bericht liefert kein unabhängiges Verifizierungsergebnis. | | Unvollständig oder nicht verfügbar | Material oder eine erforderliche Überprüfung fehlt, ist unvollständig oder war nicht erfolgreich. | Überprüfen Sie jede Prüfung separat und vergleichen Sie sie mit dem erfassten Erfassungsumfang. ## Was eine umfassende Konfiguration beibehalten muss 1. Bevor Sie sich auf die Erfassung verlassen, sichern Sie den Fingerabdruck des Erfassers über einen separaten, vertrauenswürdigen Kanal. Vergleichen Sie diese Referenz mit dem Signaturschlüssel des Exports. 2. Behalten Sie unabhängig voneinander mit Zeitstempeln versehene Kontrollpunkte bei sowie, sofern verwendet, ein Zeugenprotokoll, das außerhalb der administrativen Kontrolle des Collectors liegt. Vergleichen Sie diese mit dem exportierten Protokoll, um dessen frühere Grenzen zu überprüfen. 3. Erfassen Sie den Umfang der Datenerfassung, Lücken, Filter, Einschränkungen und Änderungen bei der Erfassung. Erläutern Sie fehlende Zeiträume, die für den konkreten Fall relevant sind, und unterscheiden Sie dabei klar zwischen nicht erfassten Nachrichten-IDs, Löschhinweisen und erfolglosen Nachprüfungen. 4. Behalten Sie die ursprünglichen ZIP-Dateien und deren Hashes bei. Erfassen Sie jeden Inhaber, jede Übertragung, jedes Datum und jeden Zweck. Behalten Sie die zugeordneten Aussagen der Betreiber und Fallnotizen dazu bei. 5. Bei vertraulichen VMs sind das Zitat, die Challenge, die Intel-Zertifikatskette, die Messwerte, die genaue Quelle und die Bedingungen für den Umgang mit Schlüsseln zu bewahren und unabhängig zu überprüfen. Das Ergebnis der Beglaubigungsprüfung ist zusammen mit den geprüften Artefakten aufzubewahren. Siehe „[Überprüfungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope)“ für die Prüfungen hinsichtlich Erfassung, Archivintegrität, Zeit und Erfassungsumfang in jedem Modus. ## Überprüfung durch den Empfänger Verwenden Sie eine vertrauenswürdige Installation von TgWitness und einen unabhängig ermittelten Fingerabdruck: ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --tsa-ca tsa-root.pem python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --witness witness.zip --witness-fingerprint WITNESS_SHA256 --require-witness python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --check-drand ``` Die „Witness“-ZIP-Datei muss von einer unabhängigen, vertrauenswürdigen Quelle stammen; bewahren Sie auch deren Schlüssel und Herkunft auf. Behalten Sie die Befehle, die Tool-Version, die Ausgaben, die überprüften Eingabe- Hashes und die ungeklärten Fragen bei. Die Beacon-Verifizierung ist eine separate Online-Prüfung; der Berichtsrenderer kontaktiert niemals einen Dienst, nur um einen Bericht anzuzeigen. Bei Streitigkeiten über eine bestimmte Nachricht sind die Archivreferenz, die maßgebliche Datei- und Datensatzreferenz anzugeben und anschließend der relevante Zeitrahmen, Erfassungslücken, die Auswahl sowie bestätigendes Material zu beschreiben. Bei einer Kopie zur Weitergabe sind zudem die aufgezeichnete Transformation und deren Verweise auf das Quellarchiv zu überprüfen. Private Filter und Identitätszuordnungen bleiben von der öffentlichen Bewertung ausgeschlossen. Die Überprüfung der signierten PDF-Datei erkennt Änderungen an den abgedeckten Bytes. Bewahren Sie die ursprüngliche digitale Datei und das Überprüfungsergebnis zusammen mit etwaigen Screenshots oder ausgedruckten Lesekopien auf. --- # Telegram · Kontoexport Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/ Exportieren Sie, was ein Konto derzeit lesen kann: Umfang, wiederaufnehmbare Aufträge, ein signiertes Archiv und minimierte Freigabekopien. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Exportieren Sie, was ein Konto derzeit lesen kann: Umfang, wiederaufnehmbare Aufträge, ein signiertes Archiv und minimierte Freigabekopien. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Beweise und Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) Ein Kontoexport reserviert sein Konto exklusiv. Pausieren Sie vor dem Starten oder Fortsetzen ausdrücklich die Überwachung oder eine andere Erfassung; die Anwendung beendet diese niemals automatisch. Wählen Sie als Installationsadministrator entweder **Hier beginnen → Mein Konto exportieren** oder **Exporte → Telegram-Konto → Kontoexport konfigurieren**. Melden Sie sich bei Bedarf an, überprüfen Sie den Umfang und starten Sie den Export explizit. Eine kontinuierliche Überwachung ist nicht erforderlich. **Gespeicherte Beobachtungen** ist ein separater Export des bestehenden Journals; dessen ZIP umfasst alle Quellen unabhängig von Journalfiltern. Jeder Arbeitsbereich verfügt über eigene Jobs, eine eigene Signaturidentität und eigenen Speicherplatz. Ein erteilter Panel-Zugriff, einschließlich einer uneingeschränkten Berechtigung für normale Exporte, kann diese kontoweiten Pfade nicht öffnen. Sender- und Textfilter lassen sich unter **„Nach Absender oder Nachrichtentext filtern“** erweitern. **Der Bereich „Kontodaten & Verbindungsmethode“** enthält optionale Kontokategorien und die Auswahl zwischen „Takeout“ und „reguläre Sitzung“; in der Zusammenfassung werden die aktiven Auswahlen auch im geschlossenen Zustand angezeigt. Beim Schließen dieser Bereiche bleiben die Einstellungen erhalten. Export- und Berichtsentwürfe bleiben beim Wechseln der Ansichten in der aktuellen Panel-Sitzung erhalten; sie werden beim Neuladen des Browsers nicht gespeichert. Vorhandene Aufträge bleiben über beide Exportoptionen erreichbar. Dieser Workflow exportiert Daten, auf die das verbundene Konto derzeit Zugriff hat. Standardmäßig wird [„Telegram Takeout“](https://core.telegram.org/api/takeout) verwendet; es handelt sich nicht um eine Sicherung nicht verfügbarer oder gelöschter Telegram-Daten. Geheime Chats, nicht zugänglicher Verlauf und frühere Bearbeitungen werden nicht wiederhergestellt. Telegram kann eine Wartezeit vorschreiben, bevor „Takeout“ startet. Das Bedienfeld zeigt diese Wartezeit an; es wechselt nicht unbemerkt den Übertragungsweg. Die explizite Option „regular-API“ hat einen anderen Erfassungsumfang und erfasst nicht unterstützte Kategorien. Takeout ist die offizielle Export-API, die auch von Telegram Desktop verwendet wird. TgWitness kann Desktop-kompatibles JSON direkt aus der eigenen Erfassung schreiben; das Importieren eines fremden Archivs ist nicht erforderlich. Chat- und Nachrichten-IDs sind über beide Übertragungswege verfügbar. Ein öffentlicher Chat oder die Erlaubnis zum Weiterleiten garantiert keinen schnelleren Export und beseitigt nicht die Genehmigungsverzögerung von Takeout. Messen Sie denselben Umfang und dieselben Medieneinstellungen, bevor Sie die Geschwindigkeit vergleichen. Für bis zu 20 explizit ausgewählte Chat-IDs ermittelt der reguläre API-Export diese Peers direkt, bevor das vollständige Dialoginventar des Kontos berücksichtigt wird. Ein lesbarer öffentlicher Kanal kann daher exportiert werden, ohne ihm beizutreten, selbst wenn er nicht in der Dialogliste aufgeführt ist. Nicht zwischengespeicherte Peers greifen auf den regulären Bestand zurück. Der Archivfilter bleibt weiterhin in Kraft: Wenn Telegram einen Dialog nicht zurückgibt und archivierte Chats ausgeschlossen sind, wird der unbekannte Archivstatus als Auslassung vermerkt. Takeout behält sein Verfahren zur Aufteilung des Bestands bei. Keiner der beiden Pfade tritt Chats bei oder ändert Weiterleitungsberechtigungen. Im Desktop-kompatiblen JSON erscheinen Kanäle, die Telegram als `left` kennzeichnet, unter `left_chats`, einschließlich lesbarer öffentlicher Kanäle, denen das Konto nicht beigetreten ist. Sowohl `FLOOD_WAIT`- als auch `FLOOD_PREMIUM_WAIT`-Pausierungsanfragen gelten für den gesamten vom Server angeforderten Zeitraum. Die Frist des Kontos bleibt über Wiederverbindungen und Neustarts hinweg bestehen; eine kürzere spätere Wartezeit kann diese nicht verkürzen. Wiederholungsversuche sind begrenzt, bei einer Stornierung bleiben versiegelte Seiten erhalten, und API-Anmeldedaten werden nicht rotiert, um eine Ratenbegrenzung zu umgehen. Es erfolgt kein Kauf eines Premium-Abonnements. ## Wählen Sie aus, was erfasst werden soll | Einleitung | Bedeutung | | --- | --- | | Zweck | Halten Sie fest, warum diese Akquisition erforderlich ist. Geben Sie hier keine unnötigen Namen oder vertraulichen Details zum Fall an. | | Berichtssprache | Wählen Sie die Sprache für die Beschriftungen im lesbaren Bericht aus. Der Originaltext der Nachrichten bleibt unverändert; nicht übersetzte Vorlagenbeschriftungen verwenden Englisch. Die Sprache wird über die Optionen des signierten Auftrags festgelegt. | | Chat-Typen / Chat-IDs | Alle ausgewählten Arten oder nur die aufgelisteten Chats; „Gespeicherte Nachrichten“ gehören zu privaten Chats. Archivierte Chats sind separat auswählbar. | | Daten | UTC. Die Kalenderdaten für „Von“ und „Bis“ des Panels sind beide enthalten. Die API verwendet inklusive `from_utc` und exklusive `to_utc`; das Panel sendet den Beginn des Tages nach „Through“. Ein leerer Grenzwert lässt diese Seite uneingeschränkt. | | Absender-IDs | Nur Nachrichten der aufgeführten Absender; eine leere Liste umfasst alle Absender. | | Der Text enthält | Groß-/Kleinschreibung bei wörtlichen Phrasen wird nicht berücksichtigt, die Suche erfolgt mit „ODER“. Bedingungen zu Absender, Datum und eigener Nachricht werden mit „UND“ kombiniert. | | Eigene Nachrichten | Nur ausgehende Nachrichten aufbewahren. | | Medientypen | Wählen Sie Anhangskategorien aus oder löschen Sie alle, um das Herunterladen von Nachrichtendateien zu vermeiden. | | Datei- bzw. Gesamtmedienbeschränkungen | MiB pro Datei und GiB an insgesamt heruntergeladenen Medien. Text, Empfangsbestätigungen, lesbare Berichte und ZIP-Overhead benötigen zusätzlichen Speicherplatz. | | Kontokategorien | Profil, Kontakte, Profilfotos, Stories, Sitzungsmetadaten und andere Takeout-Daten verfügen über separate Steuerelemente. | Die Voreinstellung **„Minimize“** deaktiviert Dateien und Kontometadaten. Absender- und Inhaltsfilter werden vor der Speicherung von Nachrichtenseiten und dem Herunterladen von Medien angewendet. Telegram übermittelt weiterhin API-Verlaufsseiten, die Nachrichten enthalten, die zur Auswertung dieser Filter benötigt werden: Die Filterung ist keine Garantie dafür, dass nicht ausgewählte Nachrichten niemals in den Prozessspeicher gelangen. Andere laufende Beobachtungen im Arbeitsbereich haben ihre eigenen Umfangs- und Aufbewahrungseinstellungen. Profilbildverlauf und Stories sind standardmäßig nicht ausgewählt. Deaktivieren Sie auch Profil und Kontakte, wenn für den Fall nur Nachrichten benötigt werden. Wenn Anhänge oder Metadaten nicht erforderlich sind, vermeiden Sie durch deren Ausschluss bei der Erfassung, dass eine weitere private Kopie in diesem Export verbleibt. Bei Foto-Nutzdaten wird die in den Metadaten und Hash-Manifesten angegebene Variante des Standbilds verwendet, einschließlich Fotos mit einer animierten Avatar-Variante. Diese Animation ersetzt nicht das ausgewählte Standbild. Eine Nutzlast, die kürzer oder länger als die beobachtete Größe ist, wird als fehlgeschlagener Anhang erfasst, und eine geänderte Darstellung während der Erneuerung der Dateireferenz wird abgelehnt. Diese Fehler führen dazu, dass das Archiv unvollständig bleibt, während die Nachrichtendatensätze erhalten bleiben. Bei einer unabhängigen Verifizierung werden zudem gespeicherte Anhänge abgelehnt, deren signierte Länge im Widerspruch zu ihrer beobachteten Größe oder Darstellung steht, auch in älteren Archiven. ## Zusammenfassung, Berichterstattung und Überprüfung Jeder Auftrag friert seine Optionen und die Kontoidentität ein. Bestandsliste und erfasste Seiten werden signiert; Seitenbelege zeichnen Hashes, Cursorpositionen, Zeitangaben, Ergebnisse von Anhängen und den vorhergehenden Beleg auf. Nur festgeschriebene Seiten treiben den Fortschritt voran. Beim Neustart/Fortsetzen werden diese Aufzeichnungen überprüft, bevor fortgefahren wird. Ein geändertes Konto, eine geänderte signierte Seite oder eine inkonsistente Belegkette werden abgelehnt. Optionen können während einer Erfassung nicht bearbeitet werden: Starten Sie einen neuen Auftrag für einen anderen Umfang. Mit „Pause“ wird der laufende Kontovorgang unterbrochen. Beim Neustart der Anwendung bleiben unvollendete Arbeiten erhalten und können explizit fortgesetzt werden. Eine abgelaufene Takeout-Sitzung erfordert eine explizite Fortsetzung; das Ändern von Telegram-Split-Bereichen kann eine neue Erfassung erfordern. Bei der Fortsetzung bleiben vorherige Beobachtungen erhalten, sodass ein lang andauernder Export nicht als ein einziger atomarer Snapshot gilt. Andere Vorgänge, die einen Kontowechsel erfordern, sowie konfliktbehaftete Exporte werden während der Erfassung blockiert. Warten Sie, bis die Paketierung abgeschlossen ist, bevor Sie einen Arbeitsbereich löschen. „Resume“ überprüft bereits erfasste Inhalte, bevor der Vorgang fortgesetzt wird. Große Archive auf langsamen Speichermedien können die konfigurierte Zeit **Parameter → Zeitlimit für Panel-Aktionen** (standardmäßig 120 Sekunden) überschreiten. Erhöhen Sie diese Einstellung, bevor Sie es erneut versuchen; bei Abbruch oder Speicherunterbrechung wird der Auftrag angehalten, und bei fehlgeschlagenen Integritätsprüfungen wird der Auftrag mit einer Erklärung als fehlgeschlagen markiert. Die Überprüfung muss abgeschlossen oder sicher beendet werden, bevor die Dateien geschlossen werden können. Keine der Angaben zum Durchsatz bei großen Konten wurde durch die synthetischen Tests validiert. Das Panel unterscheidet zwischen einem vollständig erfassten ausgewählten Bereich und einem Teilarchiv und protokolliert Auslassungen sowie fehlgeschlagene Lesevorgänge. Absichtlich ausgeschlossene Dateien unterscheiden sich von fehlgeschlagenen oder nicht verfügbaren Dateien. Überprüfen Sie die Abdeckung auch dann, wenn die Integritätsprüfung erfolgreich verläuft. Kein lokaler Reader kann nachweisen, dass Telegram jede jemals existierende Nachricht zurückgegeben hat. Fertiggestellte ZIP bleiben für wiederholte Downloads und HTTP-Range-Downloads verfügbar. Ein Kontoarchiv enthält `manifest.json`, `manifest.sig`, signierte `job.json`, `inventory.json`, `receipts/`, verbindliche `data/*.jsonl`, ausgewählte `media/`, lesbares HTML und einen Verifizierer. Heften Sie den Fingerabdruck des Collectors über einen unabhängigen Kanal an und verifizieren Sie ihn anschließend mithilfe einer vertrauenswürdigen Installation: ``` python -m tgwitness.verify account-export.zip --fingerprint TRUSTED_SHA256 ``` Für Archive, deren entpackter Inhalt 4 GiB überschreitet, legen Sie explizit eine angemessene `--max-gib`. Das Panel überprüft seine authentifizierten, vollständigen lokalen Archive anhand ihrer angegebenen erweiterten Größe und des veröffentlichten ZIP-Digests; die externe CLI behält ihre eigene Größenbeschränkung bei. Überprüfen Sie das Archiv, bevor Sie die lesbare HTML-Datei öffnen. Der im Archiv enthaltene Verifizierer ist praktisch, aber ein unabhängig beschaffter Verifizierer vermeidet es, ausführbarem Code zu vertrauen, der mit den Nachweisen geliefert wird. Die Ed25519-Signatur und die Hashes SHA-256 erkennen Änderungen, nachdem der Collector die entsprechenden Bytes gespeichert hat. Sie beweisen **nicht**, dass Telegram diese Nachrichten signiert hat, dass der Collector-Betreiber ehrlich war, dass der Verlauf des Kontos vollständig ist oder dass ein Gericht das Material akzeptieren wird. Als Erfassungszeitpunkte gilt die Uhrzeit des Collectors. Unabhängige Zeitstempel und die Herkunft der Erfassung müssen separat bewertet werden. ## Bereiten Sie eine Offenlegung für einen Anwalt oder einen anderen Empfänger vor Behalten Sie nach dem Herunterladen eines fertigen Exports die Originaldatei ZIP bei und öffnen Sie `index.html` aus einer extrahierten Kopie. Der Bericht erläutert seinen Umfang, die verfügbare Abdeckung und Einschränkungen. Seine Datensatzreferenzen kombinieren die Archivreferenz, den Dokumentpfad und die Datensatznummer, sodass ein Empfänger denselben Eintrag im HTML-Code oder im Ausdruck finden kann. Ein Beispiel finden Sie unter [Den fiktiven Bericht öffnen](https://phishdestroy.github.io/TgWitness/demo/report/). Wählen Sie nach Abschluss eines Kontoexports **die Option „Freigabekopie erstellen“** aus. Dadurch wird eine separate, signierte Derivatdatei erstellt. Die Quelldatei ZIP bleibt unverändert und privat; versenden Sie sie nicht zusammen mit einer minimierten Derivatdatei, es sei denn, der Empfänger ist zum Empfang des vollständigen Inhalts berechtigt. Wählen Sie die Sprache des Berichts separat aus. Das Ändern der Sprache oder einer Auswahl-Einstellung erfordert vor der Erstellung eine weitere Vorschau. 1. Geben Sie den Zweck der Offenlegung ein und wählen Sie Datumsbereiche, Absender-IDs und Kriterien für den Wortlaut aus. 2. Wählen Sie aus, ob Identitäten beibehalten, nur aufgeführte Teilnehmer angezeigt oder alle Teilnehmer pseudonymisiert werden sollen. Im pseudonymisierten Modus werden zudem Chat-IDs/Titel und Nachrichten-IDs ersetzt. Pseudonyme bleiben innerhalb einer Offenlegung unverändert und ändern sich zwischen unabhängig voneinander erstellten Offenlegungen. 3. Behalten Sie den Nachrichtentext bei, lassen Sie ihn vollständig weg oder fügen Sie wörtliche Namen/Phrasen zur Maskierung hinzu. Im privaten Modus maskiert das Tool außerdem bekannte versteckte Absendernamen und alternative Benutzernamen, Absender-IDs in Form ganzer Token, Namen aus Direktchats, Links, E-Mail-Adressen und telefonähnliche Zeichenfolgen. Der Abgleich bekannter Namen berücksichtigt die Unicode-Groß-/Kleinschreibung, einschließlich `Straße`/`STRASSE`. Allgemeine Gruppen-/Kanaltitel werden nicht automatisch aus dem Nachrichtentext entfernt. Wenn das Limit für die Maskierung bekannter Identitäten überschritten wird, schränken Sie den Quell-Export ein oder lassen Sie Text weg; das Tool überspringt spätere Namen nicht stillschweigend. Hierbei handelt es sich um „Best-Effort“-Regeln, nicht um eine allgemeine Anonymisierung. 4. Lassen Sie Dateien unberücksichtigt, es sei denn, der Empfänger benötigt sie. Die enthaltenen Originale behalten ihre Pixel, Audio, Text und Metadaten bei. Sie werden vom Tool **nicht** anonymisiert. 5. Zeigen Sie eine Vorschau der Zählwerte, Warnungen und Beispielnachrichten in transformierter Form an und bestätigen Sie anschließend die Erstellung ausdrücklich. Die Beispiele sind auf jeweils 12 Nachrichten und 2.000 Textzeichen begrenzt. Dies ist ein Beispiel und keine vollständige Überprüfung des Ergebnisses. Das Ändern von Einstellungen erfordert eine weitere Vorschau. Eine Vorschau läuft nach 15 Minuten ab und ist an diese Administratorsitzung sowie an das exakte Original-ZIP gebunden; sie kann nach der Erstellung nicht wiederverwendet werden. Eine neue Vorschau macht die vorherige für denselben Auftrag und dieselbe Sitzung ungültig. 6. Sehen Sie sich das vollständige Ergebnis an `index.html` und `messages.jsonl` vor der Übergabe. Falls darin unnötige Informationen enthalten sind, erstellen Sie eine neue Offenlegung mit strengeren Ausschlusskriterien. Bearbeiten Sie das signierte ZIP nicht direkt an Ort und Stelle. ### Durch die Auswahl ausgelassene Nachrichten **Vorschau.** Eine Offenlegung erscheint unvollständig, wenn sie es tatsächlich ist. In jedem Chat, der mindestens eine offengelegte Nachricht enthält, werden die von der Auswahl ausgelassenen Nachrichten als Markierungen angezeigt, `[withheld by selection — rule: sender]` (oder `text`, `period`). Wählen Sie **„Durch die Auswahl ausgelassene Nachrichten**“: eine Markierung für jede Folge aufeinanderfolgender zurückgehaltener Nachrichten (Standard) oder eine für jede einzelne Nachricht. Markierungen enthalten nur die Regel und eine Zählung, niemals Text, Absender, Datum oder Dateien. Chats, in denen nichts offengelegt wurde, werden vollständig ausgelassen, sodass das Paket deren Existenz nicht preisgibt. Offen gelegte Antworten geben an, worauf sie sich beziehen: eine in dieser Kopie enthaltene Nachricht, eine durch die Auswahl zurückgehaltene Nachricht oder eine Nachricht, die nicht im Quell-Export enthalten ist (vor dem Export gelöscht oder nie exportiert; der Export kann nicht unterscheiden, was zutrifft). Eine zurückgehaltene Nachricht, auf die eine offengelegte Antwort Bezug nimmt, erhält immer eine eigene Kennzeichnung, sodass die Antwort auf einen Datensatz verweist, der erklärt, warum sie leer ist. Diese drei Zustände unterscheiden sich von Löschungen und Lücken in der Datensammlung, die zum Quell-Export gehören. Im `messages.jsonl` (Format `tgwitness-account-disclosure-v2`) enthält jede Nachricht `state`: `disclosed`oder `withheld` mit `rules` und `count`. Eine offengelegte Antwort enthält `reply_to` mit dem Ziel `id` und `state` (`disclosed`, `withheld`, `not_in_source`). Das Manifest zählt offengelegte Nachrichten, Chats, Medien und `withheld` Nachrichten. `verify.py` Es lehnt einen Marker ab, der Inhalt enthält, sowie eine Antwort, die auf einen im Paket fehlenden Datensatz verweist; Pakete der Version 1 werden wie bisher verifiziert. Das minimierte Format lässt strukturierte Kontoprofile, Kontakte, Avatare, Sitzungen, Stories, Telegram-Rohobjekte, Weiterleitungs-Header, Antwortzitate, Kontaktkarten und Standort-Metadaten weg. Es schließt die ursprünglichen JSONL-Dateien, private Filtereinstellungen, den Pseudonymschlüssel und die Identitätszuordnung aus. Ausgewählter Text, explizit beibehaltene Identitäten und eingebundene Dateien können weiterhin dieselben Namen, IDs oder Phrasen enthalten, die in diesen Filtern verwendet werden; sie müssen separat überprüft werden. Die private Richtlinie und der Pseudonymschlüssel werden verschlüsselt im lokalen Tresor des Auftrags aufbewahrt; das Löschen des Auftrags löscht die zugehörigen privaten Offenlegungsdatensätze. Die öffentliche Richtlinie erfasst die Anzahl der Filter statt der Filterwerte. Der angegebene Zweck ist im Manifest und im HTML öffentlich: Explizite private Kriterien und – in pseudonymisierten Modi – bekannte verborgene Identitäten werden dort ebenfalls maskiert, auch wenn der Nachrichtentext weggelassen wird. Halten Sie den Zweck frei von unnötigen persönlichen Details; unbekannter identifizierender Kontext kann bestehen bleiben. Sein Manifest bindet die abgeleiteten Dateien, die öffentlichen Richtlinien und den Hash des ursprünglichen ZIP zusammen. Durch die Verifizierung lassen sich die Integrität sowie – sofern die Quelle lokal bereitgestellt wird – die Übereinstimmung der Quellverknüpfung feststellen: ``` python -m tgwitness.verify minimized-disclosure.zip --fingerprint TRUSTED_SHA256 python -m tgwitness.verify minimized-disclosure.zip --fingerprint TRUSTED_SHA256 --evidence account-export.zip ``` Die Quellenverknüpfung beweist nicht eigenständig, dass bei der Transformation alle erforderlichen Elemente ausgewählt oder alle identifizierenden Details entfernt wurden. Der ursprüngliche Klartext ist nicht als Nachweis eingebettet. Für diese Beurteilung ist eine erneute Überprüfung erforderlich. ## Freigabe und gehostete Erfassung Wählen Sie die Nachrichten und Dateien aus, die der Empfänger benötigt, überprüfen Sie die vollständige Kopie, die weitergegeben wird, und bewahren Sie die Quelle separat auf. Notieren Sie den Hash-Wert der übermittelten ZIP-Datei, damit der Empfänger genau diese Kopie identifizieren und verifizieren kann. Durch Pseudonymisierung werden die ausgewählten Identifikatoren ersetzt; der enthaltene Text und die Originaldateien bleiben Teil der Überprüfung. GitHub Actions unterstützt den Export des gesamten Kontos und ausgewählter Chats über Takeout oder die reguläre API sowie ein Ereignisprotokoll für einen einzelnen Chat. Die Anleitung zur gehosteten Erfassung erläutert die Überprüfung der Einstellungen und das 120-Minuten-Limit. Um eine aus der gehosteten Erfassung abgeleitete Freigabekopie zu überprüfen, vergleichen Sie deren Quell-Hash mit dem Originalarchiv und verifizieren Sie die Bescheinigung dieses Archivs mit den [-modus-spezifischen Prüfungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope). [Format der Beweismittel](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) · [Fallberichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-reports/) --- # Telegram · Format der Beweismittel Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/ Inhalt der signierten ZIP-Datei, Protokolltypen, Prozessbestätigungen, Benutzerprofile, externe Kopien und Offline-Überprüfung. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Translation coverage: this edition includes material from the English original. Inhalt der signierten ZIP-Datei, Protokolltypen, Prozessbestätigungen, Benutzerprofile, externe Kopien und Offline-Überprüfung. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) TgWitness sichert für das Konto sichtbare Telegram-Beobachtungen in einem signierten Protokoll. Empfänger können die gespeicherten Datensätze, Anhänge und Berichte anhand eines vertrauenswürdigen Collector-Schlüssels verifizieren und anschließend das Protokoll mit einem unabhängig aufbewahrten Checkpoint vergleichen. Diese Seite beschreibt die Formate, die Prüfungen und das Material, das für die Übergabe aufzubewahren ist. Empfänger können unter Windows mit **VERIFY.cmd** beginnen: Das Programm fragt nach der Original- ZIP-Datei und dem unabhängig ermittelten Schlüssel-Fingerabdruck, zeigt ein kommentiertes Ergebnis an und speichert ein separates Verifizierungsprotokoll. Informationen zur Einrichtung und zu Vertrauensgrenzen finden Sie unter den [-Verifizierungs-Launchern und der portablen Laufzeitumgebung](https://github.com/phishdestroy/TgWitness/blob/main/docs/VERIFICATION_LAUNCHER.md). **Auf dieser Seite** - [Was ist signiert?](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#what-is-signed) - [Vergleich von Chat-Exporten](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#comparing-chat-exports) - [Übergabe der Untersuchung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#investigation-handoff) - [Auszug aus der Übergabe](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#handover-extract) - [Lesbare Berichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#readable-reports) - [Kanonisierung von Ereignissen](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#event-canonicalization) - [Akteur-Semantik](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#actor-semantics) - [Abdeckung: Kontinuität, Lücken und nicht beobachtete IDs](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#coverage-continuity-gaps-and-unobserved-ids) - [Ersteller](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#producer) - [Personenprofile](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#people-profiles) - [Unabhängiger Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#independent-witness) - [Manifest und Checkpoints](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#manifest-and-checkpoints) - [Verifizierungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) - [Anhänge](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#attachments) - [Dauerhafte Erfassung und Verarbeitung von Belegen (0.2)](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#durable-collection-and-process-receipts-02) - [RFC 3161-Vorbereitung und Antwortüberprüfung (0.2)](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#rfc-3161-preparation-and-response-verification-02) - [Optionale Datensätze im Beweismodus: drand und Telegram-Geräte](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#optional-records-in-evidence-mode-drand-and-telegram-devices) ## Was ist signiert? | Material | Schutz | Was ist zu beachten? | | --- | --- | --- | | Jeder Eintrag im Protokoll, einschließlich operativer Ereignisse | SHA-256-Kette und eine Ed25519-Signatur pro Ereignis | Original-`events.jsonl`, der Fingerabdruck des vertrauenswürdigen Schlüssels, sowie ein gespeicherter Kontrollpunkt | | Inhalt der ZIP-Datei mit den Beweismitteln | `manifest.sig` signiert das kanonische Manifest, in dem die Hash-Werte der Inhaltsdateien aufgeführt sind | Das vollständige ZIP-Archiv, einschließlich Manifest und Signatur | | Erhaltene Anhänge | SHA-256 und Byteanzahl in einem signierten „`media.saved`“-Ereignis; Datei-Hash im signierten ZIP-Manifest | Die Originaldaten innerhalb der verifizierten ZIP-Datei | | Checkpoint | Ed25519-Signatur über die Länge des Protokolls, den Kopf-Hash, den öffentlichen Schlüssel und den Erstellungszeitpunkt | Eine unabhängige Kopie, die vor einer umstrittenen Änderung gesichert wurde | | Ausführungsbeleg | Signierte Aufzeichnung der Collector-Version, der Hashes der Quelldateien und der Starteinstellungen, ebenfalls in `process.started` enthalten | Der Beleg, der zugehörige Journal-Eintrag und die Umgebungsnachweise für den ausgewählten Verifizierungsmodus | | Lesbare Berichte: „`report.html`“ und seine Teile „`report.json`“, „`report.pdf`“, „`chat.pdf`“ | Ein Ed25519-Siegel pro Datei über deren Inhalt; das PDF trägt zudem eine Standard-PDF-Signatur (siehe [Lesbare Berichte](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#readable-reports)) | Die empfangene Datei und der Fingerabdruck des vertrauenswürdigen Schlüssels; die darin beschriebene ZIP-Datei | | Standalone-CSV | Keine eigenständige kryptografische Signatur; Ereignis-Hashes allein reichen nicht aus | Verwenden Sie den exakten Inhalt der verifizierten ZIP-Datei zur Integritätsprüfung. | | Screenshots, Ausdrucke oder von einem Browser erstellte PDF-Dateien | Keine TgWitness-Signatur auf dem abgeleiteten Dokument | Bewahren Sie das ursprüngliche, verifizierte Paket auf und dokumentieren Sie, wie das Derivat erstellt wurde. | Der Collector überprüft die Journal-Signaturen, bevor jedes Exportformat generiert wird. Lesbare HTML- und PDF-Berichte tragen ihre eigenen Siegel; eigenständige CSV-Dateien werden als Teil einer signierten ZIP-Datei überprüft. Behalten Sie die ZIP-Datei bei, um die Anhangsbytes und das Manifest zu erhalten, sowie einen separaten Checkpoint, um das Journal anhand einer früheren Grenze zu überprüfen. ## Vergleich von Chat-Exporten Überprüfen und vergleichen Sie zwei signierte ZIP-Dateien mit Chat-Exporten anhand unabhängig gespeicherter Fingerabdrücke der Unterzeichner: ``` python -m tgwitness.verify first.zip --compare second.zip \ --fingerprint FIRST_TRUSTED_KEY_SHA256 --compare-fingerprint SECOND_TRUSTED_KEY_SHA256 ``` Wenn beide Archive dieselben numerischen Konto- und Chat-IDs aufzeichnen, werden die Datensätze anhand der Nachrichten-ID gepaart. **Unverändert** bedeutet Übereinstimmung des vollständigen gespeicherten JSON-Datensatzes: Volltext, Autor, Datumsangaben, Antwortziel, verschachtelte Metadaten und unbekannte Felder sind alle enthalten. Die Reihenfolge der Schlüssel im JSON-Objekt spielt keine Rolle; fehlende Felder, Nullwerte, Werttypen und die Reihenfolge der Arrays hingegen schon. Die 300-Zeichen-Vorschau dient nur zur Anzeige. Geänderte Einträge benennen die abweichenden `changed_fields`-Elemente der obersten Ebene, einschließlich Änderungen, die in dieser Vorschau nicht sichtbar sind. Doppelte Nachrichten-IDs werden beim Abgleich abgelehnt, anstatt sich gegenseitig zu überschreiben. Eine Abweichung kann ein geänderter Anzeigename, eine geänderte Aufrufzahl, eine geänderte Sammlungsanmerkung oder andere Metadaten der Beobachtung sein. Sie allein belegt keine Bearbeitung in Telegram, gibt keinen Aufschluss darüber, wer eine Änderung vorgenommen hat, und beweist nicht, welches widersprüchliche Archiv korrekt ist. Unparsierte Datensätze verbleiben im Vergleich; die Übereinstimmung ihrer gespeicherten Darstellung bedeutet nicht, dass ihre Telegram-Nutzdaten dekodiert wurden. Bei abweichenden oder fehlenden Konto-/Chat-Identitäten findet das Tool nur mögliche Übereinstimmungen anhand von Absender, vollständigem Text, Datei-Hash, Medientyp und einer Zeittoleranz von fünf Sekunden. Es meldet „**Matched**“, nicht „**Unchanged**“. Diese Kandidaten belegen weder die Identität der Nachricht noch die Übereinstimmung aller Metadaten. Nicht geparste Datensätze bleiben unabgeglichen. Unterschiede in gepaarten Datensätzen werden weiterhin unter `changed` aufgeführt, auch im Inhaltsmodus; diese Unterschiede beweisen keine Bearbeitungen derselben Nachricht. Bei `--json` zählt `matched` Paare und `unchanged` zählt Paare, deren vollständig gespeicherte Datensätze identisch sind. Keine dieser Zählungen beweist die Nachrichtenidentität im Inhaltsmodus. Die bestehende `changed_fields`- und die ganzzahlige `unchanged`-Ausgabe bleiben kompatibel mit früheren Vergleichsergebnissen. Das Archivformat und die Signaturprüfung bleiben unverändert. ## Übergabe von Ermittlungsergebnissen 1. Halten Sie die Fallreferenz, den Bearbeiter, die numerische Telegram-Konto-ID, die ausgewählten Quellen, die Erfassungsrichtlinie und den Erfassungszeitraum in Ihren Fallnotizen fest. TgWitness sichert Beobachtungen und unterstützt quellenverknüpfte Notizen und Erfassungen im [„Case Board](https://phishdestroy.github.io/TgWitness/de/docs/reference/case-board/)“. Bewahren Sie Übergabe- und Verwahrungsprotokolle zusammen mit Ihren Fallunterlagen auf. Überprüfen Sie die geplante Erfassungs Konfiguration im Rahmen des [Live-Abnahmeverfahrens](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/LIVE_ACCEPTANCE.md). 2. Speichern Sie den Fingerabdruck des öffentlichen Schlüssels des Arbeitsbereichs separat, bevor Sie sich auf dessen Exporte verlassen. Speichern Sie signierte Kontrollpunkte während der Erfassung außerhalb des Collectors. Halten Sie Unterbrechungen sowie die Grenzen der Sichtbarkeit des Kontos fest. 3. Exportieren Sie eine **signierte ZIP-Datei** und bewahren Sie die signierte Ausführungsbestätigung auf. Verwenden Sie einen Prüfpunkt an oder vor der Grenze des exportierten Protokolls. Ein späterer Prüfpunkt kann einen früheren Export zu Recht als zu kurz zurückweisen. Exporte umfassen das vollständige Arbeitsbereichsprotokoll, unabhängig von Panel-Filtern; überprüfen Sie das Material, bevor Sie es weitergeben. 4. Lassen Sie den Empfänger die ZIP-Datei mit einer vertrauenswürdigen Kopie des Verifizierers und dem unabhängig bereitgestellten Fingerabdruck/Checkpoint überprüfen. Ausgehend von einem vertrauenswürdigen Checkout mit aktiver Python-Umgebung: ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_PUBLIC_KEY_SHA256 --checkpoint retained-checkpoint.json ``` Bei erfolgreicher Ausgabe werden die Berichte „`key_pinned: true` “ und „`checkpoint_checked: true` “ generiert, sofern beide Eingaben bereitgestellt und akzeptiert wurden. Das Verifizierungsergebnis wird beibehalten. ``` For a handover requiring the final exported record to be witnessed, use `--witness witness.zip --witness-fingerprint TRUSTED_WITNESS_SHA256 --require-witness`. This refuses an export with an unwitnessed tail. See the [witness handover procedure](WITNESS.md#require-a-witnessed-export-boundary). ``` 1. Record the archive's SHA-256, export boundary, transfer date, sender, and recipient in your custody record. Keep the original package intact and work from copies. Share evidence files rather than the application's private data directory, which also contains account sessions and signing secrets. For transfer, choose a password-protected AES-256 ZIP or the stronger `.tgwpw` container. ZIP uses WinZip's low-cost password derivation; use a long random passphrase. `.tgwpw` uses scrypt and AES-256-GCM and opens with the standalone verifier's `unseal-password` command. The password is not stored and only protects confidentiality; the recipient decrypts the archive and verifies the signed export inside, which is unchanged. 2. Falls eine unabhängige Zeitverankerung erforderlich ist, befolgen Sie das [Verfahren gemäß RFC 3161](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/) und bewahren Sie die Anfrage, den Checkpoint, die Informationen zur vertrauenswürdigen Zertifizierungsstelle sowie die verifizierte Antwort der Zertifizierungsstelle auf. Die bloße Erstellung einer Anfrage führt nicht zur Erlangung eines Zeitstempels. For `.tgwpw`, use an independently obtained verifier and choose a new output file with the original extension: `python verify.py unseal-password export.tgwpw --out evidence.zip`. The command prompts for the password; `--password-stdin` reads one line for automation. It never overwrites an existing file and publishes plaintext only after all records authenticate. Run normal signature verification on the decrypted file afterwards. The container uses scrypt (`N=131072`, `r=8`, `p=1`, 16-byte salt; about 128 MiB RAM) and AES-256-GCM with 1 MiB records and an authenticated final record. An encrypted metadata record stores the inner filename, so downloaded containers can be renamed. Eine erfolgreiche Verifizierung stellt die Integrität in Bezug auf den vertrauenswürdigen Collector-Schlüssel und die beibehaltene Grenze sicher. Siehe [Verifizierungsumfang](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) für die Vertrauensannahmen und [Validierungsergebnisse](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/) der durchgeführten Prüfungen. ## Auszug aus der Übergabe Eine signierte ZIP-Datei enthält das gesamte Arbeitsbereichsprotokoll. Wenn ein Gericht, ein Anwalt oder eine Meldestelle für Missbrauch nur bestimmte Chats, einen Zeitraum oder bestimmte Personen benötigt, erstellt **„Exporte → Übergabeauszug“** eine minimierte Kopie (`tgwitness-handover-v1`) gemäß den ausgewählten Offenlegungsregeln. Der Bediener gibt den Zweck an und wählt die Chats, einen optionalen Zeitraum (UTC) sowie die Personen aus, auf die sich der Auszug bezieht, und legt fest, was mit allen anderen geschieht (angezeigt, durch Pseudonyme P01, P02… oder weggelassen werden), welche Nachrichtentexte erhalten bleiben, welche Anhänge und Profilfotos enthalten sind und ob Telefonnummern und E-Mail-Adressen in Texten maskiert werden. Der Zweck und diese Regeln sind im signierten Manifest und im Bericht enthalten; das Journal protokolliert „`handover.exported`“ mit dem Zugriff, der es erstellt hat, sowie dem SHA-256-Hash der Datei, nicht den Inhalt. „`verify.py`“ überprüft einen Auszug auf zwei Arten. Ein als unverändert angezeigter Datensatz wird vollständig verifiziert: sein Inhalt wird mit seinem Hash, seiner Ed25519-Signatur und seinem Link zu einem enthaltenen Vorgänger abgeglichen. Ein minimierter Datensatz behält den ursprünglichen Hash und die Signatur bei, sodass die Signatur weiterhin verifiziert wird, die ausgeblendeten Felder jedoch nicht daraus neu berechnet werden können; der Datensatz nennt, was ausgeblendet wurde, und der Bericht kennzeichnet dies. Das Manifest gibt die Länge des Protokolls und den Kopf mit der Signatur des Erfassers über diesem Kopf an und zählt die ausgelassenen Datensätze; „`coverage.json`“ beschreibt die ausgewählten Chats. Namen innerhalb von Dateinamen werden nicht erkannt. Überprüfen Sie die endgültigen Dateien vor der Weitergabe: Freitext, Dateinamen und ausgewählte Anhänge können weiterhin Personen identifizieren. Bewahren Sie die vollständige, signierte ZIP-Datei auf: Der Auszug stellt eine Offenlegung dar, keinen Ersatz. ## Lesbare Berichte Signierte Beweismittel, Übergabe- und Chat-ZIP-Dateien enthalten lesbare HTML- und JSON-Berichte sowie PDF-Dateien, sofern die erforderlichen Schriftarten verfügbar sind, in der ausgewählten Berichts-Sprache. Jeder Bericht ist mit dem Ed25519-Schlüssel des Arbeitsbereichs versiegelt und kann separat überprüft werden: ` `python -m tgwitness.verify FILE --fingerprint KEY [--evidence ZIP]``. - `report.html` / `chat.html`: Die Seal-Anweisung (`tgwitness-report-seal-v1`) schließt die Datei und signiert das SHA-256 jedes davor liegenden Bytes. Lange Protokolle und Chats werden in Teile einer konfigurierbaren Größe aufgeteilt (Berichtseinstellungen, 500 bis 100.000 Datensätze; standardmäßig 5.000): `records/records-0001.html` oder `messages/messages-0001.html`, jeweils mit Nummer, Bereich und Gesamtsumme versiegelt und zusammen mit dem entsprechenden SHA-256 im signierten Manifest aufgeführt. Serien von Collector-Heartbeats werden als eine Zeile angezeigt, sofern sie in den Berichtseinstellungen nicht einzeln aufgeführt sind. - `report.json` (`tgwitness-report-json-v1`, Schlüssel `format`, `report`, `seal`): Das Siegel signiert das SHA-256 des kanonischen JSON von `report`, sodass die Fakten von Fallbearbeitungssystemen und Skripten gelesen werden können und daraus eine Auswahl zum Datenschutz getroffen werden kann, während die signierte Datei intakt bleibt. - `report.pdf` / `chat.pdf`: ein formelles Dokument zum Ausdrucken und Ablegen, das zweimal über dieselben Bytes signiert ist, wobei die gesamte Datei mit Ausnahme des Signaturwerts (`/ByteRange`) betroffen ist. Die Standard-PDF-Signatur (`adbe.pkcs7.detached`, CMS mit SHA-256 und ECDSA P-256) verwendet ein selbst ausgestelltes Dokumentensignatur- Zertifikat, das im Workspace-Tresor gespeichert ist; dessen Seriennummer ist der Schlüssel-Fingerabdruck Ed25519 . Das Ed25519-Siegel wird innerhalb des CMS als das nicht signierte Attribut `2.25.240684792623320047764573196045913242332` übertragen und benennt das Zertifikat SHA-256 mit `"content": "pdf-byte-range"`, sodass der Schlüssel Ed25519 für das Zertifikat bürgt. Ein PDF-Lesegerät zeigt an, ob sich die Datei nach der Signierung geändert hat, und stuft den Unterzeichner als unbekannt ein, bis das Zertifikat als vertrauenswürdig eingestuft ist; vergleichen Sie stattdessen den Ed25519-Fingerabdruck. Chinesische, japanische und koreanische PDF-Dateien benötigen eine Schriftart auf dem Server (oder in `TGWITNESS_FONT_DIR`); ohne diese enthält die ZIP-Datei lediglich die Berichte HTML und JSON . In einem Kanal oder einer Supergruppe nummeriert Telegram die Nachrichten der Reihe nach mit 1, 2, 3 … Ein Chat-Export listet die erste und letzte Nummer, die Gesamtanzahl sowie jede Folge fehlender Nummern in `message-ids.json` , das Manifest und den `chat.json` -Header auf und markiert jede Lücke an der Stelle, an der sie im Transkript auftritt. `verify.py` zählt sie ab `chat.json` neu. Eine fehlende Nummer ist eine Nachricht, die Telegram nicht zurückgegeben hat (vor dem Export gelöscht oder für das Konto nicht sichtbar); in privaten Chats und einfachen Gruppen werden die Nummern von allen Chats des Kontos gemeinsam genutzt, und Lücken werden nicht gezählt. Nach dem Auslesen des Verlaufs fragt der Export bei Telegram erneut jede fehlende Nummer einzeln ab (`channels.getMessages`, bis zu 10,000-Nummern). Das Ergebnis befindet sich in `message-ids.json` und im Bericht. Eine leere Antwort vermerkt, dass die Nummer zum Zeitpunkt der erneuten Überprüfung für dieses Konto nicht verfügbar ist; die Ursache bleibt dabei ungenannt. Eine bei der erneuten Überprüfung zurückgegebene Nachricht wird dem Export hinzugefügt und mit `found_on_recheck` gekennzeichnet. Jeder Bericht beginnt mit „**“. Kurz gesagt: „**“ – ein Absatz, dann was das Material zeigt und was es nicht zeigt (wer hinter einem Konto steht, Vollständigkeit der Übermittlung, Löschungen vor der Überwachung, Uhrzeit ohne Zeitstempel). Der seiteninterne Siegelsstempel färbt sich bernsteinfarben, wenn der Browser die Signatur des Siegels überprüft hat, nicht die Seite selbst: Ein Browser weist einer Seite keine eigenen Bytes zu. Er wird erst grün, wenn der Leser die Datei in das Prüffeld am Ende der Seite zieht und jedes Byte übereinstimmt, und nur, wenn die angezeigte Seite genau diese Datei ist; andernfalls wird er rot. Jeder Bericht nennt das Programm genau: den Git-Commit, bei dem der Collector aus einem Checkout ausgeführt wird oder der Installer `TGWITNESS_COMMIT` festlegt, sowie die SHA-256 der Quelldateien (`source_tree_sha256`, den kanonischen JSON des Pfads → SHA-256 jeder `.py`-, `.js`-, `.css`-, `.html`- und `.svg`-Datei im Paket), die ein Checkout dieses Commits reproduziert, sofern die Dateien nicht geändert wurden. Der Client „Telegram“ wird nach seiner Bibliothek, seiner API-Schicht und seinem Rechenzentrum benannt. Zu Beginn der Beobachtung sowie zu Beginn und Ende eines Chat-Exports fragt der Collector bei „Telegram“ nach dessen Zeit („`updates.getState`“, ganze Sekunden) und zeichnet die Zeit von „Telegram“ abzüglich der Uhrzeit des Collectors auf, unter Berücksichtigung der Ungenauigkeit durch die Übertragungszeit; die Berichte zeigen diese Messungen unter „Chain of Custody“ an. Ein Chat-Export protokolliert außerdem, wann er den Verlauf gelesen hat, zusätzlich zu den Datumsangaben der Nachrichten. ### Anleitung zum Offline-Berichtsbetrachter und zum Archiv Entpacken Sie die ZIP-Datei vollständig, bevor Sie `chat.html` oder `report.html` öffnen. Der Viewer bietet Suchfunktionen, Filter, Teilnehmer, Indikatoren, Datensatzdetails sowie die Auswahl von JSON und CSV ohne Server. Bewahren Sie `viewer/` und `media/` neben dem Bericht auf. Auswahlen sind Ableitungen: Verwenden Sie `verify.py SELECTION.json --evidence ARCHIVE.zip`, um sie mit dem signierten Archiv zu vergleichen. Der Verifizierer prüft die Berichts-ID, den Signaturschlüssel, die Archivgrenze und jeden ausgewählten Eintrag; bearbeitete, fehlende und doppelte Einträge führen zu einem Fehler. Auswahlhinweise und Erstellungszeitpunkt bleiben unsignierte Metadaten. Lücken bei den Nachrichtennummern werden nur bei einem vollständigen, ungefilterten, aufsteigend sortierten Chat-Feed angezeigt. Das Ausblenden einer Kategorie oder das Nichtladen eines Datenblocks darf eine ausgelassene Zeile nicht als Hinweis auf eine fehlende Nachricht interpretieren. Suchmarkierungen werden auf Klartext vor der HTML-Escape-Verarbeitung angewendet, wobei literale Markups beibehalten werden. Der Browser überprüft Manifest-Signaturen, die Berichts-ID und den Schlüssel sowie alle aufgeführten Datei-Hashes. Er lehnt mehrdeutige oder fehlerhafte ZIP-Strukturen, doppelte Namen und unsichere Pfade ab und begrenzt Dateien auf 256 MiB sowie die angegebene Gesamtgröße des Inhalts auf 4 GiB. Verwenden Sie für größere Archive den eigenständigen Verifizierer. Diese Browserprüfung ergänzt die Prüfungen des Verifiers hinsichtlich Journalketten und Datensemantik. `README.txt` enthält eine Einführungsanleitung, ein abgeglichenes Dateiverzeichnis, Anweisungen zur Überprüfung sowie Hinweise zum Datenformat in der Berichts-Sprache, gefolgt von einer vollständigen englischen Anleitung. `SHA256SUMS` umfasst die darin aufgeführten Dateien, mit Ausnahme der Datei selbst, von `manifest.json` und `manifest.sig`; das signierte Manifest umfasst zudem `SHA256SUMS`. Behalten Sie die ursprüngliche ZIP-Datei unverändert bei und speichern Sie Arbeitsdateien außerhalb des entpackten Ordners. PDF-Berichte enthalten Abschnitts-Lesezeichen sowie Fall-/Berichts-Identifikationen auf den folgenden Seiten. ### Der Chat zum Zeitpunkt des Exports Ein Chat-Export erfasst, was Telegram zu Beginn des Exports über den Chat angegeben hat: Telegrams eigene Bezeichnungen (`scam`, `fake`, `restricted` mit den jeweiligen Begründungen, `verified`), Benutzernamen, Beschreibung, Anzahl der Mitglieder und Administratoren, die verknüpfte Diskussion, den Inhaltsschutz, ob neue Mitglieder frühere Nachrichten sehen können und ab welcher Nachricht dieses Konto den Verlauf einsehen kann (`available_min_id`), das Datum der ersten Nachricht, sofern es sich um die Erstellung des Chats handelt, sowie die SHA-256-ID des Chat-Fotos (gespeichert in `media/`). Es erfasst die Position des exportierenden Kontos im Chat: Rolle, Beitrittsdatum, wer es eingeladen hat und, im Falle eines Administrators, dessen Rechte. Eine von Telegram abgelehnte Anfrage wird stattdessen benannt. Wenn das exportierende Konto ein Administrator ist, liest der Export das Administratorprotokoll des Chats (Telegram wird etwa 48 Stunden lang aufbewahrt) in `admin-log.json` ein: Löschungen und Bearbeitungen mit dem Inhalt und dem Konto, das die Aktion durchgeführt hat. Es ist der einzige Datensatz einer Löschung, der angibt, wer gelöscht hat. ### Indikatoren Die Berichtsliste und das Archiv enthalten die Einträge `indicators.csv` , `indicators.stix.json` (STIX 2.1 ) sowie `indicators.misp.json` (Ereignis MISP ), auf deren Grundlage eine Missbrauchsstelle in den aufgezeichneten Nachrichten Maßnahmen ergreifen kann: Links und Domains (auch solche, die hinter Text, in Schaltflächen und in Link-Vorschauen verborgen sind), Kryptowährungs- Adressen, Telegram -Benutzernamen und Einladungslinks, Telefonnummern, E-Mail-Adressen und gespeicherte Bilder. Bitcoin-, Litecoin-, Dogecoin- und TRON-Adressen werden nur aufgeführt, wenn ihre Base58-Prüfsumme stimmt, SegWit-Adressen, wenn ihre Bech32- oder Bech32m-Prüfsumme stimmt, und TON-Adressen, wenn ihr CRC stimmt; EVM- und Solana-Adressen werden als nicht geprüft markiert. Bilder enthalten SHA-256 und einen perzeptuellen Hash (dHash, 64 Bit), der bei komprimierten oder in der Größe angepassten Kopien nahezu unverändert bleibt. Berichte schreiben Indikatoren so, dass sie nicht versehentlich geöffnet werden (`hxxps[://]example[.]com` ); die Dateien behalten die Werte unverändert bei. Jeder Indikator wird als unbekannt und nicht zur automatischen Erkennung gekennzeichnet (STIX , `indicator_types: unknown` , MISP , `to_ids: false` , Verteilung an die eigene Organisation): Die Auflistung bedeutet, dass eine Nachricht ihn enthielt, nicht, dass er bösartig ist. Ein Link, dessen Text eine andere Adresse anzeigt als die, die beim Öffnen angezeigt wird, wird im Bericht markiert. Die „PDF“-Berichte enden mit einer vom Prüfer handschriftlich zu unterzeichnenden Erklärung, einer Checkliste für einen Notar oder Gerichtssachverständigen sowie einem QR-Code (ebenfalls auf der ersten Seite) mit der Berichts-ID, dem Schlüssel-Fingerabdruck und dem „SHA-256“ der maßgeblichen Daten, sodass ein Ausdruck zum entsprechenden Archiv zurückverfolgt werden kann. ## Kanonisierung von Ereignissen Die Hash-Eingabe besteht genau aus folgenden Feldern: ``` seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload, previous_hash ``` Serialisierung unter Verwendung von Python-kompatiblem JSON mit UTF-8, sortierten Objektschlüsseln, ohne ASCII- Escaping, ohne unbedeutende Leerzeichen und ohne NaN/Unendlich: ``` json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"), allow_nan=False).encode("utf-8") ``` Der SHA-256-Hash dieser Bytes wird zum Ereignis-Hash. Die Signatur erfolgt mit Ed25519 über die 32 Roh-Hash-Bytes und wird anschließend Base64-kodiert. Der erste „previous_hash“ besteht aus 64 Nullen. Die Sequenznummern beginnen bei 1 und erhöhen sich um 1. Alle Ereignisse, einschließlich operativer Ereignisse, teilen sich eine Kette. Es erfolgt keine Unterdrückung doppelter Zustellungen: Wiederholte Beobachtungen stellen separate Empfangsbestätigungen dar und sind kein Hinweis auf unterschiedliche Telegram-Aktionen. Die Rohdaten von Telegram sind ISO-Zeichenfolgen; binäre Felder werden zu Objekten, die bytes_base64 enthalten. Nachrichtentext, Entitäten, Medienbeschreibungen, Metadaten zu Antworten, Reaktionen sowie Serviceaktionen werden in den Rohmetadaten der Nachricht beibehalten, sofern sie bereitgestellt werden. „observed_at“ ist die UTC-Uhrzeit des Erfassers. „source_at“ ist ein von Telegram bereitgestelltes Datum, sofern verfügbar. Löschbenachrichtigungen liefern keine genaue Löschzeit, daher bleibt „source_at“ null. Die Reihenfolge des Empfangs der Daten entspricht nicht unbedingt der Reihenfolge der Quellereignisse. Historien-Snapshots verwenden ältere Quelldaten, jedoch aktuelle Beobachtungszeitpunkte. ## Semantik der Akteure message.new actor_id ist der Absender der Nachricht. message.edited enthält keinen abgeleiteten Bearbeiter; payload.sender_id erfasst den Absender der beobachteten Nachricht. Löschung „actor_id“ bleibt null. Nachrichten des Mitgliederservices behalten den Absender und den Aktionstyp bei, ohne jede Entfernung als freiwilligen Austritt zu interpretieren. Rohe Teilnehmeraktualisierungen behalten die „actor_id“ in der bereitgestellten Form bei. Reaktions-Snapshots erfinden keinen Änderungsakteur. Löschbenachrichtigungen für private Chats und normale Gruppen enthalten ausschließlich Nachrichten-IDs. Diese Chats nutzen eine kontoweite ID-Sequenz, sodass eine ID eine einzelne Nachricht dieses Kontos identifiziert. Wurde eine Nachricht mit dieser ID zuvor in diesem Protokoll gespeichert, wird die Löschung in diesem Chat als „message.deleted“ mit der Methode „payload.chat_resolution“ erfasst. IDs, die nie gespeichert wurden, werden als „deletion.unscoped“ ohne „chat_id“ geführt; es werden keine Vermutungen angestellt. Kanäle und Supergruppen nummerieren Nachrichten pro Chat und werden auf diese Weise niemals abgeglichen. Wenn die gelöschte Nachricht vom beobachteten Konto gesendet wurde, ist „payload.deleted_message_was_outgoing“ wahr; der Löschende wird weiterhin nicht angegeben. Eine Benachrichtigung ohne Geltungsbereich belegt nicht, dass eine Nachricht nie gespeichert wurde: Ein übereinstimmender Chat könnte außerhalb des aktuellen Beobachtungsbereichs liegen, oder eine eindeutige Übereinstimmung könnte nicht verfügbar sein. Die erneute Überprüfung auf Fehlen bleibt eine von einer Löschbenachrichtigung getrennte Beobachtung in Bezug auf Berichtszahlen, Filter und Bezeichnungen. Eine spätere Wiederherstellung hebt den aktuellen Fehldarstellungsstatus auf, während die frühere erfolglose Überprüfung im signierten Verlauf erhalten bleibt; keine der beiden Beobachtungen stellt eine Löschbenachrichtigung dar. Mehrere IDs, die aus einer Benachrichtigung auf denselben Chat zurückgeführt werden, werden als `deletion.batch` gruppiert, unabhängig von ihrer Anzahl. Die Benachrichtigung gibt keinen Aufschluss darüber, ob der gesamte Verlauf gelöscht wurde, wer die Löschung durchgeführt hat oder ob sie für alle Teilnehmer galt. Gespeicherte ausgehende Nachrichten ändern diese Grenzen nicht. Ältere Journale können `history.cleared`-Ereignisse enthalten, die aus Stapeln von zehn oder mehr IDs abgeleitet wurden, mit einem erläuternden Text, der die Löschung dem anderen Teilnehmer zuschreibt. Diese Schlussfolgerungen werden durch das Update nicht unterstützt. Bewahren Sie diese ursprünglichen signierten Datensätze auf, behandeln Sie sie jedoch als gruppierte Löschbenachrichtigungen; die aktuelle Schnittstelle kennzeichnet sie entsprechend. ## Erfassungsumfang: Kontinuität, Lücken und nicht erfasste IDs Jede signierte ZIP-Datei enthält „`coverage.json`“, der HTML-Bericht beginnt mit derselben Zusammenfassung, und „ `verify.py`“ berechnet diese anhand von „`events.jsonl`“ neu, anstatt der Datei zu vertrauen: - **Kontinuierliche Beobachtung von X bis Y.** Ein Zeitraum beginnt mit „`observation.started`“ und endet bei einer Pause, einem Stopp, einer unterbrochenen Telegram-Verbindung, einer Abmeldung, einem Prozessstart ohne ordnungsgemäßen Stopp oder nach mehr als drei Minuten ohne Aufzeichnung während der Beobachtung (Heartbeats werden jede Minute geschrieben, daher bedeutet Stille, dass der Prozess gestoppt wurde, eingefroren ist oder der Computer in den Ruhezustand übergegangen ist). Wenn das Heartbeat-Intervall in **den Parametern** geändert wird, wird dies bei jedem Heartbeat protokolliert, und die zulässige Stille beträgt drei Intervalle, jedoch niemals weniger als drei Minuten. - **In der Lückenliste** wird der Zeitraum zwischen den einzelnen Zeitabschnitten mit dem jeweiligen Grund aufgeführt. Eine Lücke, die zum Zeitpunkt des letzten Eintrags noch offen war, wird mit „`not_resumed_by_last_record`“ gekennzeichnet. - **Nachrichten-IDs wurden nicht erfasst.** Bei Kanälen und Supergruppen, die die Nachrichten pro Chat nummerieren, werden die zwischen den erfassten IDs fehlenden IDs als Bereiche aufgeführt. Sie werden als „*nicht erfasst“* gemeldet – gelöscht, nie zugestellt oder außerhalb des gespeicherten Verlaufs – niemals als „gelöscht“. Private Chats und normale Gruppen nutzen eine accountweite Sequenz, daher haben Lücken innerhalb eines solchen Chats keine Bedeutung und werden dort nicht aufgeführt. - Meldungen über Lücken auf Chat-Ebene (beispielsweise wenn Telegram in einem Kanal zur Wiederherstellung von Datenunterschieden auffordert) werden als Notizen gezählt; sie unterbrechen die globale Abdeckung nicht. ### Fehlende Nachrichtennummern (`gap_summary`) **Vorschau.** `coverage.json` → `gap_summary` misst die von Telegram zugewiesenen Nummern, die dieser Kollektor nie gesehen hat. Telegram nummeriert Nachrichten einmal pro Kanal oder Supergruppe und einmal pro Konto über private Chats, Bots und normale Gruppen hinweg. Eine Nummer zwischen zwei beobachteten Nachrichten ist entweder beobachtet oder fehlt; ein zusammenhängender Bereich ist eine positive Aussage, dass jede darin nummerierte Nachricht beobachtet wurde. Eine Lücke nennt weder einen Akteur noch einen Grund. | Fachgebiet | Bedeutung | | --- | --- | | `status` | `on`oder `off` wenn in **„Parameter → Lückenanalyse“** deaktiviert | | `parameters` | Die Parameter, die zu dem Ergebnis geführt haben, damit es reproduziert werden kann | | `chats[]` | Ein Eintrag pro Kanal oder Supergruppe, jeweils eigenständig nummeriert | | `account` | Die kontoweite Abfolge von privaten Chats, Bots und normalen Gruppen | | `status` (pro Sequenz) | `applicable`, oder `not_applicable` mit `reason` | | `observed_from`, `observed_to`, `span` | Erste und letzte beobachtete Nummer sowie die Größe des Bereichs | | `observed`, `observed_without_content` | Beobachtete Nummern; solche, die nur aus einem Lösch- oder Nachprüfungsdatensatz bekannt sind | | `missing`, `density`, `gap_ranges`, `largest_gap` | Nie beobachtete Zahlen, ihr Anteil am Bereich, Anzahl der Durchläufe, der längste Durchlauf | | `clusters[]` | Aufgeführte Lücken: `low`, `high`, `missing`, sowie die benachbarten beobachteten Zahlen `after` / `before` mit ihren Beobachtungszeitpunkten | | `service_estimate` | Nur wenn aktiviert: Wie viele fehlende Nummern wären bei ihrem beobachteten Anteil Servicemeldungen? Wird niemals abgezogen von `missing` | Die Gültigkeit wird aus dem Protokoll abgeleitet und niemals vorausgesetzt: - **Kanäle und Supergruppen** werden pro Chat erfasst, auch beim Export ausgewählter Chats. Die vom Absender ausgewählten Einträge bilden die Grundlage für die Erfassung `not_applicable`. - **Die kontoweite Sequenz** wird nur von der ersten bis zur letzten Nachricht gemessen, die eingegangen ist, während die Erfassung des gesamten Kontos aktiv war, und umfasst private Chats, Bots, normale Gruppen sowie die eigenen Nachrichten des Kontos, wobei kein solcher Chat ausgeschlossen wird (`scope.changed`). Zahlen, die mit `deletion.unscoped` als beobachtet, ohne dass deren Inhalt berücksichtigt wird. Ein Export oder eine Übergabe ausgewählter Chats kann diese nicht erfassen. Wurde die Erfassung des gesamten Kontos aus- und wieder eingeschaltet, weist ein Hinweis darauf hin, dass die in der Zwischenzeit verwendeten Zahlen als Lücken erscheinen. - Servicemeldungen sind Protokolleinträge mit eigenen Nummern, sodass sie Lücken selbst schließen; die optionale Schätzung dient lediglich als Kontext. `verify.py` berechnet neu `gap_summary` aus `events.jsonl` mit den Parametern im signierten `coverage.json` Element (Standardwerte für ältere Archive) und gibt die kontoweite Zeile in der Abdeckungszusammenfassung aus. Das `get_capture_status`(MCP und die Befehlszeile) gibt denselben Messwert für die Chats zurück, die ein Zugriff lesen darf; die kontoweite Sequenz gilt nur für Zugriffe, die den gesamten Arbeitsbereich abdecken. Wiederholte Beobachtungen einer Dienstnachricht zählen nur einmal, und die Schätzung des Kontodienstes verwendet ausschließlich Zahlen innerhalb des gemessenen Bereichs. Ein angewendeter Umfang muss die eigenen Nachrichten des Kontos explizit beibehalten, bevor eine kontoweite Messung aktiviert wird; ältere Datensätze ohne diese Informationen können diese Bedingung nicht erfüllen. Eine unterbrochene Beobachtung erweitert den gemessenen Bereich nicht, und ihre Wiederaufnahme wird vermerkt. Die Abfrage des Live-Archivs hat ein Zeitlimit, einschließlich des Datenbank-Scans, und kennzeichnet eine unvollendete Messung als unvollständig. Telegram dokumentiert die [getrennten Nachrichten-ID-Sequenzen](https://core.telegram.org/api/updates#message-id-sequences). Diese Zahlen beschreiben Beobachtungen; sie identifizieren weder einen für die Löschung Verantwortlichen noch klären sie, warum eine Zahl fehlt. Wenn Telegram das Konto nicht mehr akzeptiert, enthält der Datensatz `coverage.gap`, der die Überwachung beendet, `cause` (`account_banned`, `account_frozen`, `account_deleted`, `session_duplicated`, `session_revoked`, `session_expired`, `session_ended` oder `not_authorized`) sowie den Fehler Telegram; `verify.py` benennt die Ursache, aus der der Zeitraum endet. Der Erfassungsumfang umfasst aufgezeichnete Beobachtungszeiträume, Unterbrechungen und Nachrichtenergebnisse. Bewerten Sie dies in Verbindung mit den ausgewählten Chats, dem Zeitraum und den Richtlinien für Anhänge; der kontinuierliche Betrieb allein gewährleistet keine vollständige Zustellung von Telegram-Updates. ## Produzent Das signierte Manifest der Beweismittel-ZIP-Dateien, Chat-Exporte, Zeugenprotokolle und der Erklärungen zu Personenprofil-Dateien enthält „`producer` “: Software, Version, Projekt (PhishDestroy), Homepage und Quellcode-Repository. Der HTML-Bericht zeigt dieselbe Zeile an, und „`verify.py` “ gibt sie als Teil der verifizierten Informationen aus. Archive, die erstellt wurden, bevor dieses Feld existierte, werden wie bisher verifiziert und so gemeldet, dass kein Ersteller angegeben ist. Jeder `observation.started`-Datensatz nennt außerdem den Telegram-Client, der die Beobachtung durchgeführt hat: dessen `api_id` (niemals den Hash), unabhängig davon, ob es sich um ein integriertes öffentliches Schlüsselpaar oder die eigene Anwendung des Betreibers handelt, die in der Verbindungsanfrage von Telegram gesendete Client-Beschreibung sowie die Art der Verbindungsroute mit dem IP-Modus (keine Proxy-Adresse oder Geheimnis). Der Bericht und `custody.json` listen jeden einzelnen Client und jede Route mit dem Zeitpunkt ihrer Aufzeichnung auf sowie die Zeitpunkte, zu denen kein gelisteter Proxy geantwortet hat und Telegram die Adresse des Servers erkannt hat. Dies geht aus zuvor aufgezeichneten Protokollen hervor. ## Personenprofile Eine Profildatei (`tgwitness-dossier-v1`, JSON) wird auf Anfrage aus den bereits im Protokoll vorhandenen Einträgen für einen Chat erstellt; es werden keine Daten von Telegram abgerufen, und Profilinhalt werden niemals in das Protokoll geschrieben (das Aktivieren und Deaktivieren von Profilen wird als `dossier.changed` protokolliert). Für jede Person mit einer gespeicherten Nachricht werden Name und Benutzernamenverlauf sowie Telegram-Kennzeichnungen (Bot, Betrug, Fälschung, Premium, verifiziert, eingeschränkt, gelöscht) – wie zum Zeitpunkt der Speicherung sichtbar – sowie Profil- Foto-IDs, SHA-256- und Perceptual-Hash (pHash, kompatibel mit `imagehash.phash`) des Avatars aus dem lokalen Avatar-Cache mit ähnlichen Avataren, Aktivitäten (erste und letzte Nachricht, Anzahlen, bearbeitete und gelöschte Freigaben, Nachrichten nach UTC-Stunde), wer wem antwortet, andere Chats in diesem Journal, in denen die Person geschrieben hat, sowie erwähnte Wallets (BTC, EVM, TRON, TON, LTC, DOGE, XMR, SOL; Base58Check-Adressen werden anhand der Prüfsumme validiert), Telefonnummern, Benutzernamen und Links, einschließlich hinter Text versteckter Links. Jeder Sachverhalt listet die Protokoll-Einträge (`seq`) auf, aus denen er stammt, und `record_hashes` enthält den Hashwert jedes referenzierten Eintrags. Die Aussage ist mit dem Workspace-Schlüssel signiert: ``` python verify.py tgwitness-dossier-CHAT.json --fingerprint TRUSTED_SHA256 --evidence tgwitness-evidence.zip ``` Überprüft die Signatur, verifiziert den Beweisexport selbst (Signatur, Hash-Kette und Dateien) sowie die Tatsache, dass jeder referenzierte Datensatz unverändert in diesem Export desselben Arbeitsbereichs vorhanden ist. Avatar-Hashes werden als aus dem lokalen Cache stammend gekennzeichnet (keine Protokoll-Datensätze). Erwähnungen sind Musterübereinstimmungen – Anhaltspunkte zur Überprüfung, keine verifizierten Fakten. Profile werden pro Chat aktiviert, können als passwortgeschützte AES-256-ZIP-Datei exportiert werden und werden gelöscht, wenn sie deaktiviert werden oder wenn der Chat aus den Quellen entfernt wird. ## Unabhängiger Zeuge Ein Zeugenprotokoll (`tgwitness-witness-v1`) und dessen Kanalbeiträge werden anhand eines Beweisexports mit `verify.py --witness … --channel …` überprüft; siehe [unabhängiger Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/). ## Manifest und Kontrollpunkte Die Datei „manifest.json“ enthält das Format, den Exportzeitpunkt, den öffentlichen Schlüssel, den Fingerabdruck, die Länge des Protokolls, den Head-Hash, den Geltungsbereich, den Ersteller, Einschränkungen sowie den SHA-256-Hash jedes Inhaltselements mit Ausnahme von „`manifest.json`“ und „`manifest.sig`“ selbst. „manifest.sig“ ist die Base64-Signatur nach Ed25519 über das kanonische Manifest-JSON. Der Verifizierer lehnt unerwartete/fehlende Elemente, doppelte Namen, beschädigte Dateien, unterbrochene Sequenzen/Ketten, ungültige Signaturen sowie Abweichungen von einem bereitgestellten Checkpoint ab. Er extrahiert niemals Archivpfade. Er begrenzt die insgesamt angegebene unkomprimierte Größe auf 4 GiB; mit `--max-gib N` sind größere Archive möglich, die mit einem erhöhten **Parameterlimit** erstellt wurden. Führen Sie die Verifizierung anhand Ihrer installierten TgWitness-Version oder eines geprüften Checkouts durch. Die im Archiv enthaltene Kopie ermöglicht eine portable Nutzung; vergleichen Sie diese Kopie mit Ihrer vertrauenswürdigen Installation, bevor Sie sie ausführen. Ein Checkpoint signiert eine Aussage, die den öffentlichen Schlüssel, die Journal-Länge, den Head-Hash und den Erstellungszeitpunkt enthält. Der Prüfer kann überprüfen, ob ein späteres Archiv dasselbe Präfix enthält. Bewahren Sie den Checkpoint außerhalb des Collectors auf, damit bei einer späteren Überprüfung das Archiv mit einer separat davon geführten Referenz verglichen wird. ## Umfang der Überprüfung Die Verifizierung überprüft das Archiv und den zu seiner Erstellung verwendeten Erfassungsmodus. Wählen Sie den Modus, dessen Vertrauensgrenze dem jeweiligen Fall entspricht, und behalten Sie dessen Verifizierungsdaten bei. | Erfassungsmodus | Was der Verifizierer überprüft | Verifizierungsdaten und Vertrauensgrenze | | --- | --- | --- | | Lokaler Arbeitsbereich | Signaturen, Hash-Kette, Manifest und Anhang-Bytes aufzeichnen | Unabhängig gespeicherter Collector-Fingerabdruck; der Host-Administrator verwaltet den lokalen Signaturschlüssel | | Lokaler Arbeitsbereich mit einem unabhängigen Witness | Die Archivprüfungen sowie die Übereinstimmung mit einem früheren Protokollpräfix, das vom Zeugen beibehalten wurde | Getrennt voneinander vertrauenswürdige Witness-Schlüssel und Datensätze; der Checkpoint bindet das bereits beobachtete Präfix | | [GitHub Actions-Aufzeichnung](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md) | GitHub-Bescheinigung des Archiv-Digests, der genehmigten Workflow- und Collector-Commits, des gehosteten Runners, der neuen Sitzungs-/Schlüsselherkunft und der internen Archivintegrität | Richtlinie für vertrauenswürdige Prüfer, Aufrufer-Repository und GitHub-Bescheinigungsbündel; die Datenerfassung läuft im festgesteckten Workflow ab | | [Cloud-Bereitstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/) | Lebenszyklus- und Zugriffsprotokolle des Anbieters, Status von Firewall und Cloudflare sowie das signierte Ausführungsprotokoll des Collectors | Schreibgeschützte Abfragen an den Anbieter und Cloudflare; die Verfügbarkeit einzelner Prüfungen hängt vom Anbieter ab | | [Vertrauliche Intel TDX-VM](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#confidential-vm-on-phala-cloud-intel-tdx) | Signatur und Plattformstatus angeben, Verknüpfung mit der Collector-Anweisung, Kompositions- und Betriebssystemmessungen | Intel-Vertrauenskette und erwartete Messwerte für die Bereitstellung; die Ergebnisse jeder erforderlichen TDX-Prüfung beibehalten | Bei der versiegelten Erfassung erhält der zugelassene Erfasser Daten über eine authentifizierte Telegram-Verbindung innerhalb der verifizierten Umgebung. Die Bescheinigung bindet das Archiv an diese Ausführung, sodass die Verifizierung sowohl die Erfassung als auch die spätere Dateiintegrität abdeckt. Dies beruht auf dem zugelassenen Code und der oben aufgeführten Vertrauenskette der Plattform. Die Überprüfung der GitHub-Erfassung erfordert eine innerhalb der Ausführung erstellte Sitzung und lehnt Erfassungen aus importierten Sitzungen ab. Der Ausführungsbeleg protokolliert die Collector-Version, Datei-Hashes und Starteinstellungen. GitHub-Provenienz und TDX-Messungen dienen der Umgebungsprüfung; der Validierungsdatensatz identifiziert getestete Konfigurationen. TgWitness signiert die von ihm gesammelten Beobachtungen; Telegram und die Verfasser der Nachrichten stellen diese Signaturen nicht aus. In einem lokalen Arbeitsbereich hängt das vor dem ersten unabhängigen Prüfpunkt erstellte Material weiterhin vom Sammler und dessen Schlüsselinhaber ab. Abdeckungsaufzeichnungen beschreiben den ausgewählten Umfang und die Ergebnisse der Sammlung, während verifizierte externe Zeitstempel die Grenze des festgeschriebenen Archivs oder Journals zeitlich verankern. ## Anhänge Dateien werden unter „media/“ anhand ihres SHA-256-Hashs adressiert. Ein „media.saved“-Ereignis verknüpft einen Hash und die Byte-Länge mit einem bestimmten Nachrichtenereignis. Die ursprünglichen Dateinamen dienen als Metadaten, niemals lokale Pfade. Mediendaten werden asynchron heruntergeladen, sodass eine sofortige Löschung die Erfassung verhindern kann. Deaktivierte Erfassung, übergroße Dateien oder Dateien mit unbekannter Größe, Download-Fehler sowie unterbrochene Downloads werden als Ergebnisse angezeigt. Ein Prozessabsturz kann nicht referenzierte Teil-Dateien hinterlassen; diese werden nicht in die Exporte einbezogen. Der ZIP-Exporter gleicht gespeicherte Medien anhand ihrer Namen ab. JSONL-, CSV- und HTML-Exporte überprüfen Ereignissignaturen, enthalten jedoch keine Medienbytes. Abgeleitete Berichte dienen der Benutzerfreundlichkeit; „events.jsonl“ ist die maßgebliche Darstellung der Ereignisse. Bei einem vollständigen Chat-Export werden Anhänge gemäß den Anhangseinstellungen des Arbeitsbereichs im Ordner „media/“ gespeichert und mit dem Namen „SHA-256“ versehen. Jeder Nachrichteneintrag in chat.json benennt seine Datei (`file`, `file_sha256`) oder den Grund für deren Fehlen (`file_status`), zusammen mit dem, was der Leser um den Text herum gesehen hat: Links hinter dem Text, Weiterleitungsquelle, Bot-Schaltflächen, Signatur, Aufrufe und den Timer für die automatische Löschung. `verify.py` überprüft, ob sich jede benannte Datei im signierten Manifest unter diesem Hash befindet. ## Dauerhafte Erfassung und Verarbeitung von Belegen (0,2) Ein Medienauftrag und die damit verbundene Nachrichtenereignis-Festschreibung erfolgen in einer Transaktion. Der Auftrag speichert den ursprünglichen TL-Nachrichtenbeschreiber; die signierte Beobachtung bindet deren SHA-256-Hash, das Konto sowie die Größenrichtlinie. Die Wiederherstellung überprüft diese Bindung vor dem Herunterladen. Es wird niemals die aktuelle Nachricht abgerufen, und ein neuerer Anhang wird stillschweigend ersetzt. Unterbrochene Aufträge werden erneut versucht, während ein dauerhafter Fehler ein explizites Ergebnis bleibt. Jeder Arbeitsbereich verfügt über ein eigenes Protokoll und eine eigene Signaturidentität. Ein process.started-Ereignis enthält eine Lauf-ID, lokale Uhrzeiten, Versionen von Abhängigkeiten, Hashes der Quelldateien, das anfängliche Konto/den anfänglichen Geltungsbereich sowie die Erfassungseinstellungen. Heartbeats enthalten die Lauf-ID, die monotone Zeit und den Status der Warteschlange. Der Ausführungsbeleg kann auch als separat signierte Erklärung heruntergeladen werden. Zur Verifizierung der Ausführungsumgebung kombinieren Sie ihn mit der GitHub-Bescheinigung oder den TDX-Prüfungen, die in [Verification scope](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) beschrieben sind. Automatische Checkpoints werden lokal beim Start, alle fünf Minuten während der Beobachtung (**Parameter → Signierter Checkpoint alle**) sowie beim ordnungsgemäßen Beenden gespeichert. Die Startüberprüfung und der Export vergleichen das Protokoll mit dem zuletzt gespeicherten lokalen Checkpoint. Dadurch kann ein Datenbank-Rollback erkannt werden, sofern der Checkpoint erhalten bleibt. Durch unabhängige Speicherung bleibt diese Referenz außerhalb des Arbeitsbereichs verfügbar; ein verifizierter externer Zeitstempel verankert sie zusätzlich zeitlich. Nach einem Neustart wird die gespeicherte Telegram-Aktualisierungsposition fortgesetzt (`catch_up_from` in `observation.started`) und es werden versäumte Aktualisierungen angefordert. Eine regelmäßige Überprüfung erfasst `message.recovered` für versäumte Nachrichten und `message.missing_on_recheck`, wenn Telegram keine gespeicherte Nachricht mehr zurückgibt; Letzteres ist keine Löschmeldung und nennt weder einen Löschenden noch einen Zeitpunkt. ### Externe Sicherung und Wiederherstellung (S3) Die externe Kopie (Exporte, standardmäßig deaktiviert) lädt Protokollsegmente, gesicherte Dateien, Checkpoints mit ihren Zeitstempeln sowie fertige Chat-Exporte in einen S3-kompatiblen Speicher hoch, verschlüsselt mit AES-256-GCM verschlüsselt, wobei der Schlüssel im Workspace-Tresor gespeichert ist; die Aufbewahrung mittels „Object Lock“ gilt, sofern der Bucket dies unterstützt. Ohne den heruntergeladenen Schlüssel kann die Kopie nicht gelesen werden. Wiederherstellung und Überprüfung mit „`python -m tgwitness.replica restore --key-file KEY.json --out DIR`“. Die Wiederherstellung erfordert ein leeres Standardverzeichnis. Downloads und entschlüsselte Objekte verbleiben im privaten Zwischenspeicher, bis das gesamte Protokoll und jeder aufbewahrte Prüfpunkt verifiziert sind. Unsichere Objektpfade, inkonsistente Segmentbereiche und Protokolle, die kürzer als ein Prüfpunkt sind, werden abgelehnt; bei fehlgeschlagener Verifizierung werden keine wiederhergestellten Dateien veröffentlicht. Bei Aufbewahrungsprüfungen werden der zurückgegebene „Object Lock“-Modus und das Datum mit der beim Upload übermittelten Frist verglichen (mit einer Rundungstoleranz von einer Sekunde). Eine abgelaufene, ungültige oder verkürzte Frist gilt nicht als verifiziert. Der Status gibt das Stichprobenobjekt an, dessen Aufbewahrungsstatus für diesen Upload-Durchlauf zurückgelesen wurde. Fehlende oder beschädigte lokale Medien werden als Fehler des Durchlaufs gemeldet, und der Mediencursor bleibt vor diesem stehen, sodass die Datei im nächsten Durchlauf erneut versucht wird; die darauf folgenden Dateien, Checkpoints und Exporte werden weiterhin kopiert. Die Wiederherstellungsprüfung vergleicht alle Verweise auf erhaltene Medien mit entschlüsselten Hashes und aufgezeichneten Größen. Identische, sich überschneidende Protokollsegmente aus unterbrochenen Uploads werden dedupliziert; widersprüchliche Überschneidungen werden verworfen. Während eines Uploads erstellte Kontrollpunkte werden zurückgestellt, bis die von ihnen abgedeckten Protokolleinträge kopiert wurden, sodass ein abgeschlossener Durchlauf keinen Kontrollpunkt vor seinem Protokoll veröffentlicht. ### Streaming-Export-Momentaufnahmen Streaming-Exporte verwenden einen stabilen SQLite-Lese-Snapshot. Dessen Anfang kann älter sein als das aktuelle Live-Protokoll, wenn der Download abgeschlossen ist. Ein nach diesem Snapshot erstellter Checkpoint kann korrekt melden, dass das Archiv kürzer ist; vergleichen Sie dies mit einem Checkpoint am oder vor dem exportierten Präfix, nicht mit einem beliebigen späteren Checkpoint. ## Vorbereitung gemäß RFC 3161 und Überprüfung der Antworten (0.2) Im Beweismodus (standardmäßig deaktiviert) wird lediglich der SHA-256-Hash jedes signierten Checkpoints an die aufgeführten RFC-3161-Autoritäten und OpenTimestamps-Kalender gesendet – und zwar über die Workspace-Route und niemals über MTProxy. Die Antworten werden in `checkpoints/anchors/` gespeichert, exportiert und von `verify.py` überprüft (`--tsa-ca` überprüft die TSA-Signatur; Bestätigen Sie die OpenTimestamps-Nachweise mit `ots upgrade` und `ots verify`). Das Panel erstellt ein Anforderungsarchiv, das kanonische „checkpoint.json“-Bytes, einen SHA-256-Nachrichtenabdruck und einen zufälligen Nonce in „timestamp.tsq“, Prüfsummen sowie Anweisungen enthält. Es wird keine Netzwerkanfrage gestellt. Die Vorbereitung stellt keinen vertrauenswürdigen Zeitstempel dar. `python -m tgwitness.anchor verify` ruft OpenSSL zweimal auf: einmal anhand der Checkpoint- Bytes und einmal anhand der ursprünglichen Anfrage. Eine vertrauenswürdige CA-Datei ist ausdrücklich erforderlich; enthaltene Zertifikate werden nicht automatisch als vertrauenswürdig eingestuft. Die Überprüfung der Anfrage ist in der Befehlszeile optional; verwenden Sie daher weiterhin den Parameter „--request“, um den Nonce zu überprüfen. Das Ergebnis gibt an, ob die Überprüfung stattgefunden hat. Die Checkpoint-Signatur des Collectors und das Protokoll müssen weiterhin separat anhand des vertrauenswürdigen Fingerabdrucks des Collectors verifiziert werden. Bei der Verifizierung werden die Antwort-Signatur, die Checkpoint-Bytes und, sofern vorhanden, die ursprüngliche Anfrage unter der angegebenen CA-Vertrauensstellung überprüft. Revokationsprüfungen und die Validierung der Langzeitarchivierung nach Ablauf des Zertifikats liegen außerhalb des aktuellen Verifizierers. Siehe die [Vorgehensweise](https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/) und [die Validierungsergebnisse](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/). ## Optionale Datensätze im Beweismodus: „drand“- und „Telegram“-Geräte Zwei weitere Aufzeichnungen können mit denselben Durchläufen wie die Zeitstempel ausgeführt werden. Beide sind standardmäßig deaktiviert und werden nur wirksam, wenn der Beweismodus aktiviert ist: Extras → Beweise & Backups → **Weitere Zeugen · optional**, oder `"drand": true` und `"devices": true` in `POST /api/evidence`. Ein Ausfall stoppt weder den anderen noch die Zeitstempel; das Bedienfeld zeigt das aktuellste Ergebnis jedes einzelnen unter dem Formular an. **drand** (`beacon.drand` ). Bei jedem Durchlauf wird die neueste Runde von drand quicknet, die öffentliche Zufallszahl der League of Entropy (eine Runde alle 3 Sekunden), in das Journal geschrieben: `chain` , `round` , `randomness` , `signature` , `round_time` und das `relay` , das geantwortet hat. Eine verifizierte unvorhersehbare Runde liefert eine untere Zeitreferenz für das nachfolgende, per Hash verknüpfte Material. Ein verifizierter Zeitstempel an einem späteren Checkpoint liefert einen oberen Zeitbezug. Diese Prüfungen begrenzen das verknüpfte Material; die Erfassungsreichweite wird separat bewertet. Der Collector fragt zuerst `drand.cloudflare.com` ab, dann die Relays von Protocol Labs über die Workspace-Route, mit einer Anfrage pro Durchlauf. `verify.py` prüft, ob jede Zufallszahl das SHA-256 ihrer Signatur ist und ob die Rundenzeit stimmt, und meldet die Runden, die längste Zeitspanne ohne eine Runde sowie den Rückstand der Uhr des Collectors gegenüber drand. Die BLS-Signatur wird nicht überprüft. `--check-drand` vergleicht die Runden mit einem Cloudflare-Relay und einem Protocol Labs-Relay, entweder mit allen oder mit einer zufälligen Stichprobe von 100 aus einem langen Protokoll; eine Runde, die abweicht, führt zum Fehlschlagen der Überprüfung. **, Telegram,** (`account.devices`). Bei jedem Durchlauf werden die Sitzungen des Kontos mit `account.getAuthorizations` gelesen, die Liste Telegram wird unter „Einstellungen“ → „Geräte“ angezeigt und vollständig aufgezeichnet: vollständig, wenn sie sich seit dem letzten Durchlauf geändert hat, mit den Sitzungs-Hashes `added` und `removed`; ansonsten nur deren Anzahl und SHA-256. Gerätemodell, Plattform, App und Version, Erstellungsdatum und letzte Aktivität, Land und Region werden gespeichert; IP-Adressen hingegen nicht, da der Export von Beweismaterial außerhalb Ihrer Kontrolle liegt. Die eigene Sitzung des Collectors ist ständig aktiv, daher zählt nur die Aktivität anderer Sitzungen als Änderung. „`verify.py`“ meldet, wie oft die Liste aufgezeichnet wurde sowie jede neue und beendete Sitzung. Die Liste wird nur gelesen, solange die Beobachtung läuft. Was sie nicht zeigen: drand beweist lediglich die Reihenfolge der Datensätze im Verhältnis zur öffentlichen Zeit, und die Geräteliste ist die Aussage von „Telegram“ über den Collector, die – wie jeder andere Datensatz auch – vom Collector signiert wurde. **Cloudflare Gateway-Protokoll** (`cloudflare.gateway_dns`). Für einen Server, der über das Cloudflare-Gateway ([Gateway-DNS](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#cloudflare-as-an-outside-witness)) auflöst, kopiert jeder Durchlauf die seit der letzten Kopie vom Gateway protokollierten Daten: ein Eintrag pro Zeitfenster von maximal drei Stunden mit `from`, `until`, `location_id`, dem `address` des Servers, sofern festgelegt, und dem `queries` als `[at, name, type, rcode, decision, colo]`, auch wenn keine vorhanden waren. Richten Sie dies unter „ **Cloudflare Gateway-Protokoll“ ein:**: Konto, Standort, optionale Adresse und ein schreibgeschütztes Token (Konto Analytics-Lesezugriff; Zero Trust PII-Lesezugriff, um eine Adresse eines gemeinsam genutzten Standorts zu speichern). Das Panel überprüft diese Angaben mit einer Anfrage vor dem Speichern; das Token bleibt verschlüsselt und gelangt niemals in das Protokoll. `verify.py` listet die Fenster, die am häufigsten aufgerufenen Namen und alle Zeiträume auf, für die keine Kopie vorliegt; ein Datensatz, dessen Anzahl nicht mit seinen Abfragen übereinstimmt, schlägt fehl. Ein Fenster, das mehr als eine Seite mit Abfragen in einer einzigen Sekunde enthält, behält diese Seite bei und gibt an, dass der Rest fehlt. Die Kopie ist die Antwort von Cloudflare über den Collector, signiert vom Collector; innerhalb von 24 Stunden kann jeder mit einem schreibgeschützten Token diese mit Cloudflare abgleichen. --- # Telegram · Unabhängiger Zeuge Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/ Führen Sie „Witness“ mit einem eigenen Schlüssel und Bot aus, veröffentlichen Sie signierte Checkpoints in einem Kanal und vergleichen Sie die Exporte damit. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Führen Sie „Witness“ mit einem eigenen Schlüssel und Bot aus, veröffentlichen Sie signierte Checkpoints in einem Kanal und vergleichen Sie die Exporte damit. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Beweise und Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) [Exportieren und verifizieren](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) · [Hohe Sicherheit](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/) · [Anleitung zum Panel](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/#extras) Ein Witness speichert signierte Checkpoints getrennt vom Collector. Er überprüft die Signatur des Collectors und die Kontinuität des Journals, signiert das Ergebnis mit seinem eigenen Schlüssel und veröffentlicht es in einem Telegram-Kanal. Führen Sie ihn auf einem separaten Server mit Lesezugriff auf den Witness-Endpunkt des Collectors aus. Ablaufdiagramm · Collector → Zeuge (Signierter Prüfpunkt: Anzahl der Einträge + Head-Hash); Zeuge → Witness-Protokoll, eigener Schlüssel; Zeuge → Telegram-Kanal (Signierter Beitrag über den eigenen Bot); Beweismaterial-ZIP → verify.py; Witness-Protokoll, eigener Schlüssel → verify.py; Telegram-Kanal → verify.py (Export über Telegram Desktop oder die Seite „t.me/s“) · Collector · Zeuge · Witness-Protokoll, eigenerSchlüssel · Telegram-Kanal · Beweismaterial-ZIP · verify.py · Signierter Prüfpunkt: Anzahl · der Einträge + Head-Hash · Signierter Beitrag über den · eigenen Bot · Export über Telegram Desktop · oder die Seite „t.me/s“ **Diagramm als Text** 1. Collector → Zeuge (Signierter Prüfpunkt: Anzahl der Einträge + Head-Hash) 2. Zeuge → Witness-Protokoll, eigener Schlüssel 3. Zeuge → Telegram-Kanal (Signierter Beitrag über den eigenen Bot) 4. Beweismaterial-ZIP → verify.py 5. Witness-Protokoll, eigener Schlüssel → verify.py 6. Telegram-Kanal → verify.py (Export über Telegram Desktop oder die Seite „t.me/s“) **Auf dieser Seite** - [Was der Witness erhält und was nicht](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#what-the-witness-gets-and-what-it-does-not) - [Was überprüft und aufgezeichnet wird](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#what-it-checks-and-records) - [Einen Witness ausführen](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#run-a-witness) - [Öffentliche Nachweisseite für mehrere Arbeitsbereiche](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#public-proof-page-for-several-workspaces) - [Überprüfen](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/#verify) ## Was TgWitness bietet – und was nicht | Der Zeuge hat | Der Zeuge hat niemals | | --- | --- | | Ein schreibgeschütztes **Witness-Token** für einen Arbeitsbereich | Die Telegram-Sitzung oder die API-Zugangsdaten des Erfassers | | Eigener Ed25519-Schlüssel und eigenes Protokoll | Der Speicher des Collectors, der Signaturschlüssel oder das Panel-Token | | Ein eigenes Telegram-Bot-Token | Inhalt der Nachricht: Der Kopf besteht aus einer Datensatzanzahl und einem Hash | Das Token wird unter **„Extras“ → „Independent Witness“** erstellt, einmal angezeigt und ausschließlich als SHA-256 gespeichert. Es öffnet genau einen Endpunkt, `GET /api/witness/head`, der einen frisch signierten Checkpoint sowie signierte, inhaltsfreie Sammlungszähler und den Betriebszustand zurückgibt. Es kann weder das Panel öffnen, noch Nachrichteninhalte lesen oder Einstellungen ändern, und das Panel-Token wird dort nicht akzeptiert. Ein Token kann auf derselben Seite widerrufen werden. Der Collector protokolliert, wann ein neuer Witness-Schlüssel mit der Überprüfung beginnt (`witness.seen`) und zeigt die letzte Überprüfung pro Token an; ein Witness, der innerhalb von 2,5 Intervallen keine Überprüfung durchgeführt hat, wird als überfällig markiert. Neue Zeugen senden bei jeder Abfrage eine zufällige Herausforderung; die Erfassungsanweisung gibt diese unter der Signatur des Sammlers wieder. Zähler sind an den genauen Kontrollpunkt gebunden und werden in signierte Zeugenbeiträge aufgenommen. Ältere Kopfzeilen werden vom eigenständigen Zeugen weiterhin akzeptiert. Das Wachstum des Protokolls allein wird niemals als neue Nachricht gezählt. ## Was überprüft und aufgezeichnet wird In jedem Intervall (standardmäßig alle 10 Minuten) führt TgWitness folgende Schritte durch: 1. ruft den Header selbst ab (der Collector kann ihn weder übertragen noch überspringen); 2. Überprüft die Signatur des Collectors, den festgesteckten Collector-Schlüssel (`--collector-fingerprint`, bzw. den zuerst gesehenen Schlüssel), einen nicht abnehmenden Zähler und einen unveränderten Kopf bei einem unveränderten Zähler. Merkle-Inklusions- und Konsistenznachweise überprüfen, ob ein wachsendes Journal den beibehaltenen Checkpoint erweitert. Sobald Kontinuitätsnachweise verwendet wurden, wird deren Entfernung abgelehnt; 3. fügt seinem eigenen Protokoll einen signierten Datensatz hinzu: `witness.anchor` mit dem Status `ok`, `key_changed`, `rollback` (weniger Datensätze als zuvor), `fork` (gleiche Länge, anderer Kopf) oder `invalid` (die Antwort hat die Überprüfung nicht bestanden) oder `witness.no_response`, wenn der Kollektor nicht geantwortet hat; 4. Das Ergebnis wird signiert im Kanal veröffentlicht, einschließlich der Meldung „keine Antwort“, solange TgWitness läuft und die Bot-API erreichen kann. Die Beitrags-ID wird aufgezeichnet (`witness.posted`), ebenso wie ein fehlgeschlagener Beitrag (`witness.post_failed`). Ein Eintrag sieht wie folgt aus; die letzte Zeile enthält die signierte Erklärung: ``` TgWitness witness #42 · journal head Collector 3fa9c2d1e0b4a7f6: 18234 records Head 9b1f…c07e 2026-10-28T19:40:00.123+00:00 TGW1.eyJhdCI6…. ``` ## Ein Witness ausführen Sie benötigen einen Telegram-Bot (erstellen Sie einen mit @BotFather), einen Kanal, in dem dieser Bot als Administrator fungiert, sowie die Adresse des Collectors, die für den Zeugen erreichbar ist – über HTTPS außerhalb eines privaten Netzwerks (siehe das HTTPS-Profil im Abschnitt [„Bereitstellung“](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/)). Öffnen Sie im Bedienfeld **„Extras“ → „Unabhängiger Witness“ → „Konfigurieren**“. In drei Schritten werden der schreibgeschützte Zugriff, Ihr Kanal und das Intervall festgelegt, anschließend wird der Witness gestartet. Die Veröffentlichungsrichtlinie, ein optionaler HTTP/SOCKS5-Proxy und eine benutzerdefinierte Bot-API-Adresse finden Sie unter **„Erweiterte Einstellungen**“. Das Formular lädt `witness.json` mit dem festgehaltenen Collector-Schlüssel dieses Arbeitsbereichs. Laden Sie das neu erstellte Lesezugriffstoken mit **„Zugriffsdatei speichern** unter“ herunter `witness-token.txt`“ herunter; speichern Sie diese Datei zusammen mit einem `bot-token.txt`auf dem Witness-Host erstellte JSON-Datei daneben. Der Collector erhält das Bot-Token niemals. Der Download startet weder einen Dienst noch wird eine Nachricht veröffentlicht. Es wird kein gehosteter Projekt-Witness implizit registriert. ``` python -m tgwitness.witness run --config witness.json --check-config python -m tgwitness.witness run --config witness.json python -m tgwitness.witness fingerprint --config witness.json ``` Der erste Befehl überprüft Konfigurations- und Geheimdateien ohne Netzwerkanfragen oder Schlüsselerstellung. Pfade in JSON sind relativ zu dieser Datei; CLI-/Umgebungspfade sind relativ zum Arbeitsverzeichnis. Bewahren Sie den Fingerabdruck des Witness außerhalb seines Hosts auf. Der „Last-Poll“-Indikator des Collectors bestätigt lediglich eine Anfrage; die Veröffentlichung wird von Proof gemeldet oder im Witness-Protokoll und im Kanal überprüft. Wenn sich das Panel hinter einem SSH-Tunnel befindet, stellen Sie nur den begrenzten Witness-Endpunkt auf einem separaten HTTPS-Hostnamen gemäß [diesem Caddy-Beispiel](https://github.com/phishdestroy/TgWitness/blob/main/deploy/Caddyfile.witness.example) bereit. Der Standard-Arbeitsbereich verwendet dann „`https://witness.example.org`“, andere Arbeitsbereiche verwenden „ `https://witness.example.org/profiles/ID`“. Token sind weiterhin erforderlich; das Panel und seine anderen API-Routen werden von diesem virtuellen Host nicht weitergeleitet. Wählen Sie „`all`“ für regelmäßig veröffentlichte Checkpoints. Ein Fünf-Minuten-Intervall entspricht etwa 288 Einträgen pro Arbeitsbereich pro Tag. „`changes`“ und „`problems`“ lassen bewusst einige Überprüfungen unveröffentlicht. MTProxy ist für den Telegram-Client des Erfassers vorgesehen. Witness-HTTP-Abfragen und die HTTPS-Bot-API von Telegram verwenden ihre eigene direkte/HTTP/SOCKS5-Route ([Bot-API](https://core.telegram.org/bots/api)). **Neben dem Collector, mit Docker** (derselbe Host – unabhängiger Prozess und Schlüssel, jedoch derselbe Betreiber): Geben Sie die Werte in „`.env`“ ein und starten Sie das Profil. ``` TGWITNESS_WITNESS_TOKEN=tgww_... TGWITNESS_WITNESS_BOT_TOKEN=123456:ABC... TGWITNESS_WITNESS_CHANNEL=@your_witness_channel # another workspace: TGWITNESS_WITNESS_COLLECTOR=http://tgwitness:8787/profiles/ docker compose --profile witness up -d docker compose logs witness # prints the witness key fingerprint ``` Verwenden Sie bei der Veröffentlichung eines Bildes den Code `docker compose --project-directory . -f deploy/compose/compose.image.yaml --profile witness up -d`. **Auf dem Server einer anderen Person** (einem echten unabhängigen Zeugen): Kopieren Sie das Repository dorthin, legen Sie `TGWITNESS_WITNESS_COLLECTOR=https://your-collector.example.org` sowie die drei oben genannten Werte in `.env` fest, dann ``` docker compose --project-directory . -f deploy/compose/compose.witness.yaml up -d ``` oder ohne Docker: ``` python -m tgwitness.witness run --collector https://your-collector.example.org \ --token-file witness-token.txt --bot-token-file bot-token.txt --channel @your_witness_channel ``` ### Auf Discord veröffentlichen Ein Witness kann Beiträge statt auf Telegram auch in einem Discord-Kanal veröffentlichen. Öffne in Discord **„Kanal bearbeiten“ → „Integrationen“ → „Webhooks“**, erstelle einen Webhook und kopiere dessen URL. Wähle im Bedienfeld in Schritt 2 **„Discord-Webhook · dein Kanal**“ aus. Speichere auf dem Witness-Host die URL als `discord-webhook.txt` neben `witness.json`; sie gelangt niemals zum Collector. ``` python -m tgwitness.witness run --collector https://your-collector.example.org \ --token-file witness-token.txt --discord-webhook-file discord-webhook.txt ``` Ein „Witness“ hat einen Herausgeber: entweder einen Telegram-Kanal oder einen Discord-Webhook, nicht beides. Beiträge enthalten dieselbe signierte Aussage und können niemanden anpingen. Ein Beitrag, der länger als die von Discord festgelegten 2.000 Zeichen ist, wird durch eine kurze Zeile ersetzt, der der vollständige Check als `witness-check.txt`. Jede Beitrags-ID wird als `witness.posted`. `verify.py --channel`liest ausschließlich Telegram-Kanal-Exporte; für Discord führen Sie daher das Zeugen-Tagebuch: Es enthält jeden Check. ### Optionen | Option | Umfeld | Standard | Bedeutung | | --- | --- | --- | --- | | `--interval` | `TGWITNESS_WITNESS_INTERVAL` | 10 | Intervalle zwischen den Überprüfungen: 1–1.440 | | `--timeout` | `_TIMEOUT` | 30 | Wartezeit für den Collector und die Bot-API: 5–600 Sekunden | | `--post` | `_POST` | `all` | `all`: alles in Ordnung; `changes`: ein neuer Ansatz oder ein Problem; `problems`: ausschließlich Probleme und fehlende Antworten | | `--title` | `_TITLE` | `TgWitness witness` | Die ersten Wörter jedes Kanalbeitrags | | `--collector-fingerprint` | `_COLLECTOR_FINGERPRINT` | – | Speichern Sie den Collector-Schlüssel, anstatt der ersten Antwort zu vertrauen | | `--proxy` | `_PROXY` | direkt | `socks5://host:port` oder `http://host:port` | | `--bot-api` | `_BOT_API` | `https://api.telegram.org` | Adresse der Bot-API, z. B. eines lokalen Bot-API-Servers | | `--data-dir` | `_DATA` | `witness-data` | Witness-Schlüssel und Protokoll | | `--config` | `_CONFIG` | – | JSON-Datei mit einer der oben genannten Optionen | Die Collector-Adresse, die Tokens und der Kanal stammen von `--collector`, `--token` oder `--token-file`, `--bot-token` oder `--bot-token-file`, `--discord-webhook-file` und `--channel`, oder `_COLLECTOR`, `_TOKEN`, `_TOKEN_FILE`, `_BOT_TOKEN`, `_BOT_TOKEN_FILE`, `_DISCORD_WEBHOOK_FILE` und `_CHANNEL`, wodurch Geheimnisse aus der Prozessliste ferngehalten werden. Eine Konfigurationsdatei verwendet Optionsnamen mit Unterstrichen sowie „`texts`“, wodurch die Wörter der Kanalbeiträge ersetzt werden: ``` {"collector": "https://your-collector.example.org", "token_file": "witness-token.txt", "bot_token_file": "bot-token.txt", "channel": "@your_witness_channel", "interval": 5, "timeout": 30, "post": "changes", "title": "Partner witness", "texts": {"ok": "journal head", "no_response": "no answer from the collector", "records": "records"}} ``` `texts`-Schlüssel: `ok`, `key_changed`, `rollback`, `fork`, `invalid`, `no_response`, `collector`, `records`, `head`. Die Befehlszeile hat Vorrang vor der Umgebung, die Umgebung vor der Datei. Unbekannte Optionen oder Textschlüssel führen dazu, dass der Witness mit einer Meldung angehalten wird, anstatt ignoriert zu werden. Der Wortlaut hat keinerlei Einfluss auf die Verifizierung: verify.py überprüft das signierte Token am Ende jedes Beitrags. Bei `--post changes` oder `problems` befinden sich Prüfungen, die nicht gepostet wurden, weiterhin im Zeugenjournal, und `verify.py` listet sie als „nie gepostet“ auf; der Startdatensatz benennt die Richtlinie. Jede Prüfung erscheint weiterhin im Journal, sodass weniger Posts weniger unabhängige Telegramm-Zeiten bedeuten, nicht jedoch weniger Prüfungen. Auch ohne Kanal führt „Witness“ weiterhin sein Protokoll. Bewahren Sie den Fingerabdruck des „Witness“-Schlüssels (`python -m tgwitness.witness fingerprint`) an einem anderen Ort auf. ## Öffentliche Proof-Seite für mehrere Arbeitsbereiche `python -m tgwitness.proof` TgWitness unterstützt bis zu 32 Arbeitsbereiche gleichzeitig und stellt eine schreibgeschützte Seite mit der neuesten signierten Überprüfung jedes einzelnen bereit. Jeder Arbeitsbereich erhält einen eigenen Witness-Schlüssel und ein Journal im Datenordner sowie einen angehefteten Collector-Schlüssel; das Posten in einem Telegram-Kanal ist pro Arbeitsbereich optional. Beginnen Sie mit [proof.config.example](https://github.com/phishdestroy/TgWitness/blob/main/deploy/proof.config.example): | Fachgebiet | Bedeutung | | --- | --- | | `title` | Seitentitel, 1–100 Zeichen | | `data_dir` | Witness-Schlüssel und -Journale, bezogen auf die Datei; Standard `proof-data` | | `interval`, `timeout` | Minuten zwischen den Überprüfungen (1–1440, Standardwert 5); Sekunden Wartezeit (5–600, Standardwert 20) | | `workspaces[].id`, `label` | Kurzer Alias in Kleinbuchstaben und der angezeigte Name | | `workspaces[].collector` | Adresse des Collectors; andere Arbeitsbereiche enden auf `/profiles/` | | `workspaces[].collector_fingerprint` | Erforderlich, für jeden Arbeitsbereich unterschiedlich | | `workspaces[].token_file` | Datei mit dem schreibgeschützten Witness-Token dieses Arbeitsbereichs | | `workspaces[].channel`, `bot_token_file` | Optional, beides zusammen: Jede Überprüfung in einem Kanal veröffentlichen | | `workspaces[].proxy`, `bot_api` | Optionale Route und Bot-API-Adresse | ``` python -m tgwitness.proof --config proof.json --check-config python -m tgwitness.proof --config proof.json --host 127.0.0.1 --port 8790 ``` Der erste Befehl überprüft die Datei und die Token-Dateien, ohne eine Verbindung herzustellen. Die Seite beantwortet nur GET- und HEAD-Anfragen: - `/` Zeigt alle Arbeitsbereiche an; ein Arbeitsbereich, der seit 2,5 Intervallen nicht überprüft wurde, wird als veraltet markiert. - `/api/proof` Liefert dasselbe Ergebnis wie JSON. - `/api/proof/` Lädt die neueste signierte Erklärung herunter (`tgwitness-public-proof-v1`): Witness-Aufzeichnungsnummer und Hash, Status, angehefteter Collector-Schlüssel, Checkpoint, Erfassungszähler sowie die Angabe, ob der Kanalbeitrag erfolgreich war, signiert mit dem Witness-Schlüssel dieses Arbeitsbereichs. - `/healthz` Gibt den Status 503 zurück, wenn der Monitor eines Arbeitsbereichs gestoppt wurde. Weisen Sie der Seite einen eigenen Hostnamen zu, wie z. B. [„Caddyfile.proof.example](https://github.com/phishdestroy/TgWitness/blob/main/deploy/Caddyfile.proof.example)“. Zur Überprüfung exportieren Sie das Witness-Journal eines Arbeitsbereichs mit `python -m tgwitness.witness export --data-dir proof-data/ --out witness.zip` und verwenden Sie es wie unten beschrieben. ## Überprüfen Auf der Seite des Zeugen: Exportieren Sie das Protokoll: ``` python -m tgwitness.witness export --out witness.zip # Docker (add -f deploy/compose/compose.witness.yaml on a witness server): docker compose exec witness python -m tgwitness.witness export --out /witness/witness.zip docker compose cp witness:/witness/witness.zip . ``` Anschließend können Sie an jedem beliebigen Ort mit der signierten ZIP-Datei des Collectors und dem aus Telegram Desktop exportierten Kanal (*Chat-Verlauf exportieren* → JSON ergibt `result.json` ) oder dessen öffentlicher `https://t.me/s/…` -Seite: ``` python verify.py tgwitness-evidence.zip --fingerprint COLLECTOR_SHA256 \ --witness witness.zip --witness-fingerprint WITNESS_SHA256 --channel result.json ``` `verify.py` überprüft das Zeugenprotokoll (Kette und Signaturen) und stellt anschließend sicher, dass **jeder „Head“, den der Zeuge gesehen hat**, **Teil des exportierten Protokolls ist**: Der Eintrag an dieser Stelle muss genau diesen Hash aufweisen. Ein „Head“, der nicht übereinstimmt, führt zum Scheitern der Überprüfung – das Protokoll wurde verändert, nachdem der Zeuge es gesehen hat. Es meldet außerdem nach dem Export gesehene Header, vom Zeugen aufgezeichnete Anomalien, fehlgeschlagene Antworten, Zeiträume, deren übereinstimmende Checkpoints in diesem Export vorhanden sind („Bezeugt von X bis Y“) sowie Lücken. Spätere Checkpoints verlängern diese Zeiträume nicht. Das Ergebnis umfasst die Nummer des zuletzt übereinstimmenden Datensatzes und die Anzahl der nachfolgenden Datensätze ohne passenden Checkpoint. Es zählen nur Antworten, die mit dem eigenen Schlüssel des Exports signiert wurden: Ein Export, der mit einem Schlüssel signiert wurde, den der Zeuge nie gesehen hat, wird als nicht bezeugt gemeldet, und ohne `--fingerprint` bleibt dessen Unterzeichner ungebunden. Bei „`--channel`“ muss jeder signierte Beitrag Datensatz für Datensatz mit dem Zeugen-Journal übereinstimmen: Geänderte Beiträge bestehen die Überprüfung nicht, fehlende Beiträge werden aufgelistet. Ein Datum in einem bereitgestellten Telegram-JSON-Export ist bearbeitbare Metadaten, die außerhalb des signierten Zeugen-Tokens liegen. Die Übereinstimmung mit dem Token authentifiziert nicht das Veröffentlichungsdatum; das Ergebnis gibt ausdrücklich an, dass keine Überprüfung des Veröffentlichungszeitpunkts durchgeführt wurde. ### Eine beglaubigte Exportgrenze ist erforderlich Für eine Übergabe, die eine beglaubigte Abschlussaufzeichnung enthalten muss, fügen Sie bitte „`--require-witness`“ hinzu: ``` python verify.py tgwitness-evidence.zip --fingerprint COLLECTOR_SHA256 \ --witness witness.zip --witness-fingerprint WITNESS_SHA256 --require-witness ``` Hierfür sind der unabhängig gespeicherte „Witness“-Fingerabdruck und ein übereinstimmender Checkpoint genau am Ende dieses Exports erforderlich. Ein Checkpoint, der nur ein früheres Präfix abdeckt, ist unzureichend. Unterbrechen Sie die Erfassung, lassen Sie den Zeugen den Endzustand beobachten und führen Sie den Export durch, bevor weitere Einträge in das Protokoll erfolgen; sollte sich das Protokoll ändern, speichern Sie einen weiteren Checkpoint und exportieren Sie diesen Zustand. Ein späterer Prüfpunkt allein kann den endgültigen Hash eines kürzeren Exports nicht verifizieren. Wenn zusätzlich „`--channel`“ angegeben wird, führen fehlende angegebene Beiträge oder ein leerer Übereinstimmungssatz zum Scheitern dieser strengen Prüfung. Ohne dieses Kennzeichen melden gewöhnliche Integritätsprüfungen weiterhin nicht beglaubigte Datensätze, ohne ein ansonsten intaktes Archiv zurückzuweisen. Das Witness-Journal und den darin festgehaltenen Schlüssel getrennt aufbewahren. Online-Prüfungen verifizieren die Kontinuität zwischen den Kontrollpunkten; die Offline-Verifizierung vergleicht jeden gespeicherten Kontrollpunkt mit dem Export. Ältere Heads ohne Kontinuitätsnachweise behalten den Offline-Vergleich bei und werden ohne Online-Kontinuitätsprüfung gemeldet. Der Bericht listet die Ausfallzeiten der Witnesses und fehlgeschlagene Veröffentlichungen nach Zeitintervallen auf. ### Tägliche Siegel und nicht verfügbare Zeitstempelkalender Der Witness versiegelt die Journalgrenze des vorangegangenen UTC-Tages und übermittelt den Hash dieses signierten Siegels an OpenTimestamps. Eine Kalenderübermittlung ist ein ausstehender Nachweis; nur unabhängig überprüfte Bitcoin-Commitments erhalten eine Bestätigung im Verifier. Wenn alle Kalender fehlschlagen, verbleiben das signierte Siegel und der erfolglose Versuch im Protokoll. Der stündliche Wartungsdurchlauf versucht diesen ursprünglichen Datensatz erneut, auch nach einem Neustart oder einer Datumsänderung. Er scannt höchstens 32-Siegel, übermittelt höchstens zwei fehlende Einreichungen und benötigt höchstens 60 Sekunden für Wiederholungsversuche pro Durchlauf. Ein persistenter Cursor durchläuft nacheinander ältere Siegel. Beibehaltene Einreichungen folgen dem bestehenden Proof-Upgrade-Pfad. Ein erneuter Versuch überschreibt das Siegel nicht, ändert weder dessen ursprüngliches Datum noch behauptet er, dass der Kalender es früher empfangen habe. Eine spätere Bitcoin-Bestätigung bleibt eine spätere externe Bestätigung. Fehlende Nachweise bleiben `none`; ausstehende Nachweise bleiben `pending`, bis der Prüfer sie unabhängig überprüft. --- # Telegram · Zeitstempel Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/timestamp/ RFC 3161-Zeitstempel für signierte Checkpoints: Was wird an die Behörde gesendet und wie wird eine Antwort verifiziert? [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) RFC 3161-Zeitstempel für signierte Checkpoints: Was wird an die Behörde gesendet und wie wird eine Antwort verifiziert? [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Beweise und Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) TgWitness erstellt RFC-3161-Anfragen und überprüft die Antworten der Zeitstempel-Behörde (TSA). Bei diesem manuellen Verfahren wird weder eine TSA ausgewählt noch werden Daten übermittelt; der Beweismodus erledigt beides nach einem Zeitplan ([Beweisformat](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#rfc-3161-preparation-and-response-verification-02)). Eine vorbereitete Anfrage stellt **noch keinen Zeitstempel-Nachweis** dar. ## Was die Beweise belegen Ablaufdiagramm · Beobachtungen zu Konten → SHA-256-Kette und Ed25519-Signaturen; SHA-256-Kette und Ed25519-Signaturen → Signierter Kontrollpunkt; Signierter Kontrollpunkt → Exakter Byte-Hash und zufälliger Nonce; Exakter Byte-Hash und zufälliger Nonce → RFC 3161-Anfrage; RFC 3161-Anfrage → Unabhängige TSA; Unabhängige TSA → Signierte Antwort der TSA; Signierter Kontrollpunkt → Daten, Nonce und explizite CA-Vertrauenswürdigkeit überprüfen; Signierte Antwort der TSA → Daten, Nonce und explizite CA-Vertrauenswürdigkeit überprüfen · Beobachtungen zuKonten · SHA-256-Kette undEd25519-Signaturen · SignierterKontrollpunkt · Exakter Byte-Hash undzufälliger Nonce · RFC 3161-Anfrage · Unabhängige TSA · Signierte Antwort derTSA · Daten, Nonce undexpliziteCA-Vertrauenswürdigkeit überprüfen **Diagramm als Text** 1. Beobachtungen zu Konten → SHA-256-Kette und Ed25519-Signaturen 2. SHA-256-Kette und Ed25519-Signaturen → Signierter Kontrollpunkt 3. Signierter Kontrollpunkt → Exakter Byte-Hash und zufälliger Nonce 4. Exakter Byte-Hash und zufälliger Nonce → RFC 3161-Anfrage 5. RFC 3161-Anfrage → Unabhängige TSA 6. Unabhängige TSA → Signierte Antwort der TSA 7. Signierter Kontrollpunkt → Daten, Nonce und explizite CA-Vertrauenswürdigkeit überprüfen 8. Signierte Antwort der TSA → Daten, Nonce und explizite CA-Vertrauenswürdigkeit überprüfen Die Signatur des Erfassers verknüpft die Datensätze mit seinem Schlüssel. Eine vertrauenswürdige TSA-Antwort kann nachweisen, dass ein bestimmter Kontrollpunkt zum von der TSA angegebenen Zeitpunkt existierte. Der Kontrollpunkt kann dann das Protokollpräfix verknüpfen. Dies belegt jedoch weder den Zeitpunkt jeder einzelnen Telegram-Aktion noch die Richtigkeit der erfassten Inhalte. ## Vorgehensweise 1. Bewahren Sie den Fingerabdruck des Sammelschlüssels über einen separaten vertrauenswürdigen Kanal auf. Ein Schlüssel, der ausschließlich aus der untersuchten ZIP-Datei stammt, reicht nicht aus, um den Sammler zu identifizieren. 2. Laden Sie unter **„Exporte“ → „Zeitstempelanfrage vorbereiten“** die ZIP-Datei mit der Anfrage für den ausgewählten Arbeitsbereich herunter. Entpacken Sie die Dateien „`checkpoint.json`“, „`timestamp.tsq`“, „`SHA256SUMS`“ und „`README.txt`“. Ändern Sie die Checkpoint-Bytes nicht. 3. Wählen Sie ein für die Untersuchung geeignetes TSA aus. Senden Sie „`timestamp.tsq`“ gemäß der dokumentierten Methode, zusammen mit „`application/timestamp-query`“ für einen HTTP-Dienst. Speichern Sie die ursprüngliche binäre Antwort als „`timestamp.tsr`“ sowie den Endpunkt, den Abrufzeitpunkt und das Ergebnis der Anfrage. Die Anfrage enthält einen Hash und einen Nonce anstelle von Nachrichten; die Netzwerk-Metadaten geben die Anfrage dennoch preis. 4. Beziehen Sie das vertrauenswürdige Stammzertifikat unabhängig von der Antwort sowie alle erforderlichen Zwischenzertifikate. Ein Zertifikat in der Antwort wird nicht allein dadurch vertrauenswürdig, dass es dort enthalten ist. 5. Überprüfen Sie anhand einer vertrauenswürdigen TgWitness-Installation Folgendes: ``` python -m tgwitness.anchor verify --checkpoint checkpoint.json --request timestamp.tsq --response timestamp.tsr --ca trusted-tsa-root.pem ``` Fügen Sie bei Bedarf `--intermediates tsa-intermediates.pem` oder `--openssl /path/to/openssl` hinzu. OpenSSL muss `ts` unterstützen. Unter Windows durchsucht der Verifizierer zudem die Standard-Git- Installation. OpenSSL 3.5.9 wurde lokal mit einer synthetischen CA/TSA getestet. 1. Exportieren Sie nach dem Checkpoint ein signiertes Protokoll als ZIP-Datei, sodass es dieses Präfix enthält. Überprüfen Sie dies anhand des unabhängig bekannten Fingerabdrucks: ``` python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json ``` 1. Bewahren Sie die ZIP-Datei, den Checkpoint, die Anfrage, die Antwort, die Zertifikatskette, die Verifizierungsergebnisse sowie die Übergabeprotokolle außerhalb des Collectors auf. Wiederholen Sie die Verifizierung bei Erhalt. So erstellen Sie eine Anfrage anhand eines gespeicherten Checkpoints: ``` python -m tgwitness.anchor prepare checkpoint.json --out timestamp-request.zip ``` Bei der Aufbereitung wird das JSON-Format kanonisiert und der entsprechende Checkpoint in das Archiv aufgenommen. Verwenden Sie die **Checkpoint-Bytes aus diesem Archiv** für die TSA-Verifizierung, auch wenn die Eingabedatei abweichende Leerzeichen enthielt. ## Grenzen der Verifizierbarkeit | Überprüfen | Aktuelles Verhalten | | --- | --- | | Daten | Der SHA-256-Hash der exakten Checkpoint-Bytes muss mit der Antwort übereinstimmen. | | Anfrage | Mit „`--request`“ werden die ursprüngliche Abfrage und der Nonce verifiziert | | TSA-Signatur | OpenSSL überprüft die Signatur und die Signaturkette bis hin zur explizit angegebenen Zertifizierungsstelle (CA). | | Signatur des Erfassers | Unabhängig verifiziert durch den Protokollprüfer mit einem festgesteckten Schlüssel | | Widerruf | Kein automatischer Abruf von OCSP/CRL | | Langfristige Gültigkeit | Keine Archivvalidierung nach Ablauf des Zertifikats | | Geplante Einreichung | Beweismodus, standardmäßig deaktiviert | `--request` ist technisch gesehen optional, doch wird durch dessen Weglassen die Überprüfung des ursprünglichen Nonce verhindert. Für diesen vollständigen Vorgang muss das Ergebnis `request_checked` wahr sein. Die Zertifikatsüberprüfung erfolgt gemäß den Regeln und der Überprüfungsdauer des installierten OpenSSL. Die langfristige Aufbewahrung erfordert eine separate Richtlinie für Zertifikate und Widerrufsnachweise. Eine gültige kryptografische Signatur ist nicht automatisch ein qualifizierter Zeitstempel oder eine Feststellung der rechtlichen Zulässigkeit. Sollte ein Betreiber Beobachtungen vor dem Zeitstempeln gefälscht haben, verankert die TSA diese Bytes; sie bestätigt jedoch nicht deren Wahrheitsgehalt. ## Übergabeprotokoll Erfassen Sie die Fall-ID, den Absender und den Empfänger, den UTC-Zeitpunkt der Übertragung und deren Quelle, den Zweck, Dateinamen/SHA-256-Werte, den Fingerabdruck des Erfassers, den Sequenzbereich, bekannte Lücken, die Version des Verifizierers und das Verifizierungsergebnis. Signieren Sie diese Aufzeichnung und bewahren Sie sie unabhängig im Rahmen der Prozesse Ihrer Organisation auf. Ein System zur Aufbewahrung von Aufzeichnungen durch mehrere Benutzer ist in TgWitness nicht implementiert. Während der Entwicklung wurde keine unabhängige Live-TSA kontaktiert. Bei lokalen Tests wird eine synthetische CA/TSA erstellt, um die Kompatibilität sowie die Ablehnung geänderter Daten, Nonces oder CAs zu überprüfen. --- # Telegram · Speicherung und Wiederherstellung Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/ Backups, das Verschieben älterer Dateien in Ihre Cloud, Kopien unter „Object Lock“ und die Wiederherstellung auf einem neuen Rechner. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Backups, das Verschieben älterer Dateien in Ihre Cloud, Kopien unter „Object Lock“ und die Wiederherstellung auf einem neuen Rechner. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) Das Panel unterteilt drei Aufgaben: | Aufgabe | Funktionsweise | | --- | --- | | Erstellen Sie ein Backup | Kopieren Sie das signierte Protokoll, die Checkpoints, die gesicherten Dateien und die in der Warteschlange befindlichen Exporte in das konfigurierte S3-Ziel. | | Kostenloser lokaler Speicherplatz | Kopieren Sie ausgewählte ältere Anhänge auf S3 oder einen rclone-Cloud-Remote, lesen Sie sie vollständig wieder ein, überprüfen Sie die verschlüsselten Bytes und entfernen Sie anschließend die verifizierte lokale Kopie. | | Bewahren Sie eine Kopie als Beweismittel auf | Konfigurieren Sie „S3 Object Lock“ und überprüfen Sie den zurückgegebenen Aufbewahrungsstatus. Der Dienst muss den angeforderten Modus und das Datum bestätigen. | Beim Freigeben von Speicherplatz wird das signierte Protokoll niemals gelöscht oder überschrieben. Jeder Anhang behält sein ursprüngliches SHA-256 und eine Wiederherstellungsbestätigung. Eine optionale gzip-Komprimierung erfolgt vor der authentifizierten Verschlüsselung. Cloud-Dateinamen enthalten keine Telegram-Namen, Chat-IDs oder ursprünglichen Anhangsnamen. Ein Anhang darf bis zu 32 GiB groß sein. Eine Upload-Antwort allein ist keine Erlaubnis zum Löschen einer Datei. TgWitness lädt das vollständige verschlüsselte Objekt herunter, überprüft dessen Größe und SHA-256, speichert die Quittung und überprüft die lokalen Bytes unmittelbar vor dem Löschen erneut. Bei einem fehlgeschlagenen Upload, einer abweichenden Rücklesung oder einer abgebrochenen Übertragung bleibt die lokale Datei erhalten. Falls eine aktivierte Beweissicherung diese Datei noch nicht kopiert hat, wird auch das Löschen darauf gewartet. **Auf dieser Seite** - [Wenn der Speicherplatz knapp wird](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#when-the-disk-is-filling-up) - [Ein Ziel verbinden](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#connect-a-destination) - [Die Wiederherstellungsdatei beibehalten](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#keep-the-recovery-file) - [Wiederherstellung nach Verlust der Installation](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#recover-after-losing-the-installation) - [Operator-Bot und Abschlussbenachrichtigungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/storage/#operator-bot-and-completion-notices) ## Wenn der Datenträger voll wird Downloads von Anhängen pausieren unter dem Wert für **Parameter → Anhänge → freier Speicherplatz** (standardmäßig 1 GiB); die Warteschlange bleibt erhalten. Textbeobachtungen laufen weiter. Dies ist unabhängig von Benachrichtigungen: Ihr Abschalten deaktiviert weder die Downloadreserve noch die Speicherschutzprüfungen. Für einen früheren Eingriff aktivieren Sie **Automatisch ausführen**, wählen **Lokale Datei zum Freigeben von Speicherplatz entfernen** und aktivieren **Zusätzliche Auslagerung bei wenig Speicherplatz starten**. Standardmäßig beginnt diese optionale Regel unter 5120 MiB freiem Speicher und arbeitet in Stapeln, bis 10240 MiB frei sind. Beide Schwellen sind einstellbar. Ziel, Mindestalter, Stapellimit, vollständige Rückleseprüfung und Voraussetzungen zur Beweissicherung entsprechen einem manuellen Lauf. Die Regel aktiviert niemals selbst ein Ziel. Prüfungen erfolgen alle 30 Sekunden; Fehler oder fehlender Fortschritt verschieben den nächsten Versuch um fünf Minuten. Zustand und Wiederholungszeit bleiben nach einem Neustart erhalten. Bei inaktiver Regel nutzen geplante Läufe ihr normales Intervall. Das Panel zeigt freien Speicher, die Verpackungsreserve, die Bereitschaft der Regel und wegen fehlenden temporären Speichers übersprungene Dateien. Verpacken und Wiederherstellen prüfen vor Beginn ihren maximalen temporären Platzbedarf und während des Schreibens den verfügbaren Speicher. Es gilt die konfigurierte Downloadreserve, für Speichervorgänge jedoch mindestens 64 MiB. Das ist keine Dateisystemquote: Andere Prozesse können zwischen den Prüfungen Speicher verbrauchen. Gzip komprimiert entfernte Objekte verlustfrei; es verkleinert weder das aktive Journal noch erstellt es lokale Archive. JPEG-, Video- und ZIP-Dateien werden eventuell kaum kleiner oder etwas größer. Mit Komprimierung kann das Verpacken vorübergehend etwa die doppelte Anhanggröße plus Reserve benötigen. Wählen Sie die Startschwelle früh genug für Ihre größten Dateien. Zu große Dateien bleiben erhalten und werden gemeldet; kleinere Dateien und bereits geprüfte entfernte Kopien können weiterhin Platz schaffen. Eine geprüfte Kopie erlaubt das Entfernen der lokalen Datei ohne eine weitere Verpackungsdatei. Auch die Wiederherstellung braucht temporären Speicher und kann bis zu dessen Verfügbarkeit abgelehnt werden. Ohne geeignete verschiebbare Dateien oder konfiguriertes Ziel kann TgWitness nicht automatisch Speicher freigeben. Die Speicherverwaltung kürzt oder überschreibt das signierte Journal niemals. Es benötigt weiterhin Platz für neue Textbeobachtungen. ## Ein Ziel verbinden Wählen Sie unter **„Extras“ → „Speicher & Speicherplatz“ → „Speicher verwalten**“ die Aufgabe und das Ziel aus, speichern Sie diese und wählen Sie anschließend **„Upload und Download testen**“. Der Test lädt eine kleine zufällige Testdatei hoch und liest sie wieder ein. Dabei werden keine Telegram-Inhalte verwendet. Verwenden Sie für S3 den tatsächlichen Endpunkt, die Region und den Bucket des Anbieters. Wasabi, Backblaze, Cloudflare R2 und andere kompatible Dienste verwenden dieselben S3-Einstellungen. Eine kompatible API allein bedeutet nicht, dass Object Lock unterstützt wird. Im Governance-Modus kann ein autorisierter Administrator die Aufbewahrungsfrist möglicherweise umgehen; der Compliance-Modus unterliegt anderen Einschränkungen. Lesen Sie den zurückgegebenen Object-Lock-Status, bevor Sie sich auf die Aufbewahrungsfrist verlassen. Für ein rclone-Ziel erstellen Sie mithilfe der Provider-Einrichtung von rclone einen Remote und fügen Sie den Abschnitt dieses Remotes `[name]` Abschnitt dieses Remotes in das Bedienfeld ein. Der installierte Helfer unterstützt MEGA, Google Drive, OneDrive, Dropbox, Box, pCloud und die anderen in der Auswahlliste angezeigten Anbieter. Anmeldedaten werden im verschlüsselten Tresor dieses Arbeitsbereichs gespeichert. OAuth- Aktualisierungen werden wieder im Tresor gespeichert. Anmeldedaten werden nicht zu Journal- Ereignissen hinzugefügt oder in Wiederherstellungs-Downloads einbezogen. Der Helper wird innerhalb des Arbeitsbereichs installiert, mit einer angehefteten Version und SHA-256. Er wird nicht zum System-PATH hinzugefügt. Konfigurations- und Arbeitsdateien sind temporäre Dateien innerhalb dieses Arbeitsbereichs. Befehlsbasierte und lokale Dateiremotes werden abgelehnt. rclone erfordert derzeit eine explizit ausgewählte **„Direct**“-Route für externe Anfragen. Verwenden Sie nativen S3-Speicher für eine SOCKS5- oder HTTP-Route des Arbeitsbereichs; rclone umgeht eine nicht verfügbare Route nicht stillschweigend. ## Bewahre die Wiederherstellungsdatei auf Wählen Sie nach dem Kopieren der Dateien **Wiederherstellungsdatei speichern** aus und bewahren Sie diese Datei an einem Ort auf, der von der Installation getrennt ist. Sie enthält den Entschlüsselungsschlüssel und signierte Objektbelege, behandeln Sie sie daher wie ein Backup eines privaten Schlüssels. Bewahren Sie die ursprüngliche Remote-Konfiguration und die Ziel-Anmeldedaten ebenfalls separat auf. Eine vor einer späteren Kopie erstellte Wiederherstellungsdatei enthält nicht den Beleg dieser späteren Datei. Der Fingerabdruck des Signaturschlüssels sollte bereits separat gespeichert worden sein. Eine Signatur, die nur anhand des in derselben Datei enthaltenen Schlüssels überprüft wird, liefert keinen Hinweis darauf, wem die Wiederherstellungsdatei gehört. Um fehlende Speicherbelege in einem bestehenden Arbeitsbereich wiederherzustellen, öffnen Sie **„Dateien wiederherstellen aus einer gespeicherten Wiederherstellungsdatei“** und wählen Sie die Datei aus. Das Fenster überprüft die Signatur und verlangt denselben Signaturschlüssel des Arbeitsbereichs. Es lehnt es ab, einen anderen Speicherschlüssel zu ersetzen. Wählen Sie anschließend **„Alle Dateien wiederherstellen**“. Die Wiederherstellung pausiert die automatische Speicherregel, sodass der nächste geplante Durchlauf die wiederhergestellten Dateien nicht sofort wieder entfernen kann. Aktivieren Sie die Regel wieder, wenn Sie mit den lokalen Kopien fertig sind. Bei der Wiederherstellung wird der Chiffretext überprüft, die Entschlüsselung authentifiziert, bei Bedarf dekomprimiert und der ursprüngliche Klartext SHA-256 überprüft, bevor eine Datei in `media/`. Ein beschädigtes Remote-Objekt ersetzt niemals eine lokale Datei. Eine vorhandene lokale Datei mit abweichenden Bytes wird zur Überprüfung beibehalten und nicht überschrieben. ## Wiederherstellung nach Verlust der Installation Installieren Sie TgWitness auf einem anderen Rechner. Verwenden Sie die private Wiederherstellungsdatei, den separat gespeicherten Fingerabdruck und die ursprünglichen Anmeldedaten für das Zielkonto: ``` python -m tgwitness.storage recover \ --recovery storage-recovery.json \ --fingerprint TRUSTED_WORKSPACE_SHA256 \ --credentials original-rclone.conf \ --output recovered-attachments ``` Für S3 `--credentials` verweist auf eine private JSON-Datei mit `access_key` und `secret_key`; die signierte Wiederherstellungsdatei liefert die Zieleinstellungen. Der Befehl nutzt eine direkte externe Verbindung und lädt den angehefteten Helper herunter, wenn ein rclone-Remote ihn benötigt. Er lehnt ein bereits vorhandenes Ausgabeverzeichnis ab. Wiederhergestellte Original-Bytes werden in `recovered-attachments/media/`, benannt nach ihrer SHA-256. `recovery-log.jsonl` ist ein unsignierter Datensatz der Wiederherstellungsvorgänge. Der Befehl stellt ein verlorenes signiertes Journal oder dessen Signaturschlüssel nicht wieder her. Bewahren Sie hierfür eine vollständige Arbeitsbereichssicherung auf. Eine Speicherwiederherstellungsdatei ist keine vollständige Arbeitsbereichssicherung . ## Operator-Bot und Benachrichtigungen bei Fertigstellung Der Telegram-Bot gehört dem Betreiber. Erstellen Sie ihn über BotFather und legen Sie im Kontrollfeld sein Token, den Ziel-Chat sowie die ausdrücklich zugelassenen Telegram-Benutzer-IDs fest. Sowohl der Absender als auch der Chat müssen übereinstimmen. Weitergeleitete Nachrichten und Befehle von anderen Bots werden ignoriert. `/status` und `/stats` sind im standardmäßigen „Nur-Status“-Modus verfügbar. Der optionale Steuerungsmodus fügt `/pause`, `/resume` und `/copy`. `/copy` fordert die konfigurierte Speicheraufgabe an; dies bedeutet nicht, dass ein Remote-Upload bereits abgeschlossen ist. Befehle können keine beliebigen URLs, Dateien oder Shell-Programme übergeben. Verwenden Sie die separaten Benachrichtigungseinstellungen für Warnmeldungen und den Abschluss von Aufgaben. Abschlussbenachrichtigungen unterscheiden einen Kontoexport mit Lücken von einem vollständigen Export und zeigen den Verlauf sowie die Speicherzahlen an. Nachrichtenauszüge werden nur dann einbezogen, wenn dies separat in den Benachrichtigungseinstellungen aktiviert wurde. Die Dienstauswahl wird aus dem tatsächlich installierten Apprise-Katalog generiert und nicht aus einer festen Auswahl an Anbieterbeispielen. --- # Telegram · Sicherheit und Datenumgang Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/security/ Bedrohungsmodell, Zugriffsmodell, gespeicherte vertrauliche Daten, Netzwerkexposition, Import von Sitzungen und Anleitung zur Meldung einer Sicherheitslücke. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Bedrohungsmodell, Zugriffsmodell, gespeicherte vertrauliche Daten, Netzwerkexposition, Import von Sitzungen und Anleitung zur Meldung einer Sicherheitslücke. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/de/docs/reference/deployment/) ![Bereitstellung und Wiederherstellung](https://phishdestroy.github.io/TgWitness/assets/chapter-operate.svg) Diese Seite beschreibt den Zugriff, die Speicherung und den Netzwerkschutz in einem lokalen oder Server-Arbeitsbereich. Informationen zur Datenerfassung auf einem GitHub-Runner oder in einer vertraulichen Intel-TDX-VM finden Sie unter den [-Verifizierungsmodi](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope), die zusätzliche Prüfungen der Erfassungsumgebung beinhalten. Kontoverbindungen, Benachrichtigungen, Zeitstempel, externe Kopien und Zeugen verfügen über eigene Routing-Einstellungen. | Bereich | Kurz gesagt | | --- | --- | | Zugriff | Administratorschlüssel sowie bereichsbezogener Zugriff auf Konten/Chats, sieben Berechtigungsstufen und widerrufbare Sitzungen; standardmäßig „localhost“ | | Gespeicherte Geheimnisse | Sitzung, API-Paar, Signaturschlüssel und Proxy-Einstellungen werden mit Fernet verschlüsselt | | Nachrichten und Medien | Unverschlüsselt gespeichert: Verwenden Sie Festplattenverschlüsselung und strenge Zugriffsrechte | | Integrität | SHA-256-Hash-Kette und eine Ed25519-Signatur für jeden Datensatz | | Lokale Vertrauensgrenze | Der Host-Administrator verwaltet den Arbeitsbereich und dessen Signaturschlüssel; unabhängige Kontrollpunkte bewahren eine frühere Journalgrenze. | Informationen zu Sicherheitslücken finden Sie in der [Sicherheitsrichtlinie](https://github.com/phishdestroy/TgWitness/blob/main/.github/SECURITY.md). **Auf dieser Seite** - [Zugriffsmodell](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#access-model) - [Inhalt des Panels und Exporte](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#panel-content-and-exports) - [Gespeicherte Geheimnisse](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#secrets-at-rest) - [Proxys und Netzwerkwege](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#proxies-and-network-routes) - [Anmeldung und Import von Sitzungen](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#sign-in-and-session-imports) - [Protokolle und Transport](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#logs-and-transport) - [Integritätsgrenzen](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#integrity-limits) - [Wenn Sie ein Problem vermuten](https://phishdestroy.github.io/TgWitness/de/docs/reference/security/#if-you-suspect-a-problem) ## Zugriffsmodell Das Haupt-Panel-Token gewährt volle Kontrolle. Andere Personen können einen eigenen, [begrenzten Zugriff](https://phishdestroy.github.io/TgWitness/de/docs/reference/access/) erhalten: ausgewählte Arbeitsbereiche und Chats, Berechtigungen, Ablaufdaten, IP-Einschränkungen, Anmeldebeschränkungen und widerrufbare Sitzungen. Ein auf Chats beschränkter Zugriff kann keine arbeitsbereichsweiten Vorgänge ausführen, selbst wenn die entsprechende Berechtigung aktiviert ist. Arbeitsbereiche nutzen denselben Prozess und isolieren Daten nicht vom Host-Administrator. Das Panel lauscht standardmäßig auf „localhost“. Bei der Anmeldung über den Browser wird ein Zugriffstoken gegen eine Sitzungsberechtigung ausgetauscht; der Browser sendet diese als „Bearer-Token“. Es wird in „sessionStorage“ statt in einem Authentifizierungs-Cookie gespeichert. Durch Sperren oder Abmelden wird die Browsersitzung gelöscht. Das Schließen des Browsers oder das Beenden einer Sitzung unterbricht die Erfassung nicht. Ausgegebene Tokens und Sitzungszugangsdaten werden als Hashes im verschlüsselten Tresor gespeichert. Eine Sperrung beendet die zugehörigen Sitzungen; Änderungen der Berechtigungen wirken sich auf nachfolgende Anfragen aus. Heruntergeladene Dateien können nicht zurückgerufen werden. Der Administrator kann auch seine eigenen Browsersitzungen einschränken, jedoch behalten Skripte, die das Token des Hauptpanels direkt verwenden, den vollen Zugriff und umgehen diese Browsersitzungsbeschränkungen. Fehlgeschlagene Authentifizierungsversuche werden anhand der Client-Adresse rate-begrenzt. Bei IP-Einschränkungen wird die von der Anwendung erkannte Adresse herangezogen; überprüfen Sie das Verhalten des Reverse-Proxys, bevor Sie sich darauf verlassen. Die Anmeldedaten von Witness bleiben separate, schreibgeschützte Checkpoint-/Zustandsdaten. ### Zugang zur Demo `/api/demo-access` ist ein bewusst nicht authentifizierter Bootstrap für eine explizit gestartete, isolierte synthetische Demo. Er vergibt eine separate, auf die Prozesslaufzeit begrenzte Berechtigung, niemals das echte Panel-Token oder eine TGWITNESS_TOKEN-Überschreibung. Die Ausstellung und Nutzung erfordern einen Loopback-Peer und einen Host, keine weitergeleiteten Header und keine Cross-Origin-Anfrage. Zusätzliche Arbeitsbereiche oder eine autorisierte Sitzung deaktivieren diesen Pfad. Live-Arbeitsbereiche stellen die Berechtigung niemals aus. Die Demo kann keine Konten verbinden oder Erfassungseinstellungen ändern. ## Inhalt der Übersichtsansicht und Exporte Das Panel verwendet keine externen Schriftarten, Analysetools, CDN-Ressourcen oder eingebettete Remote-Medien. Aus Telegram stammende Texte werden als Text und nicht als HTML eingefügt. Heruntergeladene Anhänge werden als binäre Anhänge bereitgestellt. JSONL-Exporte bewahren die ursprünglichen Zeichenfolgen bei; HTML führt ein Escape-Zeichen für diese ein; CSV-Zellen, die zu Formeln werden könnten, werden mit einem Apostroph vorangestellt. Die Exporte schließen Authentifizierungs- und Signaturschlüssel aus, enthalten jedoch bewusst gesammelte Quellmetadaten, Identifikatoren sowie möglicherweise persönliche oder sensible Inhalte. Telegram-Zugriffshashes und Dateiverweise können in den Rohdaten der Quellmetadaten vorkommen. ## Gespeicherte Geheimnisse Die Anmeldedaten für die Telegram-API, die Sitzung und der Signaturschlüssel werden mit Fernet verschlüsselt. Für lokale Nachrichten und Medien erfolgt die Verschlüsselung durch die Festplatte oder das Volume des Hosts; im Arbeitsbereich werden gewöhnliche Dateien gespeichert. Exporte können in einem passwortgeschützten AES-256-ZIP-Archiv erfolgen, und externe Kopien verwenden AES-256-GCM. Der Tresorschlüssel verweist standardmäßig auf das Verzeichnis für geschützte Daten. Verwenden Sie eine externe Hauptschlüsseldatei (siehe unten), um ihn separat zu speichern. Unter Unix verwenden neue Dateien für private Schlüssel den Modus 0600 und neue Datenverzeichnisse den Modus 0700; unter Windows legen Sie die Verzeichnis-ACL für das Dienstkonto und autorisierte Administratoren fest. Bestehende Verzeichnisberechtigungen bleiben erhalten. ### Externer Hauptschlüssel Für ein neues Datenverzeichnis kann TGWITNESS_VAULT_KEY_FILE einen externen zufälligen Hauptschlüssel bereitstellen. HKDF-SHA256 und ein separates zufälliges Salt leiten für jeden Arbeitsbereich einen anderen Fernet-Schlüssel ab. Die Datei vault.external.json muss zur Wiederherstellung beibehalten werden. Fehlende oder falsche Hauptschlüssel führen zu einem Fehler closed. Vorhandene lokale Tresore werden nicht stillschweigend migriert. Das Bedienfeld zeigt den ausgewählten Schlüsselspeichermodus an. Die Festplattenverschlüsselung schützt die lokalen Nachrichten- und Mediendateien in beiden Modi; siehe „ [-Verbindung“ und „Datenschutz](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/)“ für Details zur Einrichtung. ## Proxys und Netzwerkwege Die Proxy-Konfiguration wird im Tresor verschlüsselt gespeichert. Passwörter und MTProxy-Geheimnisse werden weder von der API zurückgegeben noch in die Beweisdokumente geschrieben. Jeder Arbeitsbereich wählt seine eigene Telegram-Route und einen [IP-Modus](https://phishdestroy.github.io/TgWitness/de/docs/reference/connection/#ip-modes) aus. **Die Option „Adresse verbergen“** unterbindet den direkten Telegram-Fallback und erfordert einen Proxy für externe HTTP-Anfragen. Der explizit ausgewählte Fallback-Modus erlaubt den direkten Zugriff auf Telegram nach einer Verzögerung; der Tunnel-/VPN-Modus erlaubt direkte Verbindungen. Die Auswahl des Tunnelmodus führt weder zur Installation noch zur Überprüfung eines VPNs. Diese Einstellungen haben keinen Einfluss auf den gesamten Datenverkehr des Computers, Browser, Paketmanager oder die DNS-Auflösung durch einen lokal gehosteten Proxy. MTProxy leitet ausschließlich Telegram-Datenverkehr weiter. Externe Anfragen können einen separaten SOCKS5/HTTP-Proxy, die SOCKS5/HTTP-Route des Arbeitsbereichs oder eine zugelassene direkte Route nutzen; sie können auch deaktiviert werden. Der unabhängige Witness verfügt über eigene Transporteinstellungen. Die gewöhnliche SOCKS5/HTTP-CONNECT-Authentifizierung wird durch diese Proxy-Protokolle selbst nicht verschlüsselt. Gefälschte TLS-MTProxy-Geheimnisse werden weiterhin nicht unterstützt. ## Anmeldung und Import von Sitzungsdaten Konvertierte .tgwitness-session-Dateien enthalten ein Autorisierungsgeheimnis im Klartext, bis sie geladen und im Tresor gespeichert werden. Die Offline-Befehlszeilenschnittstelle akzeptiert geprüfte Telethon-Schemas. Der Panel-Import akzeptiert zusätzlich Pyrogram SQLite, moderne TData-ZIP-Dateien für Einzelkonten sowie dokumentierte JSON-Eingaben. Er ist authentifiziert, auf vier Dateien bzw. 8 MiB begrenzt und verarbeitet Uploads im Arbeitsspeicher, ohne das Archiv zu entpacken oder Originaldateien zu speichern. Normalisierte Anmeldedaten werden ausschließlich an den anfragenden, authentifizierten Browser zurückgegeben; sie werden nach erfolgreicher Telegram-Autorisierung im verschlüsselten Tresor gespeichert. Schützen Sie Original- und konvertierte Dateien und verhindern Sie, dass mehrere Clients gleichzeitig eine Autorisierung klonen. Die Datenverarbeitung überprüft Container-Prüfsummen, lokale Entschlüsselungs-Hashes und Strukturlängen. Ein bereitgestellter lokaler Desktop-Zugangscode wird vorübergehend verwendet und nicht gespeichert. Dieser begrenzte Parser stellt nicht sicher, dass jede Desktop-Version kompatibel ist. QR-Bilder werden lokal generiert, enthalten kurzlebige Telegram-Anmeldetoken und werden niemals an einen externen Rendering-Dienst gesendet. Sperren, Wechsel des Arbeitsbereichs, neue Anmeldung sowie Routenänderungen brechen ausstehende QR-Versuche ab. Das Neuladen oder Schließen eines Tabs kann dazu führen, dass ein Versuch bis zum Ablauf ausstehend bleibt. Eine erfolgreiche QR-Anmeldung erzwingt weiterhin die Kontoverbindung. Gewöhnliche API-Payloads bleiben auf 16 KiB begrenzt; die authentifizierte Import-Route akzeptiert bis zu 12 MiB kodiertes JSON, wobei die geringere Obergrenze für dekodierte Dateien separat durchgesetzt wird. Anmeldedaten und Passwörter für die zweistufige Verifizierung bei Telegram werden nicht dauerhaft gespeichert. Der Status der Telefonnummer bzw. des Code-Hashes wird während der Autorisierung im Arbeitsspeicher gehalten. Der Zugriff auf das Konto erfolgt über Telegram-Sitzungen; laden Sie niemals ein Datenverzeichnis, eine Sitzung, ein Token, einen Tresorschlüssel oder einen privaten Signaturschlüssel auf GitHub hoch. ## Protokolle und Übertragung Die standardmäßige API-Validierungsantwort wird ersetzt, sodass keine Anmeldeinformationen wiedergegeben werden. Die Protokollierung des Anwendungszugriffs ist deaktiviert. Konfigurieren Sie keinen Reverse-Proxy zur Protokollierung von Autorisierungs-Headern oder Request-Bodies. HTTP überträgt Tokens und Anmelde- Geheimnisse im Klartext: Verwenden Sie HTTPS oder einen SSH-Tunnel, sobald eine Verbindung über „localhost“ hinausgeht. ## Integritätsgrenzen Bei der lokalen Verifizierung werden Datensatzsignaturen, die Hash-Kette, Anhänge und das Exportmanifest überprüft. Der Administrator verfügt über den lokalen Signaturschlüssel und kann ein weiteres signiertes Journal erstellen; ein unabhängig aufbewahrter Checkpoint erkennt das Ersetzen des von ihm abgedeckten Präfixes. Bewahren Sie den Schlüssel-Fingerabdruck und die Checkpoints beim Empfänger oder bei einem unabhängigen Zeugen auf. Für eine unabhängig überprüfte Erfassung wählen Sie [GitHub Actions Capture](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md) oder [Intel TDX Deployment](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/#confidential-vm-on-phala-cloud-intel-tdx). Deren Verifizierer überprüfen zusätzlich zur Archivintegrität die Herkunft des Workflows oder Hardware-Messungen. Optionale Zeitstempel und verschlüsselte externe Kopien bieten Zeitanker und wiederherstellbare Kopien; das [Evidence-Format](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/#verification-scope) beschreibt die Prüfungen für jeden Modus. ## Sollten Sie ein Problem vermuten Behalten Sie das ursprüngliche Datenverzeichnis bei und verwenden Sie eine separate Kopie für die Analyse. Melden Sie die betroffene Version, den Vorgang und die reproduzierbaren Schritte gemäß der [Sicherheitsrichtlinie](https://github.com/phishdestroy/TgWitness/blob/main/.github/SECURITY.md) und behandeln Sie dabei Kontodaten und Anmeldedaten vertraulich. --- # Architektur Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/architecture/ Bestandteile des Collectors, des Panels, des Journals, der Worker und des Witness sowie der Datenfluss zwischen diesen Komponenten. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Bestandteile des Collectors, des Panels, des Journals, der Worker und des Witness sowie der Datenfluss zwischen diesen Komponenten. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Entwicklung](https://phishdestroy.github.io/TgWitness/assets/chapter-develop.svg) Ein Python-Prozess hostet das FastAPI-Panel und eine beliebige Anzahl isolierter Arbeitsbereiche, jeweils mit einem Telethon-Benutzerkonto-Client. SQLite verwaltet ein signiertes Ereignisprotokoll, das nur angehängt werden kann, sowie veränderbare Betriebseinstellungen. Ein verschlüsselter Tresor enthält die API-Anmeldedaten, die „StringSession“ und den Signaturschlüssel. Das Frontend besteht aus einem einfachen HTML/CSS/JavaScript-Paket: Es sind weder ein Node-Build noch CDNs oder Frontend-Downloads zur Laufzeit erforderlich. Optional browser and AyuGram recorders run in **separate processes or containers**. The `tgwitness_capture` package owns their event format, keys, artifacts, checkpoint API, independent witness and standalone verifier. It is bundled in the main wheel and can also be installed alone from `addons/capture`, without importing the collector. The main panel's `capture_api.py` and `capture_connections.py` provide administrator-only, workspace-scoped controls under `/api/capture`; connection tokens live in the encrypted vault. No recorder or outbound request starts with the main process. Each explicit command verifies a fresh challenge against the pinned recorder key. Exports are verified before download and keep their original signature; they do not become Telegram message events. Collection sessions and proxy routes stay with each client. See the English [Independent capture guide](https://github.com/phishdestroy/TgWitness/blob/main/docs/OPTIONAL-CAPTURE.md) for deployment and trust boundaries. | Modul | Verantwortung | | --- | --- | | collector.py | Autorisierung, Dialogauswahl, Aktualisierungen, Momentaufnahmen, Medienwarteschlange, Verbindungsüberwachung | | interactions.py / telegram_client.py | Eindeutig definierte Panel-Aktionen, signierte Empfangsbestätigungen, persistente Anfrage-IDs und eine aufgabenbezogene Richtlinie für Rückrufe und erneute Teilnahmesuche | | message_content.py | Vergleich der beobachtbaren Nachrichten unter Ausschluss von Metadaten zum Transportzugriff | | workers.py | Warten Sie auf die Mitarbeiter, die die Exportdateien bearbeiten, bevor Sie die Bereinigung nach der Stornierung durchführen | | distributed_export.py / distributed_pages.py | Parallele Chat-Aufträge, Kontingente pro Konto, signierte Checkpoints und Bereinigung nach der Archivüberprüfung | | distributed_takeout.py / export_timing.py | Wieder aufnehmbare Takeout-Sitzungen und Zeitangaben für jeden Start oder jede Wiederaufnahme | | store.py | WAL-Transaktionen, geordnete Ereigniskette, Abfragefilter, Betriebseinstellungen | | fulltext.py | Abgeleiteter Volltextindex (Wortformen, BM25), der an den Kopf des signierten Protokolls gebunden ist; wird niemals exportiert | | security.py | Erstellung privater Dateien, verschlüsselter Tresor, Ed25519-Signatur, Einzelprozess-Sperre | | evidence.py | Export des vollständigen Protokolls, Derivate, Kontrollpunkte, Überprüfung von Anhängen | | verify.py | Eigenständiges, schreibgeschütztes Verifizierungsprogramm (stdlib + Kryptografie): Archive, Erfassungsbereich, Witness-Protokolle und Kanalbeiträge, Profildateien | | app.py | Authentifizierte API, Lebenszyklus, Validierung von Anfragen, statisches Panel | | profiles.py | Erfassung über mehrere Konten, gemeinsame Zugriffskontrolle, Lebenszyklus pro Arbeitsbereich | | access.py | Umfangbegrenzte Lizenzen, Berechtigungsprüfungen, IP-Einschränkungen, Sitzungslimits und Administratorkonsole | | proxy_catalog.py | Momentaufnahmen öffentlicher Feeds, Transportprüfungen, gemeinsamer Proxy-Pool und zustandsbasierte Auswahl | | provenance.py | Signierte Identitäts-, Code- und Abhängigkeitsmessungen während des Erfassungsvorgangs | | network.py | Validierte Routen pro Arbeitsbereich; redigierter Status und Beweismaterial; Telethon-Übertragungsoptionen | | sessions.py | Offline-Konvertierung der geprüften Telethon-SQLite-Schemas in einen schreibgeschützten Modus | | account_import.py | In-Memory-Erkennung und Normalisierung von unterstützten Kontodateien und JSON-Dateien | | tdata.py | Begrenzter, moderner TData-ZIP-Reader, Überprüfung von Prüfsummen und Entschlüsselung, keine Extraktion | | doctor.py | Lokale Bereitschaftsprüfungen ohne Datenerfassung, Anmeldung oder Paketinstallation | | download.py | Authentifizierter Streaming-Export zum Herunterladen mit begrenzten Lesezugriffen und ohne Überschreibungen | | monitoring.py | Validierte Ereignisrichtlinien pro Arbeitsbereich und Regeln für Anhänge nach Typ, gemeinsam genutzt von Bearbeitern, Statusangaben und signierten Empfangsbestätigungen | | scope.py | Überwachungsumfang (ausgewählte Chats, Telegram-Ordner, gesamtes Konto), Quelltypen, Ausschlüsse, Stufen der Nachprüfung | | dossier.py | Aus gespeicherten Datensätzen erstellte Personenprofile pro Chat: Fakten mit Verweisen auf die Datensätze, SHA-256/pHash des Avatars, Extraktion von Erwähnungen | | witness_api.py | Schreibgeschützte Witness-Token und der signierte Protokollkopf, den diese abrufen können | | witness.py | Unabhängiger Zeugenprozess: eigener Schlüssel und eigenes Protokoll, Kopfprüfungen, signierte Kanalbeiträge, Export | | alerts.py | Apprise-Benachrichtigungen und die Benachrichtigungsliste des Panels | | logging_config.py | Konsolenprotokollierung und rotierende Serverdiagnose für fensterlose Starts | | static/ | Responsive Benutzeroberfläche, lokaler Zugriff, Filter, Details, Exporte, Kontoeinrichtung | | demo.py | Deutlich als synthetisches Protokoll gekennzeichnet, getrennt von der tatsächlichen Datenerfassung | Beobachtungshandler werden vor der Verbindung registriert. Die Live-Erfassung wird durch die aktive Client-Identität, den expliziten Ausführungsstatus, aktivierte Quellen oder den Beobachtungsumfang (im Ordner- oder Gesamtkonto-Modus wird ein neuer Chat bei seiner ersten Aktualisierung als Quelle hinzugefügt) sowie die Ereignisrichtlinie gesteuert. Abgelehnte und ersetzte Clients können keine Live-Aktualisierungen beitragen. Unverarbeitete Reaktionen und Aktualisierungen der Mitgliedschaft wahren die Sichtbarkeitsgrenzen ein. Der Inhalt eingehender Nachrichten und der zugehörige dauerhafte Medienauftrag werden gemeinsam festgeschrieben. Aufträge bewahren den ursprünglichen TL-Deskriptor und verknüpfen dessen Hash mit der signierten Nachrichtenbeobachtung. Die Semantik von Absender, Bearbeiter und Löschendem wird getrennt behandelt. Jeder Arbeitsbereich akzeptiert ein Konto und verfügt über ein eigenes Verzeichnis sowie eine eigene Signaturidentität. Der Hauptarbeitsbereich verbleibt aus Kompatibilitätsgründen im Stammverzeichnis; zusätzliche Arbeitsbereiche befinden sich unter profiles//. Ein Bearer-Token steuert die gesamte Installation; Arbeitsbereiche sind keine separaten Autorisierungsmandanten. Prozesssperren schützen die Verzeichnisse; Datenbanksperren serialisieren das Einfügen von Ereignissen. Jeder Nachtrag wird synchron in das SQLite-WAL im vollsynchronen Modus geschrieben. Trigger für die Aktualisierung/Löschung von Ereignissen verhindern gewöhnliche Bearbeitungen durch Anwendungen; Dateisystemadministratoren bleiben innerhalb der Vertrauensgrenze. Die API-Autorisierung erfolgt über ein Bearer-Token. Anmeldevorgänge werden serialisiert und sind zeitlich begrenzt. Für das Hochladen von Konten gelten ein dediziertes Limit von 12 MiB für den kodierten Body und ein Limit von 8 MiB für die dekodierte Datei ; normale API-Anfragen behalten das 16-KiB-Limit bei. Die Konvertierung läuft in einem Worker-Thread, hält Uploads im Speicher und gibt normalisierte Eingaben an den authentifizierten Browser zurück. Die QR-Anmeldung verfügt über einen Kandidaten pro Arbeitsbereich, einen kurzlebigen Bezeichner, eine Warteschlange und eine explizite Abbruchmöglichkeit. Nur die akzeptierte Autorisierung wird zum aktiven Client. Telegram FloodWait wird mit einem Retry-After-Wert zurückgegeben; Anmeldedaten und rohe RPC- Fehlermeldungen werden in API-Fehlern nicht offengelegt. Journalexporte laufen außerhalb der asynchronen Ereignisschleife und werden pro Arbeitsbereich serialisiert. Sie streamen einen stabilen Lese-Snapshot parallel zu fortlaufenden WAL-Schreibvorgängen. Chat-Erfassungsjobs können gleichzeitig auf separaten Konten laufen; jedes Konto bleibt reserviert, bis der jeweilige Job beendet ist. Ein angehaltener oder fehlgeschlagener Job behält seine Checkpoints bei. Eine erfolgreiche Archivüberprüfung ermöglicht die Bereinigung der Arbeitsdateien, wobei die ZIP-Datei, der signierte Plan und der Status erhalten bleiben. Workspace-Collectors teilen sich den Prozess bzw. die Ereignisschleife. Aktuelle Verlaufs-Snapshots und Live-Updates können sich überschneiden. Bei beiden handelt es sich um separate Beobachtungen, die nach Quelle gekennzeichnet sind; Duplikate werden nicht stillschweigend zusammengefasst. Es werden keine Rückschlüsse aus fehlenden IDs, erfundenem gelöschtem Text, erzwungener Mitgliederaufzählung oder automatischem Beitritt zu Gruppen gezogen. Erläuterungen für Betreiber finden Sie unter [„So funktioniert die Erfassung](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/)“ sowie unter [„Konten“ und „Sitzungsformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/)“. Die Netzwerkkonfiguration befindet sich im verschlüsselten Tresor. Das Anwenden einer Route schließt alte Clients und bricht unvollendete Anmeldungen ab; spätere Verbindungen nutzen diese Route ohne direkten Fallback. Bei einer neuen Installation mit externem Schlüssel wird der Fernet-Schlüssel jedes Arbeitsbereichs mit HKDF-SHA256 aus einer Hauptschlüsseldatei und einem gespeicherten Zufalls-Salt abgeleitet. Dadurch werden Geheimnisse getrennt vom Datenverzeichnis geschützt, nicht jedoch die Protokoll- oder Medieninhalte im Klartext. Der lokale Demo-Zugriff nutzt eine separat generierte Prozesskapazität, niemals das konfigurierte Panel-Token. Die Ausstellung und Akzeptanz erfordern den expliziten Demo-Modus, eine synthetische Root ohne zusätzliche Arbeitsbereiche oder eine autorisierte Sitzung, einen Loopback-Peer/Host, keine Proxy- Weiterleitungs-Header sowie keine Cross-Origin-Browser-Anfragen. Live-APIs behalten die Bearer-Authentifizierung bei und lehnen Änderungen an der Datenerfassung im Demo-Modus ab. --- # Was wurde getestet? Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/ Der Live-Telegram-Test, automatisierte Prüfungen, Browser-Prüfungen und was noch nicht verifiziert ist. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Translation coverage: this edition includes material from the English original. Der Live-Telegram-Test, automatisierte Prüfungen, Browser-Prüfungen und was noch nicht verifiziert ist. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Beweise und Verifizierung](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ![Beweise & Verifizierung](https://phishdestroy.github.io/TgWitness/assets/chapter-evidence.svg) **Aktualisiert am 6. November 2026.** Die Ergebnisse sind an die Revision, die Umgebung und die für jeden Durchlauf aufgezeichnete Arbeitslast gebunden. Unter [Aktuelle Funktionen](https://github.com/phishdestroy/TgWitness/blob/main/docs/STATUS.md) werden die verfügbaren Workflows beschrieben; auf dieser Seite wird festgehalten, was tatsächlich überprüft wurde. [Leistungsdiagramme](https://phishdestroy.github.io/TgWitness/docs/validation/) · [Prüfung der Signed English-Übersetzung](https://github.com/phishdestroy/TgWitness/blob/main/website/validation/audit/REPORT.md) · [Messdaten zum Herunterladen](https://github.com/phishdestroy/TgWitness/blob/main/website/validation/audit/MEASUREMENTS.csv) | Aktuelle Nachweise | Ergebnis | Geltungsbereich | | --- | --- | --- | | Release-Audit · 6. November | 1,461-Kerntests bestanden; 37-Plattformtests übersprungen | Quelle `92e539af40d8`; offene Ergebnisse beibehalten | | Aktuelle Exporte · 6. Nov. | 127.713 und 141.781 Datensätze/s, vollständiger Zyklus | Zwei Konten pro Server; Text und Metadaten über WARP | | Aufbewahrte Archive · 6. Nov. | 48-Archive; 3,598,381-Datensätze verifiziert | Vorhandene Archive wurden anhand der festgepinnten Workspace-Schlüssel überprüft | | Trusted Live · 5. November | Geschützte CPU-Aufzeichnung und WARP-Prüfungen | Die offizielle Desktop-Anmeldung und der native Export bleiben ohne Einschränkungen bestehen. | | Phala / Intel TDX · 4. November | Alle 16-Verifizierungsprüfungen wurden bei späteren Durchläufen bestanden | Historische Bereitstellung; kein Telegram-Konto auf dem CVM | **Auf dieser Seite** - [Release-Audit und neue Exporte · 6. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#release-audit-and-fresh-exports--6-november-2026) - [Trusted Live CPU Ubuntu und WARP · 5. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#trusted-live-cpu-ubuntu-and-warp--5-november-2026) - [Live-Bereitstellung von Phala Cloud · 4. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#live-phala-cloud-deployment--4-november-2026) - [Bestandsliste der Live-Server-Journale · 1. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#live-server-journal-inventory--1-november-2026) - [Aktuelle Offline- und Fehlerinjektionsprüfungen · 1. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#recent-offline-and-fault-injection-checks--1-november-2026) - [Live-Telegram-Test, gesamtes Konto · 29. Oktober 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#live-telegram-test-whole-account--29-october-2026) - [Passwortgeschützter Export, geöffnet mit libarchive · 29. Oktober 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#password-protected-export-opened-with-libarchive--29-october-2026) - [Live-Telegram-Test · 27. bis 29. Oktober 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#live-telegram-test--27-to-29-october-2026) - [Synthetische Messung der lokalen Kapazität](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#synthetic-local-capacity-measurement) - [Volltextsuche in einer Million Nachrichten · 5. November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#full-text-search-on-one-million-messages--5-november-2026) - [Verbleibende Qualifikation](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/#remaining-qualification) ## Release-Audit und neue Exporte · 6. November 2026 Bei der Prüfung wurde v0.9.1 in der Version `92e539af40d8368d198ff5e040f1d876f2c1310e`, Release `92e539af40d8-83e41104669e`, verwendet. Die Smoke-Checks der installierten Pakete wurden auf drei Servern bestanden. Der signierte Bericht gibt den zu diesem Zeitpunkt beobachteten Zustand wieder. [![Erfassungs- und vollständige Exportraten für zwei neue Workloads](https://phishdestroy.github.io/TgWitness/assets/performance.svg)](https://phishdestroy.github.io/TgWitness/docs/validation/) | Arbeitsaufwand | Aufzeichnungen | Erfassung | Vollständiger Zyklus | Vollzyklusrate | | --- | --- | --- | --- | --- | | Server A · zwei Konten | 27,030 | 189.043s | 211.647s | 127.713-Datensätze/s | | Server B · zwei Konten | 29,299 | 182.513s | 206.650s | 141.781-Datensätze/s | Beide Exporte begannen ohne Wiederaufnahme, schlossen Anhänge und Avatare aus und endeten ohne doppelte oder wiederverwendete Datensätze. Der vollständige Zyklus umfasst Vorbereitung, Erfassung, Auswahl, Paketierung und Archivüberprüfung. Server A führte zudem eine Prüfung auf das Lesen geschützter Chats durch. Vier FloodWait-Ereignisse auf A und drei auf B wurden berücksichtigt. Diese Beobachtungen begründen keine allgemeine Durchsatzgarantie. | Überprüfen | Ergebnis | Qualifikation | | --- | --- | --- | | Kern-pytest | 1,461 bestanden | 37-Plattform überspringt | | Browser / Browser-UX / Beweismaterial / Website | 102 / 66 / 15 / 9 bestanden | Diese Programme überschneiden sich mit anderen Tests; die Zahlen sind nicht additiv. | | Add-on Capture | 124 bestanden | Drei offizielle Web-Prüfungen, die durch die erforderliche Chromium-Sandbox blockiert werden | | API-Autorisierung | 269-Routen; 538-Anfragen bestanden | Fehlende Anmeldedaten und widerrufener Zugriff | | Aufbewahrte Archive | 48 von 48 verifiziert | 3,598,381-Datensätze; angeheftete Arbeitsbereichsschlüssel | | Live-Prüfungen der Flottenlesbarkeit | 24-Profile von 40 bestanden | 16-WARP-Routen haben die Qualifizierung nicht bestanden; diese Profile waren nicht verbunden | Der [signierte Bericht](https://github.com/phishdestroy/TgWitness/blob/main/website/validation/audit/REPORT.md) erfasst alle offenen Befunde, darunter drei Fehler in einem unveröffentlichten Snapshot eines geheimen Chats, der im geprüften Haupt-Build fehlt. Die frühere [Qualifizierung der öffentlichen Historie](https://github.com/phishdestroy/TgWitness/blob/main/docs/EXPORT-BENCHMARK-2026-11-06.md) verwendete eine andere Revision und Arbeitslast; deren Werte dürfen nicht mit diesem Vergleich kombiniert werden. Überprüfen Sie den Originalbericht mithilfe des [-Pinned-Schlüssels und des Verifizierers](https://github.com/phishdestroy/TgWitness/blob/main/website/validation/audit/README.md#verify-the-original-files). Seine Signatur schützt den Bericht des Betreibers vor Manipulationen. Es handelt sich dabei nicht um eine unabhängige Beglaubigung, einen Nachweis der Telegram-Urheberschaft oder eine DSGVO-Zertifizierung. ## Trusted Live CPU Ubuntu und WARP · 5. November 2026 Der beibehaltene Integrationslauf verwendete einen reinen CPU-Gast „Ubuntu 24.04.5“ (4 vCPU, 8 GiB) unter QEMU innerhalb eines RunPod-CPU-Hosts. Der Collector verwendete `14e642a5`; die Verifizierung erfolgte mit `02072461`. Die endgültigen Korrekturen wurden in [PR #114](https://github.com/phishdestroy/TgWitness/pull/114) als `755f78f6` zusammengeführt, dessen Baum mit dem getesteten PR-Head übereinstimmte. Es handelte sich hierbei nicht um eine TEE. - Ein echter WARP-Connector wurde als funktionsfähig gemeldet; bei HTTPS über Proxy wurden WARP und Gateway als aktiviert gemeldet. Drei Tests ergaben dieselbe Ausgangsadresse, was keine Garantie für eine feste IP-Adresse darstellt. - Das Trennen von WARP führte zum Fehlschlagen der über den Proxy gesendeten Anfrage. Direkte HTTPS-Verbindungen zum Gateway-Dienst wurden abgelehnt. Im Recorder-Namespace wurden direkte IPv4/IPv6-Verbindungen, externe DNS-Anfragen und der in Docker integrierte UDP-Resolver blockiert. - Ein Provider-Token mit eingeschränkten Lesezugriffsrechten konnte den Status und die Verbindungen auslesen, hatte jedoch keinen Zugriff auf das Registrierungs-Token des Connectors. Signierte Provider-Beobachtungen enthielten explizit nicht verfügbare Stichproben. Der Witness lief auf dem Host des Betreibers, was die Aufzeichnung und Aufbewahrung belegt, jedoch keine unabhängige Verwahrung durch Dritte. - Official Desktop erreichte seinen nicht authentifizierten Begrüßungsbildschirm. Geschützte Tastatureingaben wurden während der Erfassung abgelehnt. Drei H.264-Anzeigesegmente wurden dekodiert und ihre Uhrenüberlagerung wurde überprüft. Das 18-Ereignis-Preflight-Archiv wurde anhand des festgesteckten Aufzeichnungsschlüssels und des beibehaltenen Checkpoints verifiziert. - Die abschließenden Erfassungstests bestanden die 114-Fälle auf Windows- und Linux-CI-Umgebungen mit echtem Chromium/FFmpeg. Fünf Anker-Tests und Überprüfungen der Abhängigkeitshinweise wurden bestanden. Ein erster Startversuch mit 2 vCPU/4 GiB lief unter gleichzeitiger Belastung durch die Bilderstellung in die Zeitüberschreitung und wurde durch die Schutzvorrichtung gestoppt; er wird nicht als Erfolg gewertet. Die manuelle Anmeldung mit einem Testkonto, der native Chat-Export, der echte Hybridvergleich und die Abmeldung auf Telegram-Seite stehen noch aus. Es wurde keine bereitgestellte Telethon-Sitzung importiert. Anhänge, automatische OCR, lokale drand-BLS-Verifizierung und Trusted-Live-TDX-Bescheinigung wurden nicht qualifiziert. ## Live-Bereitstellung in der Phala Cloud · 4. November 2026 **Historisches Ergebnis:** spätere Bereitstellungen bestanden alle 16 Verifizierungsprüfungen, einschließlich Intel TDX und des Quick-Tunnels. Der Neustart der Nachweise, die Erkennung signierter Adressen sowie die Zeitstempel der Berichte wurden separat überprüft. Jedes Test-CVM wurde nach seiner Ausführung entfernt. | Einrichtung | Aufgezeichneter Wert | | --- | --- | | Anbieter | Phala Cloud · `tdx.small` · US-WEST-1 | | Bereitstellung | `--provider phala --quick-tunnel`; zunächst leerer Arbeitsbereich | | Anfänglicher Collector | `df7d860c` · v0.8.1 | | Collector mit allen Korrekturen | `53a0f7e9` | | Produktionsgast | `dstack-0.5.12`; SSH-Zugriff deaktiviert | | Externe Dienste | ntfy.sh, GitHub und Intel PCS | | Beobachtete Kosten | Sieben CVMs, zusammen etwa 1.9 US-Cent; historische Testpreise | Die folgende Abfolge unterscheidet zwischen anfänglichen Fehlern, Korrekturen und abgeschlossenen Prüfungen. Mit diesen CVMs war kein Telegram-Konto verbunden. **Bereitstellungen 1–2 · Anbieterunterschiede und Regressionsprüfungen** The first two deployments found five differences from the simulated Phala Cloud. Private Phala regressions reproduce each difference and fail without its fix: | Auf der Phala Cloud | Vor der Korrektur | Behebung | | --- | --- | --- | | `compose_file.name` ist erforderlich | HTTP 422, nichts erstellt | Die Docker-Compose-Konfiguration enthält den CVM-Namen | | Sofern kein leeres Skript angegeben wird, fügt Phala dem gemessenen „app-compose“ ein eigenes Pre-Launch-Skript hinzu (v0.0.20: Docker-Anmeldung, `docker compose pull`, Root-Passwort, SSH-Schlüssel aus `user_config`) | `tdx_compose` schlägt fehl: Code außerhalb der veröffentlichten Docker-Compose-Konfiguration | Das „app-compose“ setzt `pre_launch_script` auf `""`; Phala lässt dies anschließend weg | | Ohne `image` wählt Phala `dstack-dev-0.5.12` aus, die Entwicklungsversion, bei der der SSH-Zugriff aktiviert ist | `server_state` schlägt fehl. Bei diesem Image wurde lediglich der Hardware-Attestationsdatensatz erfolgreich übermittelt; dies geht nur aus dem Anbieterdatensatz und `tdx_os` hervor. | Bei der Bereitstellung wird nach dem Produktions-Build der aktuellen Phala-Version „`dstack-0.5.12`“ gefragt | | Bei deaktiviertem dstack-Gateway wird in den CVM-Details niemals ein `instance_id` angezeigt | Die Bereitstellung wartet 30 Minuten und schlägt fehl | Die Instanz-ID wird aus dem CVM-Status ausgelesen | | Neustarts, Stopps und Starts sind CVM-Vorgänge, keine Anwendungsrevisionen | `provider_actions` führte keine Neustarts auf | Die Vorgänge werden ebenfalls gelesen | **Bereitstellungs3 · Attestierung, Zugriffsprüfungen und Nachweise für Neustarts** - Die CVM führte `dstack-0.5.12` mit deaktiviertem SSH-Zugriff aus. Der Collector übermittelte seine signierte Adresse etwa 1,5 Minuten nach der Erstellung. Der Deployment-Vorgang durchlief anschließend `tdx_binding`, `tdx_quote` (Intel TCB UpToDate, Hardware-Attestationsdatensatz v4, FMSPC `20a06f000000`, nicht im Debug-Modus, nicht migrierbar, unterstützt kryptografische Verifizierungsdaten, die von Intel abgerufen wurden), `tdx_compose_hash`, `tdx_compose` (Byte für Byte) und `tdx_identity` (KMS-Schlüssel). - Das Panel unter der Adresse trycloudflare.com gab ohne Token oder mit einem falschen Token den Status 401 zurück, und mit dem Panel-Token den Status 200. - `verify`, wobei `--source` auf das GitHub-Archiv des Commits gesetzt war und der Fingerabdruck separat übermittelt wurde: Server, `server_state`, Firewall (kein Gateway, kein öffentlicher Endpunkt), Anbieterprotokoll, Abrechnung, Fingerabdruck, Quell-Hash, Boot sowie die fünf `tdx_*`-Prüfungen wurden bestanden. Cloudflare und `tdx_os` waren nicht verfügbar, daher lautete das Ergebnis „INCOMPLETE“. - Zwei Neustarts über die Phala-API: Jedes Mal war die CVM in weniger als zwei Minuten wieder verfügbar – mit dem gleichen Collector-Schlüssel, einer neuen signierten Adresse und der alten, die den Status 530 zurückgab. `verify` meldete den neuen Start sowie beide Neustarts als „REVIEW“. Mit `--evidence` bestätigte es die Journal-Signaturen sowie drei Startvorgänge, jeweils mit einem eigenen Intel-TDX-Hardware-Attestationsdatensatz aus derselben CVM. - `destroy` entfernte ausschließlich diese CVM. Der Arbeitsbereich war daraufhin leer, und die Panel-Adresse reagierte nicht mehr auf Anfragen. - Die Preisabfrage des Panel-Assistenten ergab `tdx.small` mit 0,058 $ pro Stunde. Bei einem falschen Schlüssel erschien lediglich die Meldung „API-Schlüssel wurde nicht akzeptiert“. **Nachfolgende Korrekturen · Erkennung signierter Adressen und Betriebssystemmessungen** - Without the address key, `verify` followed the newest well-formed post on the address topic, which is printed in the published compose. One forged post sent it to a host that does not exist, and `statement` failed: a forger could not pass as the collector, but could block third-party verification, for up to 12 hours with a forged future timestamp. The collector now also posts its address signed with its own key, `verify` accepts only such posts when the collector makes them, and posts are ordered by ntfy.sh's receive time. A private cloud-wizard regression replays the forged posts. A CVM runs this only from a commit that contains it, so this run's collector did not sign its address yet and `verify` said so. - `tdx_os` konnte ohne `dstack-mr` nicht ausgeführt werden, dessen aktuelle Version `measure-os` anstelle von dem in der Dokumentation genannten `measure --json` enthält. Der Verifizierer berechnet nun MRTD und RTMR0-2 selbst aus dem veröffentlichten Image und der VM-Konfiguration, einschließlich der ACPI-Tabellen. **Bereitstellungs4 · alle 16-Prüfungen, Berichtssiegel und Neustartüberprüfung** - Deploy lud das veröffentlichte `dstack-0.5.12` einmal herunter, glich es mit dem vom CVM gemeldeten Betriebssystem-Image-Hash ab, und `tdx_os` wurde akzeptiert: MRTD, RTMR0, RTMR1 und RTMR2 entsprechen den für QEMU 8.2.2, 1 vCPU und 2 GiB. Dieselbe Berechnung ergab einen anderen RTMR0-Wert bei angegebenen 4 GiB, 2 vCPUs, QEMU 9.2.1 oder einer zweiten Netzwerkkarte und schlug bei einem geänderten Kernel, einer geänderten Firmware oder einer geänderten Befehlszeile sowie beim Entwicklungs-Image fehl. - `verify` hat alle 16 Prüfungen bestanden, einschließlich des Quick-Tunnel-Konnektors, sodass das Ergebnis „PASS“ lautete. Es erstellte das HTML- und das PDF-Zertifikat, digital versiegelt mit Signaturen und Zeitstempeln, darunter ein qualifizierter eIDAS-Zeitstempel der belgischen Regierungsstelle für Zeitstempelung TSU 202301 (Status: in der vertrauenswürdigen Liste Belgiens geführt), ein FreeTSA-Zeitstempel sowie die Signatur des Verifizierers; `check-report` bestätigte all diese Elemente sowie die Signatur des PDF-Dokuments. - Nach einem Neustart bestätigte `verify --evidence` zwei Startvorgänge, die jeweils von einer innerhalb der CVM generierten Hardware-Bescheinigung begleitet wurden und jeweils aus dem veröffentlichten `dstack-0.5.12` gebootet wurden; der Neustart und der neue Bootvorgang wurden als „REVIEW“ eingestuft. - `destroy` hinterließ den Arbeitsbereich leer. **Bereitstellungs5 · Vom Collector signierte Erkennung und Ablehnung gefälschter Beiträge** Der Collector wurde ab Commit `53a0f7e9` ausgeführt, der die oben genannten Korrekturen enthält. - Der Collector veröffentlichte seine mit seinem eigenen Schlüssel signierte Adresse neben dem HMAC-Beitrag des Betreibers. Anschließend wurden dem Thema zwei gefälschte Beiträge hinzugefügt, einer mit einem auf Null gesetzten HMAC und einer, der mit einem anderen Ed25519-Schlüssel signiert war; beide gaben einen Zeitpunkt im Jahr 2096 an. `verify` übernahm die mit dem Sammler-Schlüssel signierte Adresse und bestand alle 16 Prüfungen; das Siegel trug erneut den qualifizierten belgischen Zeitstempel, den Zeitstempel von FreeTSA sowie die Signatur des Verifizierers, und `check-report` bestätigte diese. - Nach einem Neustart veröffentlichte der Collector die neue signierte Adresse: `verify` fand sie sofort, der Operator **fand die aktuelle Adresse** 27 Sekunden später anhand des HMAC-Posts, und beide ignorierten die gefälschten Posts. `verify --evidence` bestätigte zwei Starts, die von `dstack-0.5.12` gebootet wurden. - Die Bereitstellung gab an, was Phala für die CVM in Rechnung stellt, einschließlich Festplatte: 0,06078 $ pro Stunde. ### Assistent für Bedienfelder und verbleibender Umfang Der Panel-Assistent wurde zweimal auf Phala Cloud ausgeführt, einmal über deren Job-API und einmal über den Browser mit einem echten Chromium: die Preisprüfung, die Erstellung mit dem Commit unter **Advanced**, alle sechs Attestierungsprüfungen bestanden, die Serverliste zeigte den in Rechnung gestellten Preis (44,37 USD pro Monat) an, **Find die aktuelle Adresse**, den Download der gemessenen Docker-Compose-Konfiguration sowie die Löschung. Im Browser traten keine Seitenfehler auf. Jedes Mal war der Arbeitsbereich anschließend leer. Nicht berücksichtigt: eine Cloudflare-Domain auf Phala, ein Telegram-Konto auf dem CVM und das `dstack-0.6.1` Image. Der Preis des Assistenten vor der Erstellung entspricht ausschließlich dem Rechenpreis von Phala, da dessen API den Speicherpreis nur für ein bestehendes CVM angibt; die Serverliste zeigt den in Rechnung gestellten Preis nach der Erstellung. Alle Preise in diesem Abschnitt wurden am 4. November 2026 erfasst. ## Bestandsliste der Live-Server-Journale · 1. November 2026 Um ca. 19:15 UTC zählten sequenzielle, schreibgeschützte SQLite-`query_only`-Abfragen Ereignisse in zehn Arbeitsbereichsdatenbanken auf einem laufenden Server. Die Datenerfassung wurde während der Abfragen fortgesetzt, sodass es sich hierbei nicht um eine atomare Momentaufnahme über alle Arbeitsbereiche hinweg handelt. | Beobachtet in den zehn Workspace-Datenbanken | Anzahl | | --- | --- | | Arbeitsbereiche mit mindestens einem `message.new`-Ereignis | 8 | | Protokollaufzeichnungen, einschließlich betrieblicher Ereignisse | 1,610,818 | | `message.new`-Ereignisse | 900,232 | | `message.edited`-Ereignisse | 80,683 | | `message.deleted`-Ereignisse | 400,536 | | `message.recovered`-Ereignisse | 53,403 | | `message.snapshot`-Ereignisse | 2,183 | | `media.saved`-Ereignisse | 50,418 | | `media.failed`-Ereignisse | 5,575 | | `coverage.gap`-Ereignisse | 11 | | Datenbank-Bytes, ohne WAL-Dateien und Medien | 7,909,003,264 | Es handelt sich hierbei um **Ereigniszahlen**, nicht um einzelne Nachrichten, Personen oder Mediendateien. Dieselbe Nachricht kann in mehr als einem Arbeitsbereich erscheinen, und eine Bearbeitung oder Löschung kann ein weiteres Journalereignis erzeugen. `media.failed` zählt historische Fehlerereignisse, nicht die aktuelle Medienwarteschlange. Die Abfragen haben **weder** die Signaturen noch die vollständige Hash-Kette aller 1,610,818 Datensätze neu überprüft, noch wurden die Zustellung oder der Durchsatz gemessen oder festgestellt, dass jedes Telegram-Ereignis erfasst wurde. Es werden hier keine Nachrichteninhalte, Konto- oder Chat-IDs, Workspace-Bezeichnungen, Anmeldedaten oder private Dateien veröffentlicht. Zum Zeitpunkt dieser Überprüfung deckte der separat konfigurierte öffentliche Monitor drei Quellen ab: Eine Erfassungsantwort war in Ordnung, zwei meldeten `no_response`. Dieser Monitor ist keine Zustandsübersicht über zehn Arbeitsbereiche. `no_response` bedeutet, dass der Beobachter bei dieser Überprüfung keine Antwort erhalten konnte; dies bedeutet nicht, dass Nachrichten verloren gegangen sind. Der kleinere Test vom 29. Oktober unten verfügt über eine eigene explizite Signatur und eine Hash-Ketten-Verifizierung. ## Aktuelle Offline- und Fehlerinjektionsprüfungen · 1. November 2026 Diese Prüfungen verwenden fiktive Daten und lokale Dateien; sie liefern Regressionsnachweise für die aktuelle Quelle, nicht für eine andere Live-Messung der Telegram-Zustellung: | Überprüfen | Was wurde getestet? | | --- | --- | | Source archive | Zwei Builds mit identischen Quellbytes, aber geänderten Dateizeiten erzeugten dieselbe ZIP-Datei und dieselbe Prüfsumme. Die exakten archivierten Bytes und Datei-Hashes stimmten überein; private Testdateien blieben ausgeschlossen. Ein simulierter Schreibfehler ließ das vorherige Archiv und die Prüfsumme intakt. | | Account export recovery | Ein simulierter Festplattenfehler auf dem zweiten ZIP-Mitglied hinterließ kein veröffentlichtes oder unvollständiges ZIP-Archiv. Die Wiederaufnahme behielt jeden signierten Beleg byteweise identisch bei, erzeugte ein unabhängig überprüfbares Archiv unter Verwendung des erwarteten Signatur-Fingerabdrucks und behielt die synthetische Abdeckungslücke als Teilergebnis bei. Skalierungsaussagen verhindern wiederholte Aufgaben- und Belegscans, wenn die Historie wächst. | | Minimized disclosure privacy | Synthetische Unicode-Namen und Aliase, verschachtelte Metadaten, unbekannte Absender und Medienfelder wurden in allen drei Identitätsmodi sowie bei Textauslassungen überprüft. Ein Versagen der Maskierungsgrenze führte nicht zu einer stillschweigenden Schwächung der Schwärzung; der ursprüngliche signierte Kontoexport blieb unverändert. | | Linux media decoder and OCR | Ein [Linux-Docker-CI-Check](https://github.com/phishdestroy/TgWitness/actions/runs/41341200341/job/124951395192) beim Commit `5a9e0814` bestand die Tests mit generierten Ogg/Opus-, MP3-, M4A-, MP4- mit Video-, WAV- und FLAC-Eingaben; Kontrollen auf gefälschte Dauer und sekundäre Dateiverweise; sowie 48 mutierte Parser-Fixtures (34 abgelehnt, 14 innerhalb der Grenzen dekodiert). Echtes Tesseract-OCR lief mit unveränderten Original-Bytes. Der Decoder und das OCR liefen in netzwerkisolierten Containern ohne Whisper-Modell. | Die Prüfungen laufen in den Workflows „[pull-request](https://github.com/phishdestroy/TgWitness/blob/main/.github/workflows/pr-check.yml)“ und „[full Checks](https://github.com/phishdestroy/TgWitness/blob/main/.github/workflows/checks.yml)“. Sie testen diese Fehlergrenzen, nicht jeden möglichen Speicherfehler oder ob eine Offenlegung automatisch sicher zur Veröffentlichung ist. Die Medienprüfung misst nicht die Genauigkeit der Spracherkennung oder die Zustellung über Telegram. Überprüfen Sie jedes Derivat, bevor Sie es teilen. ## Live-Telegram-Test, gesamtes Konto · 29. Oktober 2026 Das gleiche Konto wurde nach dem unten beschriebenen Test weitergeführt. Am 29. Oktober um 12:10 Uhr UTC wurde der Erfassungsbereich auf das gesamte Konto (Kanäle, Gruppen, private Chats und Bots) erweitert; das Bedienfeld forderte eine Bestätigung an, und das signierte Protokoll zeichnete dies auf. Um 17:59 Uhr UTC enthielt das Protokoll: | Aufgezeichnet vom 27. Oktober, 21:36 Uhr, bis zum 29. Oktober, 17:59 Uhr (UTC) | Anzahl | | --- | --- | | Protokollaufzeichnungen | 9,968 | | Neue Nachrichten | 5,308 | | davon nach der Umstellung auf das vollständige Konto | 3,878 | | Löschungen | 784 | | von denen gelöscht wurden, nachdem TgWitness die Nachricht gespeichert hatte | 596 | | Bearbeitungen | 41 | | Durch Nachprüfungen hinzugefügte Nachrichten | 2,273 | | Nachrichten, die bei einer erneuten Überprüfung nicht mehr auffindbar waren | 18 | | Durch Verlaufs-Snapshots gespeicherte Nachrichten | 242 | | Gespeicherte Anhänge | 247 | | Der Collector startet | 19 | | Telegram FloodWait pausiert | 26 | - Die **„Verify**“-Prüfung des Gremiums bestätigte die Signaturen und die Hash-Kette aller 9.968 Datensätze. - Die Nachrichten stammten aus zwei Gruppen bzw. Kanälen sowie drei privaten Chats und Bots. Eine Nachrichten-Schaltfläche wurde in **den Chats** betätigt; die Anfrage und die Antwort von Telegram sind im Protokoll enthalten. - Neue Chats wurden hinzugefügt, als der Collector das Konto nach einem Neustart erneut scannte. Das Speichern der früheren Nachrichten neuer Chats war deaktiviert (`history = 0`), daher wird dies hier nicht behandelt. Nicht abgedeckt: Reaktionen, Änderungen der Mitgliederzahl, Personenprofile, das Versenden von Nachrichten, der Beitritt per Einladung, Proxys, Benachrichtigungen, der Witness-Bot sowie die gleichzeitige Nutzung mehrerer Konten. Öffentliche Dateien enthalten ausschließlich Zahlenangaben. ## Passwortgeschützter Export, geöffnet mit libarchive · 29. Oktober 2026 Ein Archiv, das mit dem Exportverschlüsselungscode erstellt wurde (WinZip AES-256, das von 7-Zip und WinRAR gelesen wird), wurde unter Windows mit `tar` (bsdtar 3.6.2, libarchive) geöffnet. Mit dem richtigen Passwort stimmte die extrahierte Datei mit dem ursprünglichen SHA-256 überein; ein falsches Passwort wurde mit der Meldung „Incorrect passphrase“ abgelehnt. 7-Zip und WinRAR selbst wurden nicht ausgeführt. ## Live-Test von Telegram · 27. bis 29. Oktober 2026 Ein echtes Telegram-Konto, das über den integrierten API-Paar-Pool angemeldet war, zeichnete eine Supergruppe vom **27. Oktober, 21:36 Uhr UTC, bis zum 29. Oktober, 05:15 Uhr UTC**, auf. Der Collector wurde in diesem Zeitraum 12 Mal gestartet. | Aufgezeichnet | Anzahl | | --- | --- | | Protokollaufzeichnungen, einschließlich Heartbeats und Dienstaufzeichnungen | 2,385 | | Neue Nachrichten | 1,291 | | Löschungen | 472 | | von denen wurden gelöscht, nachdem TgWitness den Text gespeichert hatte | 347 | | Bearbeitungen | 12 | | Nachrichten, die während der Unterbrechung übersehen wurden und durch die erneute Überprüfung hinzugefügt wurden | 12 | | Gespeicherte Anhänge | 17 | | Anhänge wurden nicht heruntergeladen (Downloads deaktiviert oder keine Datei zum Herunterladen vorhanden) | 14 | | Telegram FloodWait legt bei Nachprüfungen jeweils 3-sekündige Pausen ein | 8 | - Die Signaturen und die Hash-Kette aller 2.385 Datensätze lassen sich anhand des öffentlichen Schlüssels des Protokolls verifizieren. - Nach einem Neustart setzt der Collector den Vorgang ab dem gespeicherten Aktualisierungsstatus (`pts`) fort, und Telethon holt den Rückstand auf; bei der erneuten Überprüfung werden dann die noch fehlenden Nachrichten hinzugefügt. - Bei jedem „FloodWait“ wartete der Collector die angeforderte Zeit ab und fuhr dann fort. - Das Konto blieb angemeldet, und dieselbe Sitzung wurde am 29. Oktober wiederhergestellt. Nicht Gegenstand dieses Tests: mehrere Konten gleichzeitig, Administratorrechte, Proxys, Ausfälle von mehr als einigen Stunden sowie das vollständige [Live-Abnahmeverfahren](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/LIVE_ACCEPTANCE.md). Öffentliche Dateien enthalten ausschließlich diese Zahlenangaben: keine Konto- oder Chat-Kennungen, Nachrichten oder Anmeldedaten. ## Synthetische Messung der lokalen Kapazität Private synthetic capacity run: 10,000 events across 100 chats. | Kennzahl | Beobachtet | | --- | --- | | Eingabe | 10.000 synthetische Nachrichtenereignisse aus 100 ausgewählten synthetischen Quellen | | Nachrichtentext | 400 Zeichen; keine Medien oder Netzwerke | | Erfassung | 53,273 Sekunden; 187,7 Ereignisse pro Sekunde | | Latenz des Handlers | p50 4,162 ms; p95 7,784 ms; Maximum 129,118 ms | | ZIP-Export | 19,868 Sekunden bei aktiviertem tracemalloc | | Spitzenwerte der nachverfolgten Python-Exportzuweisungen | 0,51 MiB; RSS nicht verarbeiten | | ZIP-Größe | 4.610.962 Byte | | Unabhängige Überprüfung | Alle 10.000 Ereignisse wurden verifiziert | Hiermit wird der lokale Pfad für die fortlaufende Aufzeichnung und den Export auf diesem Windows-Host gemessen. Nicht gemessen werden die MTProto-Übermittlung, gleichzeitige Konten, Telegram-Drosselung, Medien, eine lang andauernde Arbeitslast oder eine garantierte Anzahl echter Chats. Die Messung erfolgte vor der Einführung der endgültigen Offline-Zeitstempel-Tools, die den gemessenen Nachrichtenpfad nicht verändern. ## Volltextsuche in einer Million Nachrichten · 5. November 2026 Befehl: `python tools/bench_fulltext.py --messages 1000000 --work ` A deterministic signed journal of 1,000,000 synthetic messages in 200 chats (Russian word forms, Ukrainian, English, Chinese, Japanese, links and handles) was indexed in 71 seconds; the index took 58 MiB beside a 1.50 GiB journal. Best-match searches took 9 to 190 ms (median), against 2.4 to 3.2 seconds for the previous substring search. Full results, hardware and limits: [Full-text search](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/#benchmark). Private compatibility tests also verify a frozen signed archive made before full-text search with the current verifier, and a current archive with the frozen archive's own `verify.py`. ## Verbleibende Qualifizierung Das gespeicherte Live-Protokoll dokumentiert tatsächliche Erfassungen, Bearbeitungen, Löschmeldungen, Anhänge, Nachprüfungen sowie die Handhabung von Ratenbeschränkungen. Es dokumentiert jedoch nicht die vollständige Zustellung oder eine kontrollierte Matrix aus Sichtbarkeitsrollen, Reaktionsakteuren, verlängerten „FloodWait“-Zeiten, Kontosperrungen und der Wiederherstellung nach Netzwerk- oder Prozessunterbrechungen. Die Ausgabe von QR-Token bleibt von der abgeschlossenen mobilen QR-Bestätigung getrennt. Docker/Compose- und Installationsprüfungen werden in CI protokolliert; die tatsächliche Phala-Bereitstellung sowie die externe Zeitstempelüberprüfung sind oben beschrieben. Sie gewährleisten keine anhaltende hohe Auslastung, keine vollständige Live-Plattform-/Rollenmatrix, keine unabhängige Sicherheitsüberprüfung, keine Validierung der Langzeitarchivierung und keine forensische Zertifizierung. Gespeicherter MTProto-Zustand und Catch-up sind implementiert; eine atomare, verlustfreie Live-Wiedergabe ist weiterhin nicht etabliert. Das neuere Backfill führt Commits von Nachrichten und Cursorn atomar durch und bewahrt verfügbare Recent Actions (jüngste Aktionen), doch unterscheidet sich seine synthetische Abdeckung von der Live-Qualifizierung. Siehe „[live acceptance](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/LIVE_ACCEPTANCE.md)“ für die kontrollierte Qualifizierungsmatrix. Das öffentliche Audit-Verzeichnis enthält ausschließlich den signierten Bericht und aggregierte Messwerte. Detaillierte Transaktionsbelege, Rohdatenaufzeichnungen und Kontodaten bleiben vertraulich. Anwendungs-Screenshots in `docs/assets/` verwenden fiktive Demonstrationsdaten. --- # Hinweis zur Lizenz und zur architektonischen Inkompatibilität Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/license/ TgWitness steht unter der MIT-Lizenz für jedermann, weshalb es architektonisch nicht mit dem Taylor-Wessing-Workflow kompatibel ist. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) TgWitness steht unter der MIT-Lizenz für jedermann, weshalb es architektonisch nicht mit dem Taylor-Wessing-Workflow kompatibel ist. TgWitness wird unter der [MIT-Lizenz](https://phishdestroy.github.io/TgWitness/LICENSE) vertrieben. Unsere Stellungnahme fügt keine zusätzlichen Lizenzbedingungen hinzu. > Eine Signatur macht aus einer Lüge keine Tatsache. > > > > TgWitness eignet sich kaum für Unternehmen, Anwaltskanzleien oder Einzelpersonen, die glauben, dass die Anfügung von „Dr.“ vor einem Namen alles, was darauf folgt, wahr macht. Titel, Briefköpfe und Unterschriften haben keinen Vorrang vor Beweismitteln. > > > > Wenn Ihr Arbeitsablauf mit der Schlussfolgerung beginnt, für die ein Mandant bezahlt hat, und die entsprechenden Aufzeichnungen erst danach folgen sollen, suchen Sie nach einem anderen Tool. TgWitness dient dazu, die Aufzeichnungen zu bewahren und sie für eine Überprüfung zugänglich zu machen. > > > > Sollen diese „Doktoren“ sich doch um die Bilanzen ihrer Unternehmenskunden kümmern. Ein Titel heilt keine Lüge. > > > > Mathematik verhandelt nicht. [Quelldatensatz](https://phishdestroy.io/steam_dossier/taylor_wessing) · [Ethischer Hinweis & historische Kontinuität](https://phishdestroy.github.io/TgWitness/de/docs/reference/notice/) [Vollständiger Wortlaut der MIT-Lizenz](https://phishdestroy.github.io/TgWitness/LICENSE) · [Projekt](https://github.com/phishdestroy/TgWitness/blob/main/README.md) · [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Home.md) --- # Hinweis zur Inkompatibilität mit bestimmten Betreibern Canonical page: https://phishdestroy.github.io/TgWitness/de/docs/reference/notice/ Unser Betreiberhinweis zu Taylor Wessing und dessen Quelldatensatz. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Unser Betreiberhinweis zu Taylor Wessing und dessen Quelldatensatz. **PhishDestroy · Hinweis zum TgWitness-Projekt** [Quelldatensatz](https://phishdestroy.io/steam_dossier/taylor_wessing) · [Ursprünglicher HINWEIS](https://phishdestroy.github.io/TgWitness/NOTICE) ## ⚖️ Ethischer Hinweis & historische Kontinuität Wir haben kürzlich erfahren, dass für bestimmte Anwaltskanzleien – und insbesondere für Dr. Tobias Schelinski und Dr. Patrick Vincent Zurheide – Mathematik und objektive Fakten irrelevant sind. Die Nichteinhaltung der DSGVO als kommerzielle Dienstleistung an Unternehmen zu verkaufen, während man selbst bei der grundlegenden Datenverarbeitung versagt, ist keine juristische Fachkompetenz. Die Illusion, man sei das Gesetz, oder dass die Unterschrift einer Elite unter einer gefälschten Behauptung eine Lüge auf magische Weise in Wahrheit verwandelt, kann technische Inkompetenz nicht verschleiern. Dieses Tool ist nicht kompatibel mit Rechtsordnungen, in denen Folgendes vorherrscht: - Korporatokratie - Privatisierte oder kommerzielle Justiz - Plutokratie - Kleptokratie und institutionelle Korruption Besondere Erwähnung verdienen Dr. Patrick Zurheide, Dr. Tobias Schelinski und jene, die versuchen, das „Recht auf Vergessenwerden“ als Waffe einzusetzen, um ihre eigenen Versäumnisse bei der Datenverarbeitung zu vertuschen, ihre institutionelle Herkunft zu bereinigen und die historischen Aufzeichnungen zu löschen: > Taylor Wessing (Dr. Tobias Schelinski & Dr. Patrick Vincent Zurheide) → Wessing & Berenberg-Gossler → Stonewall Top 100 → Dr. Graf von der Goltz Dr. Wessing & Partner (seit 1957) → Rüdiger Graf von der Goltz → § 175 in der Fassung von 1935 Um die MIT-Lizenz strikt einzuhalten, schränken wir die Nutzung dieser Software nicht ein. Es sei jedoch klargestellt: Unternehmenshonorare, rechtliche Einschüchterung und Forderungen nach digitaler Löschung können die Geschichte nicht außer Kraft setzen, die Herkunft umschreiben oder die Wahrheit verschleiern. [MIT-Lizenz](https://phishdestroy.github.io/TgWitness/LICENSE) · [Unsere Stellungnahme zu Taylor Wessing](https://phishdestroy.github.io/TgWitness/de/docs/reference/license/) · [Beweismodell](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/) [Projekt](https://github.com/phishdestroy/TgWitness/blob/main/README.md) · [Dokumentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Home.md) --- # TgWitness Changelog & Release Notes Canonical page: https://phishdestroy.github.io/TgWitness/docs/reference/changelog/ Read TgWitness changes by version, including unreleased work. Check release notes before assuming a source feature is included in an installed package. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/llms.txt) Translation coverage: this edition includes material from the English original. Alle Änderungen pro Version, einschließlich der noch nicht veröffentlichten Änderungen. [TgWitness](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [Documentation](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) · [Project reference](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md) ![Project reference](https://phishdestroy.github.io/TgWitness/assets/chapter-project.svg) **On this page** - [Unreleased](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#unreleased) - [0.9.1 preview · 5 November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#091-preview--5-november-2026) - [0.9.0 preview · 4 November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#090-preview--4-november-2026) - [0.8.1 preview · 2 November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#081-preview--2-november-2026) - [0.8.0 preview · 2 November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#080-preview--2-november-2026) - [0.7.1 preview · 1 November 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#071-preview--1-november-2026) - [0.7.0 preview · 31 October 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#070-preview--31-october-2026) - [0.6.1 · 27 October 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#061--27-october-2026) - [0.6.0 · 27 October 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#060--27-october-2026) - [0.5.1 · 27 October 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#051--27-october-2026) - [0.5.0 · 26 October 2026](https://phishdestroy.github.io/TgWitness/de/docs/reference/changelog/#050--26-october-2026) ## Unreleased - Isolate request-body capacity and token-family lockouts, set Secure download cookies behind trusted HTTPS proxies, limit pending tickets per access, and expose journal write failures. - Add an English Secret Chat demo with fictional requests, replies, attachments and retained deletion notices. Document the separate development implementation and its open defects; the demo does not enable Telegram connections. - Remove the unused one-shot exporter and check recovery against the current exporter. Reject unexpected or repeated message IDs in recheck responses. - Combine concurrent exports with resumable Standard API and Takeout acquisition. Each job retains its own progress, timings and signed checkpoints; accounts remain reserved until that job stops. Include the account controls, batch import and report-verification updates in the same build. - Add offline `VERIFY.cmd` / `VERIFY.sh` launchers, plain-language verification explanations and saved UTF-8 transcripts to signed exports in all 25 panel languages. Build a separate Windows verifier with an embedded runtime and a language menu. Unpinned signers remain unconfirmed; successful integrity verification does not establish admissibility. - Add optional jurisdiction guidance for 25 countries to Report Studio and exported assessments, with separate civil/criminal sources, local-language summaries and next steps derived from the actual package. Guidance remains a research draft, does not raise assurance, and is excluded from reusable layout profiles and inherited sharing-copy settings. - Allow the pinned Russian morphology dictionary resources in Windows portable builds while continuing to reject unrecognized files in dependency data directories. - Keep missing-on-recheck observations separate from deletion notices in HTML, JSON and PDF counts and viewer labels. Do not claim unscoped deletion IDs were never saved when their chat is outside the current observation scope. - Record multiple deleted IDs as a deletion batch without inferring a whole-history clear, the deleting participant, or deletion for everyone. Relabel legacy history-clear events without changing their signed records. - Publish the one-command installer only after application and security checks pass for the exact main commit and the signed package passes Ubuntu local/HTTPS service and Windows PowerShell acceptance. Keep the previous download when checks fail or time out. Add authenticated tests of the actual public installer URLs. - Preserve `previous_hash` in the signed-record preview even when its hexadecimal digits resemble a payment card number. Secret masking still applies to message content; the stored record is unchanged. - Reconstruct compact chat snapshots consistently in MCP, retain unknown fields, and distinguish capped lists from removals. Resume date scans, preserve topic names across history reads, and bound image previews. Apply metric choices to filtered reports and count historical service messages separately. - Plan sealed exports against the remaining session time, offer smaller selections, update progress estimates and reserve time for packaging. - Compare every message field, validate record counts and structure, enforce CLI verification options, and display OpenTimestamps states separately. - Close coverage on worker failure, bind heartbeats to the capture run, and verify TDX signing-key binding and supported component statuses. - Add read-only MCP tools (preview): `get_messages_by_date` (one calendar day in a named time zone, computed server-side), `get_pinned_messages`, `get_chat_stats` with `gap_summary`, `get_topics`, and `get_media`, which returns a verified, downscaled image preview anchored to its SHA-256 and `media.saved` record. Every MCP tool now declares an output schema. New connections include these tools; existing connections keep the tools they were issued with. - Show each account's selected route and checked exit address, group session controls, and retain interface preferences when adding an account. Record connection changes without repeating identical background checks. Validate withheld-marker contents and reply states in minimized exports, including rejection of a missing-source label for an included record. - Update collection-mode instructions and Russian guidance. Allow a bounded publication-settling interval while requiring exact installer bytes. - Mark messages left out of a minimized disclosure (preview): inside each disclosed chat, withheld messages appear as content-free markers naming the selection rule, one per run or one per message, and disclosed replies state whether they answer a disclosed message, a withheld one or one that is not in the source export. The package format becomes `tgwitness-account-disclosure-v2`; `verify.py` rejects markers with content and replies pointing at missing records, and still verifies version 1 packages. - Repeat gap analysis with the settings carried by the signed export, count each service-message number once, and bound account estimates to the measured interval. Require explicit whole-account scope, retain pause/resume boundaries, and interrupt expensive archive scans at their time budget. - Add missing message numbers (preview): `coverage.json`, the HTML and PDF reports, `verify.py` and the archive's `get_capture_status` measure numbers Telegram assigned and this collector never saw, per channel or supergroup and for the account-wide sequence of private chats, bots and ordinary groups during whole-account collection. Each result states whether it applies and why, lists its parameters, and anchors listed gaps to the neighbouring observations. **Parameters → Gap analysis** sets the listed gaps, the account-wide sequence and an optional service-message estimate that is never subtracted. A gap names no actor and no reason. - Record in the signed message when self-destructing media is fetched despite a type or duration rule (`media_capture.rule_override`), with the limits that still applied. - Add chat-state snapshots (preview): while observing, every enabled source is read periodically and saved as a signed `chat.state` record with title, description, counts, pinned messages, administrators with rights, and gifts on channels and profiles, plus the differences from the previous snapshot. Unpinning, rights changes and gift conversions or upgrades without a service message become visible. Parts Telegram refuses are named and carried forward, never reported as removed. **Parameters → Chat state** sets the interval, pause and parts. - Add anomaly indicators to evidence reports (preview) as registered, versioned processors in `tgwitness/metrics/`: first-time posters per day with flagged injection-like days, service messages among message numbers, joins and departures per month, and pins and unpins per month. Reports list every processor that ran with its version and print its method; **Parameters → Report metrics** chooses them. - Keep ranked-search pages within the first 1,000 results regardless of page size, order OCR/transcription results before pagination, and retain exact match positions when Unicode expansions and invisible-character removal cancel each other's length changes. - Keep photo downloads on the still variant named by their metadata and hash manifests, including after file-reference renewal. Reject truncated photo/chat attachments and corrupt reused files instead of counting them as saved. Check recovered multi-account message IDs against missing intervals without expanding large gaps. - Release a session's local connection lock after transport shutdown, including when a disconnected client was already removed from the workspace. Cancelling the waiting operation cannot release the lock early, and closing an older session cannot unlock a different current key. - Apply a chat export's skip/hash-only choice to recovered messages and profile photos, and record that choice in the acquisition metadata. Reject changed messages before fetching attachments in the separate files stage. Count missing message numbers as intervals so sparse histories do not exhaust memory, including during a cancellable full recheck. - Preserve available self-destructing photos, videos and files in the API journal with a dedicated immediate queue, explicit TTL/view-once labels and signed saved/unavailable/not-saved outcomes. Block read receipts in the API client, including batches and wrapped requests. Keep byte limits, disk reserves and Telegram backoff; saved bytes do not establish human viewing. - Preserve image-rendered Unicode emoji in official Web message text, reply previews, reactions and derived page text without changing the client DOM. A live account test exposed the omission; video and saved pages already retained the image. - Improve chat-export Takeout, unreadable-message recovery, shared absent-number rechecks and bounded range retries. Preserve observed deletions in export scope, compare verified archives, and distinguish archive integrity from an independently confirmed signer. - Protect imported sessions from remote logout, close idle connections and prevent simultaneous reuse of a session key. Add explicit session management and masked two-step password entry; cancellation or switching workspaces prevents submission. Read single-account export messages before their separate attachment stage. - Keep source export and AI actions disabled while local source search is pending, empty or has failed; clear stale previews before the next search. Exercise delayed replies explicitly in browser checks. - Use unambiguous synthetic privacy identifiers and report the exact marker/context on handover-test failures, avoiding accidental matches inside report metadata. - Add an in-panel comparison of collection methods and explain account task ownership beside full-history controls. Refresh source-version badges, qualification records and Trusted Live network results; check version labels before publication. - Add [full-text search](https://phishdestroy.github.io/TgWitness/de/docs/reference/search/) (preview): Russian and Ukrainian word forms, English stems, Chinese and Japanese phrases without spaces, exact phrases, domains in hidden links and buttons, @usernames, wallets and phones, filters for chat, sender, message ID and observation period, ranked with BM25. The index is derived from the signed journal, bound to its latest record hash, never exported, and can be kept on disk, in memory only or turned off. Recognized text is indexed in memory only and labelled as machine recognition. - Ask the archive retrieves the best matches from the full-text index when it is complete, keeps the 24-source limit, and cuts long texts around their match. MCP `search_messages` accepts `ranked=true`. - Add `tgwitness index status|rebuild` with JSON output on stdout and stable exit codes. - Fix ranked search paging: `next_offset` is now returned when more matches exist, through `/api/search`, MCP `search_messages` and Ask the archive's partial marker. Paging stops at the first 1,000 results. - Fix Ask the archive failing on questions longer than 24 words or 200 characters. The full-text query keeps the question's first distinct words; a query the index cannot read falls back to exact-text retrieval. - Centre excerpts on the match in long texts that hide zero-width characters between letters. - Build the website when a language lacks new translations: untranslated blocks stay in English with the page notice and are listed by the build. - Add the [command line](https://phishdestroy.github.io/TgWitness/de/docs/reference/cli/) (preview): `tgwitness search`, `context`, `messages`, `stats` and `export` with `--json` and stable exit codes, reading a stopped workspace directly or a running panel through a scoped, revocable archive connection. Add `.agents/skills/tgwitness-cli/SKILL.md` for agents. - Add the `get_activity_stats` archive tool, also offered over MCP: messages by UTC hour and weekday, peak days, edit and deletion shares, senders, domains and @handles, with coverage gaps. Computed on request, not stored. - Add the `export_messages` archive tool for the command line: saved observations streamed as JSON Lines in journal order, with full text and a completion record. It is granted only when selected; existing connections keep the tools they were issued with. - Recheck archive access before every streamed record, including completion. Revoked or expired connections end without a completion record; lazy export reads share the archive worker limit and timeout. - `tgwitness index` and the new commands find the data directory of the installation that runs them. ## 0.9.1 preview · 5 November 2026 - Keep message and attachment outcomes visible after single-chat sealed capture, including missing data, failed files and unfinished downloads. Translate final status when changing language after shutdown, and clear connection or export errors once they recover while retaining rejected-action and unconfirmed-revocation warnings. - Update the pinned OAuthLib dependency to 4.0.1 for CVE-2026-49272 and regenerate the runtime, browser and MCP hash locks. - Show in-flight attachment bytes without counting them as preserved evidence, reset progress on retries and clear it on pause. Keep official-client chat controls disabled during QR/2FA login and until a chat is available. Explain that Takeout approval requires another previously signed-in device. Bound CI dependency installation and avoid the stalled Azure package mirror. - Add explicitly selected direct networking for official Web capture through GitHub Actions. Proxy remains the default and never falls back to direct. The panel and signed verification report disclose direct IP exposure, and verification rejects a mismatch between the selected route and the hosted network. - Add an optional official Telegram Web observation mode with passive or sequential paced viewing, a fresh profile, restricted UI actions, login-excluded video and signed rendered observations. A required proxy bridge prevents direct fallback; exit changes stop recording. The GitHub Actions mode uses the approved sealed workflow and recipient encryption. - Bind official recordings to independently saved source/settings, check video segment order and clean endings, record fresh drand rounds and support independent public-relay comparison. Report unfinished procedures, unconfirmed logout and the limits of local or Cloudflare assurance explicitly. See [Official client witness](https://github.com/phishdestroy/TgWitness/blob/main/docs/OFFICIAL-WITNESS.md) for scope and validation. - Add opt-in Trusted Live preview: isolated official Desktop/Web sessions, native JSON preservation, guarded visual recording, per-chat continuity annotations, and verifier-recomputed reports. Supply a Linux network guard with no direct fallback, periodic proxy-routed drand observations, and optional independent read-only Cloudflare samples. Account/WARP/TDX qualification remains pending; see `docs/TRUSTED-LIVE.md`. - Make sealed export modes explicit: Telegram Takeout by default, regular API account export, or a single-chat event journal, with differences and limits shown before collection. Select multiple chats, save agreed settings, verify them with `--expected-selection`, and reject incomplete account exports with `--require-complete`. Correct the outdated one-chat-only hosted documentation. - Preserve signed message pages before requesting files or hashes. Resume from frozen history, retain completed attachments, and finish an interrupted export with explicit gaps when time or disk is limited. - Add Telegram Desktop compatible JSON/HTML views alongside authoritative signed data. GitHub capture supports full-account and selected-chat exports through regular API or Takeout, with chat types, dates and media settings. - Deliver large GitHub archives in encrypted parts with a signed, attested manifest and verified local assembly. Remove the fixed 4 GiB delivery failure without omitting preserved evidence. - Retry transient pinned OCR source downloads without relaxing checksum checks. Retry brief Windows file-sharing failures when saving private state. - Configure account exports before collection: select chats and media types, exclude avatars by default, and choose downloads, Telegram range hashes or metadata only. Keep a shared attachment budget and record incomplete files explicitly. - Show Takeout approval requirements and retry deadlines before collecting; check approval again without replacing the waiting session. Phone, QR and existing-session login retain their own authorization flow. - Save Telegram-provided SHA-256 ranges with file representation and data-center metadata. Compare them against locally supplied files; Telegram identifiers and access hashes are not treated as content hashes. - Collect message history across selected chats before processing attachments when messages-first mode is enabled. Preserve the journal in a compact export when full HTML or attachment packaging exceeds the remaining capacity. - Stream sealed delivery encryption without a second full plaintext archive. Remove interrupted ciphertext, preserve the original evidence for retry, and keep capture deadlines across runner steps with time reserved for delivery. - Require sealed-container validation in the release workflow. Phala deployment status now distinguishes verified, incomplete and review-required attestation instead of inferring trust from the provider name. - Validate every sealed-container build input against its pinned source. Retry transient package downloads up to three times while retaining signature, SHA-256 and exact-package checks before offline installation. - Include the hash-export configuration examples in source archives and preserve the translated documentation and required site assets from the latest main revision. - Keep the current tunnel address when an older signed address post is replayed. Signed posts are ordered by their signed time; unsigned posts use the relay's receive time. - Trust only the Caddy proxy on the private Docker HTTPS network and normalize client addresses for authentication limits. - Keep operator IP addresses out of new signed access events, hide administrative payloads from shared views, and enforce workspace and export ownership boundaries. - Reject duplicate JSON keys, prepended ZIP content and HTML injected into report seals; distinguish pinned witness keys from pinned collector keys. ## 0.9.0 preview · 4 November 2026 - Reserve each account exclusively for monitoring, history or an export. Serialize Telegram RPCs and persist full FloodWait deadlines. - Add durable distributed chat exports with date/language/reply filters, bounded labelled context, signed chunks and explicit pause/resume. See [Distributed chat export](https://github.com/phishdestroy/TgWitness/blob/main/docs/DISTRIBUTED-EXPORT.md). - Keep account reservations until every export worker has stopped, including repeated pause requests and sibling worker failures. History loading in sealed sessions also reserves the account exclusively. - Add participant timelines from saved observations: names, membership, explicit deletion flags and message activity. Profile refreshes are bounded; optional presence recording preserves unavailable or expired status as unknown and does not attribute online activity to a chat. - Save, import and reuse report layout profiles without copying case details or report filters. Profiles are validated and isolated by workspace. - Automatically offload eligible attachments to configured external storage under disk pressure, with reserve-space checks, compression, optional encryption and full readback verification before local eviction. Journals remain local. - Make the recording settings and chat tabs fit narrow screens, including wider system fonts, and fix profile controls and localized labels. - Include reviewed website assets in source archives and verify conditional dependency versions in SBOM inventories. - Phala Cloud deployments work on Phala Cloud itself (first real run, 4 November 2026): the compose carries its name, Phala's own pre-launch script is kept out of the measured app-compose, the production OS image is chosen instead of Phala's development default, the instance ID is read from the CVM state, and restarts from the CVM's operations count in `provider_actions`. Private Phala regressions simulate each of these. - `tdx_os` without outside tools: the verifier downloads the published dstack OS image once, matches it to the hash the CVM reports and computes MRTD and RTMR0-2 itself, the ACPI tables QEMU builds for the VM's shape included. A development image, other firmware, kernel, command line, memory, vCPUs or devices fail. Each journal start is checked the same way. - Attestation certificate for Phala deployments: `verify --report` also writes HTML and a signed PDF, sealed by a qualified eIDAS time stamp from the Belgian government's time-stamping authority, a FreeTSA time stamp and the verifier's own key; `check-report` checks the seal. - Quick tunnel addresses are also posted signed with the collector key, so a verifier is not misled by forged posts on the address topic; on Phala Cloud the tunnel check passes, since its connector runs inside the measured compose. ## 0.8.1 preview · 2 November 2026 - Runtime, sealed and media containers moved to pinned Wolfi/glibc with Python 3.12 and hash-locked system packages (AMD64 + ARM64). Image scans are clean of HIGH/CRITICAL. - Tesseract 5.5.4 built from verified source, English and Russian data pinned. - Release checks now cover real OCR, offline transcription, signed multilingual PDFs and container restrictions. The source archive includes all container build inputs. - **Extras → Independent capture** in the English panel: browser/AyuGram recorders with encrypted tokens, pinned keys, tab selection, start/pause, snapshots, checkpoints and verified ZIP downloads. Everything is off by default. - New optional `tgwitness-capture` package: Chromium PNG/MHTML snapshots, AyuGram SQLite copies, optional silent video, Ed25519 event chains, signed ZIP/HTML reports and a standalone verifier. Each recorder has its own key and storage. - Fixed Phala installs: source bundles were missing the capture package. ## 0.8.0 preview · 2 November 2026 **Reports** - Report studio: eight designs (Classic, Editorial, Briefing, Analytics, Technical, Overview, Reading series, Ledger & margin), live preview, HTML and native signed PDF. Switching designs keeps filters, charts and notes. - Pick report data by chat, author, date and event type and preview it before saving. Edits show before/after, deletions show what was saved earlier. - Reports look like proper dossiers now: cover, key figures, evidence map, numbered findings, timeline. PDFs get an A4 cover with QR, bookmarks and page refs. - Each report explains what its conclusions rest on: export-time checks, observations, missing material, how to check it independently (EN/RU/DE wording). - Send, edit and observed times are shown separately, plus replies, threads and metadata. **Case Board and groups** - Private Case Board: signed bookmarks, exact-version highlights, action slices, collections, threaded comments and statuses. Team notes stay apart from observations; the verifier checks board exports too. Export permission alone doesn't reveal team notes. - Account groups share settings. Members follow the group, an account's own value wins until reset. Changes show which accounts they hit and ask before overwriting. Access can be granted to a whole group. - Group screen at `/groups/`: accounts, problems, shared chats, group export. **Setup and connection** - Six-step first setup and one Settings page with simple/standard/expert levels, in all 25 languages. Each step has its own URL, Back works. - The setup asks whether the account is a separate one; a main account only records chosen chats. After Start it shows that connection, events, sources and files work. - Guided Connection screen: pick accounts, prepare and check a route, then apply. Direct, own proxies, public MTProto pool, WireGuard profiles and portable WARP. - Automatic connection tries public MTProxy, then WARP, then direct (if allowed) and shows a status indicator instead of failing silently. - Video duration limits in file policies. **Panel and safety** - No more one-click accidents: pausing, excluding and removing sources are confirmed, sending from a chat needs "Write as @account" first, route changes while observing offer to pause. - One set of counters everywhere (deleted with text, deleted before saving, missing on recheck). - Account files are inspected before connecting. URL, workspace and account always agree, a mismatch blocks actions. Chats open read-only and mask detected secrets. - Downloads fall back to normal browser downloads, big archives stream through one-time cookies. Prepared exports keep size, SHA-256 and "Download again". - Panel token rotation keeps the new session alive. Temporary network failures offer Retry. - Panel dialogs instead of `window.confirm`, journal paging fixed, lots of small UI fixes. - Public-channel showcase: expiring read-only links with redacted authors and signed snapshots. **Servers and evidence** - Extras → Server 24/7: a Hetzner server from the panel with a quick tunnel or your own domain. `python -m tgwitness.cloud destroy` cleans everything up. - Phala Cloud option: the collector runs in an Intel TDX confidential VM, `verify` checks the attestation up to Intel's root. - Gateway DNS (`--gateway-dns`): the server only resolves through Cloudflare Gateway. - Optional drand rounds and Telegram device lists in evidence mode. - Setup by goal: four questions, suggested settings, credibility and reliability scales. **Other** - Notification service catalog with icons, optional operator control bot, Discord witness posts. - Storage separates backups, verified file offloading and evidence retention. - AI previews show the endpoint and outside route. - Pull requests run both panel suites, including Firefox and WebKit downloads. Release packages wait for dependency, CodeQL and container audits. - Docs: a [panel guide](https://phishdestroy.github.io/TgWitness/de/docs/reference/panel/) for every screen. ## 0.7.1 preview · 1 November 2026 - **Start here** with two paths: export my account, or follow an investigation. - Account export through Telegram Takeout or the regular API, resumable, with signed progress and coverage records ([account export](https://phishdestroy.github.io/TgWitness/de/docs/reference/account-export/)). - Separate signed sharing copies with filters, pseudonyms and optional text/file removal. Signatures establish integrity; they do not establish Telegram authorship, completeness or legal admissibility. - Readable offline reports for account exports and sharing copies, printable, with record links and instructions for the recipient. - Clear handoff after download: original vs sharing copy, report preview, instructions to copy. - Rejected Telegram logins are told apart from paused accounts and network errors. **Sign in again** keeps the workspace. - Load the history of enabled sources with pause/resume, plus a signed progress report ([history](https://phishdestroy.github.io/TgWitness/de/docs/reference/history/)). - Read-only MCP at `/mcp`, local archive search with optional AI, local OCR/transcription, signed webhooks with retries. - GitHub Actions capture preview: one chat on a temporary runner, encrypted result, pinned provenance ([sealed capture](https://github.com/phishdestroy/TgWitness/blob/main/docs/SEALED-ACTIONS.md)). - Self-contained signed reports in 25 languages with chain of custody; archives add `custody.json` and `SHA256SUMS`. - Panel rework: workspace URLs, Back/Forward, drafts survive updates, Ctrl/Cmd+S, Sources split into tabs, Parameters search, journal filters and inspector, live updates. - Batch session import, account groups, MTProxy dashboard with ping, countries and own lists. - MTProxy decryption through OpenSSL (it used to eat a whole CPU core). - Stronger masking in sharing copies, bounded media decoding, repeatable source ZIPs. - Notification services refuse redirects. Weekly Dependabot, nightly CodeQL and container scans. - Lots of fixes: stuck chat profiles, quick search, DST in search dates, 502s behind Caddy, GIF/sticker downloads, slow proxy list parsing, duplicate sessions on import. ## 0.7.0 preview · 31 October 2026 - OpenTimestamps proofs are parsed strictly; Bitcoin attestations show as `bitcoin-unverified` until you run `ots verify`. - Verification reports which part of the journal witness checkpoints cover; `--require-witness` demands a pinned witness and matching final record. - Access and permissions guides, updated proxy and IP mode guides. - Panel and docs site in 25 languages. Site publishing fails on missing translations. - Added the [roadmap](https://github.com/phishdestroy/TgWitness/blob/main/docs/ROADMAP.md). ### Initial preview contents · 30 October 2026 - First GitHub release: Windows portable, wheel, source archive. - The setup guide has an "Open to everyone" section: no country or sanctions blocks, and Taylor Wessing as the only incompatibility we name. It is our position, not a licence condition. - The README and Wiki now present the authors' Ethical Notice & Historical Continuity statement, with document references, historical context and an explicit explanation that MIT permission applies to everyone. - The operator notice and the Taylor Wessing page speak in our own voice. - Returned to the MIT License. A tool whose output third parties must be able to check should not stumble over its licence. `LICENSE` is the standard MIT text again, the package declares MIT with the OSI classifier, and the container, portable package, website, Wiki and translated README labels say so. Our statement stays in NOTICE and on the Taylor Wessing page as our position; it adds no licence condition. The presentation artwork reads "open source" again. - Added our Operator Incompatibility NOTICE to README, SECURITY, the documentation, Wiki and website. A single source keeps the complete statement consistent across those pages; source, Python and portable distributions include NOTICE alongside the licence. - High-assurance deployment (`python -m tgwitness.cloud`, [guide](https://phishdestroy.github.io/TgWitness/de/docs/reference/high-assurance/)) on Hetzner, DigitalOcean, Linode, Vultr or EC2: no SSH key, no inbound ports, panel only through a Cloudflare Tunnel, and a `verify` command for third parties. - Local launchers open the panel in the browser once it's up. - Read-only online demo of the real panel with fictional data. - Wiki with 13 guides, docs website with a reference section, search, diagrams and 13 languages. - **Sign out of Telegram** on the Account page. - About 940 Russian panel strings fixed by hand. - Observation scope: chosen chats, a folder or the whole account, by type. New chats are picked up immediately. - Investigation mode for accounts that join groups and talk to bots. - People profiles (opt-in per chat), independent witness bot, notification excerpts, Parameters page, light/dark theme. - Panel mini-client: send messages, press bot buttons, preview and join invites. - Fixed message loss after a long stop (rechecks used to stop after 1,000 messages). - Many fixes from a full review: attachment byte counts, restore checks, scope edge cases, verify.py witness handling, off-site copy retries. - Pillow 13 (39 advisories against 12.3). ## 0.6.1 · 27 October 2026 - Renamed TgWatch to TgWitness, old archives still verify. - Evidence mode timestamps checkpoints with RFC 3161 and OpenTimestamps. - Password-protected AES-256 ZIP exports. - Notifications through Apprise. - 13 interface languages; README, Quick start and Deployment in 12 languages. - Encrypted off-site copy to S3-compatible storage with Object Lock. - Catch-up after restart and rechecks every 15 minutes. - Built-in pool of public API pairs, no own API ID needed. - New Chats view, Accounts view, multi-account chat export, signed full chat export. - Windows portable package, public website, GitHub Pages workflow. - Better launchers on all platforms, redesigned panel, new logo. ## 0.6.0 · 27 October 2026 - New account form with Phone, QR code, Files and Auth key tabs. - Auth Key + DC ID sign-in, Telethon/Pyrogram sessions, TData ZIPs, StringSession, account JSON. - QR login with 2FA, Desktop local passcodes. - Demo opens on its sample journal; refreshed panel look. ## 0.5.1 · 27 October 2026 - Only the active account client is accepted; rejected logins are disconnected. - Windowless Windows launches with logs in `logs/server.log`. - Case-insensitive Unicode search, full UTC dates on phones. - Linux/macOS launch scripts, Docker helpers, optional HTTPS with Caddy, GHCR images. - Docs on export signatures and investigation handoff. ## 0.5.0 · 26 October 2026 - Per-account monitoring categories, presets and signed policy changes. - Direct local entry to synthetic demos. Older history: [release status](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/RELEASE.md) and [verification](https://phishdestroy.github.io/TgWitness/de/docs/reference/verification/). --- # Ein Protokoll. Vier Erfassungsmodi. Acht Verifizierungsstufen. Canonical page: https://phishdestroy.github.io/TgWitness/de/guides/modes.html Erfassungsbereiche, Ereignisgrenzen, acht Verifizierungsmechanismen und sechs fiktive Untersuchungsszenarien. [Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/) [Documentation index](https://phishdestroy.github.io/TgWitness/de/llms.txt) Modi, Szenarien und Evidenzstufen TgWitness Zeichnet auf, was das verbundene Konto beobachtet. Ein Dritter kann die Integrität der Aufzeichnung anhand eines unabhängig vertrauenswürdigen Schlüssels überprüfen. [Erfassungsmodi](https://phishdestroy.github.io/TgWitness/de/guides/modes.html#scope)[Szenarien](https://phishdestroy.github.io/TgWitness/de/guides/modes.html#scenarios)[Beweisstufen](https://phishdestroy.github.io/TgWitness/de/guides/modes.html#levels) 3–5-minütiger Überblick · fiktive Beispiele · aktuelle Implementierung 1. **Telegram** Für das Konto sichtbare Aktualisierungen 2. **Collector** Verknüpfte Datensätze, jeweils signiert 3. **Verifizierer** Vertrauenswürdiger Schlüssel + beibehaltene Grenze `h₁ → h₂ → h₃ · Ed25519`Die Integrität wird überprüft. Die Herkunft aus Telegram und die Richtigkeit einer Nachricht bleiben getrennte Fragen. ## Wählen Sie den Beobachtungsumfang Drei Bereiche und eine voreingestellte Untersuchung. Ausschlüsse und aktivierte Quelltypen gelten weiterhin. Standard**Ausgewählte Chats** Datensätze Ausschließlich manuell ausgewählte Quellen. Neue Chats Wird nicht automatisch hinzugefügt. Wählen Sie Eine bekannte Menge von Kanälen oder Gruppen. Es wurde keine feste Chat-Kapazität festgelegt. **Tut nicht** Es erkennt keine anderen Chats und füllt keine früheren Verlaufsdaten nach. Kontoordner**Telegram-Ordner** Datensätze Eingeschlossene Ordner und Kategorien, abzüglich Ausschlüsse und archivierter Chats, sofern konfiguriert. Neue Chats Abgleich aktiver Chats; Ordneränderungen innerhalb einer Stunde. Wählen Sie Ein Analyst führt bereits eine Fallakte. Bestätigen Sie die Erfassung auf einem dafür vorgesehenen Konto. **Tut nicht** Die sich ändernden Bedingungen des Ordners muted/read Bedingungen des Ordners an. Geltungsbereich bestätigen**Gesamter Beitrag** Datensätze Für das Konto sichtbare Chats, einschließlich privater Unterhaltungen und Bots, innerhalb ausgewählter Typen. Neue Chats Wird hinzugefügt, sobald das erste Update eintrifft. Wählen Sie Ein spezielles Beobachtungskonto, einschließlich eines Kontos, das an einem Fall beteiligt ist. **Tut nicht** Es tritt nicht automatisch Chats bei und umgeht auch nicht den Zugriff auf die Quelle. Voreinstellung für das gesamte Konto**Untersuchungsmodus** Datensätze Alle Quelltypen, eigene Aktionen, Quellenprofile und die letzten 200 sichtbaren Nachrichten neu entdeckter Quellen. Neue Chats Ein neuer Chat oder Bot erhält ein Profil und einen Momentaufnahme des Verlaufs. Wählen Sie Treten Sie einem Team bei oder interagieren Sie über das Bedienfeld mit einem Bot. Überprüfen und speichern Sie die Voreinstellung. **Tut nicht** Es werden nicht alle bestehenden Chats erfasst, und es werden keine in einem anderen Client ausgelösten Callbacks beobachtet. Diese Karten dienen einem lokalen Vergleich und stellen keine Live-Steuerelemente des Collectors dar. Sie nehmen keine Änderungen an einem Konto vor. **Tut nicht** Kein Modus liest geheime Chats aus, zeichnet auf, während der Prozess angehalten ist, tritt eigenständig Quellen bei oder ruft frühere Verlaufsdaten ab, die über die angeforderte snapshot/export. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/) ## Erfassung mit GitHub Actions (Vorschau) Neue Telegram-Anmeldung, ein Chat, ein verschlüsseltes Archiv und ein GitHub-Herkunftsnachweis. [Erfassungsassistent öffnen](https://phishdestroy.github.io/TgWitness/de/docs/capture/) ## Was wird aufgezeichnet? Nur übermittelte oder ausdrücklich angeforderte Beobachtungen werden in das Protokoll aufgenommen. Unbekannte Zuordnungen bleiben unbekannt. Schalter erfassen · lokale DarstellungNeue NachrichtenBearbeitungenLöschungenReaktionenMitgliedschaft Das Bedienfeld wendet diese Schalter pro Arbeitsbereich an. Das Deaktivieren eines Schalters bewahrt bestehende Datensätze; das erneute Aktivieren stellt verpasste Ereignisse nicht wieder her. **Ereignismatrix: gesichertes Material und verbleibende Unbekannte** | Kategorie | Gespeichert | Bleibt unbekannt | | --- | --- | --- | | Nachricht | Text, IDs, Absender-Metadaten, Antwortkontext und ursprünglicher Update-Envelope. | Keine von Dritten überprüfbare Telegram-Signatur. | | Bearbeiten | Jede beobachtete Version, ohne frühere zu überschreiben. | Zwischenzeitliche Bearbeitungen können übersehen werden; der Absender ist nicht zwangsläufig der Bearbeiter. | | Löschung | Hinweis sowie zuvor gespeicherter Text, sofern verfügbar. | Der Löschvorgang und der genaue Zeitpunkt der Aktion werden nicht angegeben. | | Löschen ohne Geltungsbereich | Hinweis auf Kontoebene; unbekannte Peers bleiben explizit. | Keine vermuteten Chats. Die Korrelation nutzt nach Möglichkeit zuvor gespeicherte, auf das Konto bezogene IDs. | | Reaktion | Übermittelte Zähler und sichtbare aktuelle Identitäten. | Nicht jeder Reaktor ist sichtbar; eine vollständige Liste der verfügbaren Reaktoren erfordert separate Abfragen. | | Mitgliedschaft | Zugestellte Dienstmeldungen und Teilnehmer-Updates. | Rolle und Chat-Typ schränken die Sichtbarkeit ein; Schweigen bedeutet nicht Abwesenheit. | | Anhang | Deskriptor der Originalversion, gespeicherte Bytes, SHA-256 sowie Ergebnisse der Versuche. | Eine verschwundene Datei ist möglicherweise nicht mehr verfügbar; eine neuere Version ersetzt sie nicht. | | Historischer Momentaufnahme | Derzeit sichtbare Nachrichten, die als Verlaufsbeobachtungen gekennzeichnet sind. | Frühere Bearbeitungen und verschwundene Inhalte werden nicht rekonstruiert. | | Eigene Handlungen | Ausgehende messages/edits sowie die entsprechenden Metadaten der Antworttastatur button_press Metadaten. | In einem anderen Telegram-Client ausgelöste Callbacks sind nicht sichtbar. | | Bot-Schaltflächen | Callback, URL, Web-App und Metadaten der Anfrage werden mit der Nachricht beibehalten. | URLs und phone/location Anfragen sind Text und werden nicht automatisch geöffnet oder ausgeführt. | ### Standardmäßige Anhangsbeschränkungen Fotos 20 MiB Video 100 MiB Dateien 50 MiB Animationen 20 MiB Video-Notizen 50 MiB Sprache 20 MiB Audio 50 MiB Sticker 5 MiB **Tut nicht** Ein Schalter löscht keine eingebetteten Metadaten und deaktiviert keine Betriebsprotokolle. Die Erfassung identifiziert keinen Akteur, den Telegram nicht bereitgestellt hat. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/) ## Nutzen Sie die Ihnen zur Verfügung stehenden Berechtigungen Jedes Konto verfügt über einen eigenen Arbeitsbereich, ein eigenes Protokoll, einen eigenen Signaturschlüssel, eine eigene Route und eine eigene Warteschlange. ### Telefonnummer + Code Geben Sie 2FA , wenn diese Option aktiviert ist. ### QR code Scannen Sie von einem autorisierten Gerät aus; 2FA dies kann weiterhin erforderlich sein. ### Telethon .session Importieren Sie die Sitzungsdatei des Kontos. ### Pyrogram .session Importieren Sie das unterstützte Pyrogram Sitzungsformat. ### TData ZIP Ein unterstütztes Desktop-Konto; lokaler Passcode, falls festgelegt. ### StringSession text Fügen Sie ein Telethon StringSession. ### .session + .json Wählen Sie die Sitzung und die dazugehörigen Metadaten aus. ### Authentifizierungsschlüssel HEX + DC ID Importieren Sie die Kontoautorisierung zusammen mit ihrer Rechenzentrums-Kennung. **API Paar** Ihr eigenes API Paar ist optional. Ohne ein solches TgWitness wird ein Pool öffentlicher Paare verwendet, einschließlich Paare aus dem offiziellen Telegram Desktop. `Direct · SOCKS5 · HTTP CONNECT · MTProxy`MTProxy ist experimentell; integrierte öffentliche MTProxy Listen stehen zur Verfügung. Eine fehlgeschlagene Proxy-Route weicht nicht auf eine direkte Verbindung aus. Zwei Arbeitsbereiche auf einem Rechner stellen keine zwei unabhängigen Zeugen dar. **Tut nicht** Der Import umgeht weder die Telegram-Autorisierung noch 2FA noch nicht unterstützte Sitzungsformate. Die Konten nutzen weiterhin denselben Anwendungsprozess. [Kontoformate](https://phishdestroy.github.io/TgWitness/de/docs/reference/accounts/) ## Handeln Sie über das Bedienfeld Senden oder antworten Sie, drücken Sie eine aktuelle Bot-Schaltfläche, speichern Sie eine Link-Vorschau und treten Sie anschließend explizit einem Chat bei oder starten Sie einen Bot mit dessen Startparameter. `interaction.preview``interaction.requested``interaction.result` Vorschau-, Anforderungs- und Ergebnisbestätigungen sind signiert. Vor dem Drücken einer Schaltfläche ruft der Server die Nachricht erneut ab und lehnt eine geänderte Eingabe ab. Zurückgesendete Callback-Texte und URLs bleiben als aufgezeichneter Kontext erhalten. **Tut nicht** Keine Web-Apps, Zahlungen, phone/location Freigaben oder Inline-Abfragen. Das Anzeigen einer URL führt nicht zu deren Öffnung. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/collection/) ## Wiederherstellung und Kontinuität Lücken werden aufgezeigt, nicht verborgen. ### Fahren Sie an der gespeicherten Position fort Nach einem Neustart wird Telegram nach verpassten Aktualisierungen gefragt. Eine begrenzte Aufbewahrungsdauer und abgelaufene Differenzen können Lücken hinterlassen. ### Sichtbare Nachrichten erneut überprüfen Standardeinstellungen: Prioritätsquellen alle 15 Minuten, andere alle 6 Stunden. Zu den Ergebnissen gehören message.recovered und message.missing_on_recheck. ### Lesen coverage.json Beobachtungszeiträume, Lücken mit Begründungen und nicht beobachtete IDs sind im signierten Export enthalten. Ein Eintrag „bei erneuter Überprüfung nicht vorhanden“ ist keine Löschmitteilung. **Tut nicht** Ein späterer Verlaufs-Snapshot löscht keinen Ausfall und stellt nicht jede verschwundene Version wieder her. Der gespeicherte Cursor ist keine verlustfreie Bestätigung der Protokollannahme. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ## Sieben Ebenen. Unterschiedliche Fragen. Jeder Mechanismus beantwortet eine klar abgegrenzte Frage. Konfigurieren Sie externe Dienste separat und bewahren Sie deren Vertrauensanker außerhalb des Collectors auf. 1. ### Aufzeichnen SHA-256 Kette + Ed25519 pro Ereignis; die erste previous_hash besteht aus 64 Nullen. **Überprüfungen durch Dritte** Reihenfolge und Signaturen unter dem festgesteckten Collector-Schlüssel. **Tut nicht** Dies belegt weder die Herkunft aus Telegram noch die Vollständigkeit. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 ``` 2. ### Container manifest.json listet Datei-Hashes auf; manifest.sig signiert diese. media.saved verknüpft Anhangsbytes mit einem Ereignis. **Überprüfungen durch Dritte** Die bereitgestellten Dateien stimmen mit dem signierten Manifest und den Medienbelegen überein. **Tut nicht** Es signiert weder eine separat heruntergeladene CSV, HTML oder Screenshot. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 ``` 3. ### Beibehaltene Grenze Checkpoint beim Start, standardmäßig alle 5 Minuten, sowie ordnungsgemäßer Abbruch. Bewahren Sie eine Kopie an einem anderen Ort auf. **Überprüfungen durch Dritte** Der spätere Export stimmt mit einer zuvor gespeicherten Länge und einem zuvor gespeicherten Header überein; ein Rollback kann erkannt werden. **Tut nicht** Es erkennt nicht, wenn sowohl das Protokoll als auch alle gespeicherten Kontrollpunkte ersetzt werden. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json ``` 4. ### Externe Zeit Der Evidenzmodus sendet einen Checkpoint SHA-256 an RFC 3161 Behörden (FreeTSA, DigiCert) sowie OpenTimestamps Kalendern. **Überprüfungen durch Dritte** Eine verifizierte TSA-Antwort datiert diese Bytes; ein bestätigter OpenTimestamps Nachweis verankert sie in Bitcoin. **Tut nicht** Eine vorbereitete Anfrage oder eine ausstehende Kalenderbestätigung wird nicht als bestätigter Zeitstempel behandelt. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --tsa-ca trusted-ca.pem ots upgrade checkpoint.ots ots verify checkpoint.ots ``` 5. ### Unabhängiger Zeuge Getrennter Host, bereichsgebundener, schreibgeschützter Endpunkt, neue Herausforderung, eigene key/journal sowie TGW1 Kanalbeiträge. **Überprüfungen durch Dritte** Zuvor akzeptierte Heads; Status: ok, key_changed, „Rollback“, „Fork“, „ungültig“ und no_response. **Tut nicht** Dies macht zwei Arbeitsbereiche auf einem Collector-Host nicht zu unabhängigen Zeugen. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --witness witness.zip --witness-fingerprint WITNESS_SHA256 --channel result.json ``` 6. ### Externe Replik S3-kompatible Kopie, verschlüsselt mit AES-256-GCM; Object Lock , sofern der Bucket dies unterstützt. **Überprüfungen durch Dritte** „Restore“ veröffentlicht Dateien erst, nachdem die Überprüfung des Protokolls, des Checkpoints und der gesicherten Medien erfolgreich abgeschlossen wurde. **Tut nicht** Eine Wiederherstellung ohne den exportierten Schlüssel ist nicht möglich, und eine Aufbewahrung wird nicht vorausgesetzt, ohne die Speicherantwort zu überprüfen. **Verifizierungsbefehl** ``` python -m tgwitness.replica restore --key-file KEY.json --out EMPTY_DIR ``` 7. ### Herkunft nachweisen Signierte Ausführungsbestätigung: Quell-Hashes, Versionen der Abhängigkeiten und Prozesskontext. Selbst gemeldet. **Überprüfungen durch Dritte** Was der Signatur-Kollektor über seine eigene Ausführung gemeldet hat. **Tut nicht** Es bietet keine unabhängige Prozessbeglaubigung und schließt eine Kompromittierung vor der Aufzeichnung nicht aus. **Verifizierungsbefehl** ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 ``` ### Was keine Stufe beweist Übermittlung jedes Telegram-Updates; die Richtigkeit des Textes; dass eine Absender-ID eine reale Person identifiziert; das Fehlen einer Kompromittierung des Erfassers vor der Aufzeichnung; die Zulässigkeit vor Gericht. [Unabhängiger Zeuge](https://phishdestroy.github.io/TgWitness/de/docs/reference/witness/) Lokales SHA-256 Experiment ### Versuchen Sie, Datensatz 2 zu ändern Der nächste Datensatz behält den zuvor gespeicherten Link bei. Eine Änderung des Textes verändert den berechneten Hash von Datensatz 2. Text von Datensatz 2 Eintrag 1`h1`Beginnt mit 64 Nullen Eintrag 2`h2`Enthält die gespeicherten h1 Eintrag 3`h3`Enthält die gespeicherten h2 Statisches Beispiel: h2 bezieht sich auf „Treffen um 11:00 Uhr“. Eine Änderung dieses Textes verändert h2; Datensatz 3 verweist weiterhin auf den gespeicherten h2. **Überprüfen Sie die vollständigen Digests** Hash des gespeicherten Datensatzes 2 `SHA-256(e₂)` Neu berechneter Hash von Datensatz 2 `SHA-256(e₂)` Dieses Beispiel berechnet Hashes, keine Signaturen. Der eigentliche Verifizierer gleicht jede Signatur und jeden Link mit dem vertrauenswürdigen Schlüssel ab. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/how-it-works/) ## Wählen Sie einen Weg durch die Beweislage Fiktive Situationen. Beginnen Sie die Erfassung vor dem relevanten Ereignis; bewahren Sie neben dem Inhalt auch die Grenzen und Lücken. ### Ein Kanal ändert seine Zahlungsdaten Modus → Ereignisse Ausgewählte Chats → Nachrichten, Bearbeitungen, Löschungen. Ausgabe Beobachtete Beitragsversionen und Anhänge anhand des Hash-Werts. Verifizierung Signiert ZIP + beibehaltener Checkpoint + verifizierte TSA-Antwort. **Tut nicht** Es stellt kein Original wieder her, das nie erfasst wurde. ### Nachrichten verschwinden nach einem Vorfall Modus → Ereignisse Ordner oder gesamtes Konto → alle Ereigniskategorien. Ausgabe Gespeicherte Originale, Löschhinweise und lückenhafte Abdeckung. Verifizierung Unterzeichnet ZIP + unabhängiges Zeugenprotokoll. **Tut nicht** Er identifiziert den Löschenden nicht anhand einer Benachrichtigung, die keinen Akteur angibt. ### Untersuchen Sie einen Shop-Bot Modus → Ereignisse Voreinstellung „Untersuchung“ → Schaltflächen, Link-Vorschauen und expliziter Bot-Start. Ausgabe Signierte Interaktionsbelege, zurückgegebene Callbacks und gespeicherte Profile. Verifizierung Unterzeichnet ZIP; überprüfen Sie jedes Dossier anhand des ZIP. **Tut nicht** Es öffnet keine Bot-Web-App, führt keine Zahlungen durch und zeichnet keine Callbacks anderer Clients auf. ### Ein Teilnehmer wechselt seine Namen in verschiedenen Chats Modus → Ereignisse Jeder Geltungsbereich → beobachtete sender/profile Metadaten. Ausgabe Verlauf von Namen/Benutzernamen anhand numerischer IDs, „auch in“-Links und extrahierten Hinweisen. Verifizierung Das Dossier JSON gegen die signierte Version abgeglichen ZIP. **Tut nicht** Er wandelt weder eine Wallet noch eine telefonähnliche Zeichenfolge oder einen Benutzernamen in eine nachgewiesene Identität um. ### Langfristige Beobachtung mit einer externen Kopie Modus → Ereignisse Beliebiger Geltungsbereich → Evidenzmodus und eine S3 Replik mit unterstützten Object Lock. Ausgabe Verschlüsselte Kopie, gespeicherte Checkpoints und Antworten mit Zeitstempel. Verifizierung Stellen Sie die Daten mit dem exportierten Schlüssel wieder her und überprüfen Sie sie anschließend ohne den ursprünglichen Server. **Tut nicht** Es ersetzt weder einen unabhängigen Zeugen noch einen separat aufbewahrten Entschlüsselungsschlüssel. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/) ## Übergeben Sie ein überprüfbares Paket Legen Sie das signierte Original, einen unabhängig gespeicherten Schlüssel-Fingerabdruck, den entsprechenden Checkpoint und das Verifizierungsergebnis vor. - Unterzeichnet ZIP - JSONL - CSV - HTML - Checkpoint - Ausführungsbeleg - Chat-Export: chat.json / chat.html - Dossier JSON - Passwortgeschützt AES-256 ZIP - Getrennte Exporte für mehrere Konten - Streaming-CLI: 5 GiB Standardlimit ``` python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json ``` Beziehen Sie den Verifizierer aus einer vertrauenswürdigen Kopie, nicht aus dem zu überprüfenden Archiv. **Tut nicht** Standalone CSV und HTML sind keine signierten Container. Ein Passwort schützt die Vertraulichkeit der Übertragung, nicht die Authentizität. Mehrere Exporte führen nicht zu einer Zusammenführung der Kontoprotokolle. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ## Vergleichen Sie das gelieferte Artefakt Grundlegende Artefakte ohne zusätzliche Signatur-, Zeitstempel- oder Zeugen-Systeme. Skripte und Logger variieren je nach Implementierung; „teilweise“ bedeutet, dass sie auf erfasste oder sichtbare Daten beschränkt sind. | Vorgehensweise | Bearbeitungen / Löschungen | Signatur aufzeichnen | Externe Zeit | Unabhängiger Zeuge | Abdeckung / Lücken | Verifizierung ohne Autor | | --- | --- | --- | --- | --- | --- | --- | | Telegram-Desktop-Export | Teilweise | Nein | Nein | Nein | Nein | Nein | | Telethon Snapshot-Skript | Teilweise | Nein | Nein | Nein | Nein | Nein | | Löschprotokoll: Textprotokoll | Teilweise | Nein | Nein | Nein | Nein | Nein | | Screenshots / Web-Aufnahmen | Teilweise | Nein | Nein | Nein | Nein | Nein | | TgWitness mit konfigurierten Zusatzfunktionen | Teilweise | Ja | Ja | Ja | Teilweise | Ja | **Tut nicht** Die Tabelle bewertet nicht jedes Skript oder jedes Protokollierungsprodukt. Optionale Zeit- und Zeugenprüfungen erfordern eigene Dienste und Vertrauensanker; keiner davon begründet die „Source Truth“. [Lesen Sie die Details](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/) ## Halten Sie sich an die Grenzen der Beweislage Eine Verifizierung ist dann sinnvoll, wenn ihr Umfang eindeutig definiert bleibt. - Geheime Chats sind nicht verfügbar. - Solange der Prozess angehalten ist, wird nichts aufgezeichnet; die Wiederherstellungsmöglichkeiten sind begrenzt. - Ein verifizierter Datensatz ist kein Beweis dafür, dass sein Inhalt wahr ist. - Ein Betreiber, der über den Schlüssel verfügt, kann beliebige Inhalte signieren. Unabhängige Zeugen und Zeitstempel verhindern ein nachträgliches Ersetzen, nicht jedoch eine unredliche Erfassung bei der Erstellung. - Verwenden Sie ein eigens dafür vorgesehenes Konto, nicht Ihr Hauptkonto. - Telegram kann Konten aufgrund des Anfragevolumens einschränken. **Tut nicht** Kein Modus und keine Beweisstufe begründen die rechtliche Zulässigkeit, die vollständige Zustellung über Telegram oder eine Identität in der realen Welt. [Einrichtungsanleitung](https://phishdestroy.github.io/TgWitness/demo/guide.html?lang=de)[Spezielles Konto](https://phishdestroy.github.io/TgWitness/de/docs/dedicated-account/)[EVIDENCE.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/evidence/)[INVESTIGATION.md](https://phishdestroy.github.io/TgWitness/de/docs/reference/investigation/)