
स्वचालित, विस्तारणीय उपकरण सेट जो Bloodhound के Neo4j बैकएंड पर साइफर क्वेरी चलाता है और आउटपुट को स्प्रेडशीट में सहेजता है।
स्वचालित, विस्तार योग्य टूलसेट जो Bloodhound के Neo4j बैकएंड पर साइफर क्वेरी चलाता है और आउटपुट को स्प्रेडशीट में सहेजता है।
यह एक बैश स्क्रिप्ट है जो Neo4j डेटाबेस में संग्रहीत Bloodhound डेटा के विरुद्ध साइफर क्वेरी चलाने को स्वचालित करती है।
मैंने पाया कि मैं कई आकलनों में Neo4j वेब इंटरफ़ेस के माध्यम से समान क्वेरी को बार-बार चला रहा था और सोचा कि कोई आसान तरीका होना चाहिए। 😅
चलाने के लिए साइफर क्वेरी की सूची पूरी तरह से विस्तार योग्य है। नीचे दिया गया फ़ॉर्मेटिंग उदाहरण दिखाता है कि अपनी स्वयं की क्वेरी कैसे जोड़ें।
कृपया कोई भी अतिरिक्त उपयोगी क्वेरी साझा करें ताकि मैं उन्हें इस प्रोजेक्ट में जोड़ सकूं!
लिनक्स, macOS और विंडोज पर बैश में काम करने के लिए पूरी तरह से परीक्षण किया गया
(आपके देखने के आनंद के लिए termtosvg से प्रस्तुत किया गया)
cypher-shell कमांड Neo4j के साथ बंडल आता है, और इस स्क्रिप्ट के कार्य करने के लिए आवश्यक है
cypher-shell नहीं मिलता है, तो आपके पास Neo4j का पुराना संस्करण हो सकता हैssconvert कमांड मौजूद है, तो स्क्रिप्ट सभी .csv आउटपुट को .xls फ़ाइल के भीतर शीट में संयोजित करेगी
विंडोज पर हम इस स्क्रिप्ट को चलाने के लिए WSL का उपयोग करने की सलाह देते हैं, जबकि neo4j डेटाबेस विंडोज पर चलता है। आपको बस WSL (लिनक्स) में cypher-shell पैकेज स्थापित करने की आवश्यकता होगी।
फ्लैग्स:
-u Neo4J यूज़रनेम (आवश्यक)
-p Neo4J पासवर्ड (आवश्यक)
-d पूरी तरह से योग्य डोमेन नाम (आवश्यक) (केस संवेदनशील)
-a बोल्ट पता (वैकल्पिक) (डिफ़ॉल्ट: localhost:7687)
-t क्वेरी टाइमआउट (वैकल्पिक) (डिफ़ॉल्ट: 30s)
-v वर्बोज़ मोड (वैकल्पिक) (डिफ़ॉल्ट:FALSE)
-h मदद टेक्स्ट और उपयोग उदाहरण (वैकल्पिक)
डिफ़ॉल्ट के साथ उदाहरण:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
सभी विकल्पों के साथ उदाहरण:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
फ़ाइलें FQDN के नाम पर एक उपनिर्देशिका में जोड़ी जाती हैं।
वर्तमान में स्क्रिप्ट में लगभग 60 क्वेरी हैं। यह उस जानकारी का एक नमूना है जो आप प्राप्त करेंगे:
अतिरिक्त क्वेरी जोड़ने के लिए, cypheroth.sh के अंदर queries ऐरे को संपादित करें और निम्नलिखित फ़ॉर्मेट का उपयोग करके एक पंक्ति जोड़ें:
विवरण;साइफर क्वेरी;आउटपुट फ़ाइल
यदि कोई क्वेरी जोड़ रहे हैं जिसमें डोमेन मान सेट करने की आवश्यकता है, तो इसे $DOMAIN के रूप में सहेजें।
उदाहरण 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
उदाहरण 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
यदि आपको कई डोमेन का विश्लेषण करने की आवश्यकता है, तो आप Cypheroth के कई इंस्टेंस को समानांतर में चला सकते हैं, प्रत्येक अपने डोमेन पर काम कर रहा है। उदाहरण के लिए, आप निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं (10 समानांतर में)।
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
यदि आप cypher-shell का पुराना संस्करण चला रहे हैं, तो आपको निम्नलिखित त्रुटि प्राप्त हो सकती है:
DateTime is not supported as a return type in Bolt protocol version 1.
Please make sure driver supports at least protocol version 2.
Driver upgrade is most likely required.
इसे ठीक करने के लिए, Neo4j को अपडेट करें नवीनतम संस्करण में।
Chris Farrell (@seajay)
#cypher_queries को धन्यवाद