Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
punchline — पीयर-टू-पीयर एन्क्रिप्टेड मैसेंजर, Rust में, Noise IK और UDP NAT होल पंचिंग के साथ। | Kitploit
उपकरण/GitHubGitHub/michal-pielka/punchline
एन्क्रिप्शन/डिक्रिप्शन उपकरणनेटवर्क सुरक्षागोपनीयताउपयोगिताएँ और फ्रेमवर्कप्रमाणीकरण
GitHubmichal-pielka/punchline

punchline

पीयर-टू-पीयर एन्क्रिप्टेड मैसेंजर, Rust में, Noise IK और UDP NAT होल पंचिंग के साथ।

रिपॉजिटरी देखें
1924 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

punchline

एंड-टू-एंड एन्क्रिप्टेड पीयर-टू-पीयर चैट UDP पर। कोई खाता नहीं, कोई केंद्रीय सर्वर संदेशों को रिले/स्टोर नहीं करता, कोई बीच का व्यक्ति नहीं। बस दो पीयर, एक सीधा कनेक्शन, और नॉइज़ प्रोटोकॉल एन्क्रिप्शन।

https://github.com/user-attachments/assets/939e96d3-45e3-4484-9a27-28c3a0457b05

विषय सूची

  • यह क्या करता है
  • त्वरित शुरुआत
  • यह कैसे काम करता है
  • CLI संदर्भ
  • उपयोग
    • कॉन्फ़िगरेशन
    • पीयर प्रबंधन
    • स्थिति जांच
    • सर्वर विकल्प
    • थीमिंग
    • शेल पूर्णता
  • क्रिप्टोग्राफी
    • IK हैंडशेक
    • आरंभक निर्धारण
    • कुंजी भंडारण
  • वायर प्रोटोकॉल
    • होल पंच प्रोटोकॉल
    • ट्रांसपोर्ट प्रोटोकॉल
    • सिग्नल प्रोटोकॉल
    • STUN प्रोटोकॉल
  • प्रोजेक्ट संरचना
  • स्थापना
    • crates.io से
    • स्रोत से निर्माण
  • परीक्षण चलाना
  • टेक स्टैक
  • लाइसेंस

यह क्या करता है

दो लोग अपनी मशीनों पर punchline connect <peer> चलाते हैं। Punchline उनके NAT के माध्यम से छेद करता है, एक एन्क्रिप्टेड हैंडशेक करता है, और उन्हें एक निजी चैट में डाल देता है - यह सब कुछ मिलीसेकंड में। शामिल STUN और सिग्नल सर्वर खोज को संभालते हैं, फिर रास्ते से हट जाते हैं। बातचीत


त्वरित शुरुआत

root@kitploit:~
cargo build --release

सर्वर शुरू करें (एक मशीन पर जहां दोनों पीयर पहुंच सकते हैं), या मेरे सार्वजनिक सर्वरों का उपयोग करें जो 64.225.107.28 पर होस्ट किए गए हैं (STUN: पोर्ट 3478, सिग्नलिंग: पोर्ट 8743):

root@kitploit:~
punchline-stund                  # STUN सर्वर - पीयर को उनका सार्वजनिक IP बताता है
punchline-signald                # सिग्नल सर्वर - उन पीयर को मिलाता है जो बात करना चाहते हैं
सर्वर

प्रत्येक पीयर की मशीन पर:

root@kitploit:~
# अपनी पहचान उत्पन्न करें (X25519 कुंजी जोड़ी)
punchline keygen

# अपनी सार्वजनिक कुंजी अपने पीयर के साथ साझा करें
punchline pubkey

# उनकी कुंजी सहेजें
punchline peers add alice a1b2c3d4...64_hex_chars

# कनेक्ट करें (दोनों पीयर यह चलाते हैं, एक-दूसरे को लक्षित करते हुए)
punchline connect alice --stun <server>:3478 --signal <server>:8743

TUI लाइव कनेक्शन प्रगति दृश्य के साथ लॉन्च होता है:

  1. STUN खोज - punchline-stund के माध्यम से आपका बाहरी पता हल करना

  2. सिग्नल सर्वर - punchline-signald से कनेक्ट होना

  3. पीयर की प्रतीक्षा - सिग्नल सर्वर दोनों पीयर को मिलाता है

  4. होल पंच - सीधा UDP पथ स्थापित करना

  5. नॉइज़ हैंडशेक - एन्क्रिप्टेड कुंजी विनिमय

    डैशबोर्ड

