Zurück zu den Updates
UpdatedSep 3, 2026

terminalphone — Updated!

Verschlüsselte Push-to-Talk-Sprach- und Textkommunikation über Tor-Versteckdienste mit Ende-zu-Ende-Verschlüsselung, konfigurierbaren Ciphern, Relay-Modus für Gruppenanrufe und anti-forensischer Datenvernichtung.

Teilen

TerminalPhone

Verschlüsselte Push-to-Talk-Sprachkommunikation über Tor-Hidden-Services.

TerminalPhone ist ein einzelnes, in sich geschlossenes Bash-Skript, das anonyme, Ende-zu-Ende-verschlüsselte Sprach- und Textkommunikation zwischen zwei oder mehr Parteien über das Tor-Netzwerk ermöglicht. Es funktioniert wie ein Walkie-Talkie: Du nimmst eine Sprachnachricht auf, und sie wird komprimiert, verschlüsselt und als eine Einheit an die Gegenstelle übertragen. Während eines Anrufs kannst du auch verschlüsselte Textnachrichten senden. Keine Server-Infrastruktur, keine Konten, keine Telefonnummern. Deine Tor-Hidden-Service-.onion-Adresse ist deine Identität.


Inhaltsverzeichnis


Funktionen

  • Walkie-Talkie-Push-to-Talk-Modus -- Nimm eine vollständige Sprachnachricht auf und übertrage sie beim Loslassen.
  • Verschlüsselter Chat während des Anrufs -- Sende und empfange verschlüsselte Textnachrichten während eines Anrufs. Drücke T, um eine Nachricht zu tippen.
  • Anrufer-ID -- Beide Parteien tauschen beim Verbinden automatisch .onion-Adressen aus. Die Remote-Adresse wird im Anruf-Header angezeigt.
  • Automatische Auflege-Erkennung -- Wenn eine Partei auflegt, wird die andere sofort benachrichtigt und der Anruf endet automatisch.
  • Konfigurierbare Verschlüsselung -- Wähle aus 21 kuratierten Cipher-Suites, geordnet nach Stärke (256-Bit → 128-Bit). Enthält die Familien AES, ChaCha20, Camellia und ARIA. Schwache Cipher (DES, RC4, ECB-Modi) sind ausgeschlossen.
  • Live-Cipher-Aushandlung -- Beide Parteien tauschen beim Verbinden Cipher-Informationen aus. Der Anruf-Header zeigt sowohl lokale als auch Remote-Cipher mit grünen (Übereinstimmung) oder roten (Abweichung) Indikatoren, in Echtzeit aktualisiert.
  • Einstellungen während des Anrufs -- Drücke S während eines Anrufs, um auf die Einstellungen zuzugreifen. Ändere deine Verschlüsselung im laufenden Betrieb; die Anzeige der Gegenstelle aktualisiert sich automatisch.
  • Snowflake-Bridge-Info -- Bei Verwendung von Snowflake zur Zensurumgehung zeigt die Anrufseite den Bridge-Deskriptornamen, den Fingerprint und den Transportverbindungsstatus an, die aus den Tor-Logs ausgelesen werden.
  • Auto-Listen -- Wenn aktiviert, startet automatisch ein Hintergrund-Listener, sobald Tor bootet. Eingehende Anrufe werden erkannt und vom Hauptmenü aus angenommen, ohne manuell "Auf Anrufe warten" auswählen zu müssen. Nach Ende eines Anrufs startet der Listener neu.
  • Konfigurierbare PTT-Taste -- Ändere die Push-to-Talk-Taste von der Standard-Leertaste auf eine beliebige Taste über das Einstellungsmenü.
  • Nachrichtenstatistiken -- Der Anrufbildschirm zeigt die verschlüsselte Nutzdatengröße für gesendete und empfangene Nachrichten an, in-place aktualisiert.
  • Remote-PTT-Status -- Der Anrufbildschirm zeigt einen statischen Indikator für den Zustand der Gegenstelle: "Idle" (grün) oder "● Recording" (rot). Wird sofort zurückgesetzt, wenn Audiodaten eintreffen, noch bevor die Wiedergabe beginnt.
  • PTT-Signalton -- Optionaler Benachrichtigungston, wenn die Gegenstelle mit der Aufnahme beginnt. Fünf integrierte Presets (tone, double, chirp, ding, click), generiert mit sox, plus die Möglichkeit, einen eigenen 2-Sekunden-Signalton aufzunehmen. Konfigurierbar über Einstellungen.
  • Verbindungsanimation -- Beim Anrufen einer Remote-Adresse läuft eine zyklische Animation, bis die Anrufoberfläche geladen ist.
  • Stimmveränderer -- Wende Stimmeffekte auf ausgehendes Audio an. Enthält 6 Presets (deep, high, robot, echo, whisper) und einen vollständig konfigurierbaren benutzerdefinierten Modus mit Pitch-Shift, Overdrive, Flanger, Echo, Highpass-Filter und Tremolo. Effekte werden mit sox vor der Opus-Kodierung verarbeitet.
  • Lautstärke-PTT (Termux) -- Experimenteller Modus, mit dem du durch Doppeltippen der Lautstärke-nach-unten-Taste die Aufnahme umschalten kannst, selbst wenn Termux im Hintergrund läuft. Erfordert jq (bei Bedarf installiert). Die Lautstärke wird nach jedem Auslösen automatisch wiederhergestellt.
  • Tor-Hidden-Service -- Jede Instanz betreibt ihren eigenen Tor-Hidden-Service. Deine .onion-Adresse dient als permanenter, routbarer Endpunkt. Kein Port-Forwarding oder öffentliche IP erforderlich.
  • Ende-zu-Ende-Verschlüsselung -- Sämtliches Audio und Text wird mit einer konfigurierbaren Verschlüsselung (Standard: AES-256-CBC) mit PBKDF2-Schlüsselableitung aus einem vorab geteilten Geheimnis verschlüsselt, bevor es in das Tor-Netzwerk gelangt.
  • Passphrase-geschütztes Geheimnis -- Das geteilte Geheimnis kann im Ruhezustand mit einer vom Benutzer gewählten Passphrase verschlüsselt werden (AES-256-CBC, 100.000 PBKDF2-Iterationen). Bestehende Klartext-Geheimnisse werden automatisch erkannt mit dem Angebot zur Migration.
  • Geringe Bandbreite -- Opus-Codec mit 16kbps, 8kHz mono. Eine typische 10-Sekunden-Sprachnachricht ist unter 20KB, gut innerhalb der Kapazität von Tor.
  • QR-Code-Freigabe -- Option 3 kann deine .onion-Adresse als scanbaren QR-Code im Terminal anzeigen. Wenn qrencode nicht installiert ist, wirst du zur Installation aufgefordert. Der QR-Code wird im alternativen Bildschirmpuffer gerendert und beim Schließen zerstört. Ein Hinweis warnt, dass einige QR-Scanner automatisch http:// voranstellen; dieses Präfix wird beim Wählen automatisch entfernt.
  • Undurchsichtige temporäre Dateien -- Alle temporären Dateien verwenden generische .tmp-Erweiterungen und zufällige Hex-Bezeichner. Es werden keine Dateityp- oder Timing-Metadaten an das Dateisystem preisgegeben.
  • Circuit-Hop-Anzeige -- Opt-in-Anzeige deines Tor-Circuit-Pfads während Anrufen, mit Relay-Namen und vollständigen Ländernamen. Aktualisiert sich automatisch alle 60 Sekunden. Konfigurierbar über Einstellungen → Tor-Einstellungen.
  • Länder ausschließen -- Schließe bestimmte Länder aus deinen Tor-Circuits aus. Presets für die Allianzen Five Eyes, Nine Eyes und Fourteen Eyes, oder gib benutzerdefinierte Ländercodes ein. Verwendet ExcludeNodes mit StrictNodes in der torrc.
  • HMAC-Protokollauthentifizierung -- Optionale HMAC-SHA256-Signierung aller Protokollnachrichten (Sprache, Text, Steuersignale) unter Verwendung des geteilten Geheimnisses. Eine zufällige Nonce wird pro Nachricht eingefügt, und gesehene Nonces werden verfolgt, um Replays abzulehnen. Unsignierte, gefälschte oder wiederholte Nachrichten werden stillschweigend verworfen. Der HMAC-Zustand wird beim Anrufstart eingefroren, um eine Desynchronisation während des Anrufs zu verhindern. Konfigurierbar über Einstellungen → Sicherheit.
  • Überschreiben vor Löschen -- Optionaler Schalter in Einstellungen → Sicherheit, der jede temporäre Datei vor dem Löschen mit Zufallsdaten aus /dev/urandom überschreibt. Die Dateigröße wird gelesen, entsprechend viele Bytes Zufallsdaten werden mit dd unter Verwendung von conv=notrunc über die Datei geschrieben, der Schreibvorgang wird mit sync auf das Speichergerät geflusht, und dann wird die Datei mit rm entfernt. Deckt alle sensiblen Laufzeitdateien ab: rohe PCM-Aufnahmen, Opus-kodiertes Audio, verschlüsselte Nutzdaten, entschlüsseltes eingehendes Audio und Chat, Stimmeffekt-Zwischendateien, Cipher- und HMAC-Schlüsselmaterial, Nonce-Logs, Session-Flags, PID-Dateien, Named Pipes, Tor-Hidden-Service-Schlüssel bei Rotation und Relay-Session-Daten. Bei Verzeichnissen werden alle darin enthaltenen Dateien rekursiv überschrieben. Eine integrierte Testoption erstellt eine Beispieldatei, zeigt den ursprünglichen Inhalt im Klartext und Hex, überschreibt sie und zeigt das überschriebene Hex an, damit der Benutzer visuell bestätigen kann, dass die Daten zerstört sind. Standardmäßig deaktiviert — für die meisten Benutzer ist das Standard-rm völlig ausreichend. Die temporären Dateien von TerminalPhone sind klein und kurzlebig, und der Speicherplatz wird typischerweise schnell durch normale Systemaktivität wiederverwendet. Diese Funktion ist für Benutzer gedacht, die eine zusätzliche Schutzschicht gegen forensische Wiederherstellung wünschen. Hinweis: Bei SSDs und Flash-Speicher bedeutet Wear Leveling, dass das Überschreiben auf anderen physischen NAND-Zellen landen kann — vollständige Festplattenverschlüsselung ist die einzige zuverlässige Verteidigung auf Flash-Medien. Bei traditionellen HDDs ersetzt das Überschreiben die Daten an derselben physischen Stelle und ist gegen alle softwarebasierten Wiederherstellungen wirksam.
  • Relay-Modus (Gruppen-Bridge) -- Betreibe ein Zero-Knowledge-Relay, das N anonyme Anrufer überbrückt. Das Relay leitet verschlüsseltes Audio und Chat weiter, ohne zu entschlüsseln, und benötigt kein geteiltes Geheimnis oder Audio-Hardware. Clients erkennen den Relay-Modus automatisch über den RELAY:1-Handshake und zeigen die Live-Anzahl der Gruppenanrufer an. Wenn ein Anrufer geht, werden andere nicht getrennt. Das Betreiber-Dashboard zeigt Anruferanzahl, Uptime und Datendurchsatz.
  • Single-Hop-Tor-Modus -- Optionaler Modus mit reduzierter Latenz für Relay-Betreiber. Verwendet 1 Tor-Hop statt 3 für den Hidden-Service und opfert Server-Anonymität für geringere Latenz. Ideal für Relay-Betreiber, die ihre eigene IP nicht verbergen müssen.
  • Port-Konfiguration -- Konfiguriere Listen-Port und SOCKS-Port gemeinsam über Einstellungen → Tor-Einstellungen. Ermöglicht das Ausführen mehrerer Instanzen auf demselben Gerät mit separaten Tor-Prozessen. Hauptsächlich nützlich für Relay-Betreiber, die auch ihrem eigenen Gruppenanruf beitreten möchten -- betreibe das Relay auf einer Instanz, ändere den SOCKS-Port auf einer zweiten Instanz und wähle dich als Anrufer ein.
  • Plattformübergreifend -- Läuft auf Standard-Linux-Distributionen, macOS und Android über Termux. Plattformspezifische Audio-Backends werden transparent gehandhabt.
  • Kein Root erforderlich -- Die PTT-Eingabe verwendet den Terminal-Raw-Modus. Keine speziellen Berechtigungen oder Kernel-Module erforderlich.
  • Einzelnes Skript -- Eine Bash-Datei. Kein Build-System, keine Laufzeitumgebung, kein Framework.

