العودة إلى التحديثات
UpdatedSep 3, 2026

terminalphone — Updated!

اتصالات صوتية ونصية مشفرة من نوع push-to-talk عبر خدمات Tor المخفية مع تشفير من طرف إلى طرف، وأصفار قابلة للتكوين، ووضع الترحيل للمكالمات الجماعية، وتدمير البيانات المضاد للطب الشرعي.

مشاركة

TerminalPhone

اتصال صوتي مشفّر بنمط اضغط-للتحدث عبر خدمات Tor المخفية.

TerminalPhone هو سكربت Bash واحد ومكتفٍ ذاتيًا يوفر اتصالًا صوتيًا ونصيًا مجهول الهوية ومشفّرًا من الطرف إلى الطرف بين طرفين أو أكثر عبر شبكة Tor. يعمل كجهاز اتصال لاسلكي (walkie-talkie): تسجّل رسالة صوتية، فتُضغط وتُشفّر وتُرسل إلى الطرف البعيد كوحدة واحدة. يمكنك أيضًا إرسال رسائل نصية مشفّرة أثناء المكالمة. لا بنية تحتية للخوادم، لا حسابات، لا أرقام هواتف. عنوان خدمتك المخفية .onion على Tor هو هويتك.


جدول المحتويات


الميزات

  • وضع اضغط-للتحدث بنمط جهاز الاتصال اللاسلكي -- سجّل رسالة صوتية كاملة وأرسلها عند الإفلات.
  • دردشة مشفّرة أثناء المكالمة -- أرسل واستقبل رسائل نصية مشفّرة أثناء المكالمة. اضغط T لكتابة رسالة.
  • معرّف المتصل -- يتبادل الطرفان تلقائيًا عناوين .onion عند الاتصال. يُعرض العنوان البعيد في ترويسة المكالمة.
  • كشف الإنهاء التلقائي -- عندما يُنهي أحد الطرفين المكالمة، يُخطَر الطرف الآخر فورًا وتنتهي المكالمة تلقائيًا.
  • شفرة قابلة للتكوين -- اختر من بين 21 شفرة منسّقة مرتّبة حسب القوة (256-بت → 128-بت). تشمل عائلات AES وChaCha20 وCamellia وARIA. الشفرات الضعيفة (DES، RC4، أوضاع ECB) مستبعدة.
  • تفاوض الشفرة المباشر -- يتبادل الطرفان معلومات الشفرة عند الاتصال. تعرض ترويسة المكالمة الشفرتين المحلية والبعيدة مع مؤشرات خضراء (تطابق) أو حمراء (عدم تطابق)، تُحدَّث في الوقت الفعلي.
  • إعدادات أثناء المكالمة -- اضغط S أثناء المكالمة للوصول إلى الإعدادات. غيّر شفرتك أثناء الاتصال؛ يتحدّث عرض الطرف البعيد تلقائيًا.
  • معلومات جسر Snowflake -- عند استخدام Snowflake للتحايل على الرقابة، تعرض صفحة المكالمة اسم واصف الجسر وبصمته وحالة اتصال النقل المستخرجة من سجلات Tor.
  • الاستماع التلقائي -- عند تفعيله، يبدأ مستمع في الخلفية تلقائيًا عند إقلاع Tor. تُكتشف المكالمات الواردة وتُقبل من القائمة الرئيسية دون الحاجة إلى اختيار "الاستماع للمكالمات" يدويًا. بعد انتهاء المكالمة، يُعاد تشغيل المستمع.
  • مفتاح PTT قابل للتكوين -- غيّر مفتاح اضغط-للتحدث من شريط المسافة الافتراضي إلى أي مفتاح عبر قائمة الإعدادات.
  • إحصاءات الرسائل -- تعرض شاشة المكالمة حجم الحمولة المشفّرة للرسائل المُرسلة والمُستقبلة، وتُحدَّث في مكانها.
  • حالة PTT البعيدة -- تعرض شاشة المكالمة مؤشرًا ثابتًا لحالة الطرف البعيد: "Idle" (أخضر) أو "● Recording" (أحمر). يُعاد ضبطه فورًا عند وصول بيانات الصوت، قبل بدء التشغيل.
  • نغمة PTT -- صوت إشعار اختياري عندما يبدأ الطرف البعيد التسجيل. خمس إعدادات مسبقة مدمجة (tone، double، chirp، ding، click) مُولَّدة باستخدام sox، بالإضافة إلى إمكانية تسجيل نغمة مخصصة مدتها ثانيتان. قابلة للتكوين عبر الإعدادات.
  • رسوم متحركة للاتصال -- عند الاتصال بعنوان بعيد، تُعرض رسوم متحركة متغيرة حتى تُحمَّل واجهة المكالمة.
  • مغيّر الصوت -- طبّق تأثيرات صوتية على الصوت الصادر. يشمل 6 إعدادات مسبقة (deep، high، robot، echo، whisper) ووضعًا مخصصًا قابلًا للتكوين بالكامل مع تغيير النغمة، والـ overdrive، والـ flanger، والصدى، ومرشّح highpass، والـ tremolo. تُعالَج التأثيرات باستخدام sox قبل ترميز Opus.
  • Volume PTT (Termux) -- وضع تجريبي يتيح لك النقر المزدوج على زر خفض الصوت لتبديل التسجيل، حتى عندما يكون Termux في الخلفية. يتطلب jq (يُثبَّت عند الطلب). يُستعاد مستوى الصوت تلقائيًا بعد كل تفعيل.
  • خدمة Tor المخفية -- كل نسخة تشغّل خدمتها المخفية الخاصة على Tor. يعمل عنوان .onion الخاص بك كنقطة نهاية دائمة وقابلة للتوجيه. لا حاجة إلى إعادة توجيه المنافذ أو عنوان IP عام.
  • تشفير من الطرف إلى الطرف -- يُشفَّر كل الصوت والنص باستخدام شفرة قابلة للتكوين (الافتراضي: AES-256-CBC) مع اشتقاق مفتاح PBKDF2 من سرّ مشترك مسبقًا قبل دخول شبكة Tor.
  • سرّ محمي بعبارة مرور -- يمكن تشفير السرّ المشترك في حالة السكون باستخدام عبارة مرور يختارها المستخدم (AES-256-CBC، 100,000 تكرار PBKDF2). تُكتشف الأسرار النصية الصريحة الموجودة تلقائيًا مع عرض خيار الترحيل.
  • نطاق ترددي منخفض -- مرمّز Opus بمعدل 16kbps، أحادي 8kHz. رسالة صوتية نموذجية مدتها 10 ثوانٍ تقل عن 20KB، وهو ضمن قدرة Tor بسهولة.
  • مشاركة رمز QR -- يمكن للخيار 3 عرض عنوان .onion الخاص بك كرمز QR قابل للمسح في الطرفية. إذا لم يكن qrencode مثبّتًا، يُطلب منك تثبيته. يُعرض رمز QR على مخزن الشاشة البديل ويُدمَّر عند إغلاقه. يحذّر إشعار من أن بعض ماسحات QR تضيف http:// تلقائيًا؛ وتُزال هذه البادئة تلقائيًا عند الاتصال.
  • ملفات مؤقتة غير واضحة -- تستخدم جميع الملفات المؤقتة امتدادات .tmp عامة ومعرّفات سداسية عشرية عشوائية. لا يُسرَّب أي نوع ملف أو بيانات وصفية للتوقيت إلى نظام الملفات.
  • عرض قفزات الدائرة -- عرض اختياري لمسار دائرة Tor الخاصة بك أثناء المكالمات، يُظهر أسماء المرحّلات وأسماء الدول الكاملة. يُحدَّث تلقائيًا كل 60 ثانية. قابل للتكوين عبر الإعدادات → إعدادات Tor.
  • استبعاد الدول -- استبعد دولًا محددة من دوائر Tor الخاصة بك. إعدادات مسبقة لتحالفات Five Eyes وNine Eyes وFourteen Eyes، أو أدخل رموز دول مخصصة. يستخدم ExcludeNodes مع StrictNodes في torrc.
  • مصادقة بروتوكول HMAC -- توقيع اختياري بـ HMAC-SHA256 لجميع رسائل البروتوكول (الصوت، النص، إشارات التحكم) باستخدام السرّ المشترك. يُضمَّن nonce عشوائي لكل رسالة، وتُتتبَّع الـ nonces المرئية لرفض إعادة الإرسال. تُسقَط الرسائل غير الموقّعة أو المزوّرة أو المُعاد إرسالها بصمت. تُجمَّد حالة HMAC عند بدء المكالمة لمنع عدم التزامن أثناء المكالمة. قابل للتكوين عبر الإعدادات → الأمان.
  • الكتابة فوق البيانات قبل الحذف -- مفتاح اختياري في الإعدادات → الأمان يكتب فوق كل ملف مؤقت ببيانات عشوائية من /dev/urandom قبل الحذف. يُقرأ حجم الملف، ويُكتب هذا العدد من البايتات من البيانات العشوائية فوق الملف باستخدام dd مع conv=notrunc، ويُفرَّغ الكتابة إلى جهاز التخزين باستخدام sync، ثم يُزال الملف باستخدام rm. يغطي جميع ملفات التشغيل الحساسة: تسجيلات PCM الخام، والصوت المرمّز بـ Opus، والحمولات المشفّرة، والصوت والدردشة الواردة المفكوكة التشفير، ووسائط تأثيرات الصوت، ومواد مفاتيح الشفرة وHMAC، وسجلات nonce، وأعلام الجلسة، وملفات PID، والأنابيب المسماة، ومفاتيح خدمة Tor المخفية عند التدوير، وبيانات جلسة المرحّل. بالنسبة للمجلدات، تُكتب فوق جميع الملفات بداخلها بشكل تعاودي. ينشئ خيار اختبار مدمج ملفًا نموذجيًا، ويعرض المحتوى الأصلي بنص صريح وست عشري، ويكتب فوقه، ويعرض الست عشري المكتوب فوقه ليتمكن المستخدم من التأكد بصريًا من تدمير البيانات. معطّل افتراضيًا — بالنسبة لمعظم المستخدمين، يُعدّ rm القياسي كافيًا تمامًا. الملفات المؤقتة لـ TerminalPhone صغيرة وقصيرة العمر، وعادةً ما تُعاد مساحة القرص للاستخدام بسرعة من خلال نشاط النظام العادي. هذه الميزة مخصصة للمستخدمين الذين يريدون طبقة حماية إضافية ضد الاستعادة الجنائية. ملاحظة: على أقراص SSD ووسائط الفلاش، يعني تسوية التآكل أن الكتابة فوق البيانات قد تهبط على خلايا NAND فيزيائية مختلفة — تشفير القرص الكامل هو الدفاع الموثوق الوحيد على وسائط الفلاش. على أقراص HDD التقليدية، تستبدل الكتابة فوق البيانات البيانات في نفس الموقع الفيزيائي وتكون فعّالة ضد جميع عمليات الاستعادة القائمة على البرمجيات.
  • وضع المرحّل (جسر جماعي) -- شغّل مرحّلًا بمعرفة صفرية يربط N من المتصلين المجهولين. يمرّر المرحّل الصوت والدردشة المشفّرين دون فك التشفير، ولا يتطلب سرًّا مشتركًا أو أجهزة صوتية. يكتشف العملاء وضع المرحّل تلقائيًا عبر مصافحة RELAY:1 ويعرضون عدد المتصلين الجماعيين المباشر. مغادرة متصل واحد لا تفصل الآخرين. تعرض لوحة تحكم المشغّل عدد المتصلين ومدة التشغيل وإنتاجية البيانات.
  • وضع Tor أحادي القفزة -- وضع اختياري بزمن استجابة منخفض لمشغّلي المرحّلات. يستخدم قفزة Tor واحدة بدلًا من 3 للخدمة المخفية، مضحّيًا بمجهولية الخادم مقابل زمن استجابة أقل. مثالي لمشغّلي المرحّلات الذين لا يحتاجون إلى إخفاء عنوان IP الخاص بهم.
  • تكوين المنافذ -- كوّن منفذ الاستماع ومنفذ SOCKS معًا عبر الإعدادات → إعدادات Tor. يتيح تشغيل نسخ متعددة على نفس الجهاز بعمليات Tor منفصلة. مفيد بشكل أساسي لمشغّلي المرحّلات الذين يريدون أيضًا الانضمام إلى مكالمتهم الجماعية الخاصة — شغّل المرحّل على نسخة واحدة، وغيّر منفذ SOCKS على نسخة ثانية، واتصل كمشارك.
  • متعدد المنصات -- يعمل على توزيعات Linux القياسية وmacOS وAndroid عبر Termux. تُعالَج الواجهات الخلفية الصوتية الخاصة بكل منصة بشفافية.
  • لا يتطلب صلاحيات الجذر -- يستخدم إدخال PTT الوضع الخام للطرفية. لا حاجة إلى أذونات خاصة أو وحدات نواة.
  • سكربت واحد -- ملف 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` | مرحّل TCP ثنائي الاتجاه عبر وكيل Tor SOCKS |
| `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مرحّل TCP ثنائي الاتجاه عبر وكيل Tor SOCKS
opensslتشفير وفك تشفير AES-256-CBC

