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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
binviz — बाइनरी विज़ुअलाइज़र और ट्राइएज टूल — एक साझा एड्रेस-स्पेस मॉडल पर एन्ट्रॉपी, बाइट-क्लास और हिल्बर्ट सतहें, डॉट प्लॉट और कंट्रोल-फ्लो ग्राफ़। | Kitploit
उपकरण/GitHubGitHub/karankantaria/binviz
स्थैतिक विश्लेषणरिवर्स इंजीनियरिंगफोरेंसिकफज़िंगमालवेयर विश्लेषणबाइनरी विश्लेषणलर्निंग और शिक्षा
GitHubkarankantaria/binviz

binviz

बाइनरी विज़ुअलाइज़र और ट्राइएज टूल — एक साझा एड्रेस-स्पेस मॉडल पर एन्ट्रॉपी, बाइट-क्लास और हिल्बर्ट सतहें, डॉट प्लॉट और कंट्रोल-फ्लो ग्राफ़।

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
वेबसाइट
साझा करें

binviz

बाइनरी विज़ुअलाइज़र और ट्रायेज टूल: एक साझा एड्रेस-स्पेस मॉडल पर जुड़े इंटरैक्टिव दृश्य (एन्ट्रॉपी, हिस्टोग्राम, इमेज/डॉट-प्लॉट सतहें, कंट्रोल-फ्लो ग्राफ़)।

root@kitploit:~
pipx install binviz && binviz serve

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

एक फ़ाइल खोलें और हर दृश्य एक ही एड्रेस स्पेस को देख रहा है। एक में रेंज चुनें और बाकी उसका अनुसरण करते हैं — उद्देश्य यह है कि "यह क्षेत्र क्या है" का उत्तर एक साथ कई तरीकों से देखकर पाया जाए।

  • इसे मैप करें। binviz model LIEF के माध्यम से ELF/PE/Mach-O को क्षेत्रों, प्रतीकों और ऑफ़सेट↔वर्चुअल-एड्रेस मैपिंग में पार्स करता है, जिसमें गैप और ओवरले शामिल होते हैं। दोषपूर्ण इनपुट विफल होने के बजाय रॉ मॉडल पर वापस आ जाता है।
  • देखने लायक हिस्से खोजें। विंडोड एन्ट्रॉपी और अन्य नामित सिग्नल, बाइट-क्लास और हिल्बर्ट सतहें, और थ्रेशोल्ड के विरुद्ध विंडो वर्गीकरण जो मापे गए हैं ग्राउंड-ट्रुथ कॉर्पस से, न कि चुने गए (ARCHITECTURE.md §2.1)। पैक्ड, एन्क्रिप्टेड, कोड और पैडिंग एक जैसे नहीं दिखते।
  • एन्कोडिंग पहचानें। बिग्राम और स्पार्स-ट्रिग्राम हिस्टोग्राम, दोहराव और स्व-समानता के लिए डॉट प्लॉट, और 15 पैक्ड पिक्सेल प्रारूपों और 24 बायर मोड पर एक इमेज दृश्य — स्ट्राइड सुझावक के साथ, क्योंकि गलत रो स्ट्राइड एक फ़ोटोग्राफ़ को विकर्ण शोर में बदल देता है और आप निष्कर्ष निकालते हैं कि कोई फ़ोटोग्राफ़ नहीं है।
  • कोड पढ़ें। लीनियर स्वीप और रिकर्सिव डिसेंट द्वारा Capstone डिकोड (objdump के विरुद्ध विभेदक रूप से परीक्षण किया गया), जंप टेबल सहित पाँच-स्तरीय फ़ंक्शन-खोज कैस्केड, और एक वर्कर में लेआउट किए गए कंट्रोल-फ्लो ग्राफ़ — पुनर्प्राप्त सीमा की अनिश्चितता को छिपाने के बजाय खींचा जाता है।
  • निर्णय प्राप्त करें। binviz triage बताता है कि फ़ाइल कैसी दिखती है और क्यों; UI में प्रत्येक निष्कर्ष उन बाइट्स पर क्लिक करता है जिनसे यह प्राप्त हुआ था।

UI पाँच वर्कस्पेस है — Overview, Bytes, Patterns, Code, और All — एक ही चयन पर। केवल स्थैतिक विश्लेषण: नमूनों को पार्स किया जाता है, कभी निष्पादित नहीं किया जाता।

स्क्रीनशॉट

Overview workspace

