Voltar às atualizações
UpdatedSep 3, 2026

terminalphone — Updated!

Comunicação de voz por push-to-talk e texto criptografada através de serviços ocultos Tor com criptografia de ponta a ponta, cifras configuráveis, modo de retransmissão para chamadas em grupo e destruição de dados antiforense.

Compartilhar

TerminalPhone

Comunicação de voz push-to-talk criptografada através de serviços ocultos Tor.

TerminalPhone é um único script Bash autocontido que fornece comunicação de voz e texto anônima e criptografada de ponta a ponta entre duas ou mais partes através da rede Tor. Funciona como um walkie-talkie: você grava uma mensagem de voz, e ela é comprimida, criptografada e transmitida à parte remota como uma única unidade. Você também pode enviar mensagens de texto criptografadas durante uma chamada. Sem infraestrutura de servidor, sem contas, sem números de telefone. Seu endereço .onion do serviço oculto Tor é sua identidade.


Índice


Recursos

  • Modo Walkie-Talkie Push-to-Talk -- Grave uma mensagem de voz completa e transmita-a ao soltar.
  • Chat Criptografado Durante a Chamada -- Envie e receba mensagens de texto criptografadas durante uma chamada. Pressione T para digitar uma mensagem.
  • Identificação de Chamada -- Ambas as partes trocam automaticamente endereços .onion ao conectar. O endereço remoto é exibido no cabeçalho da chamada.
  • Detecção Automática de Desligamento -- Quando uma parte desliga, a outra é notificada imediatamente e a chamada termina automaticamente.
  • Cifra Configurável -- Escolha entre 21 cifras selecionadas, classificadas por força (256 bits → 128 bits). Inclui as famílias AES, ChaCha20, Camellia e ARIA. Cifras fracas (DES, RC4, modos ECB) são excluídas.
  • Negociação de Cifra em Tempo Real -- Ambas as partes trocam informações de cifra ao conectar. O cabeçalho da chamada mostra as cifras local e remota com indicadores verde (correspondência) ou vermelho (incompatibilidade), atualizados em tempo real.
  • Configurações Durante a Chamada -- Pressione S durante uma chamada para acessar as configurações. Altere sua cifra em tempo real; a exibição da parte remota é atualizada automaticamente.
  • Informações da Bridge Snowflake -- Ao usar Snowflake para contornar censura, a página da chamada exibe o nome do descritor da bridge, a impressão digital e o status da conexão de transporte extraídos dos logs do Tor.
  • Auto-Escuta -- Quando habilitado, um ouvinte em segundo plano inicia automaticamente quando o Tor é inicializado. Chamadas recebidas são detectadas e aceitas a partir do menu principal sem precisar selecionar manualmente "Ouvir chamadas". Após uma chamada terminar, o ouvinte reinicia.
  • Tecla PTT Configurável -- Altere a tecla push-to-talk da barra de espaço padrão para qualquer tecla através do menu Configurações.
  • Estatísticas de Mensagens -- A tela de chamada exibe o tamanho do payload criptografado para mensagens enviadas e recebidas, atualizado no local.
  • Status PTT Remoto -- A tela de chamada mostra um indicador estático para o estado da parte remota: "Idle" (verde) ou "● Recording" (vermelho). Reinicia imediatamente quando dados de áudio chegam, antes do início da reprodução.
  • Chime PTT -- Som de notificação opcional quando a parte remota começa a gravar. Cinco presets integrados (tone, double, chirp, ding, click) gerados com sox, além da capacidade de gravar um chime personalizado de 2 segundos. Configurável via Configurações.
  • Animação de Conexão -- Ao chamar um endereço remoto, uma animação cíclica é reproduzida até que a interface de chamada carregue.
  • Modificador de Voz -- Aplique efeitos de voz ao áudio de saída. Inclui 6 presets (deep, high, robot, echo, whisper) e um modo personalizado totalmente configurável com pitch shift, overdrive, flanger, echo, filtro highpass e tremolo. Os efeitos são processados usando sox antes da codificação Opus.
  • PTT por Volume (Termux) -- Modo experimental que permite tocar duas vezes no botão Volume Down para alternar a gravação, mesmo quando o Termux está em segundo plano. Requer jq (instalado sob demanda). O volume é restaurado automaticamente após cada acionamento.
  • Serviço Oculto Tor -- Cada instância executa seu próprio serviço oculto Tor. Seu endereço .onion serve como um endpoint permanente e roteável. Sem necessidade de encaminhamento de portas ou IP público.
  • Criptografia de Ponta a Ponta -- Todo o áudio e texto é criptografado usando uma cifra configurável (padrão: AES-256-CBC) com derivação de chave PBKDF2 a partir de um segredo pré-compartilhado antes de entrar na rede Tor.
  • Segredo Protegido por Passphrase -- O segredo compartilhado pode ser criptografado em repouso usando uma passphrase escolhida pelo usuário (AES-256-CBC, 100.000 iterações PBKDF2). Segredos em texto simples existentes são detectados automaticamente com uma oferta de migração.
  • Baixa Largura de Banda -- Codec Opus a 16kbps, 8kHz mono. Uma mensagem de voz típica de 10 segundos tem menos de 20KB, bem dentro da capacidade do Tor.
  • Compartilhamento por QR Code -- A opção 3 pode exibir seu endereço .onion como um QR code escaneável no terminal. Se qrencode não estiver instalado, você será solicitado a instalá-lo. O QR code é renderizado no buffer de tela alternativo e é destruído quando descartado. Uma nota avisa que alguns scanners de QR code adicionam automaticamente http://; este prefixo é removido automaticamente ao discar.
  • Arquivos Temporários Opacos -- Todos os arquivos temporários usam extensões genéricas .tmp e identificadores hexadecimais aleatórios. Nenhum tipo de arquivo ou metadado de temporização é vazado para o sistema de arquivos.
  • Exibição de Saltos do Circuito -- Exibição opcional do caminho do seu circuito Tor durante as chamadas, mostrando nomes de relays e nomes completos de países. Atualiza automaticamente a cada 60 segundos. Configurável via Configurações → Configurações do Tor.
  • Excluir Países -- Exclua países específicos dos seus circuitos Tor. Presets para as alianças Five Eyes, Nine Eyes e Fourteen Eyes, ou insira códigos de país personalizados. Usa ExcludeNodes com StrictNodes no torrc.
  • Autenticação de Protocolo HMAC -- Assinatura HMAC-SHA256 opcional de todas as mensagens de protocolo (voz, texto, sinais de controle) usando o segredo compartilhado. Um nonce aleatório é incluído por mensagem, e nonces vistos são rastreados para rejeitar repetições. Mensagens não assinadas, forjadas ou repetidas são descartadas silenciosamente. O estado HMAC é congelado no início da chamada para evitar dessincronização durante a chamada. Configurável via Configurações → Segurança.
  • Sobrescrever Antes de Excluir -- Alternância opcional em Configurações → Segurança que sobrescreve cada arquivo temporário com dados aleatórios de /dev/urandom antes da exclusão. O tamanho do arquivo é lido, essa quantidade de bytes de dados aleatórios é escrita sobre o arquivo com dd usando conv=notrunc, a escrita é sincronizada com o dispositivo de armazenamento com sync, e então o arquivo é removido com rm. Cobre todos os arquivos sensíveis em tempo de execução: gravações PCM brutas, áudio codificado em Opus, payloads criptografados, áudio e chat de entrada descriptografados, intermediários de efeitos de voz, material de chave de cifra e HMAC, logs de nonce, flags de sessão, arquivos PID, named pipes, chaves de serviço oculto Tor em rotação e dados de sessão de relay. Para diretórios, todos os arquivos dentro são sobrescritos recursivamente. Uma opção de teste integrada cria um arquivo de amostra, mostra o conteúdo original em texto simples e hexadecimal, sobrescreve-o e exibe o hexadecimal sobrescrito para que o usuário possa confirmar visualmente que os dados foram destruídos. Desativado por padrão — para a maioria dos usuários, o rm padrão é perfeitamente adequado. Os arquivos temporários do TerminalPhone são pequenos e de curta duração, e o espaço em disco é normalmente reutilizado rapidamente pela atividade normal do sistema. Este recurso é para usuários que desejam uma camada extra de proteção contra recuperação forense. Nota: em SSDs e armazenamento flash, o wear leveling significa que a sobrescrita pode atingir células NAND físicas diferentes — a criptografia de disco completo é a única defesa confiável em mídia flash. Em HDDs tradicionais, a sobrescrita substitui os dados no mesmo local físico e é eficaz contra toda recuperação baseada em software.
  • Modo Relay (Bridge de Grupo) -- Execute um relay zero-knowledge que faz a ponte entre N chamadores anônimos. O relay encaminha áudio e chat criptografados sem descriptografar, não requer segredo compartilhado nem hardware de áudio. Os clientes detectam automaticamente o modo relay via handshake RELAY:1 e exibem a contagem de chamadores do grupo em tempo real. A saída de um chamador não desconecta os outros. O painel do operador mostra a contagem de chamadores, tempo de atividade e throughput de dados.
  • Modo Tor de Salto Único -- Modo opcional de latência reduzida para operadores de relay. Usa 1 salto Tor em vez de 3 para o serviço oculto, sacrificando o anonimato do servidor por menor latência. Ideal para operadores de relay que não precisam ocultar seu próprio IP.
  • Configuração de Portas -- Configure a porta de escuta e a porta SOCKS juntas via Configurações → Configurações do Tor. Permite executar múltiplas instâncias no mesmo dispositivo com processos Tor separados. Principalmente útil para operadores de relay que também desejam participar da própria chamada de grupo -- execute o relay em uma instância, altere a porta SOCKS em uma segunda instância e disque como chamador.
  • Multiplataforma -- Funciona em distribuições Linux padrão, macOS e Android via Termux. Backends de áudio específicos da plataforma são tratados de forma transparente.
  • Sem Necessidade de Root -- A entrada PTT usa o modo raw do terminal. Nenhuma permissão especial ou módulo de kernel é necessário.
  • Script Único -- Um arquivo Bash. Sem sistema de build, sem runtime, sem framework.

