4 पॉइंट द्वारा GN⁺ 2023-08-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • arpchat एक ऐसा टूल है जिसे ARP का उपयोग करके चैट ऐप के रूप में बनाया गया है; ARP का इस्तेमाल कंप्यूटर एक ही नेटवर्क पर मौजूद दूसरे कंप्यूटरों के MAC address खोजने के लिए करते हैं
  • यह प्रोजेक्ट उस उपयोग-स्थिति से प्रेरित है जिसमें client-isolated network पर दोस्तों के साथ चैट करना चाहा गया
  • ARP के ऊपर एक सरल general-purpose transport protocol लागू किया गया है, जिससे कई दसियों हज़ार अक्षरों तक के संदेश भेजे जा सकते हैं, और इसमें थोड़ी compression भी इस्तेमाल होती है
  • इसमें presence discovery और heartbeat system है, जो ऑनलाइन उपयोगकर्ताओं की सूची अपडेट करने के साथ-साथ जुड़ने और निकलने की सूचना देता है
  • इंस्टॉलेशन के लिए binary releases page से डाउनलोड की जा सकती है
    • Windows पर npcap की आवश्यकता हो सकती है, और इंस्टॉल करते समय Install Npcap in WinPcap API-compatible Mode विकल्प चुनना होगा
    • Linux पर sudo setcap CAP_NET_RAW+ep /path/to/arpchat के जरिए network permission देनी पड़ सकती है
  • टर्मिनल में binary चलती है, और अगर भेजा गया संदेश अपनी ही स्क्रीन पर दिखे तो इसे सही तरह से काम कर रहा माना जा सकता है
  • बिल्ड का परीक्षण नवीनतम unstable Rust पर किया गया है, और Windows बिल्ड के लिए WinPcap Developer's Pack तथा LIB environment variable को WpdPack/Lib/x64/ फ़ोल्डर पर सेट करने की प्रक्रिया आवश्यक है