Bytes workspace

Patterns workspace

Code workspace

प्लेट्स

उसी कोड द्वारा रेंडर किया गया जो UI चित्रित करता है, सीधे CLI से — python docs/make_plates.py के साथ पुनर्जनित करें।

एक स्थैतिक बाइनरीवही प्रोग्राम, UPX-पैक्ड
Hilbert byte-class, staticHilbert byte-class, packed
कोड, स्ट्रिंग्स और पैडिंग दृश्य क्षेत्रों में अलग हो जाते हैं।संरचना एक समान शोर में ढह जाती है — पैकिंग का संकेत।
Entropy, staticEntropy, packed
विंडोड एन्ट्रॉपी बैंडेड और कम रहती है।सपाट और उच्च, अनपैकिंग स्टब तक।
सही रो स्ट्राइडगलत रो स्ट्राइड
RGB bars, correct strideRGB bars, wrong stride

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

ARCHITECTURE.md बताता है कि यह कैसे बनाया गया है: क्या शामिल है, वह ब्रांडिंग जो हर सतह विरासत में लेती है, वे परंपराएँ जिनका एक नई स्क्रीन को पालन करना चाहिए, और वे सीमाएँ जो जानबूझकर हैं। SECURITY.md सुरक्षा स्थिति है।

त्वरित आरंभ

root@kitploit:~
python -m venv .venv
# -c उन सटीक संस्करणों को पिन करता है जिनके विरुद्ध सुइट हरा है; pyproject.toml
# रेंज प्रकाशित करता है, इसलिए इसके बिना आपको वही मिलता है जो आज हल होता है
.venv/Scripts/pip install -e ".[dev]" -c constraints-dev.txt   # POSIX: .venv/bin/pip

# ग्राउंड-ट्रुथ कॉर्पस बनाएं (ziglang pip पैकेज से zig cc का उपयोग करता है;
# PATH में UPX चाहिए, $UPX में, या corpus/tools/upx-*/ में अनज़िप किया हुआ)
make -C corpus                            # या: python corpus/build.py

# थ्रेशोल्ड मापे जाते हैं, कभी हार्डकोड नहीं (ARCHITECTURE.md §2.1 देखें)
python corpus/calibrate.py                # corpus/calibration.json लिखता है

pytest                                    # कार्यात्मक सुइट
pytest -m perf -s                         # 100 MB प्रदर्शन लक्ष्य

binviz probe  corpus/out/hello_O2
binviz model  corpus/out/hello_upx
binviz signal corpus/out/hello_upx --name entropy_4096 --png out.png
binviz hist   corpus/out/ramp16.bin --n 2 --dtype u16le --png bigram.png

# सतहें: -p सतह पैरामीटर पास करता है
binviz surface corpus/out/hello_static --name hilbert -p mode=byteclass --png h.png
binviz surface corpus/out/rgb_raw.bin  --name image -p mode=rgb8 -p width=320 --png i.png
binviz surface corpus/out/repeats.bin  --name dotplot -p mode=exact --png d.png
binviz stride  corpus/out/bayer_raw.bin --mode bayer_RGGB_RGB_12

# कोड
binviz disasm    corpus/out/hello_O2 --limit 20
binviz functions corpus/out/hello_static --sort size
binviz cfg       corpus/out/hello_O2 --func main --dot main.dot

# निर्णय, और क्यों
binviz triage corpus/out/hello_upx

सर्वर चलाना

root@kitploit:~
binviz serve                              # 127.0.0.1:8000

यह एक सत्र टोकन वाला URL प्रिंट करता है — उसे खोलें। हर /api रूट को टोकन चाहिए, क्योंकि "यह केवल localhost पर सुनता है" किसी अन्य टैब में एक वेब पेज के विरुद्ध बचाव नहीं है, जो किसी भी अन्य ओरिजिन की तरह 127.0.0.1 तक पहुँचता है। SECURITY.md में तर्क है।

फ़ाइल एक्सेस --root (डिफ़ॉल्ट: कार्यशील निर्देशिका) तक सीमित है, इसलिए इसके बाहर के पथ अस्वीकार कर दिए जाते हैं।

सीमाएँ

सभी चार में एक फ़्लैग और एक पर्यावरण चर है, और सभी चार एक स्थानीय कॉलर को आपके इच्छित से अधिक उपभोग करने से रोकने के लिए मौजूद हैं। डिफ़ॉल्ट एक लैपटॉप के लिए चुने गए हैं; यदि आपकी मशीन बड़ी है तो उन्हें बढ़ाएँ।