Instalação

Linux

Distribuições suportadas: Debian/Ubuntu (apt), Fedora/RHEL (dnf), Arch (pacman).``` bash

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

Selecione a opção **7** no menu para instalar todas as dependências automaticamente. Os seguintes pacotes serão instalados:

| Pacote | Finalidade |
|---|---|
| `tor` | Roteamento onion e serviço oculto |
| `opus-tools` | Compressão de voz (codec Opus) |
| `sox` | Utilitários de processamento de áudio |
| `socat` | Relay TCP bidirecional através do proxy SOCKS do Tor |
| `openssl` | Criptografia e descriptografia AES-256-CBC |
| `alsa-utils` | Gravação e reprodução de áudio (`arecord`, `aplay`) |

### macOS``` bash

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

Selecione a opção 7 para instalar todas as dependências automaticamente. Se o Homebrew não estiver instalado, o script irá instalá-lo primeiro e, em seguida, instalar os seguintes pacotes:

PacoteFinalidade
torRoteamento onion e serviço oculto
opus-toolsCompressão de voz (codec Opus)
soxGravação e reprodução de áudio (rec, play)
socatRelay TCP bidirecional através do proxy SOCKS do Tor
opensslCriptografia e descriptografia AES-256-CBC

Nota: O macOS usa sox tanto para gravação (rec) quanto para reprodução (play) em vez do ALSA. Nenhum pacote de áudio adicional é necessário.