1 टिप्पणियां

 
GN⁺ 2023-08-11
Hacker News की राय
  • इसे बनाने वाला मैं ही हूं। आज HN पर जो दूसरी चीज़ डाली थी, वह भी मैंने ही बनाई थी (https://news.ycombinator.com/item?id=37062422), और ArpChat को भी साथ में चढ़ा देखकर काफी अजीब/दिलचस्प लगा। शायद किसी ने मेरी प्रोफाइल देखी होगी
    यह सच में मजेदार प्रोजेक्ट था, और मैंने networking के बारे में बहुत कुछ सीखा
    कुछ समय पहले इसे पूरी तरह offline माहौल में सच में इस्तेमाल करने का मौका भी मिला था, और मजा आया। हालांकि बाद में एक बड़ा bug मिला, जो काफी ज्यादा delay पैदा कर रहा था। उसे ठीक कर दिया है, लेकिन अभी नया build artifact upload नहीं कर पाया हूं, इसलिए अगर आप इसे असली माहौल में test करने की सोच रहे हैं तो source से खुद build करना बेहतर होगा। मजे के लिए username colors और message time भी जोड़ दिए हैं। वादा है, जल्द ही नया release डालूंगा
    अगर रुचि हो, तो करीब 1 साल पहले मैंने ArpChat कैसे काम करता है इस पर एक लेख भी लिखा था: https://kognise.dev/writing/arp

    • इसे देखते हुए मैं लगातार मुस्कुरा रहा हूं। ArpChat network admins को heart attack देने की पूरी संभावना रखता है, लेकिन idea खुद में सच में शानदार है। मैं भी वही किस्म का था जो मजे के लिए OSI layers की किताब पढ़ता था, इसलिए relate कर सकता हूं
      code के साथ ऐसे ही खेलते रहो। यह कुछ-कुछ वैसा है जैसा justine tunney ने https://justine.lol/ape.html जैसे कामों में दिखाया है। ऐसे क्षेत्र में गहराई तक जाना जिसे कम ही लोग ठीक से समझते हैं—जैसे compiler binary formats की बारीकियां—फिर “क्या सभी binary formats को एक meta format में जोड़कर सच में सब पर run कराया जा सकता है?” जैसा पागल सवाल पूछना, और फिर ऐसी चीज बना देना जो सच में चलती है
    • README के नीचे वाला banner सच में मजेदार और खूबसूरत है। शानदार काम
    • क्या उम्मीद है कि यह Linux पर भी चलेगा?
      # sudo getcap ./arpchat
      ./arpchat cap_net_raw=ep
      “error getting channel, might be missing permissions” मिल रहा है
      अतिरिक्त: यह error setcap configuration से नहीं, बल्कि arpchat से आ रहा है
  • मुझे बिल्कुल ऐसी ही चीज चाहिए थी। data link layer की शरारत!
    जिन लोगों को Address Resolution Protocol (ARP) नहीं पता, उनके लिए बहुत मोटे तौर पर: यह MAC address (जिसे Ethernet इस्तेमाल करता है) और IP address (जिसे Internet इस्तेमाल करता है) के बीच की missing link है। route से दिखने वाली IP routing table यह तय करती है कि packet आगे किस IP address पर भेजना है, और arp से दिखने वाला ARP cache उस IP से जुड़े MAC address को तय करता है। आम तौर पर यह router का local IP address होता है
    आजकल सिर्फ यह जानना भी कि ARP मौजूद है, थोड़ा गैर-विशेषज्ञों वाला रहस्यमय ज्ञान माना जाता है, और IPv6 वाला इसका भाई Neighbor Discovery Protocol तो और भी ज्यादा। आधुनिक cloud-based deployments में भले ही इसे अक्सर सीधे न छूना पड़े, लेकिन इसके अस्तित्व की जानकारी होने से पूरे network stack को ऊपर से देखने की समझ कहीं ज्यादा पूरी हो जाती है

    • ARP को गूढ़ ज्ञान कहना मुझे सही नहीं लगता। networking करने वालों के लिए ARP को समझना, या कम से कम उसके बारे में जानना, आज भी लगभग जरूरी है। arping यह जांचने में बहुत उपयोगी है कि उसी network segment में कोई device चालू है लेकिन ICMP ping का जवाब नहीं दे रहा
      tcpdump या Wireshark dump देखते हुए आप बहुत जल्द इससे टकराएंगे ही। हालांकि software engineers को cloud और traditional networks के काफी अलग होने की वजह से, applications की बजाय home network debug करते समय इससे पहले सामना हो सकता है
    • आजकल शायद ज्यादा आम तौर पर 802.11 होगा। फिर भी जब host को IP लेना होता है, तो किसी भी data link layer protocol में ARP इस्तेमाल हो सकता है: https://en.wikipedia.org/wiki/Data_link_layer
    • अगर सच में ARP अनजान होता जा रहा है तो यह अफसोस की बात है। यह कल्पना करना मुश्किल है कि कोई IP networks कैसे काम करते हैं यह समझने का दावा करे और ARP से न्यूनतम परिचय भी न हो
    • fixed IP address वाले network के भीतर दूसरे computer के ARP entry को hardcode भी किया जा सकता है
  • ARP में arbitrary payload डाला जा सकता है, इसका दुरुपयोग करना मजेदार है, लेकिन networking intro के नजरिए से फिर कहें तो लेखक जिस मुख्य बात पर निर्भर है वह यह सरल fact है कि switch ff:ff:ff:ff:ff:ff की ओर जाने वाले packets को पूरे broadcast domain में flood करता है
    superuser privileges या raw packet permissions के बिना भी L3 broadcast address पर packets भेजने से आम तौर पर L2 में flooding होती है, इसलिए वैसा ही message propagation बनाया जा सकता है। यानी broadcast address पर ping करना मजेदार है
    ARP इस्तेमाल करने का कोई खास फायदा नहीं है। साथ ही कई modern switches ARP packets को monitor करने की सुविधा रखते हैं, इसलिए बड़ी मात्रा में fake ARP traffic बहाने से असल में खराब असर पड़ सकता है। फिर भी यह मजेदार काम है, और मुझे अपने सीखने के दिनों में बनाई गई शरारतें याद आ गईं। निजी तौर पर मैं इस उद्देश्य के लिए ICMP का दुरुपयोग करता, और यह आगे के development की दिशा भी हो सकती है। मजेदार project के लिए तालियां

    • एक और अहम networking intro principle भी इस्तेमाल हो रहा है: आखिरकार सब कुछ numbers ही है
      ARP, DNS, HTTP, TLS एक तरफ वे protocols हैं जिन्हें हम सोचते हैं, लेकिन साथ ही वे सब सिर्फ numbers भी हैं। ARP भी HTTP जैसी ही number space तक पहुंचता है। ऐसा नहीं है कि केवल UDP 11-bit bytes इस्तेमाल करता है, या केवल DNS के लिए कोई खास CPU instruction है। आखिर में सब कुछ numbers है। अंत में आप जो numbers चाहें wire में धकेल सकते हैं, और बाकी दुनिया वे numbers लेकर अपना-अपना काम करती रहती है
    • मैंने जिन पहले amplification DDoS attacks को देखा उनमें से एक 1990s में था: victim host address को source के रूप में spoof करके भोले-भाले campus network के broadcast address पर ping भेजना
      आज के समय में यह काम नहीं करना चाहिए, लेकिन उस समय naive TCP/IP implementations—यानी काफी सारे—खुशी-खुशी इसमें शामिल हो जाते थे
    • क्या आप https://hpbn.co/ की बात कर रहे हैं?
  • मुझे ज़्यादातर operating systems में default रूप से built-in protocols का दुरुपयोग करना पसंद है। मुझे ऐसा cross-platform GUI/CLI messaging system नहीं मिला जिसके लिए अलग client software install न करना पड़े, इसलिए मैंने एक मूर्खतापूर्ण नकली Samba share बनाया था जिसमें Finder.app/Explorer.exe/Gnome/KDE में messages देखे जा सकते थे
    local network पर netcat call भी ठीक से नहीं चलती थी, और broadcast करने के लिए OS-specific flags में भी फर्क था। तरीका यह था कि file browser में Samba share message देखें, उसे click करें, फिर filename बदलकर 3-line “bulletin board” update करें
    https://github.com/jedahan/samba-haiku/blob/master/index.js
    यह भी असल में Wi-Fi SSID का इस्तेमाल करके captive portal haiku बनाने वाली चीज़ का reimplementation था
    https://github.com/jedahan/haiku-wifi

  • यह उम्मीद से ज़्यादा मज़ेदार हो सकता है। हम बड़े vendors के hardware पर VLAN का इस्तेमाल करके network अलग कर रहे थे, लेकिन पाया कि ज़्यादातर मामलों में VLAN तो काम कर रहा था, पर ARP traffic leak हो रहा था
    machines को अपना सारा traffic router के ज़रिए भेजना चाहिए था, लेकिन कभी-कभी वे ऐसे ARP responses देख लेती थीं जिन्हें उन्हें नहीं देखना चाहिए था, और मान लेती थीं कि दूसरी machine तक सीधे पहुंचा जा सकता है। नतीजा यह हुआ कि ARP cache entry expire होने तक traffic भेजा नहीं जा सकता था, जो काफी सिरदर्द था। vendor इतना बड़ा था कि उसे परवाह नहीं थी, और bug fix करने में भी उसने कोई रुचि नहीं दिखाई
    कुछ खास हालात में यह chat app VLAN को पार भी कर सकती है

    • इसी वजह से यह दिलचस्प है। अगर arbitrary payload वाले ARP messages भेजे और receive किए जा सकें, तो VLAN troubleshooting या दूसरी L2 connectivity checks निश्चित रूप से आसान हो जाएंगी
    • मेरे tests के हिसाब से यह काफी चीज़ों को पार कर सकता है
  • मेरी पत्नी, बच्चे और मैं ज़्यादातर घर से काम या पढ़ाई करते हैं, इसलिए अक्सर अलग-अलग कमरों में होते हैं। ज़रूरत पड़ने पर एक-दूसरे को messages भेजने के लिए हम BeeBEEP इस्तेमाल करते हैं। server की ज़रूरत नहीं है और Linux client व Windows client दोनों हैं, यही निर्णायक बात थी
    यह काफी अच्छी तरह काम करता है, लेकिन laptop के sleep से जागने के बाद LAN पर बाकी लोगों को फिर से देखने के लिए कभी-कभी restart करना पड़ता है। और tray icon से सीधे किसी खास व्यक्ति के लिए message window नहीं खोल पाना मेरी लगभग अकेली शिकायत है। मज़ेदार बिल्ली की photos copy-paste भी कर सकते हैं, और file transfer जैसी कुछ ऐसी features भी हैं जिन्हें मैं इस्तेमाल नहीं करता। यह paid ad नहीं है, बस मैं लंबा बोल गया
    https://www.beebeep.net/

    • मेरे हिसाब से इस project की खूबसूरती messaging में नहीं, बल्कि low-level network protocol का दुरुपयोग करके client isolation जैसी सीमाओं से बाहर निकलने में है
  • high school में मैंने net send से यही किया था और डांट पड़ी थी

    • मैंने वह trick ढूंढकर कुछ दोस्तों को दिखाई, लेकिन राज़ ज़्यादा देर तक नहीं रहा। देखते ही देखते दोस्तों से भी बड़ा, और मेरा दोस्त न होने वाला group computer lab class में cheating के लिए इसका इस्तेमाल कर रहा था। खुली cheating भी खटक रही थी, और यह बात भी थोड़ी बुरी लगी कि जिन लोगों को मैं खास पसंद नहीं करता था वे मेरी खोज से फायदा उठा रहे थे
      इसलिए मैंने system administrator username spoof किया (Win9x में यह मुश्किल नहीं था), और एक सख्त warning message भेजा। messages अचानक पूरी तरह रुक गए, तो लगता है वे काफी घबरा गए थे
    • write नमस्ते कह रहा है
      https://en.wikipedia.org/wiki/Write_(Unix)
    • मुझे याद है कि net send के लिए domain से connected होना ज़रूरी था, इसलिए शायद यह ARP इस्तेमाल नहीं करता होगा
    • अगर network analyzer गलत हो या अजीब ARP packets में रुचि न रखता हो, तो शायद ARP messaging detect करना मुश्किल रहा होगा
    • वह भी एक दौर था। university में गलती से—या कहें जानबूझकर—पूरे domain को message भेज दिया, और IT teachers ने तुरंत हम troublemakers की तरफ देखा
  • बहुत शानदार। हालांकि TCP/IP OSI model को follow नहीं करता, इसलिए OSI की सूक्ष्म distinctions को जस का तस लागू करना मुश्किल है
    ARP को practical तौर पर Stevens वाले TCP/IP model के layer 2.5 के रूप में define किया जा सकता है, इसलिए इसे 2.5 कहना सबसे उचित लगता है। और ARP frames route नहीं होते, इसलिए यह स्पष्ट रूप से L3 नहीं है

  • उस दौर में जब IPv4 NAT लगभग standard था—आज भी कुछ हद तक है, लेकिन अब IPv6 और CGNAT भी हैं—मैंने NATChat नाम की चीज़ बनाई थी
    मूल रूप से यह public IPv4 address के आधार पर chat rooms बनाता था, ताकि उसी network के किसी भी व्यक्ति से chat की जा सके। office में दूसरों के साथ इस्तेमाल करने के लिए यह काफी ठीक था। और office भी उस समय मौजूद चीज़ हुआ करती थी

  • C++ में बनी एक मिलती-जुलती चीज़ भी है: https://github.com/gbonacini/arpchatcpp