7 पॉइंट द्वारा GN⁺ 2025-12-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Snitch मौजूदा ss या netstat की तुलना में इंसानों के लिए अधिक पढ़ने योग्य नेटवर्क कनेक्शन निरीक्षण टूल है, जो टर्मिनल UI (TUI) और स्टाइल की गई टेबल फ़ॉर्मैट को सपोर्ट करता है
  • यह कनेक्शन स्थिति को रियल-टाइम इंटरैक्टिव स्क्रीन या एकबारगी आउटपुट होने वाले टेबल फ़ॉर्मैट में दिखाता है, और TCP/UDP, listening, connected state जैसी कई फ़िल्टरिंग देता है
  • इसमें JSON·CSV आउटपुट, DNS/सेवा-नाम resolution, process monitoring और termination, तथा auto update जैसी सुविधाएँ शामिल हैं
  • यह Homebrew, Go, Nix, Arch Linux, Shell Script, Binary सहित कई installation methods को सपोर्ट करता है, और macOS में Gatekeeper warning को अपने-आप हटाने की सुविधा भी शामिल है
  • यह developers और system administrators के लिए नेटवर्क कनेक्शनों को सहज रूप से मॉनिटर करने और script automation में उपयोग करने के लिए एक उपयोगी टूल है

अवलोकन

  • Snitch एक ऐसा टूल है जो नेटवर्क कनेक्शनों को विज़ुअली एक्सप्लोर करने देता है, और इसे ss या netstat के विकल्प के रूप में डिज़ाइन किया गया है
  • यह TUI इंटरफ़ेस या स्टाइल की गई टेबल आउटपुट के माध्यम से कनेक्शन स्थिति दिखाता है
  • यह Linux और macOS पर चलता है, और root privileges या CAP_NET_ADMIN permission की आवश्यकता हो सकती है

इंस्टॉलेशन के तरीके

  • Homebrew: brew install snitch कमांड से इंस्टॉल किया जा सकता है
  • Go: go install github.com/karol-broda/snitch@latest
  • Nix/NixOS: nix-env -iA nixpkgs.snitch या flake input के रूप में जोड़ा जा सकता है
  • Arch Linux (AUR) : yay -S snitch-bin या paru -S snitch-bin
  • Shell Script: curl -sSL ... | sh कमांड से इंस्टॉल करें, डिफ़ॉल्ट path ~/.local/bin या /usr/local/bin है
    • macOS में install script अपने-आप quarantine attribute हटाती है
  • Binary डाउनलोड: GitHub Releases पर Linux (.tar.gz, .deb, .rpm, .apk) और macOS (.tar.gz) versions उपलब्ध हैं

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

  • snitch चलाने पर इंटरैक्टिव TUI शुरू होता है
  • snitch -l सिर्फ listening sockets दिखाता है, और snitch ls टेबल फ़ॉर्मैट में आउटपुट देकर बंद हो जाता है
  • snitch ls -t -e सिर्फ connected TCP sessions दिखाता है, और snitch ls -p parseable simple output देता है

मुख्य कमांड

  • snitch / snitch top : रियल-टाइम में अपडेट होने वाली कनेक्शन सूची दिखाता है
    • विकल्प: -l(listening), -t(TCP), -e(connected), -i(refresh interval)
    • key bindings: j/k move, t/u TCP·UDP switch, K process terminate, / search, q quit आदि
  • snitch ls : एकबारगी टेबल आउटपुट, और अगर आउटपुट terminal height से बड़ा हो तो अपने-आप pager का उपयोग करता है
    • आउटपुट फ़ॉर्मैट: डिफ़ॉल्ट table, -o json, -o csv, -p(simple), --no-headers(headers हटाएँ)
  • snitch json : JSON फ़ॉर्मैट आउटपुट, जिससे scripts में उपयोग किया जा सकता है
  • snitch watch : निश्चित अंतराल पर JSON frames stream करता है
  • snitch upgrade : version check और auto update

फ़िल्टर और resolution विकल्प

  • सामान्य flags: -t(TCP), -u(UDP), -l(listening), -e(connected), -4(IPv4), -6(IPv6)
  • DNS और service-name resolution:
    • --resolve-addrs, --resolve-ports, --no-cache विकल्प उपलब्ध हैं
    • parallel DNS lookups और caching की जाती है, और --no-cache से cache को disable किया जा सकता है
  • विस्तृत फ़िल्टरिंग: process name, port, state आदि को key=value फ़ॉर्मैट में निर्दिष्ट किया जा सकता है
    • उदाहरण: snitch ls proto=tcp state=listen, snitch ls proc=nginx