ملاحظة: يستخدم macOS أداة sox لكل من التسجيل (rec) والتشغيل (play) بدلًا من ALSA. لا حاجة إلى حزم صوتية إضافية.

Apple Silicon (M1/M2/M3+): إذا صادف أن يعمل الطرفية لديك تحت Rosetta 2 (عملية x86_64) بينما يكون Homebrew مثبتًا في بادئة ARM الأصلية (/opt/homebrew)، فإن brew install يفشل عادةً برسالة Cannot install under Rosetta 2 in ARM default prefix. يكتشف مثبّت التبعيات الآن هذه الحالة ويعيد تشغيل Homebrew تلقائيًا تحت arch -arm64، لذا يعمل الخيار 7 بغض النظر عن طريقة تشغيل السكربت.

Termux (Android)

يدعم TerminalPhone أجهزة Android عبر Termux. نظرًا لبنية الصوت المعزولة (sandboxed) في Android، يلزم وجود مكوّنين إضافيين.

الخطوة 1: تثبيت Termux

ثبّت Termux من F-Droid. لا تستخدم نسخة Play Store، لأنها قديمة ولم تعد تتلقى تحديثات.

الخطوة 2: تثبيت تطبيق Termux:API

ثبّت Termux:API من F-Droid. هذا تطبيق Android منفصل (وليس حزمة Termux) يوفر جسرًا بين Termux وواجهات برمجة تطبيقات نظام Android. يحتاجه TerminalPhone للوصول إلى ميكروفون الجهاز وتشغيل الوسائط.

