
Tor隠れサービスを介したエンドツーエンド暗号化、設定可能な暗号、グループ通話のためのリレーモード、および反フォレンジックデータ破壊を備えた暗号化プッシュトゥトーク音声およびテキスト通信。
# TerminalPhone
Tor オニオンサービス経由の暗号化プッシュトゥトーク音声通信。
TerminalPhone は、単一の自己完結型 Bash スクリプトで、Tor ネットワーク上で 2 者以上の間で匿名のエンドツーエンド暗号化音声およびテキスト通信を提供します。トランシーバーのように動作します。音声メッセージを録音すると、圧縮、暗号化され、1 つの単位として相手側に送信されます。通話中に暗号化されたテキストメッセージを送信することもできます。サーバーインフラ、アカウント、電話番号は不要です。あなたの Tor オニオンサービス `.onion` アドレスがあなたの身元です。
---
## 目次
- [機能](#features)
- [インストール](#installation)
- [Linux](#linux)
- [macOS](#macos)
- [Termux (Android)](#termux-android)
- [クイックスタート](#quick-start)
- [使用方法](#usage)
- [メニューオプション](#menu-options)
- [通話中の操作](#in-call-controls)
- [CLI モード](#cli-mode)
- [仕組み](#how-it-works)
- [セキュリティモデル](#security-model)
- [設定](#configuration)
- [トラブルシューティング](#troubleshooting)
- [ライセンス](#license)
---
## 機能
- **トランシーバープッシュトゥトークモード** -- 完全な音声メッセージを録音し、離したときに送信します。
- **通話中の暗号化チャット** -- 通話中に暗号化されたテキストメッセージを送受信します。`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](https://brew.sh) がインストールされていない場合、スクリプトはまず 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](https://f-droid.org/en/packages/com.termux/) をインストールします。Play Store 版は古く、更新が提供されなくなっているため使用しないでください。
**ステップ 2:Termux:API アプリのインストール**
F-Droid から [Termux:API](https://f-droid.org/en/packages/com.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 に変換 |
---
## クイックスタート```
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)
```
通話を開始する前に、両方の当事者が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で音声が出ない:**
```
---
[Read more](https://gitlab.com/here_forawhile/terminalphone)