Apple Silicon (M1/M2/M3+): Se o seu terminal estiver sendo executado sob o Rosetta 2 (um processo x86_64) enquanto o Homebrew está instalado no prefixo ARM nativo (/opt/homebrew), o brew install normalmente falha com Cannot install under Rosetta 2 in ARM default prefix. O instalador de dependências agora detecta isso e reexecuta automaticamente o Homebrew sob arch -arm64, então a opção 7 funciona independentemente de como o script foi iniciado.

Termux (Android)

O TerminalPhone suporta dispositivos Android através do Termux. Devido à arquitetura de áudio em sandbox do Android, dois componentes adicionais são necessários.

Passo 1: Instalar o Termux

Instale o Termux a partir do F-Droid. Não use a versão da Play Store, pois está desatualizada e não recebe mais atualizações.

Passo 2: Instalar o aplicativo Termux:API

Instale o Termux:API a partir do F-Droid. Este é um aplicativo Android separado (não um pacote do Termux) que fornece uma ponte entre o Termux e as APIs do sistema Android. O TerminalPhone requer ele para acessar o microfone do dispositivo e a reprodução de mídia.

Sem o aplicativo Termux:API instalado no dispositivo, os comandos termux-microphone-record e termux-media-player não funcionarão, e a gravação e reprodução de áudio falharão silenciosamente.

Após instalar o aplicativo Termux:API, conceda a ele permissões de microfone quando solicitado.