Installation

Linux

Unterstützte Distributionen: Debian/Ubuntu (apt), Fedora/RHEL (dnf), Arch (pacman).``` bash

git clone https://gitlab.com/here_forawhile/terminalphone.git cd terminalphone bash terminalphone.sh

Wählen Sie die Option **7** aus dem Menü, um alle Abhängigkeiten automatisch zu installieren. Die folgenden Pakete werden installiert:

| Paket | Zweck |
|---|---|
| `tor` | Onion-Routing und Hidden Service |
| `opus-tools` | Sprachkomprimierung (Opus-Codec) |
| `sox` | Dienstprogramme zur Audiobearbeitung |
| `socat` | Bidirektionales TCP-Relay über den Tor-SOCKS-Proxy |
| `openssl` | AES-256-CBC-Verschlüsselung und -Entschlüsselung |
| `alsa-utils` | Audioaufnahme und -wiedergabe (`arecord`, `aplay`) |

### macOS``` bash

git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh

Wählen Sie Option 7, um alle Abhängigkeiten automatisch zu installieren. Wenn Homebrew nicht installiert ist, installiert das Skript es zuerst und installiert dann die folgenden Pakete:

PaketZweck
torOnion-Routing und Hidden Service
opus-toolsSprachkomprimierung (Opus-Codec)
soxAudioaufnahme und -wiedergabe (rec, play)
socatBidirektionales TCP-Relay durch den Tor-SOCKS-Proxy
opensslAES-256-CBC-Verschlüsselung und -Entschlüsselung

