
terminalphone — Updated!
اتصالات صوتية ونصية مشفرة من نوع push-to-talk عبر خدمات Tor المخفية مع تشفير من طرف إلى طرف، وأصفار قابلة للتكوين، ووضع الترحيل للمكالمات الجماعية، وتدمير البيانات المضاد للطب الشرعي.
TerminalPhone
اتصالات صوتية مشفرة بنمط الضغط والتحدث عبر خدمات Tor المخفية.
TerminalPhone هو سكربت Bash واحد ومستقل يوفر اتصالات صوتية ونصية مجهولة الهوية ومشفرة من طرف إلى طرف بين طرفين أو أكثر عبر شبكة Tor. يعمل كجهاز لاسلكي: تسجّل رسالة صوتية، فتُضغط وتُشفّر وتُرسل إلى الطرف البعيد كوحدة واحدة. يمكنك أيضًا إرسال رسائل نصية مشفرة أثناء المكالمة. لا توجد بنية تحتية للخوادم، ولا حسابات، ولا أرقام هواتف. عنوان خدمتك المخفية .onion على Tor هو هويتك.
جدول المحتويات
الميزات
- بث صوتي مزدوج الاتجاه (WebSockets) -- بث صوتي مستمر ثنائي الاتجاه في الوقت الفعلي عبر خدمات Tor المخفية باستخدام WebSockets. يمكن لكلا الطرفين التحدث والاستماع في وقت واحد دون الحاجة لضغط مفتاح المسافة. قابل للتكوين عبر الإعدادات (الخيار 9) مع اختيار توجيه مدمج:
- الوضع القياسي (6 قفزات): توجيه كامل بـ 3 قفزات للمتصل + 3 قفزات للخدمة المخفية يحافظ على أقصى قدر من إخفاء الهوية لكلا الطرفين (~800–1200ms زمن الرحلة ذهابًا وإيابًا).
- الوضع السريع (قفزة واحدة): يقلل توجيه المستمع إلى قفزة واحدة (~450–700ms زمن الرحلة ذهابًا وإيابًا) لصوت محادثة سلس، مع مطالبات صريحة بالمقايضات (تعطيل إخفاء هوية موقع الخادم على المستمع؛ تعطيل اتصال عميل SOCKS الصادر على عقدة المستمع).
- وضع الضغط والتحدث بنمط اللاسلكي -- سجّل رسالة صوتية كاملة وأرسلها عند تحرير الزر.
- دردشة مشفرة أثناء المكالمة -- أرسل واستقبل رسائل نصية مشفرة أثناء المكالمة. اضغط
Tلكتابة رسالة. - معرّف المتصل -- يتبادل الطرفان تلقائيًا عناوين
.onionعند الاتصال. يُعرض العنوان البعيد في ترويسة المكالمة. - كشف الإنهاء التلقائي -- عندما ينهي أحد الطرفين المكالمة، يُشعر الطرف الآخر فورًا وتنتهي المكالمة تلقائيًا.
- شيفرة قابلة للتكوين -- اختر من بين 21 شيفرة مختارة مرتبة حسب القوة (256-bit → 128-bit). تشمل عائلات AES وChaCha20 وCamellia وARIA. الشيفرات الضعيفة (DES وRC4 وأوضاع ECB) مستبعدة.
- تفاوض حي على الشيفرة -- يتبادل الطرفان معلومات الشيفرة عند الاتصال. تعرض ترويسة المكالمة الشيفرة المحلية والبعيدة مع مؤشرات خضراء (تطابق) أو حمراء (عدم تطابق)، تُحدَّث في الوقت الفعلي.
- إعدادات أثناء المكالمة -- اضغط
Sأثناء المكالمة للوصول إلى الإعدادات. غيّر شيفرتك أثناء التنقل؛ تتحدث شاشة الطرف البعيد تلقائيًا. - معلومات جسر Snowflake -- عند استخدام Snowflake لتجاوز الرقابة، تعرض صفحة المكالمة اسم واصف الجسر وبصمته وحالة اتصال النقل المستخرجة من سجلات Tor.
- استماع تلقائي -- عند التفعيل، يبدأ مستمع في الخلفية تلقائيًا عند تشغيل Tor. تُكتشف المكالمات الواردة وتُقبل من القائمة الرئيسية دون الحاجة لاختيار "الاستماع للمكالمات" يدويًا. بعد انتهاء المكالمة، يُعاد تشغيل المستمع.
- مفتاح PTT قابل للتكوين -- غيّر مفتاح الضغط والتحدث من مفتاح المسافة الافتراضي إلى أي مفتاح عبر قائمة الإعدادات.
- إحصائيات الرسائل -- تعرض شاشة المكالمة حجم الحمولة المشفرة للرسائل المرسلة والمستلمة، مع تحديث في مكانها.
- حالة PTT عن بُعد -- تعرض شاشة المكالمة مؤشرًا ثابتًا لحالة الطرف البعيد: "خامل" (أخضر) أو "● يسجّل" (أحمر). يُعاد ضبطه فور وصول البيانات الصوتية، قبل بدء التشغيل.
- نغمة PTT -- صوت إشعار اختياري عندما يبدأ الطرف البعيد التسجيل. خمسة إعدادات مسبقة مدمجة (نغمة، مزدوجة، زقزقة، رنين، نقرة) مولّدة بـ sox، بالإضافة إلى إمكانية تسجيل نغمة مخصصة لمدة ثانيتين. قابل للتكوين عبر الإعدادات.
- حركة الاتصال -- عند الاتصال بعنوان بعيد، تُعرض حركة متكررة حتى يتم تحميل واجهة المكالمة.
- مغيّر الصوت -- طبّق تأثيرات صوتية على الصوت الصادر. يشمل 6 إعدادات مسبقة (عميق، مرتفع، روبوت، صدى، همس) ووضعًا مخصصًا قابلًا للتكوين بالكامل مع تغيير درجة الصوت، والتشويه، والفلانجر، والصدى، ومرشح التمرير العالي، والترمولو. تُعالج التأثيرات باستخدام sox قبل ترميز Opus.
- 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 الخاصة بك. إعدادات مسبقة لتحالفات العيون الخمس، والعيون التسع، والعيون الأربع عشرة، أو أدخل رموز بلدان مخصصة. يستخدم
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 فيزيائية مختلفة — تشفير القرص الكامل هو الدفاع الوحيد الموثوق على الوسائط الومضية. على الأقراص الصلبة التقليدية، تستبدل الكتابة فوق البيانات في نفس الموقع الفيزيائي وهي فعالة ضد جميع أنواع الاسترداد القائمة على البرمجيات. - وضع المرحّل (جسر المجموعة) -- شغّل مرحّلًا صفري المعرفة يربط N من المتصلين المجهولين. يمرّر المرحّل الصوت والدردشة المشفرة دون فك تشفيرها، ولا يتطلب سرًا مشتركًا أو أجهزة صوتية. يكتشف العملاء تلقائيًا وضع المرحّل عبر مصافحة
RELAY:1ويعرضون عدد المتصلين في المجموعة مباشرة. مغادرة متصل واحد لا تفصل الآخرين. تعرض لوحة تحكم المشغّل عدد المتصلين ووقت التشغيل وإنتاجية البيانات. - وضع Tor أحادي القفزة -- وضع اختياري منخفض الكمون لمشغّلي المرحّلات. يستخدم قفزة Tor واحدة بدلًا من 3 للخدمة المخفية، مضحيًا بإخفاء هوية الخادم مقابل كمون أقل. مثالي لمشغّلي المرحّلات الذين لا يحتاجون لإخفاء عنوان IP الخاص بهم.
- تكوين المنافذ -- قم بتكوين منفذ الاستماع ومنفذ SOCKS معًا عبر الإعدادات ← إعدادات Tor. يتيح تشغيل نسخ متعددة على نفس الجهاز مع عمليات Tor منفصلة. مفيد بشكل أساسي لمشغّلي المرحّلات الذين يريدون أيضًا الانضمام إلى مكالمة مجموعتهم الخاصة — شغّل المرحّل على نسخة واحدة، وغيّر منفذ SOCKS على نسخة ثانية، واتصل كمتصل.
- متعدد المنصات -- يعمل على توزيعات لينكس القياسية وmacOS وأندرويد عبر Termux. تُعالج الخلفيات الصوتية الخاصة بالمنصة بشفافية.
- لا يتطلب صلاحيات الجذر -- يستخدم إدخال PTT الوضع الخام للطرفية. لا حاجة لصلاحيات خاصة أو وحدات نواة.
- سكربت واحد -- ملف Bash واحد. لا نظام بناء، ولا وقت تشغيل، ولا إطار عمل.
التثبيت
لينكس
التوزيعات المدعومة: 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 ثنائي الاتجاه عبر وكيل SOCKS الخاص بـ Tor |
| `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 ثنائي الاتجاه عبر وكيل SOCKS الخاص بـ Tor |
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 (أندرويد)
يدعم TerminalPhone أجهزة أندرويد من خلال Termux. نظرًا لبنية الصوت المعزولة في أندرويد، يلزم وجود مكوّنين إضافيين.
الخطوة 1: تثبيت Termux
ثبّت Termux من F-Droid. لا تستخدم إصدار متجر Play، لأنه قديم ولم يعد يتلقى تحديثات.
الخطوة 2: تثبيت تطبيق Termux:API
ثبّت Termux:API من F-Droid. هذا تطبيق أندرويد منفصل (وليس حزمة Termux) يوفر جسرًا بين Termux وواجهات برمجة تطبيقات نظام أندرويد. يتطلبه 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 | يحوّل تسجيلات Android بصيغة M4A إلى PCM خام لتشفير Opus |
بدء سريع```
- 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):
ترسل لوحة المفاتيح البرمجية في أندرويد أحداث المفاتيح عند التحرير، وليس عند الضغط. يتكيف TerminalPhone باستخدام وضع التبديل على Termux.
| المفتاح | الإجراء |
|---|---|
| اضغط على SPACE | بدء التسجيل. اضغط مرة أخرى للإيقاف والإرسال. |
| T | إرسال رسالة نصية مشفرة. |
| S | فتح الإعدادات أثناء المكالمة (تغيير التشفير، ضبط الجودة). |
| Q | إنهاء المكالمة والعودة إلى القائمة. |
| Vol Down ×2 | تبديل التسجيل عبر زر الصوت (يتطلب تفعيل Volume PTT في الإعدادات). |
وضع سطر الأوامر```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 الخاص بنظام أندرويد، باستخدام ffmpeg للتحويل إلى PCM خام قبل ترميز Opus.
نموذج الأمان
التشفير: يتم تشفير كل الصوت بخوارزمية تشفير قابلة للتكوين من قبل المستخدم (الافتراضي: AES-256-CBC) قبل الإرسال. تتوفر 21 خوارزمية تشفير مختارة، مرتبة من الأقوى (256-بت) إلى الكافي (128-بت). يُشتق المفتاح من سر مشترك مسبق باستخدام PBKDF2 مع 10,000 تكرار. يُطبَّق التشفير على طبقة التطبيق، بشكل مستقل عن تشفير النقل الخاص بـ Tor. تُمرَّر الأسرار إلى OpenSSL عبر واصفات الملفات (-pass fd:3)، وليس عبر وسائط سطر الأوامر، بحيث لا تظهر أبدًا في جدول العمليات.
تفاوض خوارزمية التشفير: يتبادل الطرفان أسماء خوارزميات التشفير عند الاتصال وعند تغيير الخوارزمية أثناء المكالمة. أسماء خوارزميات التشفير ليست سرية (مبدأ كيرشوف). إذا لم تتطابق خوارزمية التشفير المحلية مع البعيدة، يرى الطرفان مؤشرات حمراء في ترويسة المكالمة.
النقل: يتم توجيه جميع البيانات عبر دوائر الخدمات المخفية الخاصة بـ Tor. لا يتم كشف عنوان IP لأي من الطرفين. لا يوجد أي حركة مرور على الشبكة المفتوحة. لا يمكن لأي مراقب للشبكة نسب الاتصال إلى أي من الطرفين.
مقاومة تحليل حركة المرور: نموذج التسجيل-ثم-الإرسال ينتج أنماط إرسال غير منتظمة (رسائل متغيرة الطول على فترات غير منتظمة)، والتي يصعب تمييزها مقارنة بالبث المستمر.
المصادقة: يعمل السر المشترك كمصادقة ضمنية. إذا لم يكن لدى الطرفين نفس السر، يفشل فك التشفير ولا يتم تشغيل أي صوت. عند الاتصال، يتبادل الطرفان عناوين .onion لتحديد هوية المتصل. يمكن اختياريًا تشفير السر في وضع السكون بعبارة مرور؛ عند الإطلاق، يطلب السكربت عبارة المرور لفتحه.
توقيع بروتوكول HMAC (اختياري): عند التفعيل، يتم توقيع كل رسالة من رسائل بروتوكول الاتصال — بما في ذلك إشارات التحكم مثل HANGUP وPTT_START وPING — بتوقيع HMAC-SHA256 المشتق من السر المشترك. يتم تضمين قيمة nonce عشوائية لكل رسالة بحيث تنتج الأوامر المتطابقة توقيعات فريدة. يتم تتبع قيم nonce المرئية لكل مكالمة ويتم رفض التكرارات، مما يمنع هجمات إعادة التشغيل. يتم تجميد إعداد HMAC عند بدء المكالمة عبر ملف وقت تشغيل بحيث يتفق مسارا الإرسال والاستقبال دائمًا، حتى لو تم تبديل الإعداد أثناء المكالمة (تسري التغييرات في المكالمة التالية). على جانب الاستقبال، يتم إسقاط أي رسالة بتوقيع غير صالح أو مفقود أو معاد بصمت. يمنع هذا المهاجم الذي يخترق دائرة Tor (ولكن لا يملك السر المشترك) من حقن الأوامر أو إعادة تشغيلها. يجب على كلا الطرفين تفعيل HMAC لكي تعمل المكالمات. غير متوافق مع الإصدارات السابقة لـ 1.1.3.
القيود:
- يجب تبادل السر المشترك خارج النطاق عبر قناة آمنة (شخصيًا، رسائل مشفرة، إلخ).
- لا يوجد سرية أمامية. إذا تم اختراق السر المشترك، يمكن فك تشفير جميع الاتصالات السابقة والمستقبلية التي تستخدم ذلك السر.
- لا يحمي البروتوكول من نقطة نهاية مخترقة. إذا تم اختراق أي من الجهازين، يكون لدى المهاجم إمكانية الوصول إلى الصوت بنصه الواضح.
أمان وضع المرحّل: المرحّل صفر المعرفة من الناحية المعمارية. لا يمتلك السر المشترك أبدًا ولا يمكنه فك تشفير أي محتوى. تتدفق بيانات الصوت عبر مخازن أنابيب النواة (FIFOs) الموجودة في الذاكرة فقط — لا يُكتب أي شيء على القرص. عند توقف المرحّل، يتم حذف جميع الملفات المؤقتة. لا يمكن لمشغّل المرحّل تحديد ما قيل، أو من هم المتصلون، أو قراءة أي رسائل. يقوم المرحّل بتصفية جميع إشارات التحكم (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+ | غير موثوقة، طوابير كبيرة وفقدان محتمل للرسائل |
السعة الواقعية هي 3--5 متصلين لمرحّل يعمل على هاتف (Termux)، أو 5--10 متصلين على جهاز Linux مخصص باتصال مستقر. تواجه المرحّلات التي تعمل على الأجهزة المحمولة قيودًا إضافية: تضيف بيانات الجوال زمن انتقال فوق Tor، وقد يقتل أندرويد عمليات 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 | منفذ وكيل SOCKS الخاص بـ Tor |
| `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` | (فارغ) | قائمة دول ExcludeNodes في Tor (مثال: `{US},{GB}`) |
| `HMAC_AUTH` | 0 | توقيع جميع رسائل البروتوكول بـ HMAC (اختياري، يجب أن يتطابق لدى الطرفين) |
| `OVERWRITE_DELETE` | 0 | الكتابة فوق الملفات المؤقتة ببيانات عشوائية قبل الحذف (معطّل افتراضيًا) |
| `PTT_CHIME` | off | نغمة إشعار الدفع للتحدث (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)
[MIRROR V1.1.8](https://bin.disroot.org/?ef81486d3a5141a1#EN1YuLPqqs2FAEsvXkGbZdiWXt3vxvGTw845C4QsYmSn)
[MIRROR V1.1.9](https://bin.disroot.org/?fbcca457ac58964f#DsUCbJwgBRhnL1FK3a6VpwE5sCRNProXvk86u7RpWQM9)
---
## الترخيص
MIT