بدون تثبيت تطبيق Termux:API على الجهاز، لن تعمل الأوامر termux-microphone-record وtermux-media-player، وسيفشل تسجيل الصوت وتشغيله بصمت.

بعد تثبيت تطبيق Termux:API، امنحه أذونات الميكروفون عند المطالبة.

الخطوة 3: تثبيت حزمة Termux:API داخل Termux```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جسر CLI إلى ميكروفون Android ومشغّل الوسائط
ffmpegيحوّل تسجيلات M4A الخاصة بـ Android إلى PCM خام لترميز Opus

البدء السريع```

  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>معرّف المتصل -- عنوان .onion الخاص بالمرسل
CIPHER:<name>شيفرة التشفير الخاصة بالمرسل. يتم تبادلها عند الاتصال وعند التغيير.
PTT_STARTبدأ المرسل التسجيل
PTT_STOPانتهى المرسل؛ يتبع الصوت أو تم إرساله
AUDIO:<base64>رسالة صوتية مشفرة كاملة
MSG:<base64>رسالة نصية مشفرة
HANGUPالمرسل يقطع الاتصال
PINGإشارة إبقاء الاتصال حياً
RELAY:1ترحيب المرحّل -- يُرسله المرحّل عند الاتصال، ويُفعّل وضع المجموعة
GROUP:<n>تحديث حجم المجموعة -- يبثّه المرحّل عند انضمام المتصلين أو مغادرتهم

