Retour aux mises à jour
UpdatedSep 3, 2026

terminalphone — Mis à jour !

Communication vocale et textuelle push-to-talk chiffrée via les services cachés Tor avec chiffrement de bout en bout, chiffrements configurables, mode relais pour les appels de groupe et destruction des données anti-forensique.

Partager

TerminalPhone

Communication vocale push-to-talk chiffrée via les services cachés Tor.

TerminalPhone est un script Bash unique et autonome qui fournit une communication vocale et textuelle anonyme, chiffrée de bout en bout, entre deux ou plusieurs parties via le réseau Tor. Il fonctionne comme un talkie-walkie : vous enregistrez un message vocal, qui est compressé, chiffré et transmis à la partie distante comme une unité unique. Vous pouvez également envoyer des messages texte chiffrés pendant un appel. Aucune infrastructure serveur, aucun compte, aucun numéro de téléphone. Votre adresse .onion de service caché Tor est votre identité.


Table des matières


Fonctionnalités

  • Streaming vocal full duplex (WebSockets) -- Streaming audio bidirectionnel continu en temps réel via les services cachés Tor utilisant WebSockets. Les deux parties peuvent parler et écouter simultanément sans maintenir la barre d'espace. Configurable via Paramètres (option 9) avec sélection de routage intégrée :
    • Mode standard (6 sauts) : Routage complet de 3 sauts pour l'appelant + 3 sauts pour le service caché, préservant l'anonymat maximal des deux parties (~800–1200 ms RTT).
    • Mode turbo (saut unique) : Réduit le routage de l'écouteur à 1 saut (~450–700 ms RTT) pour une conversation vocale fluide, avec des invites de compromis explicites (anonymat de l'emplacement du serveur désactivé chez l'écouteur ; dialing client SOCKS sortant désactivé sur le nœud écouteur).
  • Mode talkie-walkie push-to-talk -- Enregistrez un message vocal complet et transmettez-le au relâchement.
  • Chat chiffré en cours d'appel -- Envoyez et recevez des messages texte chiffrés pendant un appel. Appuyez sur T pour saisir un message.
  • Identification de l'appelant -- Les deux parties échangent automatiquement leurs adresses .onion à la connexion. L'adresse distante est affichée dans l'en-tête de l'appel.
  • Détection automatique de raccrochage -- Lorsqu'une partie raccroche, l'autre est notifiée immédiatement et l'appel se termine automatiquement.
  • Chiffrement configurable -- Choisissez parmi 21 chiffrements sélectionnés classés par force (256 bits → 128 bits). Inclut les familles AES, ChaCha20, Camellia et ARIA. Les chiffrements faibles (DES, RC4, modes ECB) sont exclus.
  • Négociation de chiffrement en direct -- Les deux parties échangent les informations de chiffrement à la connexion. L'en-tête de l'appel affiche les chiffrements local et distant avec des indicateurs verts (correspondance) ou rouges (non-correspondance), mis à jour en temps réel.
  • Paramètres en cours d'appel -- Appuyez sur S pendant un appel pour accéder aux paramètres. Changez votre chiffrement à la volée ; l'affichage de la partie distante se met à jour automatiquement.
  • Informations sur le pont Snowflake -- Lors de l'utilisation de Snowflake pour contourner la censure, la page d'appel affiche le nom du descripteur du pont, l'empreinte et l'état de la connexion de transport analysés à partir des journaux de Tor.
  • Écoute automatique -- Lorsqu'elle est activée, une écoute en arrière-plan démarre automatiquement au démarrage de Tor. Les appels entrants sont détectés et acceptés depuis le menu principal sans avoir à sélectionner manuellement « Écouter les appels ». Après la fin d'un appel, l'écoute redémarre.
  • Touche PTT configurable -- Changez la touche push-to-talk de la barre d'espace par défaut à n'importe quelle touche via le menu Paramètres.
  • Statistiques des messages -- L'écran d'appel affiche la taille de la charge utile chiffrée pour les messages envoyés et reçus, mise à jour sur place.
  • Statut PTT distant -- L'écran d'appel affiche un indicateur statique pour l'état de la partie distante : « Inactif » (vert) ou « ● Enregistrement » (rouge). Se réinitialise immédiatement lorsque les données audio arrivent, avant le début de la lecture.
  • Carillon PTT -- Son de notification optionnel lorsque la partie distante commence à enregistrer. Cinq préréglages intégrés (tonalité, double, gazouillis, ding, clic) générés avec sox, plus la possibilité d'enregistrer un carillon personnalisé de 2 secondes. Configurable via Paramètres.
  • Animation de connexion -- Lors de l'appel d'une adresse distante, une animation cyclique est jouée jusqu'au chargement de l'interface d'appel.
  • Modificateur de voix -- Appliquez des effets vocaux à l'audio sortant. Inclut 6 préréglages (grave, aigu, robot, écho, chuchotement) et un mode personnalisé entièrement configurable avec décalage de hauteur, overdrive, flanger, écho, filtre passe-haut et trémolo. Les effets sont traités avec sox avant l'encodage Opus.
  • PTT par volume (Termux) -- Mode expérimental qui permet de double-taper le bouton Volume bas pour basculer l'enregistrement, même lorsque Termux est en arrière-plan. Nécessite jq (installé à la demande). Le volume est automatiquement restauré après chaque déclenchement.
  • Service caché Tor -- Chaque instance exécute son propre service caché Tor. Votre adresse .onion sert de point de terminaison permanent et routable. Aucune redirection de port ni IP publique requise.
  • Chiffrement de bout en bout -- Tout l'audio et le texte sont chiffrés à l'aide d'un chiffrement configurable (par défaut : AES-256-CBC) avec dérivation de clé PBKDF2 à partir d'un secret pré-partagé avant d'entrer dans le réseau Tor.
  • Secret protégé par phrase de passe -- Le secret partagé peut être chiffré au repos à l'aide d'une phrase de passe choisie par l'utilisateur (AES-256-CBC, 100 000 itérations PBKDF2). Les secrets en texte clair existants sont automatiquement détectés avec une offre de migration.
  • Faible bande passante -- Codec Opus à 16 kbps, 8 kHz mono. Un message vocal typique de 10 secondes fait moins de 20 Ko, bien dans la capacité de Tor.
  • Partage de code QR -- L'option 3 peut afficher votre adresse .onion comme code QR scannable dans le terminal. Si qrencode n'est pas installé, vous êtes invité à l'installer. Le code QR s'affiche sur le tampon d'écran alternatif et est détruit lorsqu'il est fermé. Une note avertit que certains scanners QR ajoutent automatiquement http:// ; ce préfixe est automatiquement supprimé lors de la composition.
  • Fichiers temporaires opaques -- Tous les fichiers temporaires utilisent des extensions génériques .tmp et des identifiants hexadécimaux aléatoires. Aucune métadonnée de type de fichier ou de timing n'est divulguée au système de fichiers.
  • Affichage des sauts de circuit -- Affichage opt-in de votre chemin de circuit Tor pendant les appels, montrant les noms des relais et les noms complets des pays. Actualisation automatique toutes les 60 secondes. Configurable via Paramètres → Paramètres Tor.
  • Exclure des pays -- Excluez des pays spécifiques de vos circuits Tor. Préréglages pour les alliances Five Eyes, Nine Eyes et Fourteen Eyes, ou saisissez des codes pays personnalisés. Utilise ExcludeNodes avec StrictNodes dans le torrc.
  • Authentification de protocole HMAC -- Signature HMAC-SHA256 optionnelle de tous les messages de protocole (voix, texte, signaux de contrôle) à l'aide du secret partagé. Un nonce aléatoire est inclus par message, et les nonces déjà vus sont suivis pour rejeter les rejeux. Les messages non signés, falsifiés ou rejoués sont silencieusement ignorés. L'état HMAC est figé au début de l'appel pour empêcher toute désynchronisation en cours d'appel. Configurable via Paramètres → Sécurité.
  • Écrasement avant suppression -- Option activable dans Paramètres → Sécurité qui écrase chaque fichier temporaire avec des données aléatoires provenant de /dev/urandom avant suppression. La taille du fichier est lue, autant d'octets de données aléatoires sont écrits sur le fichier avec dd en utilisant conv=notrunc, l'écriture est synchronisée sur le périphérique de stockage avec sync, puis le fichier est supprimé avec rm. Couvre tous les fichiers sensibles d'exécution : enregistrements PCM bruts, audio encodé Opus, charges utiles chiffrées, audio et chat entrants déchiffrés, intermédiaires d'effets vocaux, matériel de clé de chiffrement et HMAC, journaux de nonces, indicateurs de session, fichiers PID, tubes nommés, clés de service caché Tor lors de la rotation et données de session de relais. Pour les répertoires, tous les fichiers à l'intérieur sont écrasés de manière récursive. Une option de test intégrée crée un fichier d'exemple, affiche le contenu original en texte clair et en hexadécimal, l'écrase et affiche l'hexadécimal écrasé afin que l'utilisateur puisse confirmer visuellement que les données sont détruites. Désactivé par défaut — pour la plupart des utilisateurs, un rm standard est parfaitement suffisant. Les fichiers temporaires de TerminalPhone sont petits et de courte durée, et l'espace disque est généralement réutilisé rapidement par l'activité normale du système. Cette fonctionnalité est destinée aux utilisateurs qui souhaitent une couche de protection supplémentaire contre la récupération forensique. Remarque : sur les SSD et le stockage flash, l'usure des cellules signifie que l'écrasement peut atterrir sur différentes cellules NAND physiques — le chiffrement complet du disque est la seule défense fiable sur les supports flash. Sur les disques durs traditionnels, l'écrasement remplace les données au même emplacement physique et est efficace contre toute récupération logicielle.
  • Mode relais (pont de groupe) -- Exécutez un relais à connaissance nulle qui relie N appelants anonymes. Le relais transmet l'audio et le chat chiffrés sans les déchiffrer, ne nécessite aucun secret partagé ni matériel audio. Les clients détectent automatiquement le mode relais via la poignée de main RELAY:1 et affichent le nombre d'appelants du groupe en direct. Le départ d'un appelant ne déconnecte pas les autres. Le tableau de bord de l'opérateur affiche le nombre d'appelants, la durée de fonctionnement et le débit de données.
  • Mode Tor à saut unique -- Mode à latence réduite optionnel pour les opérateurs de relais. Utilise 1 saut Tor au lieu de 3 pour le service caché, sacrifiant l'anonymat du serveur pour une latence plus faible. Idéal pour les opérateurs de relais qui n'ont pas besoin de cacher leur propre IP.
  • Configuration des ports -- Configurez le port d'écoute et le port SOCKS ensemble via Paramètres → Paramètres Tor. Permet d'exécuter plusieurs instances sur le même appareil avec des processus Tor séparés. Principalement utile pour les opérateurs de relais qui souhaitent également rejoindre leur propre appel de groupe — exécutez le relais sur une instance, changez le port SOCKS sur une seconde instance et composez en tant qu'appelant.
  • Multiplateforme -- Fonctionne sur les distributions Linux standard, macOS et Android via Termux. Les backends audio spécifiques à la plateforme sont gérés de manière transparente.
  • Aucun root requis -- La saisie PTT utilise le mode brut du terminal. Aucune permission spéciale ni module noyau nécessaire.
  • Script unique -- Un seul fichier Bash. Aucun système de build, aucun runtime, aucun framework.