Hinweis: macOS verwendet sox sowohl für die Aufnahme (rec) als auch für die Wiedergabe (play) anstelle von ALSA. Es sind keine zusätzlichen Audio-Pakete erforderlich.

Apple Silicon (M1/M2/M3+): Wenn Ihr Terminal zufällig unter Rosetta 2 läuft (ein x86_64-Prozess), während Homebrew im nativen ARM-Präfix (/opt/homebrew) installiert ist, schlägt brew install normalerweise mit Cannot install under Rosetta 2 in ARM default prefix fehl. Der Abhängigkeitsinstaller erkennt dies nun und führt Homebrew automatisch unter arch -arm64 erneut aus, sodass Option 7 unabhängig davon funktioniert, wie das Skript gestartet wurde.

Termux (Android)

TerminalPhone unterstützt Android-Geräte über Termux. Aufgrund der sandboxed Audio-Architektur von Android sind zwei zusätzliche Komponenten erforderlich.

Schritt 1: Termux installieren

Installieren Sie Termux von F-Droid. Verwenden Sie nicht die Play-Store-Version, da diese veraltet ist und keine Updates mehr erhält.

Schritt 2: Die Termux:API-App installieren

Installieren Sie Termux:API von F-Droid. Dies ist eine separate Android-Anwendung (kein Termux-Paket), die eine Brücke zwischen Termux und den Android-System-APIs bereitstellt. TerminalPhone benötigt sie, um auf das Mikrofon des Geräts und die Medienwiedergabe zuzugreifen.