एक बार पूरा होने पर, आप चैट में हैं। टाइप करें और Enter दबाएँ। बाहर निकलने के लिए Esc दबाएँ।


यह कैसे काम करता है

पूरी प्रणाली तीन बाइनरी से मिलकर बनी है, सभी इसी रिपॉजिटरी में शामिल हैं:

बाइनरीभूमिकाकब उपयोग किया जाता है

प्रारंभिक सेटअप के बाद, STUN और सिग्नल सर्वर से अब संपर्क नहीं किया जाता है। सब कुछ सीधे पीयर-टू-पीयर प्रवाहित होता है।


CLI संदर्भ

punchline

वैश्विक फ़्लैग:

फ़्लैगविवरण
-vलॉग वर्बोसिटी बढ़ाएं (-v = डीबग, -vv = ट्रेस).
-q, --quietसभी लॉग आउटपुट दबाएं।

punchline-stund

punchline-signald


उपयोग

कॉन्फ़िगरेशन

हर बार --stun और --signal पास करने के बजाय, ~/.config/punchline/config.toml बनाएँ:

root@kitploit:~
stun_server = "203.0.113.10:3478"
signal_server = "203.0.113.10:8743"

पीयर प्रबंधन

root@kitploit:~
punchline peers                              # सभी सूचीबद्ध करें
punchline peers add alice a1b2c3d4...        # जोड़ें
punchline peers remove alice                 # हटाएं

उपनाम ~/.punchline/known_peers.toml में संग्रहीत किए जाते हैं। आप सीधे 64-अक्षर हेक्स कुंजी के साथ भी कनेक्ट कर सकते हैं।

स्थिति जांच

root@kitploit:~
punchline status

आपकी पहचान, कॉन्फ़िग, सर्वर पहुँच क्षमता (एक वास्तविक STUN जांच और TCP कनेक्ट भेजता है), और पीयर संख्या दिखाता है।

सर्वर विकल्प

दोनों सर्वर -v (डीबग), -vv (ट्रेस), -q (मौन), --address, और --port का समर्थन करते हैं:

root@kitploit:~
punchline-stund -v --port 3478
punchline-signald -v --port 8743

थीमिंग

TUI को ~/.config/punchline/style.toml के माध्यम से अनुकूलित करें वीडियो में उपयोग की गई शैलियाँ:

root@kitploit:~
[colors]
my_text = "#ebdbb2"
peer_text = "#bdae93"
input_text = "#ebdbb2"
border = "#ebdbb2"
sidebar_key = "#ebdbb2"
sidebar_value = "#bdae93"

[padding]
chat_horizontal = 2
chat_vertical = 1

सभी रंग हेक्स RGB हैं। यदि फ़ाइल अनुपस्थित है, तो टर्मिनल के डिफ़ॉल्ट रंगों का उपयोग किया जाता है।

शेल पूर्णता

root@kitploit:~
punchline completions bash > ~/.local/share/bash-completion/completions/punchline
punchline completions zsh > ~/.zfunc/_punchline
punchline completions fish > ~/.config/fish/completions/punchline.fish

क्रिप्टोग्राफी

पूर्ण प्रोटोकॉल नाम: Noise_IK_25519_ChaChaPoly_SHA256

घटकभूमिका

IK हैंडशेक

IK पैटर्न का अर्थ है कि आरंभकर्ता हैंडशेक शुरू होने से पहले प्रतिक्रियाकर्ता की स्थिर सार्वजनिक कुंजी जानता है। दोनों पीयर के पास पहले से ही एक-दूसरे की कुंजियाँ होती हैं (बैंड के बाहर या पीयर रजिस्ट्री के माध्यम से आदान-प्रदान), इसलिए पहले उपयोग पर कोई विश्वास आवश्यक नहीं है।

  1. आरंभकर्ता -> प्रतिक्रियाकर्ता: अपनी स्थिर सार्वजनिक कुंजी वाला एक एन्क्रिप्टेड संदेश भेजता है, जो प्रतिक्रियाकर्ता की ज्ञात कुंजी के तहत एन्क्रिप्ट किया गया है। निष्क्रिय पर्यवेक्षकों के खिलाफ पहचान छिपाने प्रदान करता है।
  2. प्रतिक्रियाकर्ता -> आरंभकर्ता: डिक्रिप्ट करता है, सत्यापित करता है, और उत्तर देता है। दोनों पक्ष साझा सत्र कुंजियों के साथ ट्रांसपोर्ट मोड में संक्रमण करते हैं।

