
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.
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
- Instalación
- Inicio Rápido
- Uso
- Cómo Funciona
- Modelo de Seguridad
- Configuración
- Solución de Problemas
- Licencia
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
Tpara escribir un mensaje. - Identificador de Llamada -- Ambas partes intercambian automáticamente las direcciones
.onional 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
Sdurante 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
.onionsirve 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
.onioncomo un código QR escaneable en la terminal. Siqrencodeno 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áticamentehttp://; este prefijo se elimina automáticamente al marcar. - Archivos Temporales Opacos -- Todos los archivos temporales usan extensiones genéricas
.tmpe 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
ExcludeNodesconStrictNodesen 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/urandomantes de eliminarlo. Se lee el tamaño del archivo, se escriben esa cantidad de bytes de datos aleatorios sobre el archivo conddusandoconv=notrunc, la escritura se vacía al dispositivo de almacenamiento consync, y luego el archivo se elimina conrm. 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, elrmestá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:1y 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:
| Paquete | Propósito |
|---|---|
tor | Enrutamiento onion y servicio oculto |
opus-tools | Compresión de voz (códec Opus) |
sox | Grabación y reproducción de audio (rec, play) |
socat | Retransmisión TCP bidireccional a través del proxy SOCKS de Tor |
openssl | Cifrado 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:
| Paquete | Propósito |
|---|---|
termux-api | Puente CLI al micrófono y reproductor multimedia de Android |
ffmpeg | Convierte las grabaciones M4A de Android a PCM sin procesar para la codificación Opus |
Inicio rápido```
- Run: bash terminalphone.sh
- Install deps: Select option 7
- Start Tor: Select option 8 (wait for 100% bootstrap)
- Set shared secret: Select option 4 (both parties must use the same secret)
- 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):
| Tecla | Acción |
|---|---|
| M | Silenciar / Activar micrófono. |
| T | Enviar un mensaje de texto cifrado durante la llamada. |
| Q | Colgar y volver al menú. |
Modo pulsar para hablar (Linux / macOS):
| Tecla | Acción |
|---|---|
| Mantener SPACE | Grabar mensaje de voz. Se envía automáticamente al soltar. |
| T | Enviar un mensaje de texto cifrado. |
| S | Abrir ajustes durante la llamada (cambiar cifrado, ajustar calidad). |
| Q | Colgar 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.
| Tecla | Acción |
|---|---|
| Tocar SPACE | Iniciar grabación. Tocar de nuevo para detener y enviar. |
| T | Enviar un mensaje de texto cifrado. |
| S | Abrir ajustes durante la llamada (cambiar cifrado, ajustar calidad). |
| Q | Colgar y volver al menú. |
| Vol Down ×2 | Alternar 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:
| Mensaje | Descripció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_START | El remitente ha comenzado a grabar |
PTT_STOP | El remitente ha terminado; el audio sigue o ha sido enviado |
AUDIO:<base64> | Mensaje de audio cifrado completo |
MSG:<base64> | Mensaje de texto cifrado |
HANGUP | El remitente se está desconectando |
PING | Señal de keepalive |
RELAY:1 | Saludo 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.
| Interlocutores | Salida por mensaje | Experiencia esperada |
|---|---|---|
| 2--3 | 20--40KB | Confiable en la mayoría de las conexiones |
| 3--5 | 40--80KB | Buena en circuitos estables, posibles retrasos en datos móviles |
| 5--10 | 80--180KB | Al 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