Installation

Linux

Distributions prises en charge : Debian/Ubuntu (apt), Fedora/RHEL (dnf), Arch (pacman).``` bash

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

Sélectionnez l’option **7** du menu pour installer automatiquement toutes les dépendances. Les paquets suivants seront installés :

| Paquet | Rôle |
|---|---|
| `tor` | Routage en oignon et service caché |
| `opus-tools` | Compression vocale (codec Opus) |
| `sox` | Utilitaires de traitement audio |
| `socat` | Relais TCP bidirectionnel via le proxy SOCKS de Tor |
| `openssl` | Chiffrement et déchiffrement AES-256-CBC |
| `alsa-utils` | Enregistrement et lecture audio (`arecord`, `aplay`) |

### macOS``` bash

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

Sélectionnez l’option 7 pour installer toutes les dépendances automatiquement. Si Homebrew n’est pas installé, le script l’installera d’abord, puis installera les paquets suivants :

PaquetRôle
torRoutage en oignon et service caché
opus-toolsCompression vocale (codec Opus)
soxEnregistrement et lecture audio (rec, play)
socatRelais TCP bidirectionnel via le proxy SOCKS de Tor
opensslChiffrement et déchiffrement AES-256-CBC

Remarque : macOS utilise sox à la fois pour l’enregistrement (rec) et la lecture (play) au lieu d’ALSA. Aucun paquet audio supplémentaire n’est nécessaire.

