
Инструмент для расширенного поиска контента на GitHub
+---------------------------------------------------+
| РАЗРАБОТЧИКИ НЕ НЕСУТ НИКАКОЙ ОТВЕТСТВЕННОСТИ И |
| НЕ ОТВЕЧАЮТ ЗА ЛЮБОЕ НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ |
| ИЛИ УЩЕРБ, ПРИЧИНЁННЫЙ ЭТОЙ ПРОГРАММОЙ |
+---------------------------------------------------+
GitMiner v3 — это модульный инструмент, предназначенный для обнаружения конфиденциальной информации в публичных репозиториях GitHub. Он использует расширенные dork-запросы, сопоставление с регулярными выражениями и генерирует комплексные отчёты по киберразведке.
Этот проект представляет собой полный рефакторинг оригинального скрипта 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-токен: Для взаимодействия с API GitMiner требуется GitHub-токен. Вы должны задать его как переменную окружения.
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 | Пропустить этап локального анализа файлов (только загрузка файлов). | Нет |