फ़्लैगEnvडिफ़ॉल्टयह क्या सीमित करता है
--max-cache BYTESBINVIZ_MAX_CACHE5 GiBकैश किए गए विश्लेषणों का कुल आकार। इससे अधिक होने पर, सबसे कम उपयोग किए गए प्रविष्टियाँ हटा दी जाती हैं — कभी भी वह नहीं जो विश्लेषित या देखा जा रहा है।
--max-upload BYTESBINVIZ_MAX_UPLOAD8 GiBस्वीकृत सबसे बड़ा अपलोड।
--max-analyses N—4एक साथ विश्लेषण; इससे अधिक पर /api/open 503 लौटाता है।
--root DIR—cwdवह निर्देशिका जिससे सर्वर फ़ाइलें पढ़ सकता है।

विश्लेषण ~/.cache/binviz (या $BINVIZ_CACHE) के अंतर्गत कैश किए जाते हैं, सामग्री हैश द्वारा कुंजीबद्ध, इसलिए बाइनरी को फिर से खोलना तुरंत होता है। यदि आप उनमें से अधिक रखना चाहते हैं तो --max-cache बढ़ाएँ; कैश किसी भी समय हाथ से हटाना सुरक्षित है — सबसे खराब स्थिति यह है कि अगला खोलना फिर से विश्लेषण करता है।

अन्य फ़्लैग: --token पुनः आरंभों के बीच एक टोकन पिन करने के लिए (Vite dev proxy के साथ उपयोगी, जो BINVIZ_TOKEN पढ़ता है), --port, --cache, और CI के लिए --no-auth। --no-auth एक बैनर प्रिंट करता है जो बताता है कि उसने क्या बंद किया; इसे उस मशीन पर उपयोग न करें जिसे आप साझा करते हैं।

डेस्कटॉप विंडो

root@kitploit:~
pip install "binviz[app]"
binviz app                    # नेटिव विंडो; --browser आपके ब्राउज़र के लिए

वही सर्वर, वही टोकन, वही --root सीमा जैसा binviz serve — केवल अंतर यह है कि इसे क्या प्रदर्शित करता है। pywebview स्थापित नहीं होने पर, binviz app आपके ब्राउज़र को खोलता है।

यह जानबूझकर उस URL को प्रिंट करता है जिस पर यह सेवा कर रहा है: UI को एक विंडो में लपेटना नेटवर्क लिसनर को नहीं हटाता, यह केवल यह भूलना आसान बनाता है कि एक है। लिसनर किसी भी तरह से प्रमाणित है, और binviz app पर कोई --no-auth नहीं है।

विंडो पृष्ठ को ठीक एक फ़ंक्शन उजागर करती है — एक नेटिव फ़ाइल पिकर — और कुछ नहीं। देखें src/binviz/app.py कि वह सूची इतनी छोटी क्यों है।

स्टैंडअलोन ऐप बनाना

रिलीज़ एक व्हील और कुछ नहीं भेजती हैं। एक अहस्ताक्षरित फ्रोज़न Python निष्पादन योग्य जो capstone और lief को बंडल करता है और पैक्ड बाइनरीज़ को विच्छेदित करने के लिए मौजूद है, ठीक वही प्रोफ़ाइल है जिस पर SmartScreen और AV ह्यूरिस्टिक्स गलत सकारात्मक देते हैं — इसलिए इसे भेजने के बजाय, रिपो में वह सब कुछ है जो आपको इसे स्वयं बनाने के लिए चाहिए, जो कोड साइनिंग को पूरी तरह से दरकिनार कर देता है।

root@kitploit:~
pip install pyinstaller                # 6.x
python tools/build_ui.py               # web/ बनाता है और इसे पैकेज में स्टेज करता है
pyinstaller packaging/binviz.spec      # -> dist/binviz/

लगभग ~100 MB की उम्मीद करें, जिसमें numpy और lief प्रमुख हैं। यह एक onedir बंडल है, एकल स्व-निकालने वाली फ़ाइल नहीं: डेस्कटॉप विंडो के लिए dist/binviz/binviz.exe लॉन्च करें (या डबल-क्लिक करें), या इसे कोई भी सबकमांड दें — dist/binviz/binviz.exe triage sample.exe — क्योंकि फ्रोज़न बिल्ड पूरा CLI है, केवल विंडो नहीं।

