
terminalphone — Updated!
Tor隠れサービスを介したエンドツーエンド暗号化、設定可能な暗号、グループ通話のためのリレーモード、および反フォレンジックデータ破壊を備えた暗号化プッシュトゥトーク音声およびテキスト通信。
TerminalPhone
Tor 隠しサービスを介した暗号化プッシュ・トゥ・トーク音声通信。
TerminalPhone は、単一の自己完結型 Bash スクリプトで、Tor ネットワークを介して 2 者以上の間で匿名のエンドツーエンド暗号化音声・テキスト通信を提供します。これはトランシーバーとして動作します。音声メッセージを録音すると、圧縮・暗号化され、単一のユニットとしてリモート側に送信されます。通話中に暗号化されたテキストメッセージを送信することもできます。サーバーインフラは不要、アカウントも電話番号も不要です。あなたの Tor 隠しサービスの .onion アドレスがあなたのアイデンティティになります。
目次
特徴
- 全二重音声ストリーミング (WebSockets) -- WebSockets を使用した Tor 隠しサービス上のリアルタイム連続双方向音声ストリーミング。両者はスペースバーを押さずに同時に話したり聞いたりできます。設定 (オプション 9) で設定可能で、統合されたルーティング選択を備えています:
- 標準モード (6 ホップ): 発信側 3 ホップ + 隠しサービス 3 ホップの完全ルーティングで、両者の最大限の匿名性を維持します (~800–1200ms RTT)。
- ターボモード (シングルホップ): 受信側のルーティングを 1 ホップ (~450–700ms RTT) に削減し、流暢な会話音声を実現します。明示的なトレードオフのプロンプト付き (受信側ノードではサーバーの場所の匿名性が無効化され、受信側ノードではアウトバウンド SOCKS クライアントダイヤリングが無効化されます)。
- トランシーバー プッシュ・トゥ・トークモード -- 完全な音声メッセージを録音し、離したときに送信します。
- 通話中の暗号化チャット -- 通話中に暗号化されたテキストメッセージを送受信します。
Tを押してメッセージを入力します。 - 発信者 ID -- 接続時に両者が自動的に
.onionアドレスを交換します。リモートアドレスは通話ヘッダーに表示されます。 - 自動切断検出 -- 一方が切断すると、もう一方は即座に通知され、通話は自動的に終了します。
- 設定可能な暗号 -- 強度順にランク付けされた 21 の厳選された暗号から選択可能 (256 ビット → 128 ビット)。AES、ChaCha20、Camellia、ARIA ファミリーを含みます。弱い暗号 (DES、RC4、ECB モード) は除外されています。
- ライブ暗号ネゴシエーション -- 接続時に両者が暗号情報を交換します。通話ヘッダーにはローカルとリモートの両方の暗号が、緑 (一致) または赤 (不一致) のインジケーター付きでリアルタイムに更新表示されます。
- 通話中の設定変更 -- 通話中に
Sを押して設定にアクセスします。その場で暗号を変更でき、リモート側の表示は自動的に更新されます。 - Snowflake ブリッジ情報 -- 検閲回避に Snowflake を使用する場合、通話ページには Tor のログから解析されたブリッジ記述子名、フィンガープリント、トランスポート接続ステータスが表示されます。
- 自動待受 -- 有効にすると、Tor 起動時にバックグラウンドリスナーが自動的に開始されます。着信はメインメニューから「着信を待機」を手動で選択することなく検出・受信されます。通話終了後、リスナーは再起動します。
- 設定可能な PTT キー -- デフォルトのスペースバーから任意のキーにプッシュ・トゥ・トークキーを設定メニューから変更できます。
- メッセージ統計 -- 通話画面には送受信されたメッセージの暗号化ペイロードサイズがその場で更新表示されます。
- リモート PTT ステータス -- 通話画面にはリモート側の状態を示す静的インジケーターが表示されます: 「アイドル」(緑) または「● 録音中」(赤)。オーディオデータが到着すると、再生開始前に即座にリセットされます。
- PTT チャイム -- リモート側が録音を開始したときのオプションの通知音。sox で生成された 5 つの組み込みプリセット (トーン、ダブル、チャープ、ディン、クリック) に加え、カスタムの 2 秒チャイムを録音する機能も備えています。設定から構成可能です。
- 接続アニメーション -- リモートアドレスに発信するとき、通話インターフェースが読み込まれるまで循環アニメーションが再生されます。
- ボイスチェンジャー -- 送信音声に音声エフェクトを適用します。6 つのプリセット (ディープ、ハイ、ロボット、エコー、ウィスパー) と、ピッチシフト、オーバードライブ、フランジャー、エコー、ハイパスフィルター、トレモロを備えた完全に設定可能なカスタムモードを含みます。エフェクトは Opus エンコード前に sox を使用して処理されます。
- ボリューム PTT (Termux) -- Termux がバックグラウンドにある場合でも、音量ダウンボタンをダブルタップして録音を切り替えられる実験的モード。
jqが必要です (必要に応じてインストールされます)。各トリガー後に音量は自動的に復元されます。 - Tor 隠しサービス -- 各インスタンスは独自の Tor 隠しサービスを実行します。あなたの
.onionアドレスは永続的でルーティング可能なエンドポイントとして機能します。ポートフォワーディングやパブリック IP は不要です。 - エンドツーエンド暗号化 -- すべての音声とテキストは、Tor ネットワークに入る前に、事前共有シークレットからの PBKDF2 鍵導出を備えた設定可能な暗号 (デフォルト: AES-256-CBC) で暗号化されます。
- パスフレーズ保護シークレット -- 共有シークレットは、ユーザーが選択したパスフレーズ (AES-256-CBC、100,000 回の PBKDF2 反復) を使用して保存時に暗号化できます。既存の平文シークレットは自動的に検出され、移行のオファーが表示されます。
- 低帯域幅 -- Opus コーデック、16kbps、8kHz モノラル。典型的な 10 秒の音声メッセージは 20KB 未満で、Tor の容量に十分収まります。
- QR コード共有 -- オプション 3 で、あなたの
.onionアドレスをターミナル内でスキャン可能な QR コードとして表示できます。qrencodeがインストールされていない場合は、インストールを促すプロンプトが表示されます。QR コードは代替画面バッファにレンダリングされ、閉じると破棄されます。一部の QR スキャナーはhttp://を自動的に先頭に付加するという注意書きがあり、このプレフィックスはダイヤル時に自動的に除去されます。 - 不透明な一時ファイル -- すべての一時ファイルは汎用の
.tmp拡張子とランダムな 16 進識別子を使用します。ファイルタイプやタイミングのメタデータがファイルシステムに漏洩することはありません。 - 回路ホップ表示 -- 通話中の Tor 回路パスをオプトインで表示し、リレー名と完全な国名を表示します。60 秒ごとに自動更新されます。設定 → Tor 設定から構成可能です。
- 国除外 -- Tor 回路から特定の国を除外します。ファイブアイズ、ナインアイズ、フォーティーンアイズ同盟のプリセット、またはカスタム国コードの入力が可能です。torrc で
ExcludeNodesとStrictNodesを使用します。 - HMAC プロトコル認証 -- 共有シークレットを使用したすべてのプロトコルメッセージ (音声、テキスト、制御信号) のオプションの HMAC-SHA256 署名。メッセージごとにランダムなナンスが含まれ、既知のナンスはリプレイを拒否するために追跡されます。署名なし、偽造、またはリプレイされたメッセージは静かに破棄されます。HMAC 状態は通話開始時に固定され、通話中の同期ずれを防ぎます。設定 → セキュリティから構成可能です。
- 削除前の上書き -- 設定 → セキュリティのオプショントグルで、削除前にすべての一時ファイルを
/dev/urandomからのランダムデータで上書きします。ファイルサイズが読み取られ、そのバイト数のランダムデータがconv=notruncを使用したddでファイルに書き込まれ、syncでストレージデバイスにフラッシュされ、その後rmでファイルが削除されます。すべての機密ランタイムファイルを対象とします: 生の PCM 録音、Opus エンコード音声、暗号化ペイロード、復号されたインバウンド音声とチャット、音声エフェクト中間ファイル、暗号と HMAC 鍵素材、ナンスログ、セッションフラグ、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 で動作します。プラットフォーム固有のオーディオバックエンドは透過的に処理されます。
- ルート不要 -- 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 がインストールされていない場合、スクリプトが最初にそれをインストールし、その後以下のパッケージをインストールします:
| パッケージ | 目的 |
|---|---|
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 ストア版は古く、更新が提供されなくなっているため、使用しないでください。
ステップ 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エンコード用の生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
通話中の操作
全二重モード(WebSocket):
| キー | 操作 |
|---|---|
| M | マイクのミュート / ミュート解除。 |
| T | 通話中に暗号化されたテキストメッセージを送信。 |
| Q | 切断してメニューに戻る。 |
プッシュトークモード(Linux / macOS):
| キー | 操作 |
|---|---|
| SPACE 長押し | 音声メッセージを録音。離すと自動送信。 |
| T | 暗号化されたテキストメッセージを送信。 |
| S | 通話中に設定を開く(暗号方式の変更、品質の調整)。 |
| Q | 切断してメニューに戻る。 |
プッシュトークモード(Termux):
Android のソフトウェアキーボードは、押したときではなく離したときにキーイベントを送信します。TerminalPhone は Termux ではトグルモードを使用することで対応しています。
| キー | 操作 |
|---|---|
| SPACE をタップ | 録音を開始。再度タップで停止して送信。 |
| T | 暗号化されたテキストメッセージを送信。 |
| S | 通話中に設定を開く(暗号方式の変更、品質の調整)。 |
| Q | 切断してメニューに戻る。 |
| 音量下 ×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)で暗号化されます。21種類の厳選された暗号方式が利用可能で、最強(256ビット)から十分(128ビット)までランク付けされています。鍵は、PBKDF2と10,000回の反復を使用して事前共有シークレットから導出されます。暗号化はアプリケーション層で適用され、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)
[MIRROR V1.1.8](https://bin.disroot.org/?ef81486d3a5141a1#EN1YuLPqqs2FAEsvXkGbZdiWXt3vxvGTw845C4QsYmSn)
[MIRROR V1.1.9](https://bin.disroot.org/?fbcca457ac58964f#DsUCbJwgBRhnL1FK3a6VpwE5sCRNProXvk86u7RpWQM9)
---
## ライセンス
MIT