Apple Silicon (M1/M2/M3+) : Si votre terminal s’exécute par hasard sous Rosetta 2 (un processus x86_64) alors que Homebrew est installé dans le préfixe ARM natif (/opt/homebrew), brew install échoue normalement avec Cannot install under Rosetta 2 in ARM default prefix. L’installateur de dépendances détecte désormais cette situation et relance automatiquement Homebrew sous arch -arm64, de sorte que l’option 7 fonctionne quel que soit le mode de lancement du script.

Termux (Android)

TerminalPhone prend en charge les appareils Android via Termux. En raison de l’architecture audio cloisonnée d’Android, deux composants supplémentaires sont requis.

Étape 1 : Installer Termux

Installez Termux depuis F-Droid. N’utilisez pas la version du Play Store, car elle est obsolète et ne reçoit plus de mises à jour.

Étape 2 : Installer l’application Termux:API

Installez Termux:API depuis F-Droid. Il s’agit d’une application Android distincte (et non d’un paquet Termux) qui fournit une passerelle entre Termux et les API système d’Android. TerminalPhone en a besoin pour accéder au microphone de l’appareil et à la lecture multimédia.

Sans l’application Termux:API installée sur l’appareil, les commandes termux-microphone-record et termux-media-player ne fonctionneront pas, et l’enregistrement et la lecture audio échoueront silencieusement.