स्टेजिंग चरण वैकल्पिक नहीं है। web/dist Python पैकेज के बाहर रहता है, इसलिए इसे छोड़ने से एक ऐप बनता है जिसकी विंडो JSON 404 पर खुलती है; spec चुपचाप ऐसा होने देने के बजाय बनाने से इनकार करता है।

macOS पर वही कमांड dist/Striate.app भी बनाता है, जो packaging/icons/icon.icns से ब्रांडेड है। दोनों में से किसी को भी Mac पर नहीं चलाया गया है — ARCHITECTURE.md §5 देखें।

--root अभी भी कार्यशील निर्देशिका पर डिफ़ॉल्ट है, इसलिए एक डबल-क्लिक किया गया निष्पादन योग्य उस फ़ोल्डर तक सीमित है जिसमें यह शुरू होता है — जो आमतौर पर ऐप का अपना फ़ोल्डर होता है। शॉर्टकट का "Start in" सेट करें, या इसे --root DIR के साथ लॉन्च करें।

एक डबल-क्लिक किया गया निष्पादन योग्य एक क्रेडेंशियल माँगता है। बिना तर्कों के फ्रोज़न बिल्ड binviz app --auth local चलाता है, जो व्हील के अपने डिफ़ॉल्ट साइन-इन स्क्रीन के बिना से एकमात्र अंतर है। दोनों अलग-अलग प्रश्नों का उत्तर देते हैं: टर्मिनल में टाइप किया गया binviz app पहले से ही सत्र के स्वामी द्वारा एक जानबूझकर कार्य है, जबकि एक डबल-क्लिक कुछ भी स्थापित नहीं करता — यह एकमात्र लॉन्च पथ है जिसमें कोई टर्मिनल, कोई टाइप किया गया कमांड और इसके पीछे कोई सीमा निर्णय नहीं है। क्रेडेंशियल माँगना वह तरीका है जिससे विंडो ज़ोर से कहती है जो टर्मिनल कहता। पहले binviz passwd चलाकर एक सेट करें, या इसे छोड़ने के लिए स्पष्ट रूप से --auth none पास करें; कमांड लाइन पर आप जो भी देते हैं वह अभी भी जीतता है।

साइन इन करना

डिफ़ॉल्ट रूप से कोई लॉगिन स्क्रीन नहीं है और कॉपी करने के लिए कुछ नहीं है: सर्वर एक सत्र टोकन बनाता है और इसे उस पृष्ठ में इंजेक्ट करता है जिसे वह सेवा करता है, इसलिए http://127.0.0.1:8000/ खोलना बस काम करता है जबकि हर API कॉल अभी भी प्रमाणित है।

उस मशीन पर जिसे आप साझा करते हैं, साइन-इन स्क्रीन चालू करें:

root@kitploit:~
binviz passwd                 # प्रॉम्प्ट करता है; scrypt डाइजेस्ट, मोड 0600
binviz serve --auth local

यदि आप binviz passwd छोड़ते हैं, तो पहला साइन-इन इंस्टॉल का दावा करता है — स्टार्टअप बैनर उसके बारे में चेतावनी देता है, क्योंकि जो कोई भी पोर्ट तक पहले पहुँचता है वह खाता बन जाता है।

एक डबल-क्लिक किया गया फ्रोज़न निष्पादन योग्य अपने लिए --auth local चालू करता है; देखें Building a standalone app कि यह डिफ़ॉल्ट व्हील से क्यों भिन्न है।

लॉगिन स्क्रीन सुरक्षा सीमा नहीं है; हर /api रूट पर टोकन जाँच है। मशीन पर कुछ भी फ़ॉर्म छोड़ सकता है और API को सीधे कॉल कर सकता है, जो ठीक वही कारण है कि टोकन मौजूद है। देखें SECURITY.md।

सुरक्षा

binviz उन फ़ाइलों को खोलता है जिन्हें एक हमलावर ने चुना — यह काम है, कोई किनारा मामला नहीं, और एक ट्रायेज टूल जहाँ मैलवेयर का विश्लेषण करने से विश्लेषक से समझौता होता है, उपलब्ध सबसे खराब विफलता है। नमूनों को पार्स किया जाता है, कभी निष्पादित नहीं किया जाता। बाकी के बारे में क्या किया जाता है:

एक शत्रुतापूर्ण बाइनरी के विरुद्ध

  • पार्सिंग विफल होने के बजाय घटती है: एक बाइनरी जिसे LIEF समझ नहीं सकता वह रॉ मॉडल पर वापस आ जाती है, इसलिए वह दोषपूर्ण नमूना जिसे आप सबसे अधिक देखना चाहते हैं वह अभी भी निरीक्षण योग्य है।
  • हर मैपिंग EOF तक सीमित है, और जो कुछ भी छंटा गया है वह मॉडल की चेतावनियों में रिपोर्ट किया जाता है, चुपचाप सुधारा नहीं जाता।
  • डिसअसेंबली हमेशा के लिए लूप नहीं कर सकती — स्वीप 1M निर्देशों पर सीमित है और एक विज़िटेड सेट रखता है, इसलिए एक जंप-टू-सेल्फ टाइमआउट के बजाय संरचनात्मक रूप से समाप्त होता है। जंप-टेबल पुनर्प्राप्ति 256 प्रविष्टियों पर सीमित है।
  • कैश पथ पार नहीं किए जा सकते: हर /api/{id}/… रूट में id को पथ बनाने के लिए उपयोग करने से पहले ठीक 64 हेक्स वर्ण होना चाहिए।
  • बड़ी फ़ाइलें बफर करने के बजाय स्ट्रीम होती हैं, इसलिए RAM से बड़ी फ़ाइल धीमी होती है, आउट-ऑफ-मेमोरी क्रैश नहीं।

एक शत्रुतापूर्ण ब्राउज़र के विरुद्ध — वह खतरा जिसे "यह केवल localhost पर सुनता है" संबोधित नहीं करता, क्योंकि दूसरे टैब में एक पृष्ठ किसी भी अन्य ओरिजिन की तरह 127.0.0.1 तक पहुँचता है:

  • हर /api रूट को एक टोकन चाहिए। यह स्टार्टअप पर बनाया जाता है और पृष्ठ में इंजेक्ट किया जाता है, इसलिए कुछ भी हाथ से चिपकाया नहीं जाता और कोई रूट खुला नहीं छोड़ा जाता।
  • लॉगिन स्क्रीन सुरक्षा सीमा नहीं है — टोकन जाँच है। फ़ॉर्म छोड़ा जा सकता है; टोकन नहीं।
  • फ़ाइल एक्सेस --root तक सीमित है, जो कार्यशील निर्देशिका पर डिफ़ॉल्ट है। इसके बाहर के पथ अस्वीकार कर दिए जाते हैं।
  • Host अनुमति सूची और संकीर्ण CORS, ताकि जिस ओरिजिन को एक्सेस चाहिए वही एकमात्र है जिसे वह मिलता है।
  • बाइनरी मेटाडेटा स्क्रिप्ट नहीं बन सकता: एक नमूने से उठाए गए स्ट्रिंग्स — सेक्शन नाम, प्रतीक — एक एस्केपर से गुजरते हैं, जो CSP द्वारा समर्थित है।
  • अनुरोध सीमित और मान्य हैं — अपलोड आकार, कैश आकार, रास्टर आयाम और विश्लेषण समवर्ती सभी की सीमाएँ हैं (देखें Limits)।

डेस्कटॉप विंडो नेटवर्क लिसनर को नहीं हटाती, यह केवल भूलना आसान बनाती है। इसलिए binviz app पर कोई --no-auth नहीं है, और js_api ब्रिज ठीक एक विधि उजागर करता है — pick_file(), जो कोई तर्क नहीं लेता और उसी --root सीमा के माध्यम से एक पथ लौटाता है। यदि कभी दूसरी विधि दिखाई देती है तो एक परीक्षण विफल हो जाता है।

--auth local के लिए क्रेडेंशियल scrypt डाइजेस्ट हैं जो मोड 0600 में लिखे गए हैं; binviz कोई सादा-पाठ पासवर्ड संग्रहीत नहीं करता।

SECURITY.md में खतरा मॉडल, प्रत्येक नियंत्रण के पीछे का तर्क, जो जानबूझकर अभी तक नहीं किया गया है, और एक भेद्यता को निजी रूप से कैसे रिपोर्ट करें, है।

लाइसेंस

MIT — देखें LICENSE।

कॉर्पस zig cc के साथ ELF नमूनों को क्रॉस-कंपाइल करता है, इसलिए Windows/macOS पर कोई Linux टूलचेन आवश्यक नहीं है — नमूनों को पार्स किया जाता है, कभी निष्पादित नहीं किया जाता।

टूल डाउनलोड करें