Volver a actualizaciones
ActualizadaSep 3, 2026

terminalphone — Actualizado!

Comunicación cifrada de voz push-to-talk y texto a través de servicios ocultos de Tor con cifrado de extremo a extremo, cifrados configurables, modo de retransmisión para llamadas grupales y destrucción de datos anti-forense.

Compartir

TerminalPhone

Comunicación de voz cifrada push-to-talk a través de servicios ocultos de Tor.

TerminalPhone es un único script Bash autocontenido que proporciona comunicación de voz y texto anónima y cifrada de extremo a extremo entre dos o más partes a través de la red Tor. Funciona como un walkie-talkie: grabas un mensaje de voz y este se comprime, cifra y transmite a la otra parte como una sola unidad. También puedes enviar mensajes de texto cifrados durante una llamada. Sin infraestructura de servidor, sin cuentas, sin números de teléfono. Tu dirección .onion del servicio oculto de Tor es tu identidad.


Tabla de Contenidos


Características

  • Modo Walkie-Talkie Push-to-Talk -- Graba un mensaje de voz completo y lo transmite al soltar.
  • Chat Cifrado Durante la Llamada -- Envía y recibe mensajes de texto cifrados durante una llamada. Pulsa T para escribir un mensaje.
  • Identificador de Llamada -- Ambas partes intercambian automáticamente las direcciones .onion al conectarse. La dirección remota se muestra en la cabecera de la llamada.
  • Detección Automática de Colgado -- Cuando una parte cuelga, la otra es notificada inmediatamente y la llamada finaliza automáticamente.
  • Cifrado Configurable -- Elige entre 21 cifrados seleccionados clasificados por fortaleza (256 bits → 128 bits). Incluye las familias AES, ChaCha20, Camellia y ARIA. Los cifrados débiles (DES, RC4, modos ECB) están excluidos.
  • Negociación de Cifrado en Vivo -- Ambas partes intercambian información del cifrado al conectarse. La cabecera de la llamada muestra tanto el cifrado local como el remoto con indicadores verdes (coinciden) o rojos (no coinciden), actualizados en tiempo real.
  • Ajustes Durante la Llamada -- Pulsa S durante una llamada para acceder a los ajustes. Cambia tu cifrado sobre la marcha; la pantalla de la parte remota se actualiza automáticamente.
  • Información del Puente Snowflake -- Cuando se usa Snowflake para eludir la censura, la página de llamada muestra el nombre del descriptor del puente, la huella digital y el estado de conexión del transporte extraídos de los registros de Tor.
  • Auto-Escucha -- Cuando está habilitada, un escucha en segundo plano se inicia automáticamente cuando Tor arranca. Las llamadas entrantes se detectan y aceptan desde el menú principal sin necesidad de seleccionar manualmente "Escuchar llamadas". Después de que finaliza una llamada, el escucha se reinicia.
  • Tecla PTT Configurable -- Cambia la tecla push-to-talk desde la barra espaciadora predeterminada a cualquier tecla mediante el menú de Ajustes.
  • Estadísticas de Mensajes -- La pantalla de llamada muestra el tamaño de la carga útil cifrada de los mensajes enviados y recibidos, actualizado en el lugar.
  • Estado PTT Remoto -- La pantalla de llamada muestra un indicador estático del estado de la parte remota: "Inactivo" (verde) o "● Grabando" (rojo). Se restablece inmediatamente cuando llegan datos de audio, antes de que comience la reproducción.
  • Timbre PTT -- Sonido de notificación opcional cuando la parte remota comienza a grabar. Cinco presets integrados (tono, doble, chirp, ding, clic) generados con sox, además de la capacidad de grabar un timbre personalizado de 2 segundos. Configurable mediante Ajustes.
  • Animación de Conexión -- Al llamar a una dirección remota, se reproduce una animación cíclica hasta que se carga la interfaz de llamada.
  • Cambiador de Voz -- Aplica efectos de voz al audio saliente. Incluye 6 presets (grave, agudo, robot, eco, susurro) y un modo personalizado totalmente configurable con cambio de tono, overdrive, flanger, eco, filtro highpass y tremolo. Los efectos se procesan usando sox antes de la codificación Opus.
  • PTT por Volumen (Termux) -- Modo experimental que te permite tocar dos veces el botón de Bajar Volumen para alternar la grabación, incluso cuando Termux está en segundo plano. Requiere jq (instalado bajo demanda). El volumen se restaura automáticamente después de cada activación.
  • Servicio Oculto de Tor -- Cada instancia ejecuta su propio servicio oculto de Tor. Tu dirección .onion sirve como un endpoint permanente y enrutable. No se requiere reenvío de puertos ni IP pública.
  • Cifrado de Extremo a Extremo -- Todo el audio y el texto se cifran usando un cifrado configurable (predeterminado: AES-256-CBC) con derivación de clave PBKDF2 a partir de un secreto precompartido antes de entrar en la red Tor.
  • Secreto Protegido por Frase de Contraseña -- El secreto compartido puede cifrarse en reposo usando una frase de contraseña elegida por el usuario (AES-256-CBC, 100.000 iteraciones PBKDF2). Los secretos en texto plano existentes se detectan automáticamente con una oferta para migrarlos.
  • Bajo Ancho de Banda -- Códec Opus a 16kbps, 8kHz mono. Un mensaje de voz típico de 10 segundos ocupa menos de 20KB, muy dentro de la capacidad de Tor.
  • Compartir Código QR -- La opción 3 puede mostrar tu dirección .onion como un código QR escaneable en la terminal. Si qrencode no está instalado, se te solicita instalarlo. El código QR se renderiza en el búfer de pantalla alternativo y se destruye al descartarlo. Una nota advierte que algunos escáneres de QR anteponen automáticamente http://; este prefijo se elimina automáticamente al marcar.
  • Archivos Temporales Opacos -- Todos los archivos temporales usan extensiones genéricas .tmp e identificadores hexadecimales aleatorios. No se filtra ningún tipo de archivo ni metadato de temporización al sistema de archivos.
  • Visualización de Saltos del Circuito -- Visualización opcional de tu ruta de circuito de Tor durante las llamadas, mostrando nombres de repetidores y nombres completos de países. Se actualiza automáticamente cada 60 segundos. Configurable mediante Ajustes → Ajustes de Tor.
  • Excluir Países -- Excluye países específicos de tus circuitos de Tor. Presets para las alianzas Five Eyes, Nine Eyes y Fourteen Eyes, o introduce códigos de país personalizados. Usa ExcludeNodes con StrictNodes en el torrc.
  • Autenticación de Protocolo HMAC -- Firma opcional HMAC-SHA256 de todos los mensajes del protocolo (voz, texto, señales de control) usando el secreto compartido. Se incluye un nonce aleatorio por mensaje, y los nonces vistos se rastrean para rechazar repeticiones. Los mensajes no firmados, falsificados o repetidos se descartan silenciosamente. El estado HMAC se congela al inicio de la llamada para evitar desincronización a mitad de llamada. Configurable mediante Ajustes → Seguridad.
  • Sobrescribir Antes de Eliminar -- Alternancia opcional en Ajustes → Seguridad que sobrescribe cada archivo temporal con datos aleatorios de /dev/urandom antes de eliminarlo. Se lee el tamaño del archivo, se escriben esa cantidad de bytes de datos aleatorios sobre el archivo con dd usando conv=notrunc, la escritura se vacía al dispositivo de almacenamiento con sync, y luego el archivo se elimina con rm. Cubre todos los archivos sensibles en tiempo de ejecución: grabaciones PCM sin procesar, audio codificado en Opus, cargas útiles cifradas, audio entrante y chat descifrados, intermediarios de efectos de voz, material de clave de cifrado y HMAC, registros de nonces, indicadores de sesión, archivos PID, tuberías con nombre, claves del servicio oculto de Tor en rotación y datos de sesión de repetidor. Para directorios, todos los archivos internos se sobrescriben recursivamente. Una opción de prueba integrada crea un archivo de muestra, muestra el contenido original en texto plano y hexadecimal, lo sobrescribe y muestra el hexadecimal sobrescrito para que el usuario pueda confirmar visualmente que los datos están destruidos. Desactivado por defecto — para la mayoría de los usuarios, el rm estándar es perfectamente suficiente. Los archivos temporales de TerminalPhone son pequeños y de corta vida, y el espacio en disco normalmente se reutiliza rápidamente por la actividad normal del sistema. Esta característica es para usuarios que desean una capa adicional de protección contra la recuperación forense. Nota: en SSD y almacenamiento flash, el wear leveling significa que la sobrescritura puede recaer en celdas NAND físicas diferentes — el cifrado de disco completo es la única defensa confiable en medios flash. En HDD tradicionales, la sobrescritura reemplaza los datos en la misma ubicación física y es efectiva contra toda recuperación basada en software.
  • Modo Repetidor (Puente de Grupo) -- Ejecuta un repetidor de conocimiento cero que conecta N llamantes anónimos. El repetidor reenvía audio y chat cifrados sin descifrar, no requiere secreto compartido ni hardware de audio. Los clientes detectan automáticamente el modo repetidor mediante el handshake RELAY:1 y muestran el recuento de llamantes del grupo en vivo. La salida de un llamante no desconecta a los demás. El panel del operador muestra el recuento de llamantes, el tiempo de actividad y el rendimiento de datos.
  • Modo Tor de un Solo Salto -- Modo opcional de latencia reducida para operadores de repetidores. Usa 1 salto de Tor en lugar de 3 para el servicio oculto, sacrificando el anonimato del servidor por una menor latencia. Ideal para operadores de repetidores que no necesitan ocultar su propia IP.
  • Configuración de Puertos -- Configura el puerto de escucha y el puerto SOCKS juntos mediante Ajustes → Ajustes de Tor. Permite ejecutar múltiples instancias en el mismo dispositivo con procesos de Tor separados. Principalmente útil para operadores de repetidores que también quieren unirse a su propia llamada grupal — ejecuta el repetidor en una instancia, cambia el puerto SOCKS en una segunda instancia y marca como llamante.
  • Multiplataforma -- Se ejecuta en distribuciones estándar de Linux, macOS y Android mediante Termux. Los backends de audio específicos de cada plataforma se gestionan de forma transparente.
  • No Requiere Root -- La entrada PTT usa el modo raw de la terminal. No se necesitan permisos especiales ni módulos del kernel.
  • Script Único -- Un solo archivo Bash. Sin sistema de compilación, sin runtime, sin framework.