Passo 3: Instalar o pacote Termux:API dentro do Termux```bash pkg install termux-api

Isso instala os utilitários de linha de comando que se comunicam com o aplicativo Termux:API.

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

Selecione a opção 7 para instalar todas as dependências restantes. O instalador executará pkg upgrade primeiro para resolver quaisquer problemas de vinculação de pacotes, depois instalará tor, opus-tools, sox, socat, openssl-tool, ffmpeg e termux-api.

Dependências específicas do Termux:

PacoteFinalidade
termux-apiPonte CLI para o microfone e reprodutor de mídia do Android
ffmpegConverte as gravações M4A do Android para PCM bruto para codificação Opus

Início 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 as partes devem ter o Tor em execução e o mesmo segredo compartilhado configurado antes de iniciar uma chamada.

---

## Uso

### Opções do 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

Controles Durante a Chamada

Modo Full Duplex (WebSockets):

TeclaAção
MSilenciar / Reativar microfone.
TEnviar uma mensagem de texto criptografada durante a chamada.
QDesligar e retornar ao menu.

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

TeclaAção
Segurar SPACEGravar mensagem de voz. Envia automaticamente ao soltar.
TEnviar uma mensagem de texto criptografada.
SAbrir configurações durante a chamada (alterar cifra, ajustar qualidade).
QDesligar e retornar ao menu.

Modo Push-to-Talk (Termux):

O teclado virtual do Android envia eventos de tecla ao soltar, não ao pressionar. O TerminalPhone se adapta usando o modo de alternância no Termux.

TeclaAção
Tocar SPACEIniciar gravação. Tocar novamente para parar e enviar.
TEnviar uma mensagem de texto criptografada.
SAbrir configurações durante a chamada (alterar cifra, ajustar qualidade).
QDesligar e retornar ao menu.
Vol Down ×2Alternar gravação pelo botão de volume (requer Volume PTT habilitado nas configurações).

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)

## Como Funciona

O TerminalPhone usa um modelo de gravar e enviar. Quando você ativa o PTT, o microfone grava continuamente até você soltar. A gravação completa é então processada através do seguinte 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

O protocolo de rede é texto baseado em linhas sobre uma conexão TCP:

MensagemDescrição
ID:<onion>Identificação do chamador -- endereço .onion do remetente
CIPHER:<name>Cifra de criptografia do remetente. Trocada na conexão e na alteração.
PTT_STARTO remetente começou a gravar
PTT_STOPO remetente terminou; o áudio segue ou já foi enviado
AUDIO:<base64>Mensagem de áudio criptografada completa
MSG:<base64>Mensagem de texto criptografada
HANGUPO remetente está se desconectando
PINGSinal de keepalive
RELAY:1Saudação do relay -- enviada pelo relay na conexão, ativa o modo de grupo
GROUP:<n>Atualização do tamanho do grupo -- transmitida pelo relay quando chamadores entram ou saem

No Termux, uma etapa adicional de conversão lida com o formato de gravação M4A nativo do Android, usando ffmpeg para converter para PCM bruto antes da codificação Opus.


Modelo de Segurança

Criptografia: Todo o áudio é criptografado com uma cifra configurável pelo usuário (padrão: AES-256-CBC) antes da transmissão. 21 cifras curadas estão disponíveis, classificadas da mais forte (256 bits) à adequada (128 bits). A chave é derivada de um segredo pré-compartilhado usando PBKDF2 com 10.000 iterações. A criptografia é aplicada na camada de aplicação, independente da criptografia de transporte do Tor. Os segredos são passados ao OpenSSL via descritores de arquivo (-pass fd:3), não como argumentos de linha de comando, de modo que nunca são expostos na tabela de processos.

Negociação de cifra: Ambas as partes trocam os nomes das cifras na conexão e sempre que uma cifra é alterada durante a chamada. Os nomes das cifras não são secretos (princípio de Kerckhoffs). Se as cifras local e remota não coincidirem, ambas as partes veem indicadores vermelhos no cabeçalho da chamada.

Transporte: Todos os dados são roteados através de circuitos de serviço oculto Tor. O endereço IP de nenhuma das partes é exposto. Não há tráfego clearnet. A conexão não pode ser atribuída a nenhuma das partes por um observador de rede.

Resistência à análise de tráfego: O modelo de gravar-e-enviar produz padrões de transmissão irregulares (mensagens de comprimento variável em intervalos irregulares), que são mais difíceis de identificar do que streaming contínuo.

Autenticação: O segredo compartilhado serve como autenticação implícita. Se ambas as partes não tiverem o mesmo segredo, a descriptografia falha e nenhum áudio é reproduzido. Na conexão, ambas as partes trocam endereços .onion para identificação do chamador. O segredo pode opcionalmente ser criptografado em repouso com uma passphrase; na inicialização, o script solicita a passphrase para desbloqueá-lo.

Assinatura do protocolo HMAC (opcional): Quando ativada, cada mensagem do protocolo de rede -- incluindo sinais de controle como HANGUP, PTT_START e PING -- é assinada com HMAC-SHA256 derivado do segredo compartilhado. Um nonce aleatório é incluído por mensagem para que comandos idênticos produzam assinaturas únicas. Nonces vistos são rastreados por chamada e duplicatas são rejeitadas, prevenindo ataques de replay. A configuração de HMAC é congelada no início da chamada através de um arquivo de runtime para que os caminhos de envio e recebimento sempre concordem, mesmo se a configuração for alternada durante a chamada (as alterações entram em vigor na próxima chamada). No lado receptor, qualquer mensagem com assinatura inválida, ausente ou repetida é silenciosamente descartada. Isso impede que um atacante que comprometa o circuito Tor (mas não possui o segredo compartilhado) injete ou reproduza comandos. Ambas as partes devem ativar o HMAC para que as chamadas funcionem. Não compatível com versões anteriores à 1.1.3.

Limitações:

  • O segredo compartilhado deve ser trocado fora de banda através de um canal seguro (pessoalmente, mensagens criptografadas, etc.).
  • Não há sigilo direto (forward secrecy). Se o segredo compartilhado for comprometido, todas as comunicações passadas e futuras usando esse segredo podem ser descriptografadas.
  • O protocolo não protege contra um endpoint comprometido. Se qualquer um dos dispositivos for comprometido, o atacante tem acesso ao áudio em texto claro.

Segurança do modo relay: O relay é arquiteturalmente zero-knowledge. Ele nunca possui o segredo compartilhado e não pode descriptografar nenhum conteúdo. Os dados de áudio fluem através de buffers de pipe do kernel (FIFOs) que existem apenas na memória -- nada é escrito em disco. Quando o relay para, todos os arquivos temporários são excluídos. O operador do relay não pode determinar o que foi dito, quem são os chamadores ou ler quaisquer mensagens. O relay filtra todos os sinais de controle (HANGUP, ID:, CIPHER:, PTT_START, PTT_STOP) e encaminha apenas AUDIO:, MSG: e PING. Um adversário passivo global poderia realizar análise de correlação de tráfego para associar chamadores ao relay, mas o conteúdo das mensagens permanece opaco.

Capacidade do relay: O principal gargalo é a largura de banda do Tor. A taxa de transferência do serviço oculto Tor é altamente variável e depende da qualidade do circuito, congestionamento do relay e distância geográfica. Uma mensagem de voz típica de 10 segundos tem ~20KB criptografados, e cada transmissão se ramifica para N-1 ouvintes.

ChamadoresSaída por mensagemExperiência esperada
2--320--40KBConfiável na maioria das conexões
3--540--80KBBom em circuitos estáveis, atrasos possíveis em dados móveis
5--1080--180KBNo limite, atrasos perceptíveis entre transmissões
10+180KB+Não confiável, enfileiramento significativo e possível perda de mensagens

A capacidade realista é de 3--5 chamadores para um relay rodando em um telefone (Termux), ou 5--10 chamadores em uma máquina Linux dedicada com uma conexão estável. Relays rodando em dispositivos móveis enfrentam restrições adicionais: dados móveis adicionam latência sobre o Tor, o Android pode encerrar processos Termux em segundo plano para recuperar memória, e o consumo de bateria aumenta com cada chamador conectado. A largura de banda do circuito Tor pode variar de 50KB/s a 500KB/s dependendo da qualidade do caminho, e os circuitos podem degradar ou rotacionar no meio da sessão. O modo de salto único melhora a taxa de transferência, mas não elimina o congestionamento do relay Tor. Essas estimativas assumem o modelo PTT onde apenas uma pessoa transmite por vez -- transmissões simultâneas degradariam ainda mais o desempenho. Chamadores em uma chamada em grupo devem considerar reduzir seu bitrate Opus (Configurações → Codificação Opus) para reduzir os tamanhos das mensagens e aliviar a carga no relay.


Configuração

Toda a configuração é armazenada em .terminalphone/ relativo à localização do 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 áudio padrão (definidos no topo do script):

| Parâmetro | Padrão | Descrição |
|---|---|---|
| `LISTEN_PORT` | 7777 | Porta TCP para conexões de entrada |
| `TOR_SOCKS_PORT` | 9050 | Porta do proxy SOCKS do Tor |
| `OPUS_BITRATE` | 16 | Taxa de bits da codificação Opus em kbps |
| `CIPHER` | aes-256-cbc | Cifra de criptografia (configurável via Configurações) |
| `SNOWFLAKE_ENABLED` | 0 | Ponte Snowflake para contornar censura |
| `AUTO_LISTEN` | 0 | Escuta automática de chamadas quando o Tor inicia |
| `PTT_KEY` | SPACE | Tecla push-to-talk (configurável via Configurações) |
| `VOL_PTT` | 0 | PTT por toque duplo no volume, apenas Termux (experimental) |
| `EXCLUDE_NODES` | (vazio) | Lista de países para ExcludeNodes do Tor (ex.: `{US},{GB}`) |
| `HMAC_AUTH` | 0 | Assina com HMAC todas as mensagens do protocolo (opcional, ambos os lados devem corresponder) |
| `OVERWRITE_DELETE` | 0 | Sobrescreve arquivos temporários com dados aleatórios antes da exclusão (desativado por padrão) |
| `PTT_CHIME` | off | Predefinição do som de notificação PTT (off, tone, double, chirp, ding, click, custom) |
| `SINGLE_HOP` | 0 | Modo Tor de salto único para menor latência (desativa o anonimato do servidor) |
| `SAMPLE_RATE` | 8000 | Taxa de amostragem de áudio em Hz |
| `CHUNK_DURATION` | 1 | Duração dos blocos de teste de áudio em segundos |

---

## Solução de problemas

**O Tor falha ao inicializar:**
Verifique o log do Tor em `.terminalphone/tor_data/tor.log`. Causas comuns incluem desvio de relógio, restrições de rede que bloqueiam o Tor ou outra instância do Tor usando a mesma porta SOCKS.

**Sem áudio no Termux:**
Verifique se o aplicativo Termux:API está instalado a partir do F-Droid (não apenas o pacote `termux-api`). Conceda permissões de microfone ao aplicativo Termux:API nas configurações do Android. Execute o teste de loopback de áudio (opção 5) para verificar.

**A instalação do ffmpeg falha no Termux:**
Execute `pkg upgrade` antes de instalar as dependências. O instalador faz isso automaticamente, mas se você instalou pacotes manualmente, bibliotecas compartilhadas desatualizadas podem causar erros de vinculação.

**O teste de áudio funciona, mas as chamadas ficam silenciosas:**
Confirme que ambas as partes estão usando o mesmo segredo compartilhado. Segredos incompatíveis resultarão em falha de descriptografia sem mensagem de erro -- a chamada conecta, mas nenhum áudio é ouvido.

**A ponte Snowflake demora para conectar:**
O Snowflake roteia o tráfego através de proxies WebRTC, o que adiciona tempo extra de inicialização. É normal que o Tor leve 30--60 segundos (ou mais) para atingir 100% quando o Snowflake está ativado. O script exibirá um aviso de paciência durante a inicialização.

**A primeira inicialização do Tor é lenta:**
Na primeira execução, o Tor precisa baixar o consenso completo da rede do zero, o que pode levar um ou dois minutos. O script detecta isso e exibe um aviso. O tempo limite de inicialização é estendido automaticamente de 120 para 300 segundos na primeira execução. As execuções subsequentes usam dados de consenso em cache e são muito mais rápidas.

**Desligar não retorna ao menu:**
Se o script travar após pressionar Q, pressione Ctrl+C para forçar a limpeza e retornar ao shell.

**`Cannot install under Rosetta 2 in ARM default prefix` no macOS:**
Isso acontece em Apple Silicon quando o terminal está sendo executado sob Rosetta 2 (um processo `x86_64`), mas o Homebrew está no prefixo ARM nativo (`/opt/homebrew`). O instalador de dependências (opção **7**) agora detecta isso e executa novamente o `brew` automaticamente sob `arch -arm64`. Se você estiver instalando pacotes manualmente, prefixe-os você mesmo: `arch -arm64 brew install <pkg>`. Como alternativa, inicie o script nativamente com `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)


---

## Licença

MIT

Categorias