
أداة للتنقيب المتقدم عن المحتوى على GitHub
+---------------------------------------------------+
| المطورون لا يتحملون أي مسؤولية وليسوا مسؤولين |
| عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج |
+---------------------------------------------------+
GitMiner v3 هو أداة معيارية مصممة لاكتشاف المعلومات الحساسة في مستودعات GitHub العامة. يستخدم استعلامات dork متقدمة، ومطابقة الأنماط عبر التعبيرات النمطية (regex)، وينشئ تقارير شاملة لاستخبارات التهديدات.
هذا المشروع هو إعادة هيكلة كاملة لسكربت Gitminer الأصلي، مع التركيز على قابلية الصيانة، وقابلية التوسع، ومبادئ هندسة البرمجيات الاحترافية.
يتم تنظيم المشروع في بنية معيارية لفصل الاهتمامات وتحسين الوضوح.
gitminer_v3/
├── config/ # ملفات الإعداد
│ ├── paths.yaml # مسارات الدلائل والملفات وAPI
│ ├── labels.yaml # تعيينات التعبيرات النمطية إلى التسميات للمعلمات
│ └── patterns.yaml # أنماط التعبيرات النمطية لاكتشاف الأسرار
├── data/ # تخزين البيانات الدائم
│ └── gitminer_history.sqlite # قاعدة بيانات SQLite للسجل
├── gitminer/ # حزمة Python الرئيسية
│ ├── __init__.py
│ ├── config_manager.py # تحميل وإدارة جميع الإعدادات
│ ├── github_client.py # التعامل مع جميع تفاعلات GitHub API
│ ├── file_manager.py # إدارة تنزيلات الملفات وتخزينها
│ ├── pattern_analyzer.py # فحص الملفات بحثًا عن الأسرار
│ ├── database.py # إدارة عمليات قاعدة بيانات SQLite
│ ├── report_generator.py # إنشاء تقارير Markdown
│ └── utils.py # دوال الأدوات المشتركة
├── raw/ # تخزين الملفات التي تم تنزيلها من GitHub
├── reports/ # تخزين تقارير استخبارات التهديدات المُنشأة
├── gitminer_v3.py # السكربت الرئيسي القابل للتنفيذ
├── requirements.txt # تبعيات Python
└── README.md # هذا الملف
public_repo.استنساخ المستودع أو تنزيل الكود المصدري.
إعداد رمز GitHub الخاص بك: يتطلب GitMiner رمز GitHub للتفاعل مع API. يجب تعيينه كمتغير بيئة.
export GITHUB_TOKEN="your_github_personal_access_token_here"
تثبيت حزم Python المطلوبة:
pip install -r requirements.txt
يتم التحكم في سلوك GitMiner من خلال الملفات الموجودة في دليل config/.
paths.yamlيحدد هذا الملف جميع المسارات المهمة وإعدادات API.
directories: يحدد مكان تخزين الملفات الخام والتقارير والبيانات.files: يحدد أسماء قاعدة البيانات وملف CSV الافتراضي.github: يحتوي على إعدادات GitHub API، مثل عناوين URL والمهلات الزمنية وحدود النتائج الافتراضية.labels.yamlيقوم هذا الملف بتعيين أنماط التعبيرات النمطية إلى تسميات قابلة للقراءة البشرية. يُستخدم بشكل أساسي لتحديد أسماء المعلمات (مثل ftp_user وapi_key) في الكود.
# الصيغة: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlيحتوي هذا الملف على أنماط التعبيرات النمطية الأساسية المستخدمة لاكتشاف القيم الحساسة مثل المفاتيح والرموز المميزة وبيانات الاعتماد.
# الصيغة: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
السكربت الرئيسي gitminer_v3.py هو نقطة الدخول لجميع العمليات.
البحث باستخدام استعلام واحد وإنشاء تقرير:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
البحث باستخدام ملف يحتوي على استعلامات متعددة:
أنشئ ملفًا باسم dorks.txt:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
ثم قم بتشغيل الأمر:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
تصدير قائمة بجميع الملفات التي تم تنزيلها إلى CSV:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
تنزيل الملفات دون إجراء أي تحليل:
python3 gitminer_v3.py -d dorks.txt --no-analyze
ينتج GitMiner عدة أنواع من المخرجات، مخزنة في الدلائل raw/ وreports/ وdata/.
يتم تخزين جميع الملفات التي تم تنزيلها من GitHub في دليل raw/، منظمة حسب كلمة الاستعلام واسم المستودع.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
إذا تم استخدام علامة --report، يتم إنشاء تقرير Markdown مفصل لكل استعلام وحفظه في دليل reports/. تتضمن هذه التقارير:
يحتوي ملف data/gitminer_history.sqlite على سجل كامل لجميع العمليات، بما في ذلك:
search_history: سجلات كل بحث استعلام تم تنفيذه.downloaded_files: بيانات وصفية لكل ملف تم تنزيله.findings: سجلات مفصلة لكل سر تم اكتشافه.يمكن استخدام قاعدة البيانات هذه للتتبع طويل الأجل والتحليلات المتقدمة.
تم تصميم GitMiner v3 ليكون قابلًا للتوسيع بسهولة.
config/patterns.yaml.config/labels.yaml.gitminer/ موثق جيدًا ويمكن تعديله أو توسيعه بسهولة.هذا المشروع مفتوح المصدر ومتاح للاستخدام الشخصي والتعليمي. يرجى استخدامه بمسؤولية وأخلاقية. المؤلف غير مسؤول عن أي إساءة استخدام لهذه الأداة.
| الوسيطة | الاختصار | الوصف | مطلوبة |
|---|
--dorks | -d | ملف يحتوي على الاستعلامات (واحد لكل سطر) أو سلسلة استعلام واحد. | نعم |
--token | -t | رمز GitHub (يتجاوز متغير البيئة GITHUB_TOKEN). | لا |
--max-results | -m | الحد الأقصى للنتائج التي سيتم جلبها لكل استعلام. (الافتراضي: 200) | لا |
--per-page | -p | النتائج لكل صفحة لـ API. (الافتراضي: 30، الحد الأقصى: 100) | لا |
--output-csv | -o | تصدير ملخص للملفات التي تم تنزيلها إلى ملف CSV. | لا |
--report | إنشاء تقرير مفصل لاستخبارات التهديدات بصيغة Markdown. | لا | |
--no-analyze | تخطي خطوة تحليل الملفات المحلية (تنزيل الملفات فقط). | لا |