على Termux، تتعامل خطوة تحويل إضافية مع تنسيق التسجيل الأصلي M4A في Android، باستخدام ffmpeg للتحويل إلى PCM خام قبل ترميز Opus.


نموذج الأمان

التشفير: يتم تشفير جميع الصوتيات بشيفرة قابلة للتهيئة من قبل المستخدم (الافتراضي: AES-256-CBC) قبل الإرسال. تتوفر 21 شيفرة منتقاة، مرتبة من الأقوى (256-بت) إلى الكافية (128-بت). يُشتق المفتاح من سر مشترك مسبقاً باستخدام PBKDF2 بـ 10,000 تكرار. يُطبَّق التشفير على طبقة التطبيق، بشكل مستقل عن تشفير النقل في Tor. تُمرَّر الأسرار إلى OpenSSL عبر واصفات الملفات (-pass fd:3)، وليس عبر وسائط سطر الأوامر، بحيث لا تُكشف أبداً في جدول العمليات.

التفاوض على الشيفرة: يتبادل الطرفان أسماء الشيفرات عند الاتصال وعند كل تغيير للشيفرة أثناء المكالمة. أسماء الشيفرات ليست سرية (مبدأ Kerckhoffs). إذا لم تتطابق الشيفرتان المحلية والبعيدة، يرى الطرفان مؤشرات حمراء في ترويسة المكالمة.