Instalación

Linux

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

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

Seleccione la opción **7** del menú para instalar todas las dependencias automáticamente. Se instalarán los siguientes paquetes:

| Paquete | Propósito |
|---|---|
| `tor` | Enrutamiento onion y servicio oculto |
| `opus-tools` | Compresión de voz (códec Opus) |
| `sox` | Utilidades de procesamiento de audio |
| `socat` | Retransmisión TCP bidireccional a través del proxy SOCKS de Tor |
| `openssl` | Cifrado y descifrado AES-256-CBC |
| `alsa-utils` | Grabación y reproducción de audio (`arecord`, `aplay`) |

### macOS``` bash

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

Seleccione la opción 7 para instalar todas las dependencias automáticamente. Si Homebrew no está instalado, el script lo instalará primero y luego instalará los siguientes paquetes:

PaquetePropósito
torEnrutamiento onion y servicio oculto
opus-toolsCompresión de voz (códec Opus)
soxGrabación y reproducción de audio (rec, play)
socatRetransmisión TCP bidireccional a través del proxy SOCKS de Tor
opensslCifrado y descifrado AES-256-CBC

Nota: macOS utiliza sox tanto para la grabación (rec) como para la reproducción (play) en lugar de ALSA. No se necesitan paquetes de audio adicionales.