Ohne die auf dem Gerät installierte Termux:API-App funktionieren die Befehle termux-microphone-record und termux-media-player nicht, und die Audioaufnahme und -wiedergabe schlagen stillschweigend fehl.

Nach der Installation der Termux:API-App erteilen Sie ihr auf Anfrage Mikrofonberechtigungen.

Schritt 3: Das Termux:API-Paket innerhalb von Termux installieren```bash pkg install termux-api

Dies installiert die Kommandozeilen-Dienstprogramme, die mit der Termux:API-App kommunizieren.

**Schritt 4: TerminalPhone ausführen**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh

Wählen Sie Option 7, um alle verbleibenden Abhängigkeiten zu installieren. Der Installer führt zuerst pkg upgrade aus, um etwaige Paketverknüpfungsprobleme zu beheben, und installiert dann tor, opus-tools, sox, socat, openssl-tool, ffmpeg und termux-api.

Termux-spezifische Abhängigkeiten:

PaketZweck
termux-apiCLI-Brücke zum Android-Mikrofon und Mediaplayer
ffmpegKonvertiert die M4A-Aufnahmen von Android in rohes PCM für die Opus-Kodierung

Schnellstart```

  1. Run: bash terminalphone.sh
  2. Install deps: Select option 7
  3. Start Tor: Select option 8 (wait for 100% bootstrap)
  4. Set shared secret: Select option 4 (both parties must use the same secret)
  5. Share your .onion address with the other party (option 3)

To receive a call: Select option 1 (Listen for calls) To make a call: Select option 2 (Call an onion address)

Beide Parteien müssen Tor laufen haben und dasselbe gemeinsame Geheimnis konfiguriert haben, bevor sie einen Anruf initiieren.

---

## Verwendung

### Menüoptionen```
 1  Listen for calls          Wait for an incoming connection
 2  Call an onion address     Connect to a remote .onion endpoint
 3  Show my onion address     Display your .onion address (with optional QR code)
 4  Set shared secret         Configure the pre-shared encryption key
 5  Test audio (loopback)     Record and play back audio locally
 6  Show status               Display Tor, secret, and connection status
 7  Install dependencies      Install all required packages
 8  Start Tor                 Start the Tor process and hidden service
 9  Stop Tor                  Stop the Tor process
10  Restart Tor               Stop and restart Tor
11  Rotate onion address      Generate a new .onion address (destroys the old one)
12  Settings                  Configure Opus quality, PTT chime, Snowflake, auto-listen, PTT key, voice changer, security, Tor settings
13  Relay mode                Start a zero-knowledge group bridge for N callers
 0  Quit                      Stop Tor and exit

Steuerung während des Anrufs

Voll-Duplex-Modus (WebSockets):

TasteAktion
MMikrofon stummschalten / Stummschaltung aufheben.
TEine verschlüsselte Textnachricht während des Anrufs senden.
QAuflegen und zum Menü zurückkehren.

Push-to-Talk-Modus (Linux / macOS):

TasteAktion
LEERTASTE haltenSprachnachricht aufnehmen. Wird beim Loslassen automatisch gesendet.
TEine verschlüsselte Textnachricht senden.
SEinstellungen während des Anrufs öffnen (Verschlüsselung ändern, Qualität anpassen).
QAuflegen und zum Menü zurückkehren.

Push-to-Talk-Modus (Termux):

Die Software-Tastatur von Android sendet Tastenereignisse beim Loslassen, nicht beim Drücken. TerminalPhone passt sich an, indem es im Termux den Umschaltmodus verwendet.