النقل: تُوجَّه جميع البيانات عبر دوائر خدمة Tor المخفية. لا يُكشف عنوان IP لأي من الطرفين. لا توجد حركة مرور على الشبكة المكشوفة. لا يمكن لمراقب الشبكة نسب الاتصال إلى أي من الطرفين.

مقاومة تحليل حركة المرور: ينتج نموذج التسجيل-ثم-الإرسال أنماط إرسال غير منتظمة (رسائل متغيرة الطول على فترات غير منتظمة)، مما يصعّب بصمتها مقارنة بالبث المستمر.

المصادقة: يعمل السر المشترك كمصادقة ضمنية. إذا لم يمتلك الطرفان نفس السر، يفشل فك التشفير ولا يُشغَّل أي صوت. عند الاتصال، يتبادل الطرفان عناوين .onion لتعريف المتصل. يمكن اختيارياً تشفير السر أثناء التخزين بعبارة مرور؛ عند التشغيل، يطلب النص البرمجي عبارة المرور لفتحه.

توقيع بروتوكول HMAC (اختياري): عند تفعيله، تُوقَّع كل رسالة في بروتوكول الاتصال -- بما في ذلك إشارات التحكم مثل HANGUP وPTT_START وPING -- باستخدام HMAC-SHA256 المشتق من السر المشترك. يُضمَّن nonce عشوائي لكل رسالة بحيث تنتج الأوامر المتطابقة توقيعات فريدة. تُتبَّع الـ nonces المرئية لكل مكالمة وتُرفض المكررة، مما يمنع هجمات إعادة التشغيل. يُثبَّت إعداد HMAC عند بدء المكالمة عبر ملف وقت التشغيل بحيث يتوافق دائماً مسارا الإرسال والاستقبال، حتى لو تم تبديل الإعداد أثناء المكالمة (تسري التغييرات في المكالمة التالية). على الطرف المستقبل، تُسقَط بصمت أي رسالة ذات توقيع غير صالح أو مفقود أو معاد تشغيله. يمنع هذا مهاجماً يخترق دائرة Tor (لكنه لا يملك السر المشترك) من حقن أو إعادة تشغيل الأوامر. يجب على الطرفين تفعيل HMAC لكي تعمل المكالمات. غير متوافق مع الإصدارات السابقة لـ 1.1.3.

