Torna agli aggiornamenti
UpdatedSep 3, 2026

terminalphone — Updated!

Comunicazione vocale e testuale push-to-talk crittografata tramite servizi nascosti Tor con crittografia end-to-end, cifrari configurabili, modalità relay per chiamate di gruppo e distruzione dati anti-forense.

Condividi

TerminalPhone

Comunicazione vocale push-to-talk cifrata tramite servizi nascosti Tor.

TerminalPhone è un singolo script Bash autonomo che fornisce comunicazione vocale e testuale anonima e cifrata end-to-end tra due o più parti sulla rete Tor. Funziona come un walkie-talkie: registri un messaggio vocale che viene compresso, cifrato e trasmesso alla controparte remota come unità singola. Puoi anche inviare messaggi di testo cifrati durante una chiamata. Nessuna infrastruttura server, nessun account, nessun numero di telefono. Il tuo indirizzo .onion del servizio nascosto Tor è la tua identità.


Indice


Funzionalità

  • Modalità Walkie-Talkie Push-to-Talk -- Registra un messaggio vocale completo e trasmettilo al rilascio.
  • Chat Cifrata Durante la Chiamata -- Invia e ricevi messaggi di testo cifrati durante una chiamata. Premi T per digitare un messaggio.
  • Identificativo Chiamante -- Entrambe le parti si scambiano automaticamente gli indirizzi .onion alla connessione. L'indirizzo remoto viene visualizzato nell'intestazione della chiamata.
  • Rilevamento Automatico di Riaggancio -- Quando una parte riaggancia, l'altra viene avvisata immediatamente e la chiamata termina automaticamente.
  • Cifrario Configurabile -- Scegli tra 21 cifrari curati classificati per robustezza (256-bit → 128-bit). Include le famiglie AES, ChaCha20, Camellia e ARIA. I cifrari deboli (DES, RC4, modalità ECB) sono esclusi.
  • Negoziazione del Cifrario in Tempo Reale -- Entrambe le parti si scambiano le informazioni sul cifrario alla connessione. L'intestazione della chiamata mostra sia il cifrario locale che quello remoto con indicatori verdi (corrispondenza) o rossi (discrepanza), aggiornati in tempo reale.
  • Impostazioni Durante la Chiamata -- Premi S durante una chiamata per accedere alle impostazioni. Cambia il cifrario al volo; il display della controparte remota si aggiorna automaticamente.
  • Informazioni sul Bridge Snowflake -- Quando si utilizza Snowflake per aggirare la censura, la pagina della chiamata mostra il nome del descrittore del bridge, l'impronta e lo stato della connessione di trasporto analizzati dai log di Tor.
  • Ascolto Automatico -- Quando abilitato, un listener in background si avvia automaticamente all'avvio di Tor. Le chiamate in arrivo vengono rilevate e accettate dal menu principale senza dover selezionare manualmente "Ascolta chiamate". Al termine di una chiamata, il listener si riavvia.
  • Tasto PTT Configurabile -- Cambia il tasto push-to-talk dalla barra spaziatrice predefinita a qualsiasi tasto tramite il menu Impostazioni.
  • Statistiche dei Messaggi -- La schermata della chiamata mostra la dimensione del payload cifrato per i messaggi inviati e ricevuti, aggiornata sul posto.
  • Stato PTT Remoto -- La schermata della chiamata mostra un indicatore statico per lo stato della controparte remota: "Idle" (verde) o "● Recording" (rosso). Si reimposta immediatamente quando arrivano dati audio, prima che inizi la riproduzione.
  • Segnale Acustico PTT -- Suono di notifica opzionale quando la controparte remota inizia a registrare. Cinque preset integrati (tone, double, chirp, ding, click) generati con sox, più la possibilità di registrare un segnale acustico personalizzato di 2 secondi. Configurabile tramite Impostazioni.
  • Animazione di Connessione -- Quando si chiama un indirizzo remoto, viene riprodotta un'animazione ciclica fino al caricamento dell'interfaccia di chiamata.
  • Modificatore di Voce -- Applica effetti vocali all'audio in uscita. Include 6 preset (deep, high, robot, echo, whisper) e una modalità personalizzata completamente configurabile con pitch shift, overdrive, flanger, echo, filtro highpass e tremolo. Gli effetti vengono elaborati utilizzando sox prima della codifica Opus.
  • PTT tramite Volume (Termux) -- Modalità sperimentale che consente di toccare due volte il pulsante Volume Giù per attivare/disattivare la registrazione, anche quando Termux è in background. Richiede jq (installato su richiesta). Il volume viene ripristinato automaticamente dopo ogni attivazione.
  • Servizio Nascosto Tor -- Ogni istanza esegue il proprio servizio nascosto Tor. Il tuo indirizzo .onion funge da endpoint permanente e instradabile. Nessun port forwarding o IP pubblico richiesto.
  • Cifratura End-to-End -- Tutto l'audio e il testo vengono cifrati utilizzando un cifrario configurabile (predefinito: AES-256-CBC) con derivazione della chiave PBKDF2 da un segreto pre-condiviso prima di entrare nella rete Tor.
  • Segreto Protetto da Passphrase -- Il segreto condiviso può essere cifrato a riposo utilizzando una passphrase scelta dall'utente (AES-256-CBC, 100.000 iterazioni PBKDF2). I segreti in chiaro esistenti vengono rilevati automaticamente con l'offerta di migrarli.
  • Bassa Larghezza di Banda -- Codec Opus a 16kbps, 8kHz mono. Un tipico messaggio vocale di 10 secondi è inferiore a 20KB, ben entro la capacità di Tor.
  • Condivisione tramite Codice QR -- L'opzione 3 può visualizzare il tuo indirizzo .onion come codice QR scansionabile nel terminale. Se qrencode non è installato, ti viene chiesto di installarlo. Il codice QR viene renderizzato sul buffer dello schermo alternativo e viene distrutto alla chiusura. Una nota avverte che alcuni scanner QR antepongono automaticamente http://; questo prefisso viene rimosso automaticamente durante la composizione.
  • File Temporanei Opachi -- Tutti i file temporanei utilizzano estensioni generiche .tmp e identificatori esadecimali casuali. Nessun tipo di file o metadato temporale viene divulgato al filesystem.
  • Visualizzazione dei Salti del Circuito -- Visualizzazione opt-in del percorso del circuito Tor durante le chiamate, che mostra i nomi dei relay e i nomi completi dei paesi. Aggiornamento automatico ogni 60 secondi. Configurabile tramite Impostazioni → Impostazioni Tor.
  • Escludi Paesi -- Escludi paesi specifici dai tuoi circuiti Tor. Preset per le alleanze Five Eyes, Nine Eyes e Fourteen Eyes, oppure inserisci codici paese personalizzati. Utilizza ExcludeNodes con StrictNodes nel torrc.
  • Autenticazione del Protocollo HMAC -- Firma opzionale HMAC-SHA256 di tutti i messaggi del protocollo (voce, testo, segnali di controllo) utilizzando il segreto condiviso. Un nonce casuale è incluso per ogni messaggio e i nonce già visti vengono tracciati per rifiutare le repliche. I messaggi non firmati, falsificati o replicati vengono scartati silenziosamente. Lo stato HMAC viene congelato all'inizio della chiamata per prevenire desincronizzazioni durante la chiamata. Configurabile tramite Impostazioni → Sicurezza.
  • Sovrascrittura Prima della Cancellazione -- Interruttore opzionale in Impostazioni → Sicurezza che sovrascrive ogni file temporaneo con dati casuali da /dev/urandom prima della cancellazione. Viene letta la dimensione del file, viene scritto quel numero di byte di dati casuali sopra il file con dd usando conv=notrunc, la scrittura viene sincronizzata sul dispositivo di archiviazione con sync, e poi il file viene rimosso con rm. Copre tutti i file runtime sensibili: registrazioni PCM grezze, audio codificato Opus, payload cifrati, audio e chat in entrata decifrati, intermediari degli effetti vocali, materiale delle chiavi del cifrario e HMAC, log dei nonce, flag di sessione, file PID, named pipe, chiavi del servizio nascosto Tor in rotazione e dati di sessione del relay. Per le directory, tutti i file all'interno vengono sovrascritti ricorsivamente. Un'opzione di test integrata crea un file di esempio, mostra il contenuto originale in chiaro ed esadecimale, lo sovrascrive e visualizza l'esadecimale sovrascritto in modo che l'utente possa confermare visivamente che i dati sono stati distrutti. Disattivato per impostazione predefinita — per la maggior parte degli utenti, il normale rm è perfettamente adeguato. I file temporanei di TerminalPhone sono piccoli e di breve durata, e lo spazio su disco viene tipicamente riutilizzato rapidamente dall'attività normale del sistema. Questa funzionalità è per gli utenti che desiderano un ulteriore livello di protezione contro il recupero forense. Nota: su SSD e memoria flash, il wear leveling significa che la sovrascrittura può finire su celle NAND fisiche diverse — la cifratura dell'intero disco è l'unica difesa affidabile sui supporti flash. Su HDD tradizionali, la sovrascrittura sostituisce i dati nella stessa posizione fisica ed è efficace contro tutti i recuperi basati su software.
  • Modalità Relay (Bridge di Gruppo) -- Esegui un relay zero-knowledge che collega N chiamanti anonimi. Il relay inoltra audio e chat cifrati senza decifrarli, non richiede un segreto condiviso o hardware audio. I client rilevano automaticamente la modalità relay tramite l'handshake RELAY:1 e visualizzano il conteggio dei chiamanti del gruppo in tempo reale. L'uscita di un chiamante non disconnette gli altri. La dashboard dell'operatore mostra il conteggio dei chiamanti, il tempo di attività e il throughput dei dati.
  • Modalità Tor a Singolo Salto -- Modalità opzionale a latenza ridotta per gli operatori dei relay. Utilizza 1 salto Tor invece di 3 per il servizio nascosto, sacrificando l'anonimato del server per una latenza inferiore. Ideale per gli operatori dei relay che non hanno bisogno di nascondere il proprio IP.
  • Configurazione delle Porte -- Configura la porta di ascolto e la porta SOCKS insieme tramite Impostazioni → Impostazioni Tor. Consente di eseguire più istanze sullo stesso dispositivo con processi Tor separati. Principalmente utile per gli operatori dei relay che vogliono anche partecipare alla propria chiamata di gruppo -- esegui il relay su un'istanza, cambia la porta SOCKS su una seconda istanza e componi come chiamante.
  • Multipiattaforma -- Funziona su distribuzioni Linux standard, macOS e Android tramite Termux. I backend audio specifici della piattaforma vengono gestiti in modo trasparente.
  • Nessun Root Richiesto -- L'input PTT utilizza la modalità raw del terminale. Nessun permesso speciale o modulo del kernel necessario.
  • Script Singolo -- Un file Bash. Nessun sistema di build, nessun runtime, nessun framework.