TasteAktion
LEERTASTE tippenAufnahme starten. Erneut tippen, um zu stoppen und zu senden.
TEine verschlüsselte Textnachricht senden.
SEinstellungen während des Anrufs öffnen (Verschlüsselung ändern, Qualität anpassen).
QAuflegen und zum Menü zurückkehren.
Lautstärke verringern ×2Aufnahme über die Lautstärketaste umschalten (erfordert aktiviertes Volume PTT in den Einstellungen).

CLI-Modus```bash

bash terminalphone.sh install # Install dependencies bash terminalphone.sh test # Audio loopback test bash terminalphone.sh status # Show status bash terminalphone.sh listen # Listen for incoming calls bash terminalphone.sh call ADDRESS # Call a .onion address bash terminalphone.sh relay # Start relay mode (group bridge)

---

## Funktionsweise

TerminalPhone verwendet ein Aufnahme-dann-Senden-Modell. Wenn Sie PTT aktivieren, zeichnet das Mikrofon kontinuierlich auf, bis Sie loslassen. Die vollständige Aufnahme wird dann durch die folgende Pipeline verarbeitet:```
SENDER                                          RECEIVER
──────                                          ────────
Microphone                                      Speaker
    │                                               ▲
    ▼                                               │
Raw PCM (8kHz, 16-bit, mono)                    Opus decode
    │                                               ▲
    ▼                                               │
Opus encode (16kbps)                            AES-256-CBC decrypt
    │                                               ▲
    ▼                                               │
AES-256-CBC encrypt                             Base64 decode
    │                                               ▲
    ▼                                               │
Base64 encode ──▶ socat ──▶ Tor ──▶ socat ──▶ Receive

Das Wire-Protokoll ist zeilenbasierter Text über eine TCP-Verbindung:

NachrichtBeschreibung
ID:<onion>Caller ID -- die .onion-Adresse des Senders
CIPHER:<name>Verschlüsselungs-Chiffre des Senders. Wird beim Verbinden und bei Änderung ausgetauscht.
PTT_STARTDer Sender hat mit der Aufnahme begonnen
PTT_STOPDer Sender ist fertig; Audio folgt oder wurde gesendet
AUDIO:<base64>Vollständige verschlüsselte Audionachricht
MSG:<base64>Verschlüsselte Textnachricht
HANGUPDer Sender trennt die Verbindung
PINGKeepalive-Signal
RELAY:1Relay-Begrüßung -- wird vom Relay beim Verbinden gesendet, löst den Gruppenmodus aus
GROUP:<n>Gruppen-Größenaktualisierung -- wird vom Relay gesendet, wenn Anrufer beitreten oder verlassen

Unter Termux übernimmt ein zusätzlicher Konvertierungsschritt Androids natives M4A-Aufnahmeformat und verwendet ffmpeg, um es vor der Opus-Kodierung in rohes PCM umzuwandeln.


Sicherheitsmodell

Verschlüsselung: Alle Audiodaten werden vor der Übertragung mit einer benutzerkonfigurierbaren Chiffre verschlüsselt (Standard: AES-256-CBC). 21 kuratierte Chiffren stehen zur Verfügung, geordnet von der stärksten (256-Bit) bis zur ausreichenden (128-Bit). Der Schlüssel wird aus einem vorab geteilten Geheimnis mittels PBKDF2 mit 10.000 Iterationen abgeleitet. Die Verschlüsselung wird auf Anwendungsebene angewendet, unabhängig von der Transportverschlüsselung von Tor. Geheimnisse werden über Dateideskriptoren (-pass fd:3) an OpenSSL übergeben, nicht als Kommandozeilenargumente, sodass sie niemals in der Prozesstabelle sichtbar sind.