القيود:

  • يجب تبادل السر المشترك خارج النطاق عبر قناة آمنة (شخصياً، مراسلة مشفرة، إلخ).
  • لا توجد سرية أمامية. إذا انكشف السر المشترك، يمكن فك تشفير جميع الاتصالات السابقة والمستقبلية التي تستخدم ذلك السر.
  • لا يحمي البروتوكول من نقطة نهاية مخترقة. إذا اخترق أي من الجهازين، يصل المهاجم إلى الصوت غير المشفر.

أمان وضع المرحّل: المرحّل صفري المعرفة معمارياً. لا يمتلك السر المشترك أبداً ولا يمكنه فك تشفير أي محتوى. تتدفق بيانات الصوت عبر مخازن أنابيب النواة (FIFOs) الموجودة في الذاكرة فقط -- لا يُكتب شيء على القرص. عند إيقاف المرحّل، تُحذف جميع الملفات المؤقتة. لا يمكن لمشغّل المرحّل تحديد ما قيل، أو من هم المتصلون، أو قراءة أي رسائل. يرشّح المرحّل جميع إشارات التحكم (HANGUP، ID:، CIPHER:، PTT_START، PTT_STOP) ويمرّر فقط AUDIO: وMSG: وPING. يمكن لخصم سلبي عالمي إجراء تحليل ارتباط حركة المرور لربط المتصلين بالمرحّل، لكن محتوى الرسائل يبقى غامضاً.

سعة المرحّل: عنق الزجاجة الأساسي هو نطاق Tor. إنتاجية خدمة Tor المخفية متغيرة للغاية وتعتمد على جودة الدائرة وازدحام المرحّل والمسافة الجغرافية. رسالة صوتية نموذجية مدتها 10 ثوانٍ تبلغ ~20KB مشفرة، وكل إرسال يتوزع على N-1 مستمعين.

المتصلونالصادر لكل رسالةالتجربة المتوقعة
2--320--40KBموثوق على معظم الاتصالات
3--540--80KBجيد على دوائر مستقرة، تأخيرات محتملة على بيانات الجوال
5--1080--180KBيدفع الحدود، تأخيرات ملحوظة بين الإرسالات
10+180KB+غير موثوق، اصطفاف كبير واحتمال فقدان الرسائل

السعة الواقعية هي 3--5 متصلين لمرحّل يعمل على هاتف (Termux)، أو 5--10 متصلين على جهاز Linux مخصص باتصال مستقر. تواجه المرحّلات التي تعمل على الأجهزة المحمولة قيوداً إضافية: بيانات الجوال تضيف زمن استجابة فوق Tor، وقد يقتل Android عمليات Termux في الخلفية لاستعادة الذاكرة، ويزداد استنزاف البطارية مع كل متصل. يمكن أن يتراوح نطاق دائرة Tor من 50KB/s إلى 500KB/s حسب جودة المسار، وقد تتدهور الدوائر أو تدور في منتصف الجلسة. يحسّن وضع القفزة الواحدة الإنتاجية لكنه لا يزيل ازدحام مرحّل Tor. تفترض هذه التقديرات نموذج 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 بالكيلوبت في الثانية |
| `CIPHER` | aes-256-cbc | شيفرة التشفير (قابلة للتهيئة عبر الإعدادات) |
| `SNOWFLAKE_ENABLED` | 0 | جسر Snowflake للتحايل على الرقابة |
| `AUTO_LISTEN` | 0 | الاستماع التلقائي للمكالمات عند بدء Tor |
| `PTT_KEY` | SPACE | مفتاح الضغط للتحدث (قابل للتهيئة عبر الإعدادات) |
| `VOL_PTT` | 0 | الضغط المزدوج على خفض الصوت للتحدث، 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 | معدل أخذ العينات الصوتية بالهرتز |
| `CHUNK_DURATION` | 1 | مدة مقاطع اختبار الصوت بالثواني |