Apple Silicon (M1/M2/M3+): Si su terminal se ejecuta bajo Rosetta 2 (un proceso x86_64) mientras Homebrew está instalado en el prefijo ARM nativo (/opt/homebrew), brew install normalmente falla con Cannot install under Rosetta 2 in ARM default prefix. El instalador de dependencias ahora detecta esto y vuelve a ejecutar Homebrew automáticamente bajo arch -arm64, por lo que la opción 7 funciona independientemente de cómo se haya lanzado el script.

Termux (Android)

TerminalPhone es compatible con dispositivos Android a través de Termux. Debido a la arquitectura de audio en sandbox de Android, se requieren dos componentes adicionales.

Paso 1: Instalar Termux

Instale Termux desde F-Droid. No utilice la versión de Play Store, ya que está desactualizada y ya no recibe actualizaciones.

Paso 2: Instalar la aplicación Termux:API

Instale Termux:API desde F-Droid. Esta es una aplicación de Android independiente (no un paquete de Termux) que proporciona un puente entre Termux y las API del sistema Android. TerminalPhone la requiere para acceder al micrófono del dispositivo y a la reproducción multimedia.

Sin la aplicación Termux:API instalada en el dispositivo, los comandos termux-microphone-record y termux-media-player no funcionarán, y la grabación y reproducción de audio fallarán silenciosamente.