आरंभक निर्धारण

Punchline प्रत्येक पीयर की सार्वजनिक कुंजी के पहले 8 बाइट्स की तुलना बड़े-एंडियन u64 के रूप में करके निर्धारित रूप से आरंभकर्ता का चयन करता है। छोटे मान वाला पीयर आरंभकर्ता बन जाता है। दोनों पक्ष स्वतंत्र रूप से इसकी गणना करते हैं।

कुंजी भंडारण

पहचान एक 32-बाइट X25519 गुप्त कुंजी है जो ~/.punchline/id_x25519 पर Unix अनुमतियों 0600 के साथ संग्रहीत है। सार्वजनिक कुंजी लोड होने पर व्युत्पन्न होती है। कुंजी उत्पादन x25519-dalek के साथ OsRng का उपयोग करता है।


वायर प्रोटोकॉल

प्रत्येक UDP पैकेट का पहला बाइट उसके प्रकार की पहचान करता है:

होल पंच प्रोटोकॉल

दोनों पीयर एक साथ एक ही एल्गोरिथ्म निष्पादित करते हैं:

  1. प्रत्येक 200ms पर पीयर के बाहरी पते पर PROBE (0x00) भेजें।
  2. PROBE प्राप्त करने पर, ACK (0x01) भेजने पर स्विच करें।
  3. ACK प्राप्त करने पर, एक अंतिम ACK भेजें और सफलता घोषित करें।
  4. सुरक्षा टाइमआउट: बिना उत्तर के ACK भेजने के 2 सेकंड मान लें कि पीयर समाप्त हो गया।

ट्रांसपोर्ट प्रोटोकॉल

संदेश (0x02) Noise-एन्क्रिप्टेड UTF-8 पेलोड ले जाते हैं। Keepalive (0x03) एन्क्रिप्टेड खाली पेलोड हैं जो सिफर नॉन्स सिंक्रोनाइज़ेशन बनाए रखने के लिए हर 10 सेकंड में भेजे जाते हैं। 30 सेकंड बिना किसी पैकेट के डिस्कनेक्ट हो जाता है।

सिग्नल प्रोटोकॉल

WebSocket पर JSON:

root@kitploit:~
// PairRequest (क्लाइंट -> सर्वर)
{ "external_addr": "203.0.113.5:48291", "public_key": "a1b2...", "target_public_key": "d4e5..." }

// PairResponse (सर्वर -> क्लाइंट)
{ "target_external_addr": "198.51.100.7:51003", "target_public_key": "d4e5..." }

STUN प्रोटोकॉल

RFC 5389 (सरलीकृत) का पालन करता है: XOR-MAPPED-ADDRESS के साथ बाइंडिंग अनुरोध/प्रतिक्रिया। केवल IPv4।


प्रोजेक्ट संरचना

चार क्रैट्स के साथ Cargo वर्कस्पेस:

root@kitploit:~
crates/
├── proto/      # साझा लाइब्रेरी: क्रिप्टो, STUN, सिग्नल प्रकार, ट्रांसपोर्ट ट्रेट
├── client/     # P2P क्लाइंट: CLI, TUI, कनेक्शन तर्क, पीयर प्रबंधन
├── signald/    # सिग्नल सर्वर: WebSocket पीयर मिलान
└── stund/      # STUN सर्वर: बाहरी पता खोज

स्थापना

crates.io से

root@kitploit:~
cargo install punchline           # TUI क्लाइंट
cargo install punchline-signald   # सिग्नल सर्वर
cargo install punchline-stund     # STUN सर्वर

स्रोत से निर्माण

आवश्यकताएँ: Rust 2024 संस्करण (rustc 1.85+)

root@kitploit:~
git clone https://github.com/michal-pielka/punchline.git
cd punchline
cargo build --release

बाइनरी को target/release/ में रखा गया है:

  • punchline
  • punchline-signald
  • punchline-stund

परीक्षण चलाना

root@kitploit:~
cargo test

परीक्षण क्रिप्टोग्राफ़िक संचालन, STUN एन्कोडिंग/डिकोडिंग, सिग्नल प्रोटोकॉल क्रमांकन, कॉन्फ़िग पार्सिंग, पीयर प्रबंधन, स्टाइल थीमिंग, और Noise IK हैंडशेक को कवर करते हैं।


टेक स्टैक


लाइसेंस

MIT - देखें LICENSE.