Installazione

Linux

Distribuzioni supportate: Debian/Ubuntu (apt), Fedora/RHEL (dnf), Arch (pacman).``` bash

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

Seleziona l'opzione **7** dal menu per installare automaticamente tutte le dipendenze. Verranno installati i seguenti pacchetti:

| Pacchetto | Scopo |
|---|---|
| `tor` | Onion routing e servizio nascosto |
| `opus-tools` | Compressione vocale (codec Opus) |
| `sox` | Utility per l'elaborazione audio |
| `socat` | Relay TCP bidirezionale attraverso il proxy SOCKS di Tor |
| `openssl` | Crittografia e decrittografia AES-256-CBC |
| `alsa-utils` | Registrazione e riproduzione audio (`arecord`, `aplay`) |

### macOS``` bash

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

Seleziona l'opzione 7 per installare automaticamente tutte le dipendenze. Se Homebrew non è installato, lo script lo installerà prima, quindi installerà i seguenti pacchetti:

PacchettoScopo
torOnion routing e servizio nascosto
opus-toolsCompressione vocale (codec Opus)
soxRegistrazione e riproduzione audio (rec, play)
socatRelay TCP bidirezionale attraverso il proxy SOCKS di Tor
opensslCrittografia e decrittografia AES-256-CBC