---

## استكشاف الأخطاء وإصلاحها

**فشل Tor في الإقلاع:**
تحقق من سجل Tor في `.terminalphone/tor_data/tor.log`. تشمل الأسباب الشائعة انحراف الساعة، أو قيود الشبكة التي تحجب Tor، أو وجود نسخة أخرى من Tor تستخدم نفس منفذ SOCKS.

**لا يوجد صوت على Termux:**
تأكد من تثبيت تطبيق Termux:API من F-Droid (وليس فقط حزمة `termux-api`). امنح أذونات الميكروفون لتطبيق Termux:API في إعدادات Android. شغّل اختبار الصوت المرتد (الخيار 5) للتحقق.

**فشل تثبيت ffmpeg على Termux:**
شغّل `pkg upgrade` قبل تثبيت التبعيات. يقوم المثبّت بذلك تلقائيًا، ولكن إذا ثبّتت الحزم يدويًا، فقد تتسبب المكتبات المشتركة القديمة في أخطاء الربط.

**اختبار الصوت يعمل لكن المكالمات صامتة:**
تأكد من أن كلا الطرفين يستخدمان نفس السر المشترك. الأسرار غير المتطابقة ستؤدي إلى فشل فك التشفير دون رسالة خطأ -- تتصل المكالمة لكن لا يُسمع أي صوت.

**جسر Snowflake بطيء في الاتصال:**
يوجّه Snowflake حركة المرور عبر وكلاء WebRTC، مما يضيف وقتًا إضافيًا للإقلاع. من الطبيعي أن يستغرق Tor من 30 إلى 60 ثانية (أو أكثر) للوصول إلى 100% عند تفعيل Snowflake. سيعرض السكربت إشعار صبر أثناء الإقلاع.

**أول إقلاع لـ Tor بطيء:**
عند التشغيل الأول، يجب على Tor تنزيل إجماع الشبكة الكامل من الصفر، وهو ما قد يستغرق دقيقة أو دقيقتين. يكتشف السكربت ذلك ويعرض إشعارًا. يتم تمديد مهلة الإقلاع تلقائيًا من 120 إلى 300 ثانية عند التشغيل الأول. تستخدم عمليات التشغيل اللاحقة بيانات الإجماع المخزنة مؤقتًا وتكون أسرع بكثير.

**إنهاء المكالمة لا يعود إلى القائمة:**
إذا تعلّق السكربت بعد الضغط على Q، اضغط Ctrl+C لفرض التنظيف والعودة إلى الصدفة.

**`Cannot install under Rosetta 2 in ARM default prefix` على macOS:**
يحدث هذا على Apple Silicon عندما يعمل الطرفية تحت Rosetta 2 (عملية `x86_64`) لكن Homebrew موجود في بادئة ARM الأصلية (`/opt/homebrew`). يكتشف مثبّت التبعيات (الخيار **7**) ذلك الآن ويعيد تشغيل `brew` تلقائيًا تحت `arch -arm64`. إذا كنت تثبّت الحزم يدويًا، أضف البادئة بنفسك: `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

الفئات