अपडेट पर वापस जाएँ
New releaseAug 10, 2026

recog v3.1.30

होस्ट, सेवाओं और सामग्री के लिए पैटर्न पहचान

साझा करें

Recog: एक पहचान ढांचा

CI Workflow Verify Workflow

Recog एक ऐसा ढांचा है जो विभिन्न नेटवर्क प्रोब से प्राप्त डेटा के विरुद्ध फिंगरप्रिंट्स का मिलान करके उत्पादों, सेवाओं, ऑपरेटिंग सिस्टम और हार्डवेयर की पहचान करता है। Recog वेब सर्वर बैनर, SNMP सिस्टम विवरण फ़ील्ड और बहुत कुछ से उपयोगी जानकारी निकालना आसान बनाता है।

Recog ओपन सोर्स है, कृपया अधिक जानकारी के लिए LICENSE फ़ाइल देखें।

विषय सूची

  1. रिपॉजिटरी विभाजन
    1. डिफ़ॉल्ट शाखा का नाम बदलना
  2. Recog लाइब्रेरी भाषा कार्यान्वयन
    1. सुविधा समानता
  3. स्थापना
  4. परिपक्वता
  5. फिंगरप्रिंट्स
  6. मिलान का परीक्षण
    1. ftp_banners
    2. http_cookies
    3. http_servers
    4. favicons
    5. http_wwwauth
    6. tls_jarm
  7. योगदान

रिपॉजिटरी विभाजन

31 मार्च, 2022 को, Recog सामग्री - XML फिंगरप्रिंट फ़ाइलें और उपयोगिताएँ - को Recog ढांचा लाइब्रेरी कार्यान्वयन से अलग कर दिया गया। मूल Recog रिपॉजिटरी में अब Recog सामग्री है और Recog-Ruby रिपॉजिटरी में Ruby भाषा कार्यान्वयन है। Recog सामग्री Recog-Ruby में एक git सबमॉड्यूल के रूप में शामिल है और recog निर्देशिका के अंतर्गत स्थित है। विभाजन के बाद के सभी Recog gem संस्करण 3.0.0 या उससे अधिक: 1. XML फिंगरप्रिंट निर्देशिका को recog निर्देशिका के अंतर्गत रखेंगे, और 2. केवल recog_match टूल शामिल करेंगे क्योंकि अन्य टूल फिंगरप्रिंट प्रबंधन पर केंद्रित हैं।

^शीर्ष पर वापस जाएँ

डिफ़ॉल्ट शाखा का नाम बदलना

रिपॉजिटरी विभाजन के साथ-साथ डिफ़ॉल्ट शाखा का नाम master से main कर दिया गया। इन परिवर्तनों से पहले बनाए गए किसी भी क्लोन को आपके स्थानीय वातावरण में मैन्युअल रूप से अपडेट करना होगा। यदि आपके पास एक फोर्क है, तो अपने फोर्क की सेटिंग्स पर जाएँ और डिफ़ॉल्ट शाखा को main में बदलने के लिए किसी शाखा का नाम बदलने के निर्देशों का पालन करें।

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

वैकल्पिक रूप से, पुरानी शाखा नाम के ट्रैकिंग संदर्भों को हटाने के लिए निम्न कमांड चलाएँ।

# आगे बढ़ने से पहले स्थिर संदर्भों की पुष्टि करने के लिए ड्राई-रन जिन्हें हटाया जाएगा
git remote prune origin --dry-run
git remote prune origin

यदि आपने पहले अपस्ट्रीम ट्रैकिंग शाखा upstream-master का उपयोग किया था, तो पुरानी शाखा को हटाने और एक नई अपस्ट्रीम ट्रैकिंग शाखा बनाने के लिए निम्न कमांड चलाएँ।

git branch -d upstream-master
git checkout -b upstream-main --track upstream/main

वैकल्पिक रूप से, पुरानी अपस्ट्रीम शाखा नाम के ट्रैकिंग संदर्भों को हटाने के लिए निम्न कमांड चलाएँ।

# आगे बढ़ने से पहले स्थिर संदर्भों की पुष्टि करने के लिए ड्राई-रन जिन्हें हटाया जाएगा
git remote prune upstream --dry-run
git remote prune upstream

^शीर्ष पर वापस जाएँ

Recog लाइब्रेरी भाषा कार्यान्वयन

^शीर्ष पर वापस जाएँ

सुविधा समानता

सुविधा ✨rapid7/recog-rubyrapid7/recog-javarunZeroInc/recog-go
फिंगरप्रिंट सत्यापन CLI टूल✅✅✅
फिंगरप्रिंट मिलान CLI टूल✅✅
base64 एन्कोडेड उदाहरणों का समर्थन✅✅✅
फ़ाइलसिस्टम-आधारित बाहरी उदाहरणों का समर्थन✅✅✅
फिंगरप्रिंट मिलान CPE पैराम इंटरपोलेशन✅✅✅

