
A powerful target reconnaissance framework powered by graph theory.
परियोजना मोनोरेपो में स्थानांतरित हो गई है। अधिक जानकारी के लिए https://github.com/pownjs/pown देखें।
Recon एक लक्ष्य पुनर्जांच फ्रेमवर्क है जो knowledge graphs द्वारा संचालित है। knowledge graphs का उपयोग करके सपाट तालिका प्रतिनिधित्व के बजाय, विभिन्न प्रकार की जानकारी के बीच संबंध खोजना आसान होता है, जो कई स्थितियों में काफी उपयोगी है। knowledge graphs एल्गोरिदम diffing, searching, shortest path खोजने और कई अन्य सहायक कार्यों में भी मदद करते हैं जो सूचना खोज और खुफिया संग्रह में सहायता करते हैं।
यह उपकरण secapps.com ओपन-सोर्स पहल का हिस्सा है।```
/ | / | /_\ | _ \ _ / |
_ \ | ( / _ | / /_
|/__// __| || |___/
https://secapps.com
> **नोट**: Recon, SecApps के उत्कृष्ट [Recon](https://recon.secapps.com) टूल की लगभग सीधी प्रतिलिपि का परिणाम है।
## त्वरित आरंभ
यह टूल [Pown.js](https://github.com/pownjs/pown) के भाग के रूप में उपयोग किए जाने के लिए बनाया गया है, लेकिन इसे एक स्वतंत्र टूल के रूप में अलग से भी चलाया जा सकता है।
पहले हमेशा की तरह Pown इंस्टॉल करें:```sh
$ npm install -g pown@latest
recon स्थापित करें:```sh $ pown modules install @pown/recon
सीधे Pown से आह्वान करें:```sh
$ pown recon
इस मॉड्यूल को अपने प्रोजेक्ट के रूट से स्थानीय रूप से स्थापित करें:```sh $ npm install @pown/recon --save
पूरा होने पर, pown cli चलाएँ:```sh
$ POWN_ROOT=. ./node_modules/.bin/pown-cli recon
आप टूल को स्थानीय रूप से चलाने के लिए वैश्विक pown का भी उपयोग कर सकते हैं:```sh $ POWN_ROOT=. pown recon
## लाइब्रेरी उपयोग
यह मॉड्यूल एक लाइब्रेरी भी है। उपयोग के विचार के लिए कोड और उदाहरण देखें। दस्तावेज़ीकरण जल्द ही आ रहा है।
## उपयोग
> **चेतावनी**: यह pown कमांड वर्तमान में विकास के अंतर्गत है और परिणामस्वरूप इसमें ब्रेकिंग परिवर्तन हो सकते हैं।```
pown-cli recon <command>
Target recon
Commands:
pown-cli recon transform <transform> Perform inline transformation [aliases: t]
pown-cli recon template <command> Recon template commands [aliases: p, templates]
pown-cli recon select <expressions...> Select nodes [aliases: s]
pown-cli recon traverse <expressions...> Traverse nodes [aliases: v]
pown-cli recon options <command> Manage options [aliases: option]
pown-cli recon cache <command> Manage cache
pown-cli recon add <nodes...> Add nodes [aliases: a]
pown-cli recon remove <expressions...> Remove nodes [aliases: r]
pown-cli recon edit <expressions...> Edit nodes [aliases: e]
pown-cli recon merge <files...> Perform a merge between at least two recon files [aliases: m]
pown-cli recon diff <fileA> <fileB> Perform a diff between two recon files [aliases: d]
pown-cli recon group <name> <expressions...> Group nodes [aliases: g]
pown-cli recon ungroup <expressions...> Ungroup nodes [aliases: u]
pown-cli recon load <file> Load a file [aliases: l]
pown-cli recon save <file> Save to file [aliases: o]
pown-cli recon import <file> Import file [aliases: i]
pown-cli recon export <file> Export to file [aliases: x]
pown-cli recon remote <command> Remote managment [aliases: remotes, f]
pown-cli recon layout <name> Layout the graph [aliases: k]
pown-cli recon summary [options] Create a summary [aliases: y]
pown-cli recon exec <files...> Execute js file [aliases: c]
Options:
--version Show version number [boolean]
--help Show help [boolean]
pown-cli recon transform <transform>
Perform inline transformation
Commands:
pown-cli recon transform bitbucketlistrepos [options] <nodes...> List Bitbucket repositories [aliases: bitbucket_list_repos, bblr]
pown-cli recon transform bitbucketlistsnippets [options] <nodes...> List Bitbucket snippets [aliases: bitbucket_list_snippets, bbls]
pown-cli recon transform bitbucketlistteamrepos [options] <nodes...> List Bitbucket team repos [aliases: bitbucket_list_team_repos, bbltr]
pown-cli recon transform bitbucketlistteammembers [options] <nodes...> List Bitbucket team members [aliases: bitbucket_list_team_members, bbltm]
pown-cli recon transform bufferoverrunsubdomainsearch [options] <nodes...> Obtain a list of subdomains using bufferover.run DNS service [aliases: bufferoverrun_subdomain_search, brss]
pown-cli recon transform certspotterissuances [options] <nodes...> Obtain issuances from Certspotter [aliases: certspotter_issuances, csi]
pown-cli recon transform cloudflarednsquery [options] <nodes...> Query CloudFlare DNS API [aliases: cloudflare_dns_query, cfdq]
pown-cli recon transform crtshcndomainreport [options] <nodes...> Obtain crt.sh domain report which helps enumerating potential target subdomains [aliases: crtsh_cn_domain_report, crtshcdr]
pown-cli recon transform crtshsandomainreport [options] <nodes...> Obtain crt.sh domain report which helps enumerating potential target subdomains [aliases: crtsh_san_domain_report, crtshsdr]
pown-cli recon transform dnsresolve [options] <nodes...> Performs DNS resolution [aliases: dns_resolve, dr, dns]
pown-cli recon transform dockerhublistrepos [options] <nodes...> List DockerHub repositories for a given member or org [aliases: dockerhub_list_repos, dhlr]
pown-cli recon transform gravatar [options] <nodes...> Get gravatar
pown-cli recon transform hackertargetreverseiplookup [options] <nodes...> Obtain reverse IP information from hackertarget.com [aliases: hackertarget_reverse_ip_lookup, htril]
pown-cli recon transform hackertargetonlineportscan [options] <nodes...> Obtain port information from hackertarget.com [aliases: hackertarget_online_port_scan, htps]
pown-cli recon transform httpfingerprint [options] <nodes...> Performs a fingerprint on the HTTP server and application [aliases: http_fingerprint, hf]
pown-cli recon transform ipinfoiowidgetsearch [options] <nodes...> Obtain ipinfo.io whois report via the web widget [aliases: ipinfoio_widget_search, iiiows]
pown-cli recon transform omnisintsubdomainreport [options] <nodes...> Obtain omnisint domain report which helps enumerating target subdomains [aliases: omnisint_subdomain_report]
pown-cli recon transform pkslookupkeys [options] <nodes...> Look the the PKS database at pool.sks-keyservers.net which pgp.mit.edu is part of [aliases: pks_lookup_keys, pkslk]
pown-cli recon transform pwndbsearch [options] <nodes...> Searching the PwnDB database [aliases: pwndb_search, pds]
pown-cli recon transform riddleripsearch [options] <nodes...> Searches for IP references using F-Secure riddler.io [aliases: riddler_ip_search, rdis]
pown-cli recon transform riddlerdomainsearch [options] <nodes...> Searches for Domain references using F-Secure riddler.io [aliases: riddler_domain_search, rdds]
pown-cli recon transform script [options] <nodes...> Perform transformation with external script [aliases: script]
pown-cli recon transform scyllasearch [options] <nodes...> Searching the Scylla database [aliases: scylla_search, scys]
pown-cli recon transform securitytrailssuggestions [options] <nodes...> Get a list of domain suggestions from securitytrails.com [aliases: securitytrails_domain_suggestions, stds]
pown-cli recon transform shodanorgsearch [options] <nodes...> Performs search using ORG filter [aliases: shodan_org_search, sos]
pown-cli recon transform shodansslsearch [options] <nodes...> Performs search using SSL filter [aliases: shodan_ssl_search, sss]
pown-cli recon transform spysesubdomains [options] <nodes...> Performs subdomain searching with Spyse [aliases: spyse_subdomains, ssds]
pown-cli recon transform tcpportscan [options] <nodes...> Simple, full-handshake TCP port scanner (very slow and sometimes inaccurate) [aliases: tcp_port_scan, tps]
pown-cli recon transform threatcrowddomainreport [options] <nodes...> Obtain threatcrowd domain report which helps enumerating potential target subdomains and email addresses [aliases: threatcrowd_domain_report, tcdr]
pown-cli recon transform threatcrowdipreport [options] <nodes...> Obtain threatcrowd ip report which helps enumerating virtual hosts [aliases: threatcrowd_ip_report, tcir]
pown-cli recon transform urlscanliveshot [options] <nodes...> Generates a liveshot of any public site via urlscan [aliases: urlscan_liveshot, usls]
pown-cli recon transform urlscansubdomains [options] <nodes...> Find subdomains via urlscan [aliases: urlscan_subdomains, uss]
pown-cli recon transform noop [options] <nodes...> Does not do anything [aliases: nop]
pown-cli recon transform sleep [options] <nodes...> Sleeps for predefined time [aliases: sleep, wait]
pown-cli recon transform duplicate [options] <nodes...> Duplicate node [aliases: dup]
pown-cli recon transform extract [options] <nodes...> Extract property [aliases: excavate]
pown-cli recon transform prefix [options] <nodes...> Creates a new node with a prefix [aliases: prepand]
pown-cli recon transform suffix [options] <nodes...> Creates a new node with a suffix [aliases: append]
pown-cli recon transform augment [options] <nodes...> Update node with prefix or suffix
pown-cli recon transform splitemail [options] <nodes...> Split email at the @ sign [aliases: split_email]
pown-cli recon transform buildemail [options] <nodes...> Build email from node label [aliases: build_email]
pown-cli recon transform splitdomain [options] <nodes...> Split domain at the first dot [aliases: split_domain]
pown-cli recon transform builddomain [options] <nodes...> Build domain from node label [aliases: build_domain]
pown-cli recon transform splituri [options] <nodes...> Split URI to corresponding parts [aliases: split_uri]
pown-cli recon transform builduri [options] <nodes...> Build URI from node label [aliases: build_uri]
pown-cli recon transform bakeimages [options] <nodes...> Convert external image into data URIs for self-embedding purposes [aliases: bake_images, bes]
pown-cli recon transform virustotalsubdomains [options] <nodes...> Obtain subdomains from Virustotal [aliases: virustotal_subdomains, vtsd]
pown-cli recon transform vulnerssearch [options] <nodes...> Obtain vulnerability information via vulners.com [aliases: vulners_search, vs]
pown-cli recon transform wappalyzerprofile [options] <nodes...> Enumerate technologies with api.wappalyzer.com [aliases: wappalyzer_profile, wzp]
pown-cli recon transform worker [options] <nodes...> Perform transformation with external worker [aliases: worker]
pown-cli recon transform zonecrunchersubdomains [options] <nodes...> Performs subdomain searching with Zonecruncher [aliases: zonecruncher_subdomains, zcss]
pown-cli recon transform auto [options] <nodes...> Select the most appropriate methods of transformation
Options:
--version Show version number [boolean]
--help Show help [boolean]
-r, --read Read file [string]
-w, --write Write file [string]
उत्पन्न ग्राफ़ को सुविधा के लिए SecApps Recon में पूर्वावलोकन किया जा सकता है, जिस पर यह उपकरण आधारित है। आप अपने ब्राउज़र से SecApps Recon तक पहुंच सकते हैं, लेकिन इसे कमांड लाइन से भी चला सकते हैं।
पहले आपको @pown/apps स्थापित करना होगा:```sh
$ pown modules install @pown/apps
यह वैकल्पिक ऐप्स कमांड पैकेज को स्थापित करेगा।
अपना ग्राफ़ लिखने के विकल्पों का उपयोग करके उत्पन्न करें:```sh
$ pown recon transform auto -w path/to/file.network --node-type brand target
एक बार recon पूरा हो जाने के बाद, SecApps Recon में पूर्वावलोकन के लिए ग्राफ खोलें:```sh $ pown apps recon < path/to/file.network
## स्क्रिप्टिंग
Pown recon को आपके पसंदीदा शेल वातावरण, [Pown Script](https://github.com/pownjs/script), [Pown Engine Templates](https://github.com/pownjs/engine) और JavaScript के माध्यम से स्क्रिप्ट किया जा सकता है। स्क्रिप्ट प्रत्येक कमांड निष्पादन के बीच संरक्षित संदर्भ से लाभ उठाती हैं। इसका मतलब है कि आप मध्यवर्ती फ़ाइलों में सहेजने और पुनर्स्थापित करने की आवश्यकता के बिना एक ग्राफ बना सकते हैं।
अपने पसंदीदा संपादक का उपयोग करके `example.pown` नामक एक फ़ाइल बनाएं जिसमें निम्नलिखित सामग्री हो:```sh
echo This is script
recon add --node-type brand target
recon t auto
pown से स्क्रिप्ट निष्पादित करें:```sh $ pown script path/to/example.pown
अधिक जानकारी के लिए, स्क्रिप्ट का उपयोग करने के अधिक विचारों के लिए `./examples` देखें।
## चयनकर्ता
> कुछ कमांड ग्राफ़ चयनकर्ताओं की अपेक्षा करते हैं। बाकी दस्तावेज़ीकरण cytoscape.js चयनकर्ता मैनुअल की प्रतिलिपि है जिसमें कुछ मामूली अंतर हैं।
एक चयनकर्ता DOM तत्वों पर CSS चयनकर्ता के समान कार्य करता है, लेकिन Recon में चयनकर्ता ग्राफ़ तत्वों के संग्रह पर काम करते हैं। यह तंत्र शक्तिशाली cytoscape.js द्वारा प्रदान किया गया है।
चयनकर्ताओं को एक साथ जोड़कर शक्तिशाली क्वेरी बनाई जा सकती हैं, उदाहरण के लिए:```
pown select 'node[weight >= 50][height < 180]'
चयनकर्ताओं को अल्पविरामों के साथ एक साथ जोड़ा जा सकता है (प्रभावी रूप से एक तार्किक OR बनाते हुए):``` pown select 'node#j, edge[source = "j"]'
यह ध्यान रखना महत्वपूर्ण है कि स्ट्रिंग्स को उद्धरण चिह्नों से घेरा जाना चाहिए:```
pown select 'node[type = "domain"]'
ध्यान दें कि मेटाकैरेक्टर ( ^ $ \ / ( ) | ? + * [ ] { } , . ) को एस्केप करने की आवश्यकता है:
pown select '#some\$funky\@id'
node, edge, या * (समूह चयनकर्ता) समूह के आधार पर तत्वों का मिलान करता है (नोड के लिए node, एज के लिए edge, सभी के लिए *)।.className उन तत्वों का मिलान करता है जिनमें निर्दिष्ट वर्ग है (जैसे "foo" नामक वर्ग के लिए .foo का उपयोग करें)।#id मिलान करने वाली आईडी वाले तत्व का मिलान करता है (जैसे #foo [id = 'foo'] के समान है)[name] उन तत्वों का मिलान करता है जिनमें निर्दिष्ट डेटा विशेषता परिभाषित है, यानी अपरिभाषित नहीं (जैसे [foo] "foo" नामक विशेषता के लिए)। यहाँ, null को एक परिभाषित मान माना जाता है।[^name] उन तत्वों का मिलान करता है जिनमें निर्दिष्ट डेटा विशेषता परिभाषित नहीं है, यानी अपरिभाषित (जैसे [^foo])। यहाँ, null को एक परिभाषित मान माना जाता है।[?name] उन तत्वों का मिलान करता है जिनमें निर्दिष्ट डेटा विशेषता एक सत्य (truthy) मान है (जैसे [?foo])।[!name] उन तत्वों का मिलान करता है जिनमें निर्दिष्ट डेटा विशेषता एक असत्य (falsey) मान है (जैसे [!foo])।[name = value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से मेल खाती है (जैसे [foo = 'bar'] या [num = 2])।[name != value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से मेल नहीं खाती (जैसे या )।> (चाइल्ड सेलेक्टर) मूल नोड के सीधे बच्चों का मिलान करता है (जैसे node > node)। (डिसेंडेंट सेलेक्टर) मूल नोड के वंशजों का मिलान करता है (जैसे node node)।$ (विषय चयनकर्ता) चयनकर्ता के विषय को सेट करता है (जैसे $node > node बच्चों के बजाय मूल नोड का चयन करने के लिए)।चयन का एक जटिल प्रकार ट्रैवर्सल के रूप में जाना जाता है।
यहाँ Recon में उपलब्ध कुछ ट्रांसफॉर्म हैं। अतिरिक्त ट्रांसफॉर्म वैकल्पिक pown मॉड्यूल में उपलब्ध हैं।
Recon और ग्राफ-आधारित OSINT (ओपन सोर्स इंटेलिजेंस) की शक्ति प्रदर्शित करने के लिए, आइए निम्नलिखित तुच्छ उदाहरण पर एक नज़र डालें।
आइए Google की इंजीनियरिंग टीम के सदस्यों और उनके GitHub खाते में योगदान करने वाले सभी लोगों की क्वेरी करके शुरू करें।```sh pown recon t -w google.network ghlm google
यह कमांड इसी प्रकार की एक तालिका उत्पन्न करेगा:```
github:member
┌─────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────┐
│ uri │ login │ avatar │
├─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│ https://github.com/3rf │ 3rf │ https://avatars1.githubusercontent.com/u/1242478?v=4 │
├─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│ https://github.com/aaroey │ aaroey │ https://avatars0.githubusercontent.com/u/31743510?v=4 │
├─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│ https://github.com/aarongable │ aarongable │ https://avatars3.githubusercontent.com/u/2474926?v=4 │
...
...
...
│ https://github.com/alexpennace │ alexpennace │ https://avatars1.githubusercontent.com/u/2506548?v=4 │
├─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│ https://github.com/alexv │ alexv │ https://avatars0.githubusercontent.com/u/30807372?v=4 │
├─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────┤
│ https://github.com/alexwhouse │ alexwhouse │ https://avatars3.githubusercontent.com/u/1448490?v=4 │
└─────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────┘
आपने अपना पहला नेटवर्क बना लिया है!
प्रतिनिधित्व सुविधा के लिए सारणीबद्ध है, लेकिन इसके नीचे हमारे पास एक मॉडल है जिसमें नोड्स किनारों (edges) से जुड़े होते हैं।
यदि आप सोच रहे हैं कि यह कैसा दिखता है, तो आप SecApps Recon का उपयोग कर सकते हैं। कमांड लाइन में ग्राफ़ की जटिलता को प्रस्तुत करने के लिए आवश्यक स्तर की अंतःक्रियाशीलता नहीं होती है।
-w google.network कमांड लाइन विकल्प ने नेटवर्क को एक फ़ाइल में निर्यात किया। आप फ़ाइल खोलने की सुविधा के साथ फ़ाइल को सीधे SecApps Recon में लोड कर सकते हैं। परिणाम कुछ इस प्रकार दिखेगा:
अब कल्पना करें कि हम यह जानना चाहते हैं कि ये Google इंजीनियर किन रिपॉजिटरी पर काम कर रहे हैं। यह आसान है। सबसे पहले, हमें ग्राफ़ में नोड्स को चुनना होगा और फिर उन्हें "GitHub List Repositories" ट्रांसफ़ॉर्मेशन के साथ रूपांतरित करना होगा। हम इसे कमांड लाइन से इस प्रकार करते हैं:```sh pown recon t ghlr -r google.network -w google2.nework -s 'node[type="github:member"]'
यदि आप GitHub API दर सीमाओं को हिट नहीं करते हैं, तो आपको यह प्रस्तुत किया जाएगा:```
github:repo
┌──────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────┐
│ uri │ fullName │
├──────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
│ https://github.com/3rf/2015-talks │ 3rf/2015-talks │
├──────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
│ https://github.com/3rf/codecoroner │ 3rf/codecoroner │
├──────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
│ https://github.com/3rf/DefinitelyTyped │ 3rf/DefinitelyTyped │
...
...
...
│ https://github.com/agau4779/ultimate-tic-tac-toe │ agau4779/ultimate-tic-tac-toe │
├──────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
│ https://github.com/agau4779/worm_scraper │ agau4779/worm_scraper │
├──────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
│ https://github.com/agau4779/zsearch │ agau4779/zsearch │
└──────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
अब जब हमारे पास दो फाइलें google.network और google2.network हैं, तो आप सोच रहे होंगे कि इनमें क्या अंतर है। खैर, हमारे पास ऐसा करने के लिए एक उपकरण है।```sh
pown recon diff google.network google2.network
अब हम जानते हैं! यह सुविधा काफी उपयोगी है यदि आप बड़े रीकॉन मैप बना रहे हैं और आप जानना चाहते हैं कि प्रमुख अंतर क्या हैं। कल्पना करें कि आपका क्रॉन जॉब हर दिन एक ही रीकॉन करता है और आप जानना चाहते हैं कि क्या कुछ नया दिखाई दिया है जो आगे अन्वेषण करने योग्य हो सकता है। नमस्ते, बग बाउंटी शिकारियों!
[foo != 'bar'][num != 2][name > value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से अधिक है (जैसे [foo > 'bar'] या [num > 2])।[name >= value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से अधिक या उसके बराबर है (जैसे [foo >= 'bar'] या [num >= 2])।[name < value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से कम है (जैसे [foo < 'bar'] या [num < 2])।[name <= value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से कम या उसके बराबर है (जैसे [foo <= 'bar'] या [num <= 2])।[name *= value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता में निर्दिष्ट मान एक उपस्ट्रिंग के रूप में शामिल है (जैसे [foo *= 'bar'])।[name ^= value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान से शुरू होती है (जैसे [foo ^= 'bar'])।[name $= value] उन तत्वों का मिलान करता है यदि उनकी डेटा विशेषता निर्दिष्ट मान पर समाप्त होती है (जैसे [foo $= 'bar'])।@ (डेटा विशेषता संकारक संशोधक) एक संकारक से पहले जोड़ा जाता है ताकि यह केस-असंवेदनशील हो (जैसे [foo @$= 'ar'], [foo @>= 'a'], [foo @= 'bar'])! (डेटा विशेषता संकारक संशोधक) एक संकारक से पहले जोड़ा जाता है ताकि यह निषेधित हो (जैसे [foo !$= 'ar'], [foo !>= 'a'])[[]] (मेटाडेटा कोष्ठक) डेटा के बजाय मेटाडेटा से मिलान करने के लिए वर्गाकार कोष्ठक के स्थान पर दोहरे वर्गाकार कोष्ठक का उपयोग करें (जैसे [[degree > 2]] 2 से अधिक डिग्री वाले तत्वों से मिलान करता है)। समर्थित गुणों में degree, indegree, और outdegree शामिल हैं।