आउटपुट फ़ॉर्मैट

  • डिफ़ॉल्ट टेबल आउटपुट: process name, PID, protocol, state, local address·port दिखाता है
  • simple output (-p) : parseable text फ़ॉर्म
  • JSON/CSV आउटपुट: script automation और log analysis में उपयोगी

कॉन्फ़िगरेशन और environment variables

  • कॉन्फ़िगरेशन फ़ाइल: ~/.config/snitch/snitch.toml
    • numeric, dns_cache, theme(auto/dark/light/mono) सेट किए जा सकते हैं
  • environment variables:
    • SNITCH_THEME, SNITCH_RESOLVE, SNITCH_DNS_CACHE, SNITCH_NO_COLOR, SNITCH_CONFIG आदि समर्थित हैं

सिस्टम आवश्यकताएँ

  • Linux या macOS environment आवश्यक है
  • Linux: /proc/net/* से डेटा पढ़ता है, और पूरी process information के लिए root या CAP_NET_ADMIN permission चाहिए
  • macOS: system API का उपयोग करता है, और पूरी process information के लिए sudo चाहिए

1 टिप्पणियां

 
GN⁺ 2025-12-25
Hacker News की राय
  • lsof और ss के default settings बहुत असुविधाजनक हैं
    ss अपने default output में send/receive queue size जैसी कम ही ज़रूरत पड़ने वाली जानकारी तो दिखाता है, लेकिन socket किस application का है यह नहीं दिखाता
    और यह default रूप से listening sockets को छोड़ देता है, जबकि ऐसे टूल का मुख्य उपयोग तो वही देखना होता है
    मुझे पता है कि अच्छे defaults चुनना मुश्किल है, लेकिन यह लगभग हर चीज़ गलत चुनने का मामला है
    • पूरी तरह सहमत। Unix tools में लंबे समय में उचित defaults बनाए रखना मुश्किल होने की एक संरचनात्मक सीमा है
      समय के साथ users और use cases बदलते हैं, इसलिए defaults भी बदलने चाहिए, लेकिन Unix tools में output format ही API बन जाता है, इसलिए उसे बदलने पर backward compatibility की समस्या आती है
      उदाहरण के लिए ps aux लंबे process names को लगभग 7 अक्षरों तक काट देता है, उसकी वजह भी यही है
      संबंधित लेख: sh and the separation of data and representation
    • अब UX की समझ कहीं ज़्यादा गहरी हो चुकी है। लगता है 70 के दशक के developers जब ss या lsof बना रहे थे, तब उन्हें ऐसे usability issues की उतनी समझ नहीं थी
    • आज के fd, ag, rg जैसे नई पीढ़ी के CLI tools भी इसी तरह की समस्या झेलते हैं
      मुझे लगता है कि speed या features से कहीं ज़्यादा सहज usability महत्वपूर्ण है
    • netstat -utan और ss -utan लगभग एक जैसी जानकारी दिखाते लगते हैं
  • शीर्षक देखकर पहले मुझे लगा यह Mac के नेटवर्क मॉनिटरिंग टूल Little Snitch के बारे में है
    नाम टकरा रहा है, इसलिए कोई दूसरा नाम रखना बेहतर हो सकता है
    Little Snitch आधिकारिक साइट
    • Linux के लिए OpenSnitch नाम का एक clone भी है
    • मुझे नाम ठीक लगता है। सिर्फ इसलिए कि पहले से Little Snitch है, इसे बदलना ज़रूरी नहीं लगता
    • मुझे नहीं लगता नाम बदलने की ज़रूरत है। Little Snitch से इसका उपयोग पूरी तरह अलग है
      Snitch बस ss/netstat data को terminal में पढ़ने लायक तरीके से दिखाने वाला टूल है
    • वाह, बढ़िया है। सोच रहा हूँ क्या Windows या Linux के लिए कोई alternative tool भी है
    • मैंने भी पहले यही सोचा था। यह नाम थोड़ा शर्मनाक-सा लगता है
      उसी IT क्षेत्र में पहले से मिलते-जुलते नाम का टूल मौजूद है, फिर वही नाम दोबारा क्यों लेना, यह समझ नहीं आता
  • डेमो का recording-as-code तरीका दिलचस्प है
    डेमो लिंक
    • धन्यवाद :) दूसरे projects में ऐसा approach मैंने लगभग नहीं देखा
  • आजकल TUI-आधारित tools बढ़ रहे हैं, यह मुझे बहुत अच्छा लग रहा है। यह project भी बढ़िया दिख रहा है, इसलिए इसे ज़रूर आज़माने का सोच रहा हूँ
    • लेकिन सोचता हूँ कि क्या TUI की accessibility GUI जितनी अच्छी हो सकती है
      GUI libraries में visually impaired users आदि के लिए कई सुविधाएँ होती हैं, जबकि TUI में वह हिस्सा कमज़ोर हो सकता है
  • मैं ss का आदी हो चुका हूँ और उसे ठीक से इस्तेमाल करता हूँ। लेकिन मैं send/receive queue के numbers नहीं देखना चाहता
    screen width बहुत ज़्यादा घिर जाती है, इसलिए laptop पर vertical split में यह लगभग फिट ही नहीं होता
    मेरा Snitch install करने का इरादा नहीं है। ss पहले से हर server पर installed होता है, और मुझे TUI की ज़रूरत नहीं है
    Snitch personal use या workstation use के लिए ठीक हो सकता है, लेकिन servers पर ss ही standard है
    • सही बात। server पर ss पहले से installed होता है, इसलिए वही इस्तेमाल किया जा सकता है
      Snitch workstation या homelab debugging के लिए ज़्यादा उपयुक्त है
      send/receive queue अभी नहीं दिखती, लेकिन बाद में compact mode या toggle के रूप में जोड़ने की योजना है
  • देखने में ठीक है, लेकिन मैं बहुत समय से iptraf-ng इस्तेमाल करता आया हूँ और अब भी वह थोड़ा बेहतर लगता है
    क्या demo video में कोई ऐसी feature थी जो मुझसे छूट गई हो?
    • धन्यवाद! Snitch traffic monitoring से ज़्यादा ss/netstat replacement के करीब है
      traffic monitoring feature योजना में है, लेकिन अभी implement नहीं हुई है
  • नाम पसंद नहीं आया, लेकिन TUI में connection state monitor करना वाकई बहुत जँचता है
    • धन्यवाद। जानना चाहूँगा कि नाम का कौन-सा हिस्सा आपको पसंद नहीं आया
  • Go से install करने की कोशिश की, लेकिन नीचे की error आई
    go install github.com/karol-broda/snitch@latest
    go: github.com/karol-broda/snitch@latest: version constraints conflict:
    module declares its path as: snitch
    but was required as: github.com/karol-broda/snitch
    
    • module declaration में URL की जगह सिर्फ नाम लिखने की वजह से यह समस्या हुई थी। कुछ घंटे पहले इसे ठीक कर दिया गया
      यह दिलचस्प है कि Go module barename की अनुमति देता है। निजी projects में भी आखिरकार URL ही लिखना पड़ता है, इसलिए मुझे यह अच्छा pattern नहीं लगता
    • fix हो चुका है, लेकिन अभी release में शामिल नहीं हुआ है
      commit लिंक
    • अब fix करके release भी कर दिया है। @latest से build करने पर यह ठीक से काम करेगा
  • मैं हमेशा सोचता था कि ऐसे tools कुशल attackers के लिए कितने उपयोगी होंगे
    उदाहरण के लिए, अगर malware को इस तरह बनाया जाए कि वह कुछ देर इंतज़ार करे या केवल तब C&C से बात करे जब user network activity कर रहा हो, तो शायद उसका पता लगाना मुश्किल होगा
    • कम से कम ऐसे tools को /proc सीधे parse नहीं करना चाहिए
      LD_PRELOAD rootkits libc function outputs में हेरफेर करके अपनी activity छिपा सकते हैं
      ss शायद थोड़ा ज़्यादा भरोसेमंद है, और Snitch Go में लिखा गया है इसलिए libc का उपयोग नहीं करता, इस वजह से LD_PRELOAD rootkits के खिलाफ अधिक मजबूत हो सकता है
      लेकिन ऐसे tools malicious traffic detection के लिए नहीं, बल्कि local debugging के लिए होते हैं
      संदर्भ सामग्री: decloaker, arxiv paper, ACM paper, proc structure explanation
    • सही। Snitch security detection के लिए नहीं, बल्कि local debugging/inspection के लिए है
      कुशल attacker तो वैसे भी normal traffic में घुलमिल कर काम कर सकता है
    • ऐसे tools adversarial environments के लिए नहीं होते
      असली attacker response वाले network tools भी परफेक्ट नहीं होते (खोज शब्द: bro vantage point problem)
  • अच्छा होगा अगर हर socket/process के लिए current और cumulative transfer rate दिखाने की सुविधा हो
    अभी मैं jnettop इस्तेमाल करता हूँ, लेकिन उसका UI पसंद नहीं है
    • वह feature भविष्य के version में जोड़ने की योजना है