Después de instalar la aplicación Termux:API, concédale permisos de micrófono cuando se le solicite.

Paso 3: Instalar el paquete Termux:API dentro de Termux```bash pkg install termux-api

Esto instala las utilidades de línea de comandos que se comunican con la aplicación Termux:API.

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

Selecciona la opción 7 para instalar todas las dependencias restantes. El instalador ejecutará primero pkg upgrade para resolver cualquier problema de enlazado de paquetes, y luego instalará tor, opus-tools, sox, socat, openssl-tool, ffmpeg y termux-api.

Dependencias específicas de Termux:

PaquetePropósito
termux-apiPuente CLI al micrófono y reproductor multimedia de Android
ffmpegConvierte las grabaciones M4A de Android a PCM sin procesar para la codificación Opus

Inicio rápido```

  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)

Ambas partes deben tener Tor en ejecución y el mismo secreto compartido configurado antes de iniciar una llamada.

---

## Uso

### Opciones del menú```
 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

Controles durante la llamada

Modo dúplex completo (WebSockets):

TeclaAcción
MSilenciar / Activar micrófono.
TEnviar un mensaje de texto cifrado durante la llamada.
QColgar y volver al menú.

Modo pulsar para hablar (Linux / macOS):

TeclaAcción
Mantener SPACEGrabar mensaje de voz. Se envía automáticamente al soltar.
TEnviar un mensaje de texto cifrado.
SAbrir ajustes durante la llamada (cambiar cifrado, ajustar calidad).
QColgar y volver al menú.

Modo pulsar para hablar (Termux):

El teclado virtual de Android envía eventos de tecla al soltar, no al pulsar. TerminalPhone se adapta usando el modo de alternancia en Termux.

TeclaAcción
Tocar SPACEIniciar grabación. Tocar de nuevo para detener y enviar.
TEnviar un mensaje de texto cifrado.
SAbrir ajustes durante la llamada (cambiar cifrado, ajustar calidad).
QColgar y volver al menú.
Vol Down ×2Alternar grabación mediante el botón de volumen (requiere Volume PTT habilitado en los ajustes).

Modo 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)

---

## Cómo funciona

