
terminalphone — Updated!
एन्क्रिप्टेड पुश-टू-टॉक वॉइस और टेक्स्ट संचार टोर हिडन सर्विसेज पर एंड-टू-एंड एन्क्रिप्शन, कॉन्फ़िगरेबल सिफर, ग्रुप कॉल के लिए रिले मोड, और एंटी-फोरेंसिक डेटा डिस्ट्रक्शन के साथ।
TerminalPhone
Tor हिडन सर्विसेज़ पर एन्क्रिप्टेड पुश-टू-टॉक वॉइस संचार।
TerminalPhone एक एकल, स्व-निहित Bash स्क्रिप्ट है जो Tor नेटवर्क पर दो या अधिक पक्षों के बीच अनाम, एंड-टू-एंड एन्क्रिप्टेड वॉइस और टेक्स्ट संचार प्रदान करती है। यह वॉकी-टॉकी की तरह काम करती है: आप एक वॉइस संदेश रिकॉर्ड करते हैं, और इसे संपीड़ित, एन्क्रिप्ट और एक इकाई के रूप में दूरस्थ पक्ष को प्रसारित किया जाता है। आप कॉल के दौरान एन्क्रिप्टेड टेक्स्ट संदेश भी भेज सकते हैं। कोई सर्वर अवसंरचना नहीं, कोई खाते नहीं, कोई फ़ोन नंबर नहीं। आपका Tor हिडन सर्विस .onion पता ही आपकी पहचान है।
विषय-सूची
- विशेषताएँ
- इंस्टॉलेशन
- क्विक स्टार्ट
- उपयोग
- यह कैसे काम करता है
- सुरक्षा मॉडल
- कॉन्फ़िगरेशन
- समस्या निवारण
- लाइसेंस
विशेषताएँ
- वॉकी-टॉकी पुश-टू-टॉक मोड -- एक पूरा वॉइस संदेश रिकॉर्ड करें और छोड़ने पर इसे प्रसारित करें।
- इन-कॉल एन्क्रिप्टेड चैट -- कॉल के दौरान एन्क्रिप्टेड टेक्स्ट संदेश भेजें और प्राप्त करें। संदेश टाइप करने के लिए
Tदबाएँ। - कॉलर ID -- कनेक्ट होने पर दोनों पक्ष स्वचालित रूप से
.onionपते का आदान-प्रदान करते हैं। दूरस्थ पता कॉल हेडर में प्रदर्शित होता है। - ऑटो-हैंगअप डिटेक्शन -- जब एक पक्ष हैंग अप करता है, तो दूसरे को तुरंत सूचित किया जाता है और कॉल स्वचालित रूप से समाप्त हो जाती है।
- कॉन्फ़िगर करने योग्य सिफर -- शक्ति के अनुसार रैंक किए गए 21 चयनित सिफरों में से चुनें (256-बिट → 128-बिट)। इसमें AES, ChaCha20, Camellia, और ARIA परिवार शामिल हैं। कमज़ोर सिफर (DES, RC4, ECB मोड) शामिल नहीं हैं।
- लाइव सिफर नेगोशिएशन -- कनेक्ट होने पर दोनों पक्ष सिफर जानकारी का आदान-प्रदान करते हैं। कॉल हेडर में हरे (मेल) या लाल (बेमेल) संकेतकों के साथ स्थानीय और दूरस्थ दोनों सिफर दिखाए जाते हैं, जो वास्तविक समय में अपडेट होते हैं।
- मिड-कॉल सेटिंग्स -- कॉल के दौरान सेटिंग्स तक पहुँचने के लिए
Sदबाएँ। अपना सिफर तुरंत बदलें; दूरस्थ पक्ष का डिस्प्ले स्वचालित रूप से अपडेट हो जाता है। - Snowflake ब्रिज जानकारी -- सेंसरशिप परिहार के लिए Snowflake का उपयोग करते समय, कॉल पेज Tor के लॉग से पार्स किया गया ब्रिज डिस्क्रिप्टर नाम, फिंगरप्रिंट, और ट्रांसपोर्ट कनेक्शन स्थिति प्रदर्शित करता है।
- ऑटो-लिसन -- सक्षम होने पर, Tor बूट होने पर एक बैकग्राउंड लिसनर स्वचालित रूप से शुरू हो जाता है। आने वाली कॉल का पता लगाया जाता है और मुख्य मेनू से स्वीकार किया जाता है, बिना मैन्युअल रूप से "Listen for calls" चुनने की आवश्यकता के। कॉल समाप्त होने के बाद, लिसनर पुनः आरंभ हो जाता है।
- कॉन्फ़िगर करने योग्य PTT कुंजी -- सेटिंग्स मेनू के माध्यम से डिफ़ॉल्ट स्पेसबार से पुश-टू-टॉक कुंजी को किसी भी कुंजी में बदलें।
- संदेश आँकड़े -- कॉल स्क्रीन भेजे और प्राप्त संदेशों के लिए एन्क्रिप्टेड पेलोड आकार प्रदर्शित करती है, जो यथास्थान अपडेट होता है।
- दूरस्थ PTT स्थिति -- कॉल स्क्रीन दूरस्थ पक्ष की स्थिति के लिए एक स्थिर संकेतक दिखाती है: "Idle" (हरा) या "● Recording" (लाल)। ऑडियो डेटा आने पर, प्लेबैक शुरू होने से पहले ही तुरंत रीसेट हो जाता है।
- PTT चाइम -- दूरस्थ पक्ष के रिकॉर्डिंग शुरू करने पर वैकल्पिक अधिसूचना ध्वनि। sox से उत्पन्न पाँच अंतर्निहित प्रीसेट (tone, double, chirp, ding, click), साथ ही एक कस्टम 2-सेकंड चाइम रिकॉर्ड करने की क्षमता। सेटिंग्स के माध्यम से कॉन्फ़िगर करने योग्य।
- कनेक्टिंग एनिमेशन -- दूरस्थ पते पर कॉल करते समय, कॉल इंटरफ़ेस लोड होने तक एक चक्रीय एनिमेशन चलता है।
- वॉइस चेंजर -- आउटगोइंग ऑडियो पर वॉइस प्रभाव लागू करें। इसमें 6 प्रीसेट (deep, high, robot, echo, whisper) और पिच शिफ्ट, ओवरड्राइव, फ्लेंजर, इको, हाईपास फ़िल्टर, और ट्रेमोलो के साथ एक पूरी तरह से कॉन्फ़िगर करने योग्य कस्टम मोड शामिल है। Opus एन्कोडिंग से पहले sox का उपयोग करके प्रभाव संसाधित किए जाते हैं।
- वॉल्यूम PTT (Termux) -- प्रायोगिक मोड जो आपको वॉल्यूम डाउन बटन को डबल-टैप करके रिकॉर्डिंग टॉगल करने देता है, भले ही Termux बैकग्राउंड में हो। इसके लिए
jqआवश्यक है (मांग पर इंस्टॉल किया जाता है)। प्रत्येक ट्रिगर के बाद वॉल्यूम स्वचालित रूप से बहाल हो जाता है। - Tor हिडन सर्विस -- प्रत्येक इंस्टेंस अपनी स्वयं की Tor हिडन सर्विस चलाता है। आपका
.onionपता एक स्थायी, रूटेबल एंडपॉइंट के रूप में कार्य करता है। किसी पोर्ट फ़ॉरवर्डिंग या सार्वजनिक IP की आवश्यकता नहीं। - एंड-टू-एंड एन्क्रिप्शन -- Tor नेटवर्क में प्रवेश करने से पहले सभी ऑडियो और टेक्स्ट को एक कॉन्फ़िगर करने योग्य सिफर (डिफ़ॉल्ट: AES-256-CBC) का उपयोग करके एन्क्रिप्ट किया जाता है, जिसमें प्री-शेयर्ड सीक्रेट से PBKDF2 कुंजी व्युत्पत्ति होती है।
- पासफ़्रेज़-संरक्षित सीक्रेट -- साझा सीक्रेट को उपयोगकर्ता द्वारा चुने गए पासफ़्रेज़ (AES-256-CBC, 100,000 PBKDF2 पुनरावृत्तियाँ) का उपयोग करके आराम की स्थिति में एन्क्रिप्ट किया जा सकता है। मौजूदा प्लेनटेक्स्ट सीक्रेट का स्वचालित रूप से पता लगाया जाता है और माइग्रेट करने का प्रस्ताव दिया जाता है।
- कम बैंडविड्थ -- 16kbps, 8kHz मोनो पर Opus कोडेक। एक सामान्य 10-सेकंड का वॉइस संदेश 20KB से कम होता है, जो Tor की क्षमता के भीतर है।
- QR कोड शेयरिंग -- विकल्प 3 आपके
.onionपते को टर्मिनल में स्कैन करने योग्य QR कोड के रूप में प्रदर्शित कर सकता है। यदिqrencodeइंस्टॉल नहीं है, तो आपको इसे इंस्टॉल करने के लिए कहा जाता है। QR कोड अल्टरनेट स्क्रीन बफ़र पर रेंडर होता है और खारिज होने पर नष्ट हो जाता है। एक नोट चेतावनी देता है कि कुछ QR स्कैनर स्वचालित रूप सेhttp://जोड़ देते हैं; डायल करते समय यह प्रीफ़िक्स स्वचालित रूप से हटा दिया जाता है। - अपारदर्शी अस्थायी फ़ाइलें -- सभी अस्थायी फ़ाइलें सामान्य
.tmpएक्सटेंशन और यादृच्छिक हेक्स पहचानकर्ताओं का उपयोग करती हैं। फ़ाइलसिस्टम पर कोई फ़ाइल प्रकार या समय मेटाडेटा लीक नहीं होता। - सर्किट हॉप डिस्प्ले -- कॉल के दौरान आपके Tor सर्किट पथ का ऑप्ट-इन डिस्प्ले, जो रिले नाम और पूर्ण देश नाम दिखाता है। हर 60 सेकंड में स्वचालित रूप से रीफ़्रेश होता है। सेटिंग्स → Tor Settings के माध्यम से कॉन्फ़िगर करने योग्य।
- देशों को बाहर रखें -- अपने Tor सर्किट से विशिष्ट देशों को बाहर रखें। Five Eyes, Nine Eyes, और Fourteen Eyes गठबंधनों के लिए प्रीसेट, या कस्टम देश कोड दर्ज करें। torrc में
StrictNodesके साथExcludeNodesका उपयोग करता है। - HMAC प्रोटोकॉल प्रमाणीकरण -- साझा सीक्रेट का उपयोग करके सभी प्रोटोकॉल संदेशों (वॉइस, टेक्स्ट, नियंत्रण संकेत) का वैकल्पिक HMAC-SHA256 हस्ताक्षर। प्रति संदेश एक यादृच्छिक नॉन्स शामिल किया जाता है, और रीप्ले को अस्वीकार करने के लिए देखे गए नॉन्स को ट्रैक किया जाता है। अहस्ताक्षरित, जाली, या रीप्ले किए गए संदेशों को चुपचाप छोड़ दिया जाता है। मिड-कॉल डीसिंक को रोकने के लिए कॉल शुरू होने पर HMAC स्थिति फ़्रीज़ कर दी जाती है। सेटिंग्स → Security के माध्यम से कॉन्फ़िगर करने योग्य।
- हटाने से पहले अधिलेखन -- सेटिंग्स → Security में एक वैकल्पिक टॉगल जो हटाने से पहले प्रत्येक अस्थायी फ़ाइल को
/dev/urandomसे यादृच्छिक डेटा से अधिलेखित करता है। फ़ाइल का आकार पढ़ा जाता है, उतने बाइट्स यादृच्छिक डेटाconv=notruncका उपयोग करकेddके साथ फ़ाइल पर लिखे जाते हैं, लेखन कोsyncके साथ स्टोरेज डिवाइस पर फ़्लश किया जाता है, और फिर फ़ाइल कोrmके साथ हटा दिया जाता है। सभी संवेदनशील रनटाइम फ़ाइलों को कवर करता है: कच्ची PCM रिकॉर्डिंग, Opus-एन्कोडेड ऑडियो, एन्क्रिप्टेड पेलोड, डिक्रिप्टेड इनबाउंड ऑडियो और चैट, वॉइस इफ़ेक्ट इंटरमीडियरी, सिफर और HMAC कुंजी सामग्री, नॉन्स लॉग, सेशन फ़्लैग, PID फ़ाइलें, नेम्ड पाइप, रोटेशन पर Tor हिडन सर्विस कुंजियाँ, और रिले सेशन डेटा। निर्देशिकाओं के लिए, अंदर की सभी फ़ाइलें पुनरावर्ती रूप से अधिलेखित की जाती हैं। एक अंतर्निहित परीक्षण विकल्प एक नमूना फ़ाइल बनाता है, मूल सामग्री को प्लेनटेक्स्ट और हेक्स में दिखाता है, इसे अधिलेखित करता है, और अधिलेखित हेक्स प्रदर्शित करता है ताकि उपयोगकर्ता नेत्रहीन पुष्टि कर सके कि डेटा नष्ट हो गया है। डिफ़ॉल्ट रूप से बंद — अधिकांश उपयोगकर्ताओं के लिए, मानकrmपूरी तरह से ठीक है। TerminalPhone की अस्थायी फ़ाइलें छोटी और अल्पकालिक होती हैं, और डिस्क स्थान आमतौर पर सामान्य सिस्टम गतिविधि द्वारा जल्दी से पुनः उपयोग किया जाता है। यह सुविधा उन उपयोगकर्ताओं के लिए है जो फ़ॉरेंसिक रिकवरी के विरुद्ध सुरक्षा की एक अतिरिक्त परत चाहते हैं। नोट: SSD और फ़्लैश स्टोरेज पर, वियर लेवलिंग का मतलब है कि अधिलेखन विभिन्न भौतिक NAND सेल पर पड़ सकता है — फ़्लैश मीडिया पर पूर्ण-डिस्क एन्क्रिप्शन ही एकमात्र विश्वसनीय रक्षा है। पारंपरिक HDD पर, अधिलेखन उसी भौतिक स्थान पर डेटा को बदल देता है और सभी सॉफ़्टवेयर-आधारित रिकवरी के विरुद्ध प्रभावी है। - रिले मोड (ग्रुप ब्रिज) -- एक ज़ीरो-नॉलेज रिले चलाएँ जो N अनाम कॉलरों को ब्रिज करता है। रिले एन्क्रिप्टेड ऑडियो और चैट को डिक्रिप्ट किए बिना अग्रेषित करता है, इसके लिए किसी साझा सीक्रेट या ऑडियो हार्डवेयर की आवश्यकता नहीं होती। क्लाइंट
RELAY:1हैंडशेक के माध्यम से रिले मोड का स्वचालित रूप से पता लगाते हैं और लाइव ग्रुप कॉलर गणना प्रदर्शित करते हैं। एक कॉलर के जाने से दूसरे डिस्कनेक्ट नहीं होते। ऑपरेटर डैशबोर्ड कॉलर गणना, अपटाइम, और डेटा थ्रूपुट दिखाता है। - सिंगल-हॉप Tor मोड -- रिले ऑपरेटरों के लिए वैकल्पिक कम-विलंबता मोड। हिडन सर्विस के लिए 3 के बजाय 1 Tor हॉप का उपयोग करता है, कम विलंबता के लिए सर्वर अनामिका का त्याग करता है। उन रिले ऑपरेटरों के लिए आदर्श जिन्हें अपना IP छिपाने की आवश्यकता नहीं है।
- पोर्ट कॉन्फ़िगरेशन -- सेटिंग्स → Tor Settings के माध्यम से लिसन पोर्ट और SOCKS पोर्ट को एक साथ कॉन्फ़िगर करें। एक ही डिवाइस पर अलग-अलग Tor प्रक्रियाओं के साथ कई इंस्टेंस चलाने में सक्षम बनाता है। मुख्य रूप से उन रिले ऑपरेटरों के लिए उपयोगी जो अपनी ही ग्रुप कॉल में शामिल होना चाहते हैं -- एक इंस्टेंस पर रिले चलाएँ, दूसरे इंस्टेंस पर SOCKS पोर्ट बदलें, और एक कॉलर के रूप में डायल करें।
- क्रॉस-प्लेटफ़ॉर्म -- मानक Linux वितरणों, macOS, और Termux के माध्यम से Android पर चलता है। प्लेटफ़ॉर्म-विशिष्ट ऑडियो बैकएंड पारदर्शी रूप से संभाले जाते हैं।
- रूट की आवश्यकता नहीं -- 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` | 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 रिकॉर्डिंग (rec) और प्लेबैक (play) दोनों के लिए ALSA के बजाय 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 के साथ विफल हो जाता है। निर्भरता इंस्टॉलर अब इसका पता लगाता है और स्वचालित रूप से Homebrew को arch -arm64 के अंतर्गत पुनः चलाता है, इसलिए विकल्प 7 इस बात की परवाह किए बिना काम करता है कि स्क्रिप्ट कैसे लॉन्च की गई थी।
Termux (Android)
TerminalPhone Termux के माध्यम से Android डिवाइस का समर्थन करता है। Android की सैंडबॉक्स्ड ऑडियो आर्किटेक्चर के कारण, दो अतिरिक्त घटक आवश्यक हैं।
चरण 1: Termux इंस्टॉल करें
F-Droid से Termux इंस्टॉल करें। Play Store संस्करण का उपयोग न करें, क्योंकि यह पुराना है और अब अपडेट प्राप्त नहीं करता।
चरण 2: Termux:API ऐप इंस्टॉल करें
F-Droid से Termux:API इंस्टॉल करें। यह एक अलग Android एप्लिकेशन है (Termux पैकेज नहीं) जो Termux और Android सिस्टम API के बीच एक ब्रिज प्रदान करता है। 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 | Opus एन्कोडिंग के लिए Android की M4A रिकॉर्डिंग को रॉ 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 रिकॉर्डिंग प्रारूप को संभालता है, जो Opus एन्कोडिंग से पहले कच्चे PCM में बदलने के लिए ffmpeg का उपयोग करता है।
सुरक्षा मॉडल
एन्क्रिप्शन: सभी ऑडियो को प्रसारण से पहले उपयोगकर्ता-कॉन्फ़िगर करने योग्य सिफर (डिफ़ॉल्ट: AES-256-CBC) से एन्क्रिप्ट किया जाता है। 21 क्यूरेटेड सिफर उपलब्ध हैं, जो सबसे मजबूत (256-बिट) से पर्याप्त (128-बिट) तक रैंक किए गए हैं। कुंजी 10,000 पुनरावृत्तियों के साथ PBKDF2 का उपयोग करके एक पूर्व-साझा रहस्य से प्राप्त की जाती है। एन्क्रिप्शन एप्लिकेशन लेयर पर लागू किया जाता है, Tor के ट्रांसपोर्ट एन्क्रिप्शन से स्वतंत्र। रहस्य OpenSSL को फ़ाइल डिस्क्रिप्टर (-pass fd:3) के माध्यम से पास किए जाते हैं, कमांड-लाइन आर्गुमेंट के रूप में नहीं, इसलिए वे प्रोसेस टेबल में कभी उजागर नहीं होते।
सिफर नेगोशिएशन: दोनों पक्ष कनेक्ट पर और जब भी कॉल के बीच में सिफर बदला जाता है, सिफर नाम का आदान-प्रदान करते हैं। सिफर नाम गुप्त नहीं हैं (Kerckhoffs का सिद्धांत)। यदि स्थानीय और रिमोट सिफर मेल नहीं खाते, तो दोनों पक्ष कॉल हेडर में लाल संकेतक देखते हैं।
ट्रांसपोर्ट: सभी डेटा Tor हिडन सर्विस सर्किट के माध्यम से रूट किया जाता है। किसी भी पक्ष का IP पता उजागर नहीं होता। कोई क्लियरनेट ट्रैफ़िक नहीं है। कनेक्शन को नेटवर्क पर्यवेक्षक द्वारा किसी भी पक्ष के लिए जिम्मेदार नहीं ठहराया जा सकता।
ट्रैफ़िक विश्लेषण प्रतिरोध: रिकॉर्ड-देन-भेजें मॉडल अनियमित ट्रांसमिशन पैटर्न (अनियमित अंतराल पर परिवर्तनीय-लंबाई संदेश) उत्पन्न करता है, जिन्हें निरंतर स्ट्रीमिंग की तुलना में फिंगरप्रिंट करना कठिन होता है।
प्रमाणीकरण: साझा रहस्य अंतर्निहित प्रमाणीकरण के रूप में कार्य करता है। यदि दोनों पक्षों के पास समान रहस्य नहीं है, तो डिक्रिप्शन विफल हो जाता है और कोई ऑडियो नहीं चलाया जाता। कनेक्ट पर, दोनों पक्ष कॉलर पहचान के लिए .onion पते का आदान-प्रदान करते हैं। रहस्य को वैकल्पिक रूप से पासफ़्रेज़ के साथ एट-रेस्ट एन्क्रिप्ट किया जा सकता है; लॉन्च पर, स्क्रिप्ट इसे अनलॉक करने के लिए पासफ़्रेज़ का संकेत देती है।
HMAC प्रोटोकॉल साइनिंग (वैकल्पिक): सक्षम होने पर, प्रत्येक वायर प्रोटोकॉल संदेश -- जिसमें HANGUP, PTT_START, और PING जैसे नियंत्रण सिग्नल शामिल हैं -- साझा रहस्य से प्राप्त HMAC-SHA256 के साथ हस्ताक्षरित किया जाता है। प्रति संदेश एक यादृच्छिक नॉन्स शामिल किया जाता है ताकि समान कमांड अद्वितीय हस्ताक्षर उत्पन्न करें। देखे गए नॉन्स को प्रति कॉल ट्रैक किया जाता है और डुप्लिकेट को अस्वीकार कर दिया जाता है, जिससे रीप्ले हमलों को रोका जा सके। 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 के ऊपर विलंबता जोड़ता है, Android मेमोरी पुनःप्राप्त करने के लिए पृष्ठभूमि Termux प्रक्रियाओं को मार सकता है, और प्रत्येक जुड़े कॉलर के साथ बैटरी निकास बढ़ता है। Tor सर्किट बैंडविड्थ पथ गुणवत्ता के आधार पर 50KB/s से 500KB/s तक भिन्न हो सकती है, और सर्किट सत्र के बीच में खराब या रोटेट हो सकते हैं। सिंगल-हॉप मोड थ्रूपुट में सुधार करता है लेकिन Tor रिले कंजेशन को समाप्त नहीं करता। ये अनुमान PTT मॉडल मानते हैं जहाँ एक समय में केवल एक व्यक्ति प्रसारित करता है -- एक साथ प्रसारण प्रदर्शन को और खराब कर देगा। ग्रुप कॉल में कॉलर को अपना Opus बिटरेट कम करने पर विचार करना चाहिए (Settings → Opus encoding) संदेश आकार कम करने और रिले पर भार हल्का करने के लिए।
कॉन्फ़िगरेशन
सभी कॉन्फ़िगरेशन स्क्रिप्ट स्थान के सापेक्ष .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 | एन्क्रिप्शन सिफर (Settings के माध्यम से कॉन्फ़िगर करने योग्य) |
| `SNOWFLAKE_ENABLED` | 0 | सेंसरशिप को दरकिनार करने के लिए Snowflake ब्रिज |
| `AUTO_LISTEN` | 0 | Tor शुरू होने पर कॉल के लिए स्वतः-सुनना |
| `PTT_KEY` | SPACE | पुश-टू-टॉक कुंजी (Settings के माध्यम से कॉन्फ़िगर करने योग्य) |
| `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 को शुरू से पूर्ण नेटवर्क सर्वसम्मति डाउनलोड करनी होती है, जिसमें एक या दो मिनट लग सकते हैं। स्क्रिप्ट इसे पहचानती है और एक सूचना प्रदर्शित करती है। पहले रन पर बूटस्ट्रैप टाइमआउट स्वचालित रूप से 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