Chiffren-Aushandlung: Beide Parteien tauschen beim Verbinden und bei jeder Änderung der Chiffre während eines Anrufs die Chiffrenamen aus. Chiffrenamen sind nicht geheim (Kerckhoffs'sches Prinzip). Wenn die lokale und die entfernte Chiffre nicht übereinstimmen, sehen beide Parteien rote Indikatoren im Anruf-Header.

Transport: Alle Daten werden über Tor-Hidden-Service-Circuits geleitet. Die IP-Adresse keiner der beiden Parteien wird offengelegt. Es gibt keinen Clearnet-Verkehr. Die Verbindung kann von einem Netzwerkbeobachter keiner der beiden Parteien zugeordnet werden.

Widerstand gegen Verkehrsanalyse: Das Aufnehmen-dann-Senden-Modell erzeugt unregelmäßige Übertragungsmuster (Nachrichten variabler Länge in unregelmäßigen Abständen), die schwerer zu fingerprinten sind als kontinuierliches Streaming.

Authentifizierung: Das geteilte Geheimnis dient als implizite Authentifizierung. Wenn beide Parteien nicht dasselbe Geheimnis haben, schlägt die Entschlüsselung fehl und es wird kein Audio abgespielt. Beim Verbinden tauschen beide Parteien .onion-Adressen zur Anruferidentifikation aus. Das Geheimnis kann optional im Ruhezustand mit einer Passphrase verschlüsselt werden; beim Start fordert das Skript zur Eingabe der Passphrase auf, um es zu entsperren.

HMAC-Protokollsignierung (optional): Wenn aktiviert, wird jede Wire-Protokoll-Nachricht -- einschließlich Steuersignalen wie HANGUP, PTT_START und PING -- mit HMAC-SHA256 signiert, das aus dem geteilten Geheimnis abgeleitet wird. Eine zufällige Nonce wird pro Nachricht eingefügt, sodass identische Befehle eindeutige Signaturen erzeugen. Gesehene Nonces werden pro Anruf verfolgt und Duplikate werden abgelehnt, wodurch Replay-Angriffe verhindert werden. Die HMAC-Einstellung wird beim Anrufstart über eine Laufzeitdatei eingefroren, sodass der Sende- und der Empfangspfad immer übereinstimmen, selbst wenn die Einstellung während eines Anrufs umgeschaltet wird (Änderungen werden beim nächsten Anruf wirksam). Auf der Empfängerseite wird jede Nachricht mit einer ungültigen, fehlenden oder wiedergegebenen Signatur stillschweigend verworfen. Dies verhindert, dass ein Angreifer, der den Tor-Circuit kompromittiert (aber nicht über das geteilte Geheimnis verfügt), Befehle einschleusen oder wiedergeben kann. Beide Parteien müssen HMAC aktivieren, damit Anrufe funktionieren. Nicht kompatibel mit Versionen vor 1.1.3.

Einschränkungen:

  • Das geteilte Geheimnis muss außerhalb des Bandes über einen sicheren Kanal ausgetauscht werden (persönlich, verschlüsselte Nachrichtenübermittlung usw.).
  • Es gibt keine Forward Secrecy. Wenn das geteilte Geheimnis kompromittiert wird, können alle vergangenen und zukünftigen Kommunikationen, die dieses Geheimnis verwenden, entschlüsselt werden.
  • Das Protokoll schützt nicht gegen einen kompromittierten Endpunkt. Wenn eines der Geräte kompromittiert ist, hat der Angreifer Zugriff auf das Klartext-Audio.

Sicherheit im Relay-Modus: Das Relay ist architektonisch Zero-Knowledge. Es besitzt niemals das geteilte Geheimnis und kann keine Inhalte entschlüsseln. Audiodaten fließen durch Kernel-Pipe-Puffer (FIFOs), die nur im Speicher existieren -- nichts wird auf die Festplatte geschrieben. Wenn das Relay stoppt, werden alle temporären Dateien gelöscht. Der Relay-Betreiber kann nicht feststellen, was gesagt wurde, wer die Anrufer sind, oder Nachrichten lesen. Das Relay filtert alle Steuersignale (HANGUP, ID:, CIPHER:, PTT_START, PTT_STOP) und leitet nur AUDIO:, MSG: und PING weiter. Ein globaler passiver Angreifer könnte eine Verkehrskorrelationsanalyse durchführen, um Anrufer mit dem Relay zu assoziieren, aber der Nachrichteninhalt bleibt undurchsichtig.

Relay-Kapazität: Der primäre Engpass ist die Tor-Bandbreite. Der Durchsatz von Tor-Hidden-Services ist stark variabel und hängt von der Circuit-Qualität, der Relay-Überlastung und der geografischen Entfernung ab. Eine typische 10-Sekunden-Sprachnachricht ist ~20KB verschlüsselt, und jede Übertragung fächert sich auf N-1 Zuhörer auf.

AnruferAusgehend pro NachrichtErwartete Erfahrung
2--320--40KBZuverlässig bei den meisten Verbindungen
3--540--80KBGut bei stabilen Circuits, Verzögerungen bei mobilen Daten möglich
5--1080--180KBAn der Grenze, spürbare Verzögerungen zwischen Übertragungen
10+180KB+Unzuverlässig, erhebliche Warteschlangen und möglicher Nachrichtenverlust

Die realistische Kapazität liegt bei 3--5 Anrufern für ein Relay, das auf einem Telefon (Termux) läuft, oder 5--10 Anrufern auf einer dedizierten Linux-Maschine mit stabiler Verbindung. Relays auf mobilen Geräten stehen vor zusätzlichen Einschränkungen: Mobile Daten fügen Latenz zusätzlich zu Tor hinzu, Android kann Hintergrund-Termux-Prozesse beenden, um Speicher freizugeben, und der Batterieverbrauch steigt mit jedem verbundenen Anrufer. Die Tor-Circuit-Bandbreite kann je nach Pfadqualität zwischen 50KB/s und 500KB/s variieren, und Circuits können sich während einer Sitzung verschlechtern oder rotieren. Der Single-Hop-Modus verbessert den Durchsatz, beseitigt aber nicht die Tor-Relay-Überlastung. Diese Schätzungen gehen vom PTT-Modell aus, bei dem nur eine Person gleichzeitig sendet -- gleichzeitige Übertragungen würden die Leistung weiter verschlechtern. Anrufer in einem Gruppenanruf sollten in Betracht ziehen, ihre Opus-Bitrate zu senken (Einstellungen → Opus-Kodierung), um die Nachrichtengrößen zu reduzieren und die Last auf dem Relay zu verringern.


Konfiguration

Die gesamte Konfiguration wird in .terminalphone/ relativ zum Skriptspeicherort gespeichert:``` .terminalphone/ tor_data/ Tor data directory and hidden service keys audio/ Temporary audio files (cleaned on exit) pids/ Process ID tracking shared_secret Encrypted shared secret file torrc Generated Tor configuration

Standard-Audioparameter (oben im Skript definiert):

| Parameter | Standard | Beschreibung |
|---|---|---|
| `LISTEN_PORT` | 7777 | TCP-Port für eingehende Verbindungen |
| `TOR_SOCKS_PORT` | 9050 | Tor-SOCKS-Proxy-Port |
| `OPUS_BITRATE` | 16 | Opus-Kodierungs-Bitrate in kbps |
| `CIPHER` | aes-256-cbc | Verschlüsselungs-Chiffre (konfigurierbar über Einstellungen) |
| `SNOWFLAKE_ENABLED` | 0 | Snowflake-Bridge zur Umgehung von Zensur |
| `AUTO_LISTEN` | 0 | Automatisches Annehmen von Anrufen, wenn Tor startet |
| `PTT_KEY` | SPACE | Push-to-Talk-Taste (konfigurierbar über Einstellungen) |
| `VOL_PTT` | 0 | PTT per Doppeltipp auf Lautstärke verringern, nur Termux (experimentell) |
| `EXCLUDE_NODES` | (leer) | Tor ExcludeNodes-Länderliste (z. B. `{US},{GB}`) |
| `HMAC_AUTH` | 0 | Alle Protokollnachrichten HMAC-signieren (optional, beide Seiten müssen übereinstimmen) |
| `OVERWRITE_DELETE` | 0 | Temporäre Dateien vor dem Löschen mit Zufallsdaten überschreiben (standardmäßig aus) |
| `PTT_CHIME` | off | PTT-Benachrichtigungston-Voreinstellung (off, tone, double, chirp, ding, click, custom) |
| `SINGLE_HOP` | 0 | Single-Hop-Tor-Modus für geringere Latenz (deaktiviert Server-Anonymität) |
| `SAMPLE_RATE` | 8000 | Audio-Abtastrate in Hz |
| `CHUNK_DURATION` | 1 | Dauer für Audio-Test-Chunks in Sekunden |

---

## Fehlerbehebung

**Tor kann nicht bootstrappen:**
Prüfe das Tor-Log unter `.terminalphone/tor_data/tor.log`. Häufige Ursachen sind Uhrzeitabweichungen, Netzwerkeinschränkungen, die Tor blockieren, oder eine andere Tor-Instanz, die denselben SOCKS-Port verwendet.

**Kein Audio unter Termux:**
Stelle sicher, dass die Termux:API-App von F-Droid installiert ist (nicht nur das Paket `termux-api`). Erteile der Termux:API-App in den Android-Einstellungen Mikrofonberechtigungen. Führe den Audio-Loopback-Test (Option 5) zur Überprüfung aus.

**ffmpeg-Installation schlägt unter Termux fehl:**
Führe `pkg upgrade` vor der Installation der Abhängigkeiten aus. Der Installer erledigt dies automatisch, aber wenn du Pakete manuell installiert hast, können veraltete Shared Libraries zu Linker-Fehlern führen.

**Audiotest funktioniert, aber Anrufe sind stumm:**
Stelle sicher, dass beide Parteien dasselbe gemeinsame Geheimnis verwenden. Nicht übereinstimmende Geheimnisse führen zu einem Entschlüsselungsfehler ohne Fehlermeldung -- der Anruf wird verbunden, aber es ist kein Audio zu hören.

**Snowflake-Bridge verbindet sich langsam:**
Snowflake leitet den Datenverkehr über WebRTC-Proxys, was zusätzliche Bootstrap-Zeit mit sich bringt. Es ist normal, dass Tor 30--60 Sekunden (oder mehr) benötigt, um 100 % zu erreichen, wenn Snowflake aktiviert ist. Das Skript zeigt während des Bootstraps einen Geduldshinweis an.

**Erster Tor-Bootstrap ist langsam:**
Beim ersten Start muss Tor den vollständigen Netzwerkkonsens von Grund auf herunterladen, was ein bis zwei Minuten dauern kann. Das Skript erkennt dies und zeigt einen Hinweis an. Das Bootstrap-Timeout wird beim ersten Durchlauf automatisch von 120 auf 300 Sekunden verlängert. Nachfolgende Starts verwenden zwischengespeicherte Konsensdaten und sind viel schneller.

**Auflegen kehrt nicht zum Menü zurück:**
Wenn das Skript nach dem Drücken von Q hängt, drücke Strg+C, um die Bereinigung zu erzwingen und zur Shell zurückzukehren.

**`Cannot install under Rosetta 2 in ARM default prefix` unter macOS:**
Dies tritt auf Apple Silicon auf, wenn das Terminal unter Rosetta 2 läuft (ein `x86_64`-Prozess), aber Homebrew im nativen ARM-Präfix (`/opt/homebrew`) liegt. Der Abhängigkeitsinstaller (Option **7**) erkennt dies nun und führt `brew` automatisch unter `arch -arm64` erneut aus. Wenn du Pakete manuell installierst, stelle ihnen selbst das Präfix voran: `arch -arm64 brew install <pkg>`. Alternativ kannst du das Skript nativ starten mit `arch -arm64 bash terminalphone.sh`.

---

[MIRROR V1.0.0](https://bin.disroot.org/?e1356291b098cb75#FMQ4gxFwgdr3rjR1dpGS2csLmDPzDEkQW16fQ5P2Vt4y)

[MIRROR V1.0.1](https://bin.disroot.org/?d3bc0b8976113f58#AuUm4ev4vfeVmPyrh2KjAdhDP6WN4UX6yKQh9ERGD5Qt)

[MIRROR V1.0.2](https://bin.disroot.org/?6bc5b2fd046de1d7#G7TmnytrMeaM5AZYWth6BjjdqUb9RDf3K9erHUExKcGX)

[MIRROR V1.0.3](https://bin.disroot.org/?c5010f039e4693fd#Brp1w7LRQH9d5Ye5npZDPxNVR855SW9QUAk9cJaUuLYX)

[MIRROR V1.0.4](https://bin.disroot.org/?1831f6b78e349142#7zaAMVPNJL3MfbGJzjtm6cCPcvQftf4ULXupdne5dRKw)

[MIRROR V1.0.5](https://bin.disroot.org/?edfcfc844987ed03#56LuBbqbkfNDXfHpydyaB3VcWYhYenX18dtSvNumERY9)

[MIRROR V1.0.6](https://bin.disroot.org/?6c7b4774108b0c1c#GQPst46zjAYidndmNvytforX7MK2LyHanL4d829vVcv4)

[MIRROR V1.0.7](https://bin.disroot.org/?047003637623b4fa#EwmaysciDpiDkht8xV7ce3QcR9oxFXaxSikh4cLheXBB)

[MIRROR V1.0.8](https://bin.disroot.org/?06e38bd64e6fbdad#88MYs3dmq9rSMkmocpW3NYaaG4YfSdRCc9LJnEEzqGYp)

[MIRROR V1.0.9](https://bin.disroot.org/?950218a9a7c71c66#E7Z94VCGBZozrfXYhGwKyAdMeTxuavg92tA1pn2DbrrB)

[MIRROR V1.1.0](https://bin.disroot.org/?0b0da14f31521b3a#B1c23J8xFoZZKErvGG28PgbtfgtMUcDABWmQEoSZfXgh)

[MIRROR V1.1.1](https://bin.disroot.org/?d8e2d4f0300eb5af#9Y1C8CkcH9jAmv1fh4GZs1yYpJmWCG5xG3SvDYdwnJam)

[MIRROR V1.1.2](https://bin.disroot.org/?b1059616f880925f#8ef2oscZXUkPAsJZwGfWvLPQagVAk5GgW4DyssmLvQpG)

[MIRROR V1.1.3](https://bin.disroot.org/?b02658801518aaa7#JE6CsBLWUwAnTdBqeHgeXL7QF5UExgi9rnygcfyMZjCJ)

[MIRROR V1.1.4](https://bin.disroot.org/?d31248fc44c287a0#HQELFWFEMpM9kfTZSGDXTdGFMVKTejox5CajF9Vm4Www)

[MIRROR V1.1.5](https://bin.disroot.org/?284b723ed6aad15f#8VCrrri6yRpdg3uVDSY94wpx7LYkw5uYhm4Vbhka83sM)

[MIRROR V1.1.5.1](https://bin.disroot.org/?26aaef1eff20c271#4GxQQPSDhrszTu1RmERySNVqD2fZW5GZwm3JeL1parpB)

[MIRROR V1.1.6](https://bin.disroot.org/?ae8270578cd9e081#BbcDLU49XqhecvwviHRcdfrZ4vhKdL2AMeKaT5v9oLV1)

[MIRROR V1.1.7](https://bin.disroot.org/?457e4308abe582d8#B9LJG88rmUwrGHHuCof8WpE8CXGmkc2tyrXXicEiJFWk)


---

## Lizenz

MIT

Kategorien