
terminalphone — Updated!
Tor隠れサービスを介したエンドツーエンド暗号化、設定可能な暗号、グループ通話のためのリレーモード、および反フォレンジックデータ破壊を備えた暗号化プッシュトゥトーク音声およびテキスト通信。
TerminalPhone
Tor オニオンサービス経由の暗号化プッシュトゥトーク音声通信。
TerminalPhone は、単一の自己完結型 Bash スクリプトで、Tor ネットワーク上で 2 者以上の間で匿名のエンドツーエンド暗号化音声およびテキスト通信を提供します。トランシーバーのように動作します。音声メッセージを録音すると、圧縮、暗号化され、1 つの単位として相手側に送信されます。通話中に暗号化されたテキストメッセージを送信することもできます。サーバーインフラ、アカウント、電話番号は不要です。あなたの Tor オニオンサービス .onion アドレスがあなたの身元です。
目次
機能
- トランシーバープッシュトゥトークモード -- 完全な音声メッセージを録音し、離したときに送信します。
- 通話中の暗号化チャット -- 通話中に暗号化されたテキストメッセージを送受信します。
Tを押してメッセージを入力します。 - 発信者 ID -- 接続時に両者が自動的に
.onionアドレスを交換します。相手のアドレスは通話ヘッダーに表示されます。 - 自動切断検出 -- 一方が通話を切ると、もう一方に即座に通知され、通話が自動的に終了します。
- 設定可能な暗号 -- 強度順にランク付けされた 21 の厳選された暗号から選択できます (256 ビット → 128 ビット)。AES、ChaCha20、Camellia、ARIA ファミリーを含みます。弱い暗号 (DES、RC4、ECB モード) は除外されています。
- ライブ暗号ネゴシエーション -- 接続時に両者が暗号情報を交換します。通話ヘッダーにはローカルと相手側の両方の暗号が緑 (一致) または赤 (不一致) のインジケーターとともに表示され、リアルタイムで更新されます。
- 通話中の設定 -- 通話中に
Sを押して設定にアクセスします。暗号をオンザフライで変更でき、相手側の表示は自動的に更新されます。 - Snowflake ブリッジ情報 -- 検閲回避のために Snowflake を使用する場合、通話ページに Tor のログから解析されたブリッジ記述子名、フィンガープリント、トランスポート接続ステータスが表示されます。
- 自動リッスン -- 有効にすると、Tor の起動時にバックグラウンドリスナーが自動的に起動します。着信はメインメニューから検出され、手動で「通話をリッスン」を選択することなく受け入れられます。通話終了後、リスナーは再起動します。
- 設定可能な PTT キー -- 設定メニューから、プッシュトゥトークキーをデフォルトのスペースバーから任意のキーに変更できます。
- メッセージ統計 -- 通話画面に送受信メッセージの暗号化ペイロードサイズが表示され、その場で更新されます。
- 相手側 PTT ステータス -- 通話画面に相手側の状態を示す静的インジケーターが表示されます:「Idle」(緑) または「● Recording」(赤)。音声データが到着すると、再生が始まる前に即座にリセットされます。
- PTT チャイム -- 相手側が録音を開始したときのオプションの通知音。sox で生成される 5 つの組み込みプリセット (tone、double、chirp、ding、click) に加え、カスタムの 2 秒チャイムを録音する機能があります。設定から構成可能です。
- 接続アニメーション -- 相手のアドレスに発信すると、通話インターフェースが読み込まれるまでサイクリングアニメーションが再生されます。
- ボイスチェンジャー -- 送信音声にボイスエフェクトを適用します。6 つのプリセット (deep、high、robot、echo、whisper) と、ピッチシフト、オーバードライブ、フランジャー、エコー、ハイパスフィルター、トレモロを備えた完全に設定可能なカスタムモードを含みます。エフェクトは Opus エンコード前に sox を使用して処理されます。
- 音量 PTT (Termux) -- Termux がバックグラウンドにあるときでも、音量ダウンボタンをダブルタップして録音を切り替えられる実験的モード。
jqが必要です (オンデマンドでインストール)。音量は各トリガー後に自動的に復元されます。 - Tor オニオンサービス -- 各インスタンスは独自の Tor オニオンサービスを実行します。あなたの
.onionアドレスは永続的でルーティング可能なエンドポイントとして機能します。ポートフォワーディングやパブリック IP は不要です。 - エンドツーエンド暗号化 -- すべての音声とテキストは、Tor ネットワークに入る前に、事前共有シークレットから PBKDF2 鍵導出を用いた設定可能な暗号 (デフォルト: AES-256-CBC) で暗号化されます。
- パスフレーズ保護されたシークレット -- 共有シークレットは、ユーザーが選択したパスフレーズ (AES-256-CBC、100,000 PBKDF2 イテレーション) を使用して保存時に暗号化できます。既存の平文シークレットは自動的に検出され、移行の提案が表示されます。
- 低帯域幅 -- 16kbps、8kHz モノラルの Opus コーデック。典型的な 10 秒の音声メッセージは 20KB 未満で、Tor の容量内に十分収まります。
- QR コード共有 -- オプション 3 では、
.onionアドレスをターミナルにスキャン可能な QR コードとして表示できます。qrencodeがインストールされていない場合は、インストールを促されます。QR コードは代替画面バッファにレンダリングされ、閉じると破棄されます。一部の QR スキャナーがhttp://を自動的に先頭に付加するという警告が表示されます。このプレフィックスは発信時に自動的に除去されます。 - 不透明な一時ファイル -- すべての一時ファイルは汎用的な
.tmp拡張子とランダムな 16 進数識別子を使用します。ファイルタイプやタイミングのメタデータはファイルシステムに漏洩しません。 - 回路ホップ表示 -- 通話中に Tor 回路パスをオプトインで表示し、リレー名と完全な国名を表示します。60 秒ごとに自動更新されます。設定 → Tor 設定から構成可能です。
- 国を除外 -- Tor 回路から特定の国を除外します。Five Eyes、Nine Eyes、Fourteen Eyes 同盟のプリセット、またはカスタム国コードを入力できます。torrc で
StrictNodesとともにExcludeNodesを使用します。 - HMAC プロトコル認証 -- 共有シークレットを使用した、すべてのプロトコルメッセージ (音声、テキスト、制御信号) のオプションの HMAC-SHA256 署名。メッセージごとにランダムな nonce が含まれ、確認された nonce は追跡されてリプレイを拒否します。署名されていない、偽造された、またはリプレイされたメッセージはサイレントに破棄されます。HMAC 状態は通話開始時に凍結され、通話中の同期ずれを防ぎます。設定 → セキュリティから構成可能です。
- 削除前上書き -- 設定 → セキュリティのオプショントグルで、削除前にすべての一時ファイルを
/dev/urandomからのランダムデータで上書きします。ファイルサイズが読み取られ、そのバイト数のランダムデータがconv=notruncを使用してddでファイルに上書きされ、書き込みはsyncでストレージデバイスにフラッシュされ、その後rmでファイルが削除されます。すべての機密ランタイムファイルをカバーします: 生の PCM 録音、Opus エンコード音声、暗号化ペイロード、復号された受信音声とチャット、ボイスエフェクト中間ファイル、暗号と HMAC 鍵素材、nonce ログ、セッションフラグ、PID ファイル、名前付きパイプ、ローテーション時の Tor オニオンサービス鍵、リレーセッションデータ。ディレクトリの場合、内部のすべてのファイルが再帰的に上書きされます。組み込みのテストオプションは、サンプルファイルを作成し、元の内容を平文と 16 進数で表示し、上書きし、上書き後の 16 進数を表示して、ユーザーがデータが破壊されたことを視覚的に確認できるようにします。デフォルトではオフ — ほとんどのユーザーにとって、標準のrmで十分です。TerminalPhone の一時ファイルは小さく短命で、ディスク容量は通常のシステム活動によってすぐに再利用されます。この機能は、フォレンジック復元に対する追加の保護層を求めるユーザー向けです。注: SSD およびフラッシュストレージでは、ウェアレベリングにより上書きが異なる物理 NAND セルに書き込まれる可能性があります — フラッシュメディアでは完全ディスク暗号化が唯一の信頼できる防御です。従来の HDD では、上書きは同じ物理位置のデータを置き換え、すべてのソフトウェアベースの復元に対して有効です。 - リレーモード (グループブリッジ) -- N 人の匿名発信者をブリッジするゼロ知識リレーを実行します。リレーは復号せずに暗号化された音声とチャットを転送し、共有シークレットやオーディオハードウェアを必要としません。クライアントは
RELAY:1ハンドシェイクを介してリレーモードを自動検出し、ライブのグループ発信者数を表示します。1 人の発信者が退出しても、他の発信者は切断されません。オペレーターダッシュボードには、発信者数、稼働時間、データスループットが表示されます。 - シングルホップ Tor モード -- リレーオペレーター向けのオプションの低遅延モード。オニオンサービスに 3 ホップではなく 1 Tor ホップを使用し、低遅延のためにサーバー匿名性を犠牲にします。自身の IP を隠す必要のないリレーオペレーターに最適です。
- ポート設定 -- 設定 → Tor 設定からリッスンポートと SOCKS ポートを一緒に構成します。同じデバイス上で別々の Tor プロセスを持つ複数のインスタンスを実行できます。主に、自身のグループ通話にも参加したいリレーオペレーターに有用です — 1 つのインスタンスでリレーを実行し、2 つ目のインスタンスで SOCKS ポートを変更し、発信者としてダイヤルインします。
- クロスプラットフォーム -- 標準的な Linux ディストリビューション、macOS、および Termux 経由の Android で動作します。プラットフォーム固有のオーディオバックエンドは透過的に処理されます。
- root 不要 -- PTT 入力はターミナルの raw モードを使用します。特別な権限やカーネルモジュールは不要です。
- 単一スクリプト -- 1 つの Bash ファイル。ビルドシステム、ランタイム、フレームワークはありません。
インストール
Linux
対応ディストリビューション: Debian/Ubuntu (apt)、Fedora/RHEL (dnf)、Arch (pacman)。``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git cd terminalphone bash terminalphone.sh
メニューからオプション **7** を選択すると、すべての依存関係が自動的にインストールされます。以下のパッケージがインストールされます:
| パッケージ | 目的 |
|---|---|
| `tor` | オニオンルーティングと隠れサービス |
| `opus-tools` | 音声圧縮(Opusコーデック) |
| `sox` | 音声処理ユーティリティ |
| `socat` | Tor SOCKSプロキシ経由の双方向TCPリレー |
| `openssl` | AES-256-CBC暗号化と復号 |
| `alsa-utils` | 音声録音と再生(`arecord`、`aplay`) |
### macOS``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
7 を選択すると、すべての依存関係が自動的にインストールされます。Homebrew がインストールされていない場合、スクリプトはまず Homebrew をインストールし、その後以下のパッケージをインストールします:
| パッケージ | 目的 |
|---|---|
tor | オニオンルーティングと隠しサービス |
opus-tools | 音声圧縮(Opus コーデック) |
sox | 音声の録音と再生(rec、play) |
socat | Tor SOCKS プロキシ経由の双方向 TCP リレー |
openssl | AES-256-CBC 暗号化と復号 |
注記: macOS では ALSA の代わりに、録音(rec)と再生(play)の両方に sox を使用します。追加のオーディオパッケージは必要ありません。
Apple Silicon(M1/M2/M3+): ターミナルが Rosetta 2(x86_64 プロセス)で実行されている一方、Homebrew がネイティブ ARM プレフィックス(/opt/homebrew)にインストールされている場合、brew install は通常 Cannot install under Rosetta 2 in ARM default prefix で失敗します。依存関係インストーラーはこれを検出し、自動的に arch -arm64 で Homebrew を再実行するようになったため、スクリプトの起動方法に関係なくオプション 7 が機能します。
Termux(Android)
TerminalPhone は Termux を通じて Android デバイスをサポートします。Android のサンドボックス化されたオーディオアーキテクチャのため、2 つの追加コンポーネントが必要です。
ステップ 1:Termux のインストール
F-Droid から Termux をインストールします。Play Store 版は古く、更新が提供されなくなっているため使用しないでください。
ステップ 2:Termux:API アプリのインストール
F-Droid から Termux:API をインストールします。これは Termux パッケージではなく、Termux と Android システム API の間のブリッジを提供する独立した Android アプリケーションです。TerminalPhone はデバイスのマイクとメディア再生にアクセスするためにこれが必要です。
デバイスに Termux:API アプリがインストールされていない場合、termux-microphone-record および termux-media-player コマンドは機能せず、音声の録音と再生はサイレントに失敗します。
Termux:API アプリをインストールした後、プロンプトが表示されたらマイクの権限を付与してください。
ステップ 3:Termux 内で Termux:API パッケージをインストール```bash pkg install termux-api
これは、Termux:API アプリと通信するコマンドラインユーティリティをインストールします。
**ステップ 4: TerminalPhone を実行する**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
オプション 7 を選択して、残りの依存関係をすべてインストールします。インストーラーはまず pkg upgrade を実行してパッケージのリンク問題を解決し、その後 tor、opus-tools、sox、socat、openssl-tool、ffmpeg、termux-api をインストールします。
Termux 固有の依存関係:
| パッケージ | 目的 |
|---|---|
termux-api | Android のマイクとメディアプレーヤーへの CLI ブリッジ |
ffmpeg | Android の M4A 録音を Opus エンコード用の raw PCM に変換 |
クイックスタート```
- 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)
通話を開始する前に、両方の当事者がTorを実行し、同じ共有シークレットを設定している必要があります。
---
## 使用方法
### メニューオプション```
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
通話中の操作
全二重モード (WebSockets):
| キー | 操作 |
|---|---|
| M | マイクのミュート / ミュート解除。 |
| T | 通話中に暗号化テキストメッセージを送信。 |
| Q | 通話を終了してメニューに戻る。 |
プッシュ・トゥ・トークモード (Linux / macOS):
| キー | 操作 |
|---|---|
| SPACE を長押し | 音声メッセージを録音。離すと自動的に送信。 |
| T | 暗号化テキストメッセージを送信。 |
| S | 通話中に設定を開く (暗号の変更、品質の調整)。 |
| Q | 通話を終了してメニューに戻る。 |
プッシュ・トゥ・トークモード (Termux):
Android のソフトウェアキーボードは、押した時ではなく離した時にキーイベントを送信します。TerminalPhone は Termux 上でトグルモードを使用することで対応しています。
| キー | 操作 |
|---|---|
| SPACE をタップ | 録音を開始。もう一度タップすると停止して送信。 |
| T | 暗号化テキストメッセージを送信。 |
| S | 通話中に設定を開く (暗号の変更、品質の調整)。 |
| Q | 通話を終了してメニューに戻る。 |
| Vol Down ×2 | 音量ボタンで録音を切り替え (設定で Volume PTT を有効にする必要があります)。 |
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)
---
## 仕組み
TerminalPhone は録音してから送信するモデルを採用しています。PTT を有効にすると、マイクは解放するまで継続的に録音します。その後、完全な録音が以下のパイプラインを通じて処理されます:```
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
ワイヤプロトコルは、TCP接続上の行ベースのテキストです:
| メッセージ | 説明 |
|---|---|
ID:<onion> | 発信者ID -- 送信者の .onion アドレス |
CIPHER:<name> | 送信者の暗号化方式。接続時および変更時に交換される。 |
PTT_START | 送信者が録音を開始した |
PTT_STOP | 送信者が終了した。音声が続くか、すでに送信済み |
AUDIO:<base64> | 完全な暗号化音声メッセージ |
MSG:<base64> | 暗号化テキストメッセージ |
HANGUP | 送信者が切断中 |
PING | キープアライブ信号 |
RELAY:1 | リレー挨拶 -- 接続時にリレーから送信され、グループモードをトリガーする |
GROUP:<n> | グループサイズ更新 -- 発信者の参加または退出時にリレーからブロードキャストされる |
Termuxでは、追加の変換ステップでAndroidネイティブのM4A録音フォーマットを処理し、ffmpeg を使用してOpusエンコード前に生のPCMに変換します。
セキュリティモデル
暗号化: すべての音声は、送信前にユーザー設定可能な暗号(デフォルト:AES-256-CBC)で暗号化されます。最強(256ビット)から十分(128ビット)までランク付けされた21の厳選された暗号が利用可能です。鍵は、10,000回の反復を伴うPBKDF2を使用して事前共有秘密から導出されます。暗号化はアプリケーション層で適用され、Torのトランスポート暗号化とは独立しています。秘密はコマンドライン引数ではなく、ファイルディスクリプタ(-pass fd:3)を介してOpenSSLに渡されるため、プロセステーブルに露出することはありません。
暗号ネゴシエーション: 両当事者は、接続時および通話中に暗号が変更されるたびに暗号名を交換します。暗号名は秘密ではありません(ケルクホフスの原理)。ローカルとリモートの暗号が一致しない場合、両当事者は通話ヘッダーに赤いインジケータを表示します。
トランスポート: すべてのデータはTor隠れサービス回線を通じてルーティングされます。どちらの当事者のIPアドレスも露出しません。クリアネットトラフィックはありません。接続は、ネットワーク傍受者によってどちらの当事者にも帰属させることはできません。
トラフィック分析耐性: 録音後送信モデルは不規則な送信パターン(不規則な間隔での可変長メッセージ)を生成し、連続ストリーミングよりもフィンガープリントが困難です。
認証: 共有秘密は暗黙の認証として機能します。両当事者が同じ秘密を持っていない場合、復号化は失敗し、音声は再生されません。接続時に、両当事者は発信者識別のために .onion アドレスを交換します。秘密はオプションでパスフレーズで保存時に暗号化できます。起動時に、スクリプトはパスフレーズの入力を求めてロックを解除します。
HMACプロトコル署名(オプション): 有効にすると、HANGUP、PTT_START、PINGなどの制御信号を含むすべてのワイヤプロトコルメッセージが、共有秘密から導出されたHMAC-SHA256で署名されます。メッセージごとにランダムなナンスが含まれるため、同一のコマンドでも一意の署名が生成されます。確認されたナンスは通話ごとに追跡され、重複は拒否されるため、リプレイ攻撃を防ぎます。HMAC設定はランタイムファイルを介して通話開始時に固定されるため、設定が通話中に切り替えられても(変更は次回の通話で有効になる)、送信パスと受信パスの両方が常に一致します。受信側では、無効、欠落、またはリプレイされた署名を持つメッセージはサイレントに破棄されます。これにより、Tor回線を侵害した(ただし共有秘密を持たない)攻撃者がコマンドを注入またはリプレイすることを防ぎます。通話を機能させるには、両当事者がHMACを有効にする必要があります。バージョン1.1.3より前のバージョンとは互換性がありません。
制限事項:
- 共有秘密は、安全なチャネル(対面、暗号化メッセージングなど)を通じて帯域外で交換する必要があります。
- 前方秘匿性はありません。共有秘密が侵害された場合、その秘密を使用するすべての過去および将来の通信が復号化される可能性があります。
- プロトコルは侵害されたエンドポイントを保護しません。どちらかのデバイスが侵害された場合、攻撃者は平文音声にアクセスできます。
リレーモードのセキュリティ: リレーはアーキテクチャ上ゼロ知識です。共有秘密を決して保持せず、いかなるコンテンツも復号化できません。音声データはメモリ内にのみ存在するカーネルパイプバッファ(FIFO)を通じて流れます -- ディスクには何も書き込まれません。リレーが停止すると、すべての一時ファイルが削除されます。リレーオペレータは、何が話されたか、発信者が誰であるかを判断できず、いかなるメッセージも読むことができません。リレーはすべての制御信号(HANGUP、ID:、CIPHER:、PTT_START、PTT_STOP)をフィルタリングし、AUDIO:、MSG:、PINGのみを転送します。グローバルな受動的敵対者は、発信者とリレーを関連付けるトラフィック相関分析を実行できますが、メッセージコンテンツは不透明なままです。
リレー容量: 主なボトルネックはTor帯域幅です。Tor隠れサービスのスループットは非常に変動しやすく、回線品質、リレー輻輳、地理的距離に依存します。典型的な10秒の音声メッセージは暗号化で約20KBで、各送信はN-1のリスナーにファンアウトします。
| 発信者数 | メッセージあたりの送信量 | 予想される体験 |
|---|---|---|
| 2--3 | 20--40KB | ほとんどの接続で信頼性あり |
| 3--5 | 40--80KB | 安定した回線では良好、モバイルデータでは遅延の可能性 |
| 5--10 | 80--180KB | 限界に近づき、送信間に顕著な遅延 |
| 10+ | 180KB+ | 信頼性なし、著しいキューイングとメッセージ損失の可能性 |
現実的な容量は、電話(Termux)で実行されるリレーの場合 3--5発信者、安定した接続を持つ専用Linuxマシンの場合 5--10発信者 です。モバイルデバイスで実行されるリレーは追加の制約に直面します:モバイルデータはTorに加えてレイテンシを追加し、Androidはメモリを再利用するためにバックグラウンドのTermuxプロセスを強制終了する可能性があり、バッテリー消費は接続された発信者ごとに増加します。Tor回線帯域幅はパス品質に応じて50KB/sから500KB/sまで変動し、回線はセッション中に劣化またはローテーションする可能性があります。シングルホップモードはスループットを改善しますが、Torリレー輻輳を排除するものではありません。これらの推定は、一度に1人だけが送信するPTTモデルを前提としています -- 同時送信はパフォーマンスをさらに低下させます。グループ通話の発信者は、メッセージサイズを減らしリレーの負荷を軽減するために、Opusビットレート(設定 → Opusエンコーディング)を下げることを検討すべきです。
設定
すべての設定は、スクリプトの場所からの相対パス .terminalphone/ に保存されます:```
.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
デフォルトのオーディオパラメータ(スクリプトの先頭で定義):
| パラメータ | デフォルト | 説明 |
|---|---|---|
| `LISTEN_PORT` | 7777 | 着信接続用のTCPポート |
| `TOR_SOCKS_PORT` | 9050 | Tor SOCKSプロキシポート |
| `OPUS_BITRATE` | 16 | Opusエンコードビットレート(kbps) |
| `CIPHER` | aes-256-cbc | 暗号化方式(設定から変更可能) |
| `SNOWFLAKE_ENABLED` | 0 | 検閲回避のためのSnowflakeブリッジ |
| `AUTO_LISTEN` | 0 | Tor起動時に通話を自動待ち受け |
| `PTT_KEY` | SPACE | プッシュトゥトークキー(設定から変更可能) |
| `VOL_PTT` | 0 | 音量ダウンボタンのダブルタップでPTT、Termux専用(実験的) |
| `EXCLUDE_NODES` | (空) | Tor ExcludeNodesの国リスト(例:`{US},{GB}`) |
| `HMAC_AUTH` | 0 | すべてのプロトコルメッセージにHMAC署名(任意、両側で一致が必要) |
| `OVERWRITE_DELETE` | 0 | 削除前に一時ファイルをランダムデータで上書き(デフォルトではオフ) |
| `PTT_CHIME` | off | PTT通知チャイムのプリセット(off、tone、double、chirp、ding、click、custom) |
| `SINGLE_HOP` | 0 | 低遅延のためのシングルホップTorモード(サーバーの匿名性を無効化) |
| `SAMPLE_RATE` | 8000 | オーディオサンプルレート(Hz) |
| `CHUNK_DURATION` | 1 | オーディオテストチャンクの長さ(秒) |
---
## トラブルシューティング
**Torのブートストラップに失敗する:**
`.terminalphone/tor_data/tor.log`にあるTorログを確認してください。一般的な原因としては、クロックのずれ、Torをブロックするネットワーク制限、同じSOCKSポートを使用している別のTorインスタンスなどがあります。
**Termuxで音声が出ない:**
Termux:APIアプリがF-Droidからインストールされていることを確認してください(`termux-api`パッケージだけでは不十分です)。Androidの設定でTermux:APIアプリにマイク権限を付与してください。オーディオループバックテスト(オプション5)を実行して確認してください。
**Termuxでffmpegのインストールに失敗する:**
依存関係をインストールする前に`pkg upgrade`を実行してください。インストーラーはこれを自動的に行いますが、手動でパッケージをインストールした場合、古い共有ライブラリがリンクエラーを引き起こすことがあります。
**オーディオテストは動作するが通話が無音:**
両者が同じ共有シークレットを使用していることを確認してください。シークレットが一致しない場合、エラーメッセージなしで復号に失敗します -- 通話は接続されますが、音声は聞こえません。
**Snowflakeブリッジの接続が遅い:**
SnowflakeはWebRTCプロキシ経由でトラフィックをルーティングするため、ブートストラップに余分な時間がかかります。Snowflakeが有効な場合、Torが100%に達するまでに30~60秒(それ以上の場合もある)かかるのは正常です。スクリプトはブートストラップ中に待機を促す通知を表示します。
**初回のTorブートストラップが遅い:**
初回起動時、Torはネットワークコンセンサス全体をゼロからダウンロードする必要があり、1~2分かかることがあります。スクリプトはこれを検出して通知を表示します。初回実行時はブートストラップのタイムアウトが120秒から300秒に自動的に延長されます。以降の起動ではキャッシュされたコンセンサスデータを使用するため、はるかに高速です。
**ハングアップしてもメニューに戻らない:**
Qを押した後にスクリプトがハングする場合は、Ctrl+Cを押して強制的にクリーンアップし、シェルに戻ってください。
**macOSで`Cannot install under Rosetta 2 in ARM default prefix`が発生する:**
これはApple Siliconで、ターミナルがRosetta 2(`x86_64`プロセス)で実行されているのに、HomebrewがネイティブARMプレフィックス(`/opt/homebrew`)にある場合に発生します。依存関係インストーラー(オプション**7**)はこれを検出し、`arch -arm64`で`brew`を自動的に再実行するようになりました。手動でパッケージをインストールする場合は、自分でプレフィックスを付けてください:`arch -arm64 brew install <pkg>`。あるいは、`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)
---
## ライセンス
MIT