Après avoir installé l’application Termux:API, accordez-lui les autorisations d’accès au microphone lorsque vous y êtes invité.

Étape 3 : Installer le paquet Termux:API dans Termux```bash pkg install termux-api

Ceci installe les utilitaires en ligne de commande qui communiquent avec l'application Termux:API.

**Étape 4 : Exécuter TerminalPhone**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh

Sélectionnez l’option 7 pour installer toutes les dépendances restantes. L’installateur exécutera d’abord pkg upgrade pour résoudre tout problème de liaison de paquets, puis installera tor, opus-tools, sox, socat, openssl-tool, ffmpeg et termux-api.

Dépendances spécifiques à Termux :

PaquetObjectif
termux-apiPont CLI vers le microphone et le lecteur multimédia Android
ffmpegConvertit les enregistrements M4A d’Android en PCM brut pour l’encodage Opus

Démarrage rapide```

  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)

Les deux parties doivent avoir Tor en cours d'exécution et la même clé secrète partagée configurée avant d'initier un appel.

---

## Utilisation

### Options du menu```
 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

Commandes en cours d'appel

Mode duplex intégral (WebSockets) :

ToucheAction
MCouper / réactiver le microphone.
TEnvoyer un message texte chiffré en cours d'appel.
QRaccrocher et revenir au menu.

Mode push-to-talk (Linux / macOS) :

ToucheAction
Maintenir ESPACEEnregistrer un message vocal. Envoi automatique au relâchement.
TEnvoyer un message texte chiffré.
SOuvrir les paramètres en cours d'appel (changer le chiffrement, ajuster la qualité).
QRaccrocher et revenir au menu.

Mode push-to-talk (Termux) :

Le clavier logiciel d'Android envoie les événements de touche au relâchement, et non à l'appui. TerminalPhone s'adapte en utilisant le mode bascule sur Termux.

ToucheAction
Taper ESPACEDémarrer l'enregistrement. Taper à nouveau pour arrêter et envoyer.
TEnvoyer un message texte chiffré.
SOuvrir les paramètres en cours d'appel (changer le chiffrement, ajuster la qualité).
QRaccrocher et revenir au menu.
Vol Bas ×2Basculer l'enregistrement via le bouton de volume (nécessite Volume PTT activé dans les paramètres).

Mode CLI```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)

---

## Comment ça fonctionne

TerminalPhone utilise un modèle enregistrer-puis-envoyer. Lorsque vous activez le PTT, le microphone enregistre en continu jusqu'à ce que vous relâchiez. L'enregistrement complet est ensuite traité via le pipeline suivant :```
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

Le protocole filaire est un texte basé sur des lignes sur une connexion TCP :

MessageDescription
ID:<onion>ID de l'appelant -- adresse .onion de l'expéditeur
CIPHER:<name>Chiffrement de l'expéditeur. Échangé à la connexion et en cas de changement.
PTT_STARTL'expéditeur a commencé l'enregistrement
PTT_STOPL'expéditeur a terminé ; l'audio suit ou a été envoyé
AUDIO:<base64>Message audio chiffré complet
MSG:<base64>Message texte chiffré
HANGUPL'expéditeur se déconnecte
PINGSignal de maintien de connexion
RELAY:1Salutation du relais -- envoyé par le relais à la connexion, déclenche le mode groupe
GROUP:<n>Mise à jour de la taille du groupe -- diffusée par le relais lorsque des appelants rejoignent ou quittent

Sur Termux, une étape de conversion supplémentaire gère le format d'enregistrement M4A natif d'Android, en utilisant ffmpeg pour convertir en PCM brut avant l'encodage Opus.


Modèle de sécurité

Chiffrement : Tout l'audio est chiffré avec un chiffrement configurable par l'utilisateur (par défaut : AES-256-CBC) avant la transmission. 21 chiffrements sélectionnés sont disponibles, classés du plus fort (256 bits) au plus adéquat (128 bits). La clé est dérivée d'un secret pré-partagé à l'aide de PBKDF2 avec 10 000 itérations. Le chiffrement est appliqué au niveau de la couche applicative, indépendamment du chiffrement de transport de Tor. Les secrets sont transmis à OpenSSL via des descripteurs de fichiers (-pass fd:3), et non via des arguments de ligne de commande, afin qu'ils ne soient jamais exposés dans la table des processus.

Négociation du chiffrement : Les deux parties échangent les noms des chiffrements à la connexion et à chaque fois qu'un chiffrement est modifié en cours d'appel. Les noms des chiffrements ne sont pas secrets (principe de Kerckhoffs). Si les chiffrements locaux et distants ne correspondent pas, les deux parties voient des indicateurs rouges dans l'en-tête de l'appel.

Transport : Toutes les données sont acheminées via les circuits de services cachés de Tor. L'adresse IP d'aucune des parties n'est exposée. Il n'y a aucun trafic en clair. La connexion ne peut pas être attribuée à l'une ou l'autre des parties par un observateur du réseau.

Résistance à l'analyse du trafic : Le modèle enregistrer-puis-envoyer produit des schémas de transmission irréguliers (messages de longueur variable à intervalles irréguliers), plus difficiles à identifier que le streaming continu.

Authentification : Le secret partagé sert d'authentification implicite. Si les deux parties ne disposent pas du même secret, le déchiffrement échoue et aucun audio n'est joué. À la connexion, les deux parties échangent leurs adresses .onion pour l'identification de l'appelant. Le secret peut éventuellement être chiffré au repos avec une phrase de passe ; au lancement, le script demande la phrase de passe pour le déverrouiller.

Signature de protocole HMAC (optionnel) : Lorsqu'elle est activée, chaque message du protocole filaire -- y compris les signaux de contrôle comme HANGUP, PTT_START et PING -- est signé avec HMAC-SHA256 dérivé du secret partagé. Un nonce aléatoire est inclus par message afin que des commandes identiques produisent des signatures uniques. Les nonces déjà vus sont suivis par appel et les doublons sont rejetés, empêchant les attaques par rejeu. Le paramètre HMAC est figé au début de l'appel via un fichier d'exécution afin que les chemins d'envoi et de réception soient toujours d'accord, même si le paramètre est basculé en cours d'appel (les changements prennent effet au prochain appel). Côté réception, tout message avec une signature invalide, manquante ou rejouée est silencieusement ignoré. Cela empêche un attaquant qui compromet le circuit Tor (mais ne possède pas le secret partagé) d'injecter ou de rejouer des commandes. Les deux parties doivent activer HMAC pour que les appels fonctionnent. Non compatible avec les versions antérieures à 1.1.3.

Limites :

  • Le secret partagé doit être échangé hors bande via un canal sécurisé (en personne, messagerie chiffrée, etc.).
  • Il n'y a pas de secret de transmission (forward secrecy). Si le secret partagé est compromis, toutes les communications passées et futures utilisant ce secret peuvent être déchiffrées.
  • Le protocole ne protège pas contre un point de terminaison compromis. Si l'un des appareils est compromis, l'attaquant a accès à l'audio en clair.

Sécurité du mode relais : Le relais est architecturalement à connaissance nulle. Il ne possède jamais le secret partagé et ne peut déchiffrer aucun contenu. Les données audio transitent par des tampons de pipe du noyau (FIFO) qui n'existent qu'en mémoire -- rien n'est écrit sur le disque. Lorsque le relais s'arrête, tous les fichiers temporaires sont supprimés. L'opérateur du relais ne peut pas déterminer ce qui a été dit, qui sont les appelants, ni lire aucun message. Le relais filtre tous les signaux de contrôle (HANGUP, ID:, CIPHER:, PTT_START, PTT_STOP) et ne transmet que AUDIO:, MSG: et PING. Un adversaire passif global pourrait effectuer une analyse de corrélation du trafic pour associer les appelants au relais, mais le contenu des messages reste opaque.

Capacité du relais : Le principal goulot d'étranglement est la bande passante de Tor. Le débit des services cachés de Tor est très variable et dépend de la qualité du circuit, de la congestion des relais et de la distance géographique. Un message vocal typique de 10 secondes fait environ 20 Ko chiffré, et chaque transmission est diffusée à N-1 auditeurs.

AppelantsSortant par messageExpérience attendue
2--320--40 KoFiable sur la plupart des connexions
3--540--80 KoBon sur des circuits stables, délais possibles sur données mobiles
5--1080--180 KoLimites atteintes, délais notables entre les transmissions
10+180 Ko+Non fiable, files d'attente importantes et perte de messages potentielle

La capacité réaliste est de 3--5 appelants pour un relais fonctionnant sur un téléphone (Termux), ou 5--10 appelants sur une machine Linux dédiée avec une connexion stable. Les relais fonctionnant sur des appareils mobiles sont confrontés à des contraintes supplémentaires : les données mobiles ajoutent de la latence en plus de Tor, Android peut tuer les processus Termux en arrière-plan pour récupérer de la mémoire, et la consommation de batterie augmente avec chaque appelant connecté. La bande passante du circuit Tor peut varier de 50 Ko/s à 500 Ko/s selon la qualité du chemin, et les circuits peuvent se dégrader ou tourner en cours de session. Le mode à saut unique améliore le débit mais n'élimine pas la congestion des relais Tor. Ces estimations supposent le modèle PTT où une seule personne transmet à la fois -- des transmissions simultanées dégraderaient davantage les performances. Les appelants dans un appel de groupe devraient envisager de réduire leur débit binaire Opus (Paramètres → Encodage Opus) pour réduire la taille des messages et alléger la charge sur le relais.


Configuration

Toute la configuration est stockée dans .terminalphone/ par rapport à l'emplacement du script :``` .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

Paramètres audio par défaut (définis en haut du script) :

| Paramètre | Défaut | Description |
|---|---|---|
| `LISTEN_PORT` | 7777 | Port TCP pour les connexions entrantes |
| `TOR_SOCKS_PORT` | 9050 | Port du proxy SOCKS de Tor |
| `OPUS_BITRATE` | 16 | Débit binaire d'encodage Opus en kbps |
| `CIPHER` | aes-256-cbc | Chiffrement (configurable via les paramètres) |
| `SNOWFLAKE_ENABLED` | 0 | Pont Snowflake pour contourner la censure |
| `AUTO_LISTEN` | 0 | Écoute automatique des appels au démarrage de Tor |
| `PTT_KEY` | ESPACE | Touche push-to-talk (configurable via les paramètres) |
| `VOL_PTT` | 0 | PTT par double pression sur le volume, Termux uniquement (expérimental) |
| `EXCLUDE_NODES` | (vide) | Liste de pays ExcludeNodes de Tor (p. ex. `{US},{GB}`) |
| `HMAC_AUTH` | 0 | Signature HMAC de tous les messages du protocole (optionnel, les deux côtés doivent correspondre) |
| `OVERWRITE_DELETE` | 0 | Écrasement des fichiers temporaires avec des données aléatoires avant suppression (désactivé par défaut) |
| `PTT_CHIME` | désactivé | Préréglage de carillon de notification PTT (désactivé, tonalité, double, gazouillis, ding, clic, personnalisé) |
| `SINGLE_HOP` | 0 | Mode Tor à saut unique pour une latence réduite (désactive l'anonymat du serveur) |
| `SAMPLE_RATE` | 8000 | Fréquence d'échantillonnage audio en Hz |
| `CHUNK_DURATION` | 1 | Durée des segments de test audio en secondes |

---

## Dépannage

**Échec du bootstrap de Tor :**
Consultez le journal de Tor dans `.terminalphone/tor_data/tor.log`. Les causes courantes incluent un décalage d'horloge, des restrictions réseau bloquant Tor, ou une autre instance de Tor utilisant le même port SOCKS.

**Aucun son sur Termux :**
Vérifiez que l'application Termux:API est installée depuis F-Droid (pas seulement le paquet `termux-api`). Accordez les autorisations de microphone à l'application Termux:API dans les paramètres Android. Exécutez le test de bouclage audio (option 5) pour vérifier.

**L'installation de ffmpeg échoue sur Termux :**
Exécutez `pkg upgrade` avant d'installer les dépendances. L'installateur le fait automatiquement, mais si vous avez installé les paquets manuellement, des bibliothèques partagées obsolètes peuvent provoquer des erreurs de liaison.

**Le test audio fonctionne mais les appels sont silencieux :**
Confirmez que les deux parties utilisent le même secret partagé. Des secrets non concordants entraînent un échec de déchiffrement sans message d'erreur -- l'appel se connecte mais aucun son n'est entendu.

**Le pont Snowflake est lent à se connecter :**
Snowflake achemine le trafic via des proxys WebRTC, ce qui ajoute un temps de bootstrap supplémentaire. Il est normal que Tor mette 30 à 60 secondes (ou plus) pour atteindre 100 % lorsque Snowflake est activé. Le script affichera un avis de patience pendant le bootstrap.

**Le premier bootstrap de Tor est lent :**
Au premier lancement, Tor doit télécharger l'intégralité du consensus réseau à partir de zéro, ce qui peut prendre une minute ou deux. Le script le détecte et affiche un avis. Le délai d'expiration du bootstrap est automatiquement prolongé de 120 à 300 secondes au premier lancement. Les lancements suivants utilisent les données de consensus en cache et sont beaucoup plus rapides.

**Le raccrochage ne revient pas au menu :**
Si le script se bloque après avoir appuyé sur Q, appuyez sur Ctrl+C pour forcer le nettoyage et revenir au shell.

**`Cannot install under Rosetta 2 in ARM default prefix` sur macOS :**
Cela se produit sur Apple Silicon lorsque le terminal s'exécute sous Rosetta 2 (un processus `x86_64`) mais que Homebrew se trouve dans le préfixe ARM natif (`/opt/homebrew`). L'installateur de dépendances (option **7**) détecte désormais cela et relance automatiquement `brew` sous `arch -arm64`. Si vous installez les paquets manuellement, préfixez-les vous-même : `arch -arm64 brew install <pkg>`. Vous pouvez également lancer le script en natif avec `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)

[MIRROR V1.1.8](https://bin.disroot.org/?ef81486d3a5141a1#EN1YuLPqqs2FAEsvXkGbZdiWXt3vxvGTw845C4QsYmSn)

[MIRROR V1.1.9](https://bin.disroot.org/?fbcca457ac58964f#DsUCbJwgBRhnL1FK3a6VpwE5sCRNProXvk86u7RpWQM9)

---

## Licence

MIT

Catégories