Nota: macOS utilizza sox sia per la registrazione (rec) che per la riproduzione (play) invece di ALSA. Non sono necessari pacchetti audio aggiuntivi.

Apple Silicon (M1/M2/M3+): Se il tuo terminale si trova in esecuzione sotto Rosetta 2 (un processo x86_64) mentre Homebrew è installato nel prefisso ARM nativo (/opt/homebrew), brew install normalmente fallisce con Cannot install under Rosetta 2 in ARM default prefix. L'installer delle dipendenze ora rileva questa situazione e riesegue automaticamente Homebrew sotto arch -arm64, quindi l'opzione 7 funziona indipendentemente da come è stato avviato lo script.

Termux (Android)

TerminalPhone supporta i dispositivi Android tramite Termux. A causa dell'architettura audio sandboxed di Android, sono richiesti due componenti aggiuntivi.

Passo 1: Installa Termux

Installa Termux da F-Droid. Non utilizzare la versione del Play Store, poiché è obsoleta e non riceve più aggiornamenti.

Passo 2: Installa l'app Termux:API

Installa Termux:API da F-Droid. Questa è un'applicazione Android separata (non un pacchetto Termux) che fornisce un ponte tra Termux e le API di sistema di Android. TerminalPhone la richiede per accedere al microfono del dispositivo e alla riproduzione multimediale.