TerminalPhone utiliza un modelo de grabar y luego enviar. Cuando activas PTT, el micrófono graba continuamente hasta que sueltas. La grabación completa se procesa a continuación mediante el siguiente flujo:```
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

El protocolo de comunicación es texto basado en líneas sobre una conexión TCP:

MensajeDescripción
ID:<onion>Identificador de llamada -- dirección .onion del remitente
CIPHER:<name>Cifrado de cifrado del remitente. Se intercambia al conectar y al cambiar.
PTT_STARTEl remitente ha comenzado a grabar
PTT_STOPEl remitente ha terminado; el audio sigue o ha sido enviado
AUDIO:<base64>Mensaje de audio cifrado completo
MSG:<base64>Mensaje de texto cifrado
HANGUPEl remitente se está desconectando
PINGSeñal de keepalive
RELAY:1Saludo del relay -- enviado por el relay al conectar, activa el modo grupal
GROUP:<n>Actualización del tamaño del grupo -- difundida por el relay cuando los interlocutores se unen o se van

En Termux, un paso de conversión adicional maneja el formato de grabación nativo M4A de Android, usando ffmpeg para convertir a PCM sin procesar antes de la codificación Opus.


Modelo de seguridad

Cifrado: Todo el audio se cifra con un cifrado configurable por el usuario (predeterminado: AES-256-CBC) antes de la transmisión. Hay 21 cifrados seleccionados disponibles, clasificados desde el más fuerte (256 bits) hasta el adecuado (128 bits). La clave se deriva de un secreto precompartido usando PBKDF2 con 10.000 iteraciones. El cifrado se aplica en la capa de aplicación, independientemente del cifrado de transporte de Tor. Los secretos se pasan a OpenSSL a través de descriptores de archivo (-pass fd:3), no como argumentos de línea de comandos, por lo que nunca se exponen en la tabla de procesos.

Negociación de cifrado: Ambas partes intercambian nombres de cifrado al conectar y cada vez que se cambia un cifrado durante la llamada. Los nombres de cifrado no son secretos (principio de Kerckhoffs). Si los cifrados local y remoto no coinciden, ambas partes ven indicadores rojos en el encabezado de la llamada.

Transporte: Todos los datos se enrutan a través de circuitos de servicios ocultos de Tor. La dirección IP de ninguna de las partes queda expuesta. No hay tráfico en la red abierta. La conexión no puede ser atribuida a ninguna de las partes por un observador de red.

Resistencia al análisis de tráfico: El modelo de grabar y luego enviar produce patrones de transmisión irregulares (mensajes de longitud variable a intervalos irregulares), que son más difíciles de identificar que la transmisión continua.

Autenticación: El secreto compartido sirve como autenticación implícita. Si ambas partes no tienen el mismo secreto, el descifrado falla y no se reproduce ningún audio. Al conectar, ambas partes intercambian direcciones .onion para la identificación del interlocutor. El secreto puede cifrarse opcionalmente en reposo con una frase de contraseña; al iniciar, el script solicita la frase de contraseña para desbloquearlo.

Firma del protocolo HMAC (opcional): Cuando está habilitada, cada mensaje del protocolo de comunicación -- incluidos las señales de control como HANGUP, PTT_START y PING -- se firma con HMAC-SHA256 derivado del secreto compartido. Se incluye un nonce aleatorio por mensaje para que comandos idénticos produzcan firmas únicas. Los nonces vistos se rastrean por llamada y los duplicados se rechazan, lo que previene ataques de repetición. La configuración de HMAC se congela al inicio de la llamada mediante un archivo de tiempo de ejecución para que tanto la ruta de envío como la de recepción siempre coincidan, incluso si la configuración se alterna a mitad de la llamada (los cambios surten efecto en la siguiente llamada). En el extremo receptor, cualquier mensaje con una firma inválida, ausente o repetida se descarta silenciosamente. Esto evita que un atacante que comprometa el circuito de Tor (pero que no tenga el secreto compartido) inyecte o repita comandos. Ambas partes deben habilitar HMAC para que las llamadas funcionen. No es compatible con versiones anteriores a la 1.1.3.

Limitaciones:

  • El secreto compartido debe intercambiarse fuera de banda a través de un canal seguro (en persona, mensajería cifrada, etc.).
  • No hay secreto hacia adelante. Si el secreto compartido se ve comprometido, todas las comunicaciones pasadas y futuras que usen ese secreto pueden descifrarse.
  • El protocolo no protege contra un endpoint comprometido. Si cualquiera de los dispositivos se ve comprometido, el atacante tiene acceso al audio en texto plano.

Seguridad del modo relay: El relay es arquitectónicamente de conocimiento cero. Nunca posee el secreto compartido y no puede descifrar ningún contenido. Los datos de audio fluyen a través de búferes de tubería del kernel (FIFOs) que existen solo en memoria -- no se escribe nada en disco. Cuando el relay se detiene, todos los archivos temporales se eliminan. El operador del relay no puede determinar qué se dijo, quiénes son los interlocutores ni leer ningún mensaje. El relay filtra todas las señales de control (HANGUP, ID:, CIPHER:, PTT_START, PTT_STOP) y solo reenvía AUDIO:, MSG: y PING. Un adversario pasivo global podría realizar un análisis de correlación de tráfico para asociar a los interlocutores con el relay, pero el contenido de los mensajes permanece opaco.

Capacidad del relay: El principal cuello de botella es el ancho de banda de Tor. El rendimiento del servicio oculto de Tor es altamente variable y depende de la calidad del circuito, la congestión del relay y la distancia geográfica. Un mensaje de voz típico de 10 segundos es de ~20KB cifrados, y cada transmisión se distribuye a N-1 oyentes.

InterlocutoresSalida por mensajeExperiencia esperada
2--320--40KBConfiable en la mayoría de las conexiones
3--540--80KBBuena en circuitos estables, posibles retrasos en datos móviles
5--1080--180KBAl límite, retrasos notables entre transmisiones
10+180KB+Poco confiable, colas significativas y posible pérdida de mensajes

La capacidad realista es de 3--5 interlocutores para un relay que se ejecuta en un teléfono (Termux), o 5--10 interlocutores en una máquina Linux dedicada con una conexión estable. Los relays que se ejecutan en dispositivos móviles enfrentan restricciones adicionales: los datos móviles añaden latencia sobre Tor, Android puede eliminar procesos de Termux en segundo plano para recuperar memoria, y el consumo de batería aumenta con cada interlocutor conectado. El ancho de banda del circuito de Tor puede variar de 50KB/s a 500KB/s según la calidad de la ruta, y los circuitos pueden degradarse o rotar a mitad de sesión. El modo de un solo salto mejora el rendimiento pero no elimina la congestión de los relays de Tor. Estas estimaciones asumen el modelo PTT donde solo una persona transmite a la vez -- las transmisiones simultáneas degradarían aún más el rendimiento. Los interlocutores en una llamada grupal deberían considerar reducir su tasa de bits de Opus (Configuración → Codificación Opus) para reducir el tamaño de los mensajes y aligerar la carga en el relay.


Configuración

Toda la configuración se almacena en .terminalphone/ en relación con la ubicación del 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

Parámetros de audio predeterminados (definidos al inicio del script):

| Parámetro | Predeterminado | Descripción |
|---|---|---|
| `LISTEN_PORT` | 7777 | Puerto TCP para conexiones entrantes |
| `TOR_SOCKS_PORT` | 9050 | Puerto del proxy SOCKS de Tor |
| `OPUS_BITRATE` | 16 | Tasa de bits de codificación Opus en kbps |
| `CIPHER` | aes-256-cbc | Cifrado de cifrado (configurable mediante Settings) |
| `SNOWFLAKE_ENABLED` | 0 | Puente Snowflake para elusión de censura |
| `AUTO_LISTEN` | 0 | Escucha automática de llamadas cuando Tor se inicia |
| `PTT_KEY` | SPACE | Tecla push-to-talk (configurable mediante Settings) |
| `VOL_PTT` | 0 | PTT con doble pulsación de bajar volumen, solo Termux (experimental) |
| `EXCLUDE_NODES` | (vacío) | Lista de países de Tor ExcludeNodes (p. ej. `{US},{GB}`) |
| `HMAC_AUTH` | 0 | Firmar con HMAC todos los mensajes del protocolo (opcional, ambas partes deben coincidir) |
| `OVERWRITE_DELETE` | 0 | Sobrescribir archivos temporales con datos aleatorios antes de eliminarlos (desactivado por defecto) |
| `PTT_CHIME` | off | Preajuste del tono de notificación PTT (off, tone, double, chirp, ding, click, custom) |
| `SINGLE_HOP` | 0 | Modo Tor de salto único para menor latencia (desactiva el anonimato del servidor) |
| `SAMPLE_RATE` | 8000 | Tasa de muestreo de audio en Hz |
| `CHUNK_DURATION` | 1 | Duración de los fragmentos de prueba de audio en segundos |

---

## Solución de problemas

**Tor no logra iniciar:**
Consulta el registro de Tor en `.terminalphone/tor_data/tor.log`. Las causas comunes incluyen desfase del reloj, restricciones de red que bloquean Tor, u otra instancia de Tor usando el mismo puerto SOCKS.

**Sin audio en Termux:**
Verifica que la aplicación Termux:API esté instalada desde F-Droid (no solo el paquete `termux-api`). Concede permisos de micrófono a la aplicación Termux:API en los ajustes de Android. Ejecuta la prueba de bucle de audio (opción 5) para verificar.

**La instalación de ffmpeg falla en Termux:**
Ejecuta `pkg upgrade` antes de instalar las dependencias. El instalador hace esto automáticamente, pero si instalaste paquetes manualmente, las bibliotecas compartidas desactualizadas pueden causar errores de enlazado.

**La prueba de audio funciona pero las llamadas están en silencio:**
Confirma que ambas partes usan el mismo secreto compartido. Los secretos que no coinciden darán como resultado un fallo de descifrado sin mensaje de error -- la llamada se conecta pero no se oye audio.

**El puente Snowflake tarda en conectarse:**
Snowflake enruta el tráfico a través de proxies WebRTC, lo que añade tiempo extra de arranque. Es normal que Tor tarde 30--60 segundos (o más) en alcanzar el 100% cuando Snowflake está habilitado. El script mostrará un aviso de paciencia durante el arranque.

**El primer arranque de Tor es lento:**
En el primer inicio, Tor debe descargar el consenso completo de la red desde cero, lo que puede tardar uno o dos minutos. El script detecta esto y muestra un aviso. El tiempo de espera del arranque se extiende automáticamente de 120 a 300 segundos en la primera ejecución. Los inicios posteriores usan datos de consenso en caché y son mucho más rápidos.

**Colgar no vuelve al menú:**
Si el script se queda colgado tras pulsar Q, pulsa Ctrl+C para forzar la limpieza y volver al shell.

**`Cannot install under Rosetta 2 in ARM default prefix` en macOS:**
Esto ocurre en Apple Silicon cuando el terminal se ejecuta bajo Rosetta 2 (un proceso `x86_64`) pero Homebrew reside en el prefijo ARM nativo (`/opt/homebrew`). El instalador de dependencias (opción **7**) ahora detecta esto y vuelve a ejecutar `brew` automáticamente bajo `arch -arm64`. Si instalas paquetes manualmente, antepón el prefijo tú mismo: `arch -arm64 brew install <pkg>`. Alternativamente, inicia el script de forma nativa 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)


---

## Licencia

MIT

Categorías