टूल डाउनलोड करें
punchline-stundSTUN सर्वर (UDP) - क्लाइंट के बाहरी IP:port के साथ प्रतिक्रिया करता हैकेवल सेटअप के दौरान
punchline-signaldसिग्नल सर्वर (WebSocket) - पीयर को मिलाता है और पतों का आदान-प्रदान करता हैकेवल सेटअप के दौरान
punchlineस्वयं मैसेंजर - CLI, TUI, क्रिप्टो, होल पंचिंगहमेशा
कमांडविवरण
keygen [--force] [-i path]एक नई X25519 पहचान कुंजी जोड़ी उत्पन्न करें। बिना पूछे अधिलेखित करने के लिए --force का उपयोग करें। आउटपुट पथ निर्दिष्ट करने के लिए -i का उपयोग करें।
pubkey [-i path]अपनी सार्वजनिक कुंजी प्रिंट करें (64 हेक्स अक्षर)। किसी विशिष्ट कुंजी फ़ाइल से व्युत्पन्न करने के लिए -i का उपयोग करें।
connect <peer> [-i path] [--stun addr] [--signal addr]उपनाम या कच्ची हेक्स कुंजी द्वारा किसी पीयर से कनेक्ट करें। पहचान कुंजी निर्दिष्ट करने के लिए -i का उपयोग करें। TUI लॉन्च करता है।
peersसभी ज्ञात पीयर की सूची बनाएं।
peers add <name> <key>किसी पीयर की सार्वजनिक कुंजी को उपनाम के अंतर्गत सहेजें।
peers remove <name>उपनाम द्वारा किसी पीयर को हटाएं।
config pathकॉन्फ़िग फ़ाइल पथ प्रिंट करें।
config showवर्तमान कॉन्फ़िगरेशन मान दिखाएं।
statusपहचान, कॉन्फ़िग, सर्वर पहुँच क्षमता और पीयर संख्या दिखाएं।
completions <shell>शेल पूर्णता उत्पन्न करें (bash, zsh, या fish).
फ़्लैगविवरण
--address <addr>बाइंड पता (डिफ़ॉल्ट: 0.0.0.0).
--port <port>बाइंड पोर्ट (डिफ़ॉल्ट: 3478).
-v / -vvडीबग / ट्रेस लॉगिंग।
-qमौन मोड।
फ़्लैगविवरण
--address <addr>बाइंड पता (डिफ़ॉल्ट: 0.0.0.0).
--port <port>बाइंड पोर्ट (डिफ़ॉल्ट: 8743).
-v / -vvडीबग / ट्रेस लॉगिंग।
-qमौन मोड।
Noise IK
हैंडशेक पैटर्न - आरंभकर्ता प्रतिक्रियाकर्ता की सार्वजनिक कुंजी जानता है। 2 संदेशों में पूरा होता है।
X25519एलिप्टिक-कर्व डिफी-हेलमैन कुंजी विनिमय (RFC 7748)। 128-बिट सुरक्षा, स्थिर-समय।
ChaCha20-Poly1305संदेश एन्क्रिप्शन के लिए AEAD सिफर (RFC 8439)। TLS 1.3 और WireGuard में उपयोग किया जाने वाला वही सिफर।
SHA-256कुंजी व्युत्पत्ति और हैंडशेक हैशिंग के लिए Noise द्वारा आंतरिक रूप से उपयोग किया जाता है।
उपसर्गप्रकारचरणविवरण
0x00PROBEहोल पंचNAT पिनहोल खोलने के लिए हर 200ms पर भेजा जाता है
0x01ACKहोल पंचPROBE की प्राप्ति की पुष्टि करता है
(कोई नहीं)हैंडशेकहैंडशेकरॉ Noise-एन्क्रिप्टेड हैंडशेक पेलोड
0x02Messageट्रांसपोर्टएन्क्रिप्टेड चैट संदेश
0x03Keepaliveट्रांसपोर्टएन्क्रिप्टेड खाली पेलोड (हार्टबीट)
क्रैटउद्देश्य
snowNoise प्रोटोकॉल फ्रेमवर्क (हैंडशेक + ट्रांसपोर्ट एन्क्रिप्शन)
x25519-dalekX25519 कुंजी उत्पादन और व्युत्पत्ति
ratatuiटर्मिनल UI फ्रेमवर्क
crosstermटर्मिनल ईवेंट हैंडलिंग
clapCLI तर्क पार्सिंग + शेल पूर्णता
tungsteniteWebSocket क्लाइंट/सर्वर
tracingसंरचित लॉगिंग