Senza l'app Termux:API installata sul dispositivo, i comandi termux-microphone-record e termux-media-player non funzioneranno, e la registrazione e la riproduzione audio falliranno silenziosamente.

Dopo aver installato l'app Termux:API, concedile i permessi per il microfono quando richiesto.

Passo 3: Installa il pacchetto Termux:API all'interno di Termux```bash pkg install termux-api

Questo installa le utilità da riga di comando che comunicano con l'app Termux:API.

**Passo 4: Eseguire TerminalPhone**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh

Seleziona l'opzione 7 per installare tutte le dipendenze rimanenti. L'installer eseguirà prima pkg upgrade per risolvere eventuali problemi di collegamento dei pacchetti, poi installerà tor, opus-tools, sox, socat, openssl-tool, ffmpeg e termux-api.

Dipendenze specifiche di Termux:

PacchettoScopo
termux-apiBridge CLI verso il microfono e il lettore multimediale di Android
ffmpegConverte le registrazioni M4A di Android in PCM grezzo per la codifica Opus

Avvio rapido```

  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)

Entrambe le parti devono avere Tor in esecuzione e lo stesso segreto condiviso configurato prima di avviare una chiamata.

---

## Utilizzo

### Opzioni del 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

Controlli in Chiamata

Modalità Full Duplex (WebSockets):

TastoAzione
MDisattiva / Riattiva il microfono.
TInvia un messaggio di testo cifrato in chiamata.
QRiaggancia e torna al menu.

Modalità Push-to-Talk (Linux / macOS):

TastoAzione
Tieni premuto SPAZIORegistra un messaggio vocale. Viene inviato automaticamente al rilascio.
TInvia un messaggio di testo cifrato.
SApre le impostazioni durante la chiamata (cambia cifratura, regola la qualità).
QRiaggancia e torna al menu.

Modalità Push-to-Talk (Termux):

La tastiera software di Android invia gli eventi dei tasti al rilascio, non alla pressione. TerminalPhone si adatta utilizzando la modalità toggle su Termux.

TastoAzione
Tocca SPAZIOAvvia la registrazione. Tocca di nuovo per fermare e inviare.
TInvia un messaggio di testo cifrato.
SApre le impostazioni durante la chiamata (cambia cifratura, regola la qualità).
QRiaggancia e torna al menu.
Vol Giù ×2Attiva/disattiva la registrazione tramite il tasto del volume (richiede Volume PTT abilitato nelle impostazioni).

Modalità 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)

---

## Come funziona

TerminalPhone utilizza un modello registra-e-invia. Quando attivi il PTT, il microfono registra continuamente finché non rilasci. La registrazione completa viene quindi elaborata attraverso la seguente pipeline:```
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