^शीर्ष पर वापस जाएँ

स्थापना

Recog में XML फिंगरप्रिंट फ़ाइलें और कोड का एक संग्रह दोनों शामिल हैं, जो अधिकांशतः Ruby में है, जो निहित फिंगरप्रिंट को विकसित करना, परीक्षण करना और उपयोग करना आसान बनाता है। शामिल Ruby कोड का उपयोग करने के लिए, Ruby का एक हालिया संस्करण (2.31+) आवश्यक है, साथ ही Rubygems और bundler gem। एक बार ये निर्भरताएँ स्थापित हो जाने के बाद, नवीनतम स्रोत कोड प्राप्त करने और किसी भी अतिरिक्त निर्भरता को स्थापित करने के लिए निम्न कमांड का उपयोग करें।

$ git clone [email protected]:rapid7/recog.git
$ cd recog
$ bundle install

^शीर्ष पर वापस जाएँ

परिपक्वता

कृपया ध्यान दें कि जबकि XML फिंगरप्रिंट स्वयं काफी स्थिर और अच्छी तरह से परीक्षित हैं, Ruby कोडबेस अभी भी काफी नया है और तेज़ी से बदल सकता है। कृपया किसी भी उत्पादन परियोजना में Recog कोड का उपयोग करने से पहले हमसे संपर्क करें (research[at]rapid7.com)।

^शीर्ष पर वापस जाएँ

फिंगरप्रिंट्स

Recog के भीतर फिंगरप्रिंट्स XML फ़ाइलों में संग्रहीत होते हैं, जिनमें से प्रत्येक को किसी विशिष्ट प्रोटोकॉल प्रतिक्रिया स्ट्रिंग या फ़ील्ड से मिलान करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, फ़ाइल ssh_banners.xml प्रारंभिक SSH डेमॉन बैनर स्ट्रिंग का मिलान करके os, विक्रेता और कभी-कभी हार्डवेयर उत्पाद निर्धारित कर सकती है।

एक फिंगरप्रिंट फ़ाइल में निम्नलिखित जैसा XML दस्तावेज़ होता है:

<fingerprints matches="ssh.banner">
  <fingerprint pattern="^RomSShell_([\d\.]+)$">
    <description>Allegro RomSShell SSH</description>
    <example service.version="4.62">RomSShell_4.62</example>
    <param pos="0" name="service.vendor" value="Allegro"/>
    <param pos="0" name="service.product" value="RomSShell"/>
    <param pos="1" name="service.version"/>
  </fingerprint>
</fingerprints>

पहली पंक्ति में हमेशा XML संस्करण घोषणा होनी चाहिए। पहला तत्व हमेशा एक fingerprints ब्लॉक होना चाहिए जिसमें matches विशेषता हो, जो इंगित करती है कि यह फिंगरप्रिंट फ़ाइल किस डेटा से मिलान करने वाली है। matches विशेषता सामान्यतः protocol.field के रूप में होती है।

fingerprints तत्व के अंदर एक या अधिक fingerprint तत्व होने चाहिए। प्रत्येक fingerprint में एक pattern विशेषता होनी चाहिए, जिसमें डेटा के विरुद्ध मिलान करने के लिए उपयोग किया जाने वाला नियमित अभिव्यक्ति हो। यह नियंत्रित करने के लिए एक वैकल्पिक flags विशेषता निर्दिष्ट की जा सकती है कि नियमित अभिव्यक्ति की व्याख्या कैसे की जाए। अधिक जानकारी के लिए FLAG_MAP के लिए Recog दस्तावेज़ देखें।

फिंगरप्रिंट के अंदर, एक description तत्व में इस फिंगरप्रिंट का वर्णन करने वाली मानव-पठनीय स्ट्रिंग होनी चाहिए।

कम से कम एक example तत्व मौजूद होना चाहिए, हालांकि कई example तत्वों को प्राथमिकता दी जाती है। इन तत्वों का उपयोग rspec में मौजूद परीक्षण कवरेज के भाग के रूप में किया जाता है, जो सत्यापित करता है कि प्रदान किया गया डेटा निर्दिष्ट नियमित अभिव्यक्ति से मेल खाता है। इसके अतिरिक्त, यदि फिंगरप्रिंट डेटा से फ़ील्ड मान निकालने के लिए param तत्वों (आगे वर्णित) का उपयोग कर रहा है, तो आप इन अपेक्षित निष्कर्षणों को example तत्वों के लिए विशेषताओं के रूप में जोड़ सकते हैं। उपरोक्त उदाहरण में, यह:

<example service.version="4.62">RomSShell_4.62</example>

परीक्षण करता है कि RomSShell_4.62 प्रदान की गई नियमित अभिव्यक्ति से मेल खाता है और service.version का मान 4.62 है।

श्रेणियाँ