Il protocollo wire è testo basato su righe su una connessione TCP:

MessaggioDescrizione
ID:<onion>Caller ID -- indirizzo .onion del mittente
CIPHER:<name>Cifrario di crittografia del mittente. Scambiato alla connessione e al cambio.
PTT_STARTIl mittente ha iniziato la registrazione
PTT_STOPIl mittente ha terminato; l'audio segue o è stato inviato
AUDIO:<base64>Messaggio audio crittografato completo
MSG:<base64>Messaggio di testo crittografato
HANGUPIl mittente si sta disconnettendo
PINGSegnale di keepalive
RELAY:1Saluto del relay -- inviato dal relay alla connessione, attiva la modalità gruppo
GROUP:<n>Aggiornamento dimensione gruppo -- trasmesso dal relay quando i chiamanti si uniscono o escono

Su Termux, un ulteriore passaggio di conversione gestisce il formato di registrazione nativo M4A di Android, utilizzando ffmpeg per convertire in PCM raw prima della codifica Opus.


Modello di sicurezza

Crittografia: Tutto l'audio è crittografato con un cifrario configurabile dall'utente (predefinito: AES-256-CBC) prima della trasmissione. Sono disponibili 21 cifrari curati, classificati dal più forte (256-bit) all'adeguato (128-bit). La chiave è derivata da un segreto pre-condiviso utilizzando PBKDF2 con 10.000 iterazioni. La crittografia è applicata a livello applicativo, indipendentemente dalla crittografia di trasporto di Tor. I segreti vengono passati a OpenSSL tramite file descriptor (-pass fd:3), non come argomenti della riga di comando, quindi non sono mai esposti nella tabella dei processi.

Negoziazione del cifrario: Entrambe le parti scambiano i nomi dei cifrari alla connessione e ogni volta che un cifrario viene cambiato durante la chiamata. I nomi dei cifrari non sono segreti (principio di Kerckhoffs). Se i cifrari locale e remoto non corrispondono, entrambe le parti vedono indicatori rossi nell'intestazione della chiamata.

Trasporto: Tutti i dati sono instradati attraverso circuiti Tor hidden service. L'indirizzo IP di nessuna delle due parti è esposto. Non c'è traffico clearnet. La connessione non può essere attribuita a nessuna delle due parti da un osservatore di rete.

Resistenza all'analisi del traffico: Il modello record-then-send produce pattern di trasmissione irregolari (messaggi di lunghezza variabile a intervalli irregolari), che sono più difficili da fingerprintare rispetto allo streaming continuo.

Autenticazione: Il segreto condiviso funge da autenticazione implicita. Se entrambe le parti non hanno lo stesso segreto, la decrittografia fallisce e non viene riprodotto alcun audio. Alla connessione, entrambe le parti scambiano gli indirizzi .onion per l'identificazione del chiamante. Il segreto può opzionalmente essere crittografato a riposo con una passphrase; all'avvio, lo script richiede la passphrase per sbloccarlo.

Firma del protocollo HMAC (opzionale): Quando abilitata, ogni messaggio del protocollo wire -- inclusi i segnali di controllo come HANGUP, PTT_START e PING -- è firmato con HMAC-SHA256 derivato dal segreto condiviso. Un nonce casuale è incluso per ogni messaggio in modo che comandi identici producano firme uniche. I nonce visti vengono tracciati per chiamata e i duplicati vengono rifiutati, prevenendo attacchi di replay. L'impostazione HMAC viene congelata all'inizio della chiamata tramite un file di runtime in modo che sia il percorso di invio che quello di ricezione siano sempre d'accordo, anche se l'impostazione viene attivata/disattivata durante la chiamata (le modifiche hanno effetto alla chiamata successiva). Sul lato ricevente, qualsiasi messaggio con una firma non valida, mancante o riprodotta viene scartato silenziosamente. Questo impedisce a un attaccante che compromette il circuito Tor (ma non possiede il segreto condiviso) di iniettare o riprodurre comandi. Entrambe le parti devono abilitare HMAC affinché le chiamate funzionino. Non compatibile con versioni precedenti alla 1.1.3.

Limitazioni:

  • Il segreto condiviso deve essere scambiato fuori banda attraverso un canale sicuro (di persona, messaggistica crittografata, ecc.).
  • Non c'è forward secrecy. Se il segreto condiviso viene compromesso, tutte le comunicazioni passate e future che utilizzano quel segreto possono essere decrittografate.
  • Il protocollo non protegge da un endpoint compromesso. Se uno dei due dispositivi è compromesso, l'attaccante ha accesso all'audio in chiaro.

Sicurezza della modalità relay: Il relay è architetturalmente zero-knowledge. Non possiede mai il segreto condiviso e non può decrittografare alcun contenuto. I dati audio fluiscono attraverso buffer di pipe del kernel (FIFO) che esistono solo in memoria -- nulla viene scritto su disco. Quando il relay si ferma, tutti i file temporanei vengono eliminati. L'operatore del relay non può determinare cosa è stato detto, chi sono i chiamanti o leggere alcun messaggio. Il relay filtra tutti i segnali di controllo (HANGUP, ID:, CIPHER:, PTT_START, PTT_STOP) e inoltra solo AUDIO:, MSG: e PING. Un avversario passivo globale potrebbe eseguire un'analisi di correlazione del traffico per associare i chiamanti al relay, ma il contenuto dei messaggi rimane opaco.

Capacità del relay: Il collo di bottiglia principale è la larghezza di banda di Tor. Il throughput di Tor hidden service è altamente variabile e dipende dalla qualità del circuito, dalla congestione del relay e dalla distanza geografica. Un tipico messaggio vocale di 10 secondi è ~20KB crittografato, e ogni trasmissione si dirama a N-1 ascoltatori.

ChiamantiOutbound per messaggioEsperienza prevista
2--320--40KBAffidabile sulla maggior parte delle connessioni
3--540--80KBBuono su circuiti stabili, possibili ritardi su dati mobili
5--1080--180KBAl limite, ritardi evidenti tra le trasmissioni
10+180KB+Inaffidabile, accodamento significativo e potenziale perdita di messaggi

La capacità realistica è di 3--5 chiamanti per un relay in esecuzione su un telefono (Termux), o 5--10 chiamanti su una macchina Linux dedicata con una connessione stabile. I relay in esecuzione su dispositivi mobili affrontano vincoli aggiuntivi: i dati mobili aggiungono latenza oltre a Tor, Android può terminare i processi Termux in background per recuperare memoria, e il consumo della batteria aumenta con ogni chiamante connesso. La larghezza di banda del circuito Tor può variare da 50KB/s a 500KB/s a seconda della qualità del percorso, e i circuiti possono degradarsi o ruotare durante la sessione. La modalità single-hop migliora il throughput ma non elimina la congestione dei relay Tor. Queste stime presuppongono il modello PTT in cui solo una persona trasmette alla volta -- trasmissioni simultanee degraderebbero ulteriormente le prestazioni. I chiamanti in una chiamata di gruppo dovrebbero considerare di abbassare il loro bitrate Opus (Impostazioni → Codifica Opus) per ridurre le dimensioni dei messaggi e alleggerire il carico sul relay.


Configurazione

Tutta la configurazione è memorizzata in .terminalphone/ relativa alla posizione dello 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

Parametri audio predefiniti (definiti all'inizio dello script):

| Parametro | Predefinito | Descrizione |
|---|---|---|
| `LISTEN_PORT` | 7777 | Porta TCP per le connessioni in entrata |
| `TOR_SOCKS_PORT` | 9050 | Porta del proxy SOCKS di Tor |
| `OPUS_BITRATE` | 16 | Bitrate di codifica Opus in kbps |
| `CIPHER` | aes-256-cbc | Cifrario di crittografia (configurabile tramite Impostazioni) |
| `SNOWFLAKE_ENABLED` | 0 | Bridge Snowflake per aggirare la censura |
| `AUTO_LISTEN` | 0 | Ascolto automatico delle chiamate all'avvio di Tor |
| `PTT_KEY` | SPACE | Tasto push-to-talk (configurabile tramite Impostazioni) |
| `VOL_PTT` | 0 | PTT con doppio tocco su volume giù, solo Termux (sperimentale) |
| `EXCLUDE_NODES` | (vuoto) | Lista di paesi Tor ExcludeNodes (es. `{US},{GB}`) |
| `HMAC_AUTH` | 0 | Firma HMAC di tutti i messaggi del protocollo (opzionale, entrambe le parti devono corrispondere) |
| `OVERWRITE_DELETE` | 0 | Sovrascrive i file temporanei con dati casuali prima della cancellazione (disattivato per impostazione predefinita) |
| `PTT_CHIME` | off | Preset del suono di notifica PTT (off, tone, double, chirp, ding, click, custom) |
| `SINGLE_HOP` | 0 | Modalità Tor a singolo hop per una latenza inferiore (disabilita l'anonimato del server) |
| `SAMPLE_RATE` | 8000 | Frequenza di campionamento audio in Hz |
| `CHUNK_DURATION` | 1 | Durata dei blocchi di test audio in secondi |

---

## Risoluzione dei problemi

**Tor non riesce ad avviarsi:**
Controlla il log di Tor in `.terminalphone/tor_data/tor.log`. Le cause comuni includono sfasamento dell'orologio, restrizioni di rete che bloccano Tor o un'altra istanza di Tor che utilizza la stessa porta SOCKS.

**Nessun audio su Termux:**
Verifica che l'app Termux:API sia installata da F-Droid (non solo il pacchetto `termux-api`). Concedi i permessi del microfono all'app Termux:API nelle impostazioni di Android. Esegui il test di loopback audio (opzione 5) per verificare.

**L'installazione di ffmpeg fallisce su Termux:**
Esegui `pkg upgrade` prima di installare le dipendenze. L'installer lo fa automaticamente, ma se hai installato i pacchetti manualmente, librerie condivise obsolete possono causare errori di linking.

**Il test audio funziona ma le chiamate sono silenziose:**
Verifica che entrambe le parti utilizzino lo stesso segreto condiviso. Segreti non corrispondenti comporteranno un fallimento della decrittazione senza alcun messaggio di errore -- la chiamata si connette ma non si sente alcun audio.

**Il bridge Snowflake è lento a connettersi:**
Snowflake instrada il traffico attraverso proxy WebRTC, il che aggiunge tempo extra di avvio. È normale che Tor impieghi 30--60 secondi (o più) per raggiungere il 100% quando Snowflake è abilitato. Lo script mostrerà un avviso di pazienza durante l'avvio.

**Il primo avvio di Tor è lento:**
Al primo avvio, Tor deve scaricare l'intero consenso di rete da zero, il che può richiedere un minuto o due. Lo script rileva questo e mostra un avviso. Il timeout di avvio viene automaticamente esteso da 120 a 300 secondi al primo avvio. Gli avvii successivi utilizzano i dati del consenso in cache e sono molto più veloci.

**Riagganciare non torna al menu:**
Se lo script si blocca dopo aver premuto Q, premi Ctrl+C per forzare la pulizia e tornare alla shell.

**`Cannot install under Rosetta 2 in ARM default prefix` su macOS:**
Questo accade su Apple Silicon quando il terminale è in esecuzione sotto Rosetta 2 (un processo `x86_64`) ma Homebrew si trova nel prefisso ARM nativo (`/opt/homebrew`). L'installer delle dipendenze (opzione **7**) ora rileva questo e riesegue automaticamente `brew` sotto `arch -arm64`. Se stai installando i pacchetti manualmente, anteponi tu stesso: `arch -arm64 brew install <pkg>`. In alternativa, avvia lo script nativamente con `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)


---

## Licenza

MIT

Categorie