Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ogi — Фреймворк OSINT и анализа связей с открытым исходным кодом | Kitploit
Инструменты/GitHubGitHub/khashashin/ogi
OSINT (Разведка открытых источников)РазведкаСбор информацииВеб-безопасностьСоциальная инженерияРазведка угрозСбор Электронной ПочтыОбучение и ОбразованиеКраулерАнализ DNS
GitHubkhashashin/ogi
280373314 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ogi

Фреймворк OSINT и анализа связей с открытым исходным кодом

РепозиторийСайт
<div align="center">

<img src="https://assets.kitploit.com/production/public/readmes/12241/4d60ae367bb5f1d9b7d1d95df2b16186f01454c9610e40703f636923a0a70ced.png" alt="Маскот OGI" width="200" />

# OpenGraph Intel (OGI)

**Открытая платформа визуального анализа связей и OSINT.**
**Бесплатно, самостоятельно развертываемое и развиваемое сообществом.**

[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
[![CI](https://github.com/khashashin/ogi/actions/workflows/ci.yml/badge.svg)](https://github.com/khashashin/ogi/actions/workflows/ci.yml)
[![Docker](https://github.com/khashashin/ogi/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/khashashin/ogi/actions/workflows/docker-publish.yml)
[![Python 3.14+](https://img.shields.io/badge/python-3.14+-3776AB.svg?logo=python&logoColor=white)](https://www.python.org)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6.svg?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
[![React](https://img.shields.io/badge/React-19-61DAFB.svg?logo=react&logoColor=black)](https://react.dev)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.134-009688.svg?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com)
![Version](https://img.shields.io/github/v/release/khashashin/ogi?display_name=tag&color=green)

[Возможности](#features) &bull; [Скриншоты](#screenshots) &bull; [Быстрый старт](#quick-start) &bull; [Docker](#docker) &bull; [Transform Hub](#transform-hub) &bull; [Архитектура](#architecture) &bull; [Участие](#contributing)

</div>

---

> **Внимание:** Этот проект активно развивается. Он обладает надежными основными возможностями и покрытием тестами, и мы продолжаем улучшать документацию, защиту и функциональные возможности с каждым релизом. Приветствуются вклады, сообщения об ошибках и отзывы.

## Возможности

- **Визуальное исследование графов** — перетаскивание сущностей, интерактивное исследование связей
- **20+ встроенных трансформаций** — DNS, WHOIS, SSL-сертификаты, геолокация, обогащение веб/email/хэш/социальных сетей и другое
- **Transform Hub** — просматривайте и устанавливайте трансформации сообщества из [реестра](https://github.com/opengraphintel/ogi-transforms)
- **AI Investigator** — агентные исследования на основе подсказок, которые планируют запуски трансформаций, транслируют прогресс в реальном времени и обобщают результаты с возможностью аудита
- **Импорт / Экспорт** — импорт в форматах JSON, CSV, GraphML и MTGX
- **Анализ графов** — центральность, обнаружение сообществ, кратчайшие пути
- **Совместная работа в реальном времени** — проекты, общий доступ и синхронизация в реальном времени через Supabase Realtime
- **Асинхронные задания трансформаций** — очередь Redis/RQ с обновлениями прогресса через WebSocket
- **Система плагинов** — обнаружение плагинов на основе директорий с манифестами YAML
- **Инструмент CLI** — поиск, установка и управление трансформациями из терминала
- **Работает везде** — локальный режим SQLite (без конфигурации) или PostgreSQL + Supabase для командных/облачных настроек
- **Готов к использованию с Docker** — развертывание одной командой `docker compose up`

## Скриншоты

<div align="center">

|              Исследование графа              |              Обогащение сущности              |
| :-------------------------------------------: | :-----------------------------------------: |
| ![Исследование графа](https://assets.kitploit.com/production/public/readmes/12241/736f7dcefbbf9d6fe364a9485e3cdfbbe58abb28f544befa703c96f21c4af25f.png) | ![Обогащение сущности](https://assets.kitploit.com/production/public/readmes/12241/2f82a9ff6205006bf1cc00870f2456f4070c5b56237e62bfc23854ac328147f8.png) |

|              Transform Hub              |             Экспорт / Импорт             |
| :-------------------------------------: | :-------------------------------------: |
| ![Transform Hub](https://assets.kitploit.com/production/public/readmes/12241/1aad4060afe92b4b922a37bc2223994e072d9c91154223ed74bfbd1fb6c5332d.png) | ![Экспорт Импорт](https://assets.kitploit.com/production/public/readmes/12241/91c2d3ec087b52685a352bc6acd465784f56d45b4d8bdae1af5e1ed6a4af3523.png) |

</div>

## Быстрый старт

### Предварительные требования

| Инструмент                      | Версия |
| -------------------------------- | ------- |
| [Python](https://www.python.org) | 3.14+   |
| [uv](https://docs.astral.sh/uv/) | latest  |
| [Node.js](https://nodejs.org)    | 20+     |
| [pnpm](https://pnpm.io)          | latest  |

### Бэкенд```bash
cd backend
uv sync
uv run uvicorn ogi.main:app --reload
```
API будет доступен по адресу `http://localhost:8000`.

Для локального выполнения трансформации также должны быть запущены Redis и transform worker. Одного Redis недостаточно.

Запустите Redis:```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine
```
Запустите воркер преобразования во втором терминале:```bash
cd backend
uv run python -m ogi.worker.run_worker
```
Если вы видите `Job queue not available` или `Redis not available`, убедитесь, что:

- `OGI_REDIS_URL` указывает на `redis://localhost:6379/0` для локальных запусков на хосте
- бэкенд был перезапущен после запуска Redis
- отдельный процесс воркера запущен
- вы не используете hostname `redis`, доступный только в Docker, вне Docker Compose

Если вы запускаете бэкенд с PostgreSQL (`OGI_USE_SQLITE=false`), при запуске автоматически применяются миграции Alembic перед обработкой запросов. Развертывания Docker делают то же самое в точке входа контейнера бэкенда.

Запуски AI Investigator обрабатываются другим отдельным воркером:```bash
cd backend
uv run python -m ogi.agent.run_worker
```
### Фронтенд```bash
cd frontend
pnpm install
pnpm dev
```
Откройте http://localhost:5173. Вот и всё.

### AI Investigator

AI Investigator — это опциональный рабочий процесс на основе провайдера, который может планировать последовательности преобразований, запрашивать утверждения и обобщать ход расследования в рабочем пространстве.

- Откройте вкладку `AI Investigator` в проекте
- Настройте провайдера и модель в диалоге настроек исследователя
- Сохраните ключи API провайдера в разделе `API Keys`
- Запустите отдельный процесс `agent-worker` вместе с бэкендом

Текущая реализация поддерживает настройку провайдера для каждого пользователя и выделенный рабочий процесс, который выполняет шаги расследования независимо от основного API-сервера.

### CLI

Два поддерживаемых способа запуска CLI:

**Рекомендуемый** (активация не требуется):```bash
cd backend
uv sync
uv run ogi --help
```
**Активированная virtualenv** (простая команда `ogi`):```bash
cd backend
uv venv
# PowerShell:
.\.venv\Scripts\Activate.ps1
uv pip install -e .
ogi --help
```
## Docker

### Разработка```bash
cp .env.example .env
docker compose up
```
### Продуктивная среда

Используйте предварительно собранные образы GHCR.

Важно: [docker-compose.prod.yml](https://github.com/khashashin/ogi/blob/main/docker-compose.prod.yml) требует внешнюю базу данных PostgreSQL. Он не включает сервис `db`.

Если вы хотите использовать единый локальный стек Docker со встроенными Postgres и Redis, используйте:```bash
docker compose up -d
```
Используйте файл компоновки для продакшена только если у вас уже есть доступный экземпляр PostgreSQL и вы установили `OGI_DATABASE_URL` соответствующим образом:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
```
Установите `OGI_IMAGE_TAG` в `.env`, чтобы зафиксировать конкретный тег образа релиза (например, `v0.2.6`). По умолчанию — `latest`.

### Hetzner Cloud

[![Получить кредиты Hetzner Cloud](https://img.shields.io/badge/Get_Hetzner_Cloud_credits-D50C2D?style=for-the-badge&logo=hetzner&logoColor=white)](https://hetzner.cloud/?ref=LspEGc99USBa)
[![Развернуть Docker CE на Hetzner](https://img.shields.io/badge/Deploy_Docker_CE_on_Hetzner-D50C2D?style=for-the-badge&logo=hetzner&logoColor=white)](https://console.hetzner.com/deploy/docker-ce)

Новые пользователи Hetzner могут использовать первую ссылку для регистрации с кредитами Hetzner Cloud. Это реферальная ссылка, поэтому мейнтейнер OGI также может получить кредиты Hetzner Cloud, если реферал соответствует условиям. После создания сервера используйте команды развертывания Docker выше для запуска OGI.

### Настраиваемые ограничения трансформаций

OGI поставляется с разумными максимальными значениями для каждого трансформа, такими как `max_results`, `max_links`, `max_urls` и `max_content_chars`, но теперь эти ограничения можно переопределить централизованно, чтобы облачные развертывания могли применять их без жесткого кодирования локальных лимитов.

Используйте `OGI_TRANSFORM_SETTING_MAX_OVERRIDES` в `.env`:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=50,max_urls=25,max_links=40,max_content_chars=20000
```
Для удаления определенных ограничений в локальном развертывании:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=none,max_urls=none,max_links=none,max_content_chars=none
```
Переопределение привязано к имени настройки трансформа и применяется к встроенным трансформам и плагинам сообщества, использующим общую базу/среду выполнения трансформов OGI.

### Облачный хостинг и план Supporter

Облачная версия, размещённая на [ogi.khas.app](https://ogi.khas.app), изначально создавалась, чтобы пользователи могли быстро попробовать OGI, прежде чем решить, разворачивать ли его самостоятельно. С тех пор она стала самым популярным способом использования проекта: более 350 активных облачных пользователей.

Такое использование также увеличило инфраструктурные расходы для этого побочного проекта. Поэтому репозиторий включает облачную подписку Supporter и систему охлаждения запусков трансформов. В публичном облачном экземпляре бесплатные пользователи могут быть ограничены таймаутом между запусками трансформов, в то время как пользователи Supporter могут подписаться за символические 3 доллара США в месяц, чтобы помочь покрыть расходы на Supabase и VPS.

Подписку Supporter можно отменить через настройки биллинга в профиле или портал биллинга Stripe. Отмена останавливает будущие списания, но оплаченные периоды подписки не возвращаются и не пересчитываются.

Этот код биллинга намеренно защищён конфигурацией: он действует только при `OGI_DEPLOYMENT_MODE=cloud` и `OGI_CLOUD_BILLING_ENABLED=true`. В самостоятельно развёртываемых установках биллинг должен быть отключён, и не должно быть никакого поведения биллинга или платного доступа.

### Телеметрия

OGI включает телеметрию на уровне установки, предназначенную для того, чтобы помочь нам понять реальное использование, особенно в самостоятельно развёртываемых установках.

- `OGI_TELEMETRY_ENABLED=true` включает сбор телеметрии
- `OGI_TELEMETRY_LEVEL=full` — уровень сбора по умолчанию
- установите `OGI_TELEMETRY_ENABLED=false`, чтобы полностью отключить телеметрию
- установите `OGI_TELEMETRY_LEVEL=basic`, чтобы уменьшить объём отправляемых данных

`basic` отправляет:

- версию OGI
- ежедневный пинг активной установки

`full` дополнительно отправляет:

- дату создания экземпляра
- агрегированные количества проектов, сущностей, связей, запусков трансформов, запусков исследователя и активных пользователей за период
- установленные трансформы с их версиями

Телеметрия разработана так, чтобы избегать отправки содержимого графа, значений сущностей, ключей API, промптов или других данных расследований. Текущие детали политики также опубликованы в [Политике конфиденциальности](https://ogi.khas.app/privacy#telemetry).

<details>
<summary><strong>Сервисы Compose для разработки</strong></summary>

| Сервис          | Описание                              | Порт  |
| --------------- | ------------------------------------- | ----- |
| `backend`       | Сервер приложений FastAPI             | 8000  |
| `worker`        | Асинхронный обработчик заданий RQ     | -     |
| `agent-worker`  | Рабочий AI-исследователя              | -     |
| `frontend`      | React-приложение, обслуживаемое через nginx | 80    |
| `db`            | PostgreSQL 16                         | 5432  |
| `redis`         | Redis 7 (очередь заданий)             | 6379  |

</details>

<details>
<summary><strong>Сервисы Compose для продакшена</strong></summary>

| Сервис          | Описание                              | Порт  |
| --------------- | ------------------------------------- | ----- |
| `backend`       | Сервер приложений FastAPI             | 8000  |
| `worker`        | Асинхронный обработчик заданий RQ     | -     |
| `agent-worker`  | Рабочий AI-исследователя              | -     |
| `frontend`      | React-приложение, обслуживаемое через nginx | 80    |
| `redis`         | Redis 7 (очередь заданий)             | 6379  |

`docker-compose.prod.yml` ожидает внешнюю базу данных PostgreSQL через `OGI_DATABASE_URL`.

</details>

---

<details>
<summary><strong>Зависимости плагинов при загрузке</strong></summary>

Если вы используете предварительно собранные образы и плагину требуются дополнительные библиотеки Python, OGI устанавливает зависимости плагина при запуске контейнера из:

1. `plugins/requirements.txt` (предпочтительно), или
2. автоматически сгенерированных requirements, полученных из `plugins/ogi-lock.json`, когда `requirements.txt` отсутствует.

**Переменные окружения:**

| Переменная                         | Значение по умолчанию            | Описание                                      |
| ---------------------------------- | -------------------------------- | --------------------------------------------- |
| `OGI_BOOT_REQUIREMENTS_ENABLE`    | `true`                           | Включить/отключить установку при загрузке     |
| `OGI_BOOT_REQUIREMENTS_FILE`      | `/app/plugins/requirements.txt`  | Путь к файлу requirements                     |
| `OGI_BOOT_LOCK_FILE`              | `/app/plugins/ogi-lock.json`     | Путь к lock-файлу                             |
| `OGI_BOOT_REQUIREMENTS_STRICT`    | `false`                          | Завершать запуск при отсутствии requirements  |
| `OGI_BOOT_REQUIREMENTS_CACHE_DIR` | `/tmp/ogi-boot`                  | Временная/кэш-директория для сгенерированных requirements |

</details>

---

## Transform Hub

OpenGraph Intel имеет встроенный маркетплейс трансформов. Просматривайте, устанавливайте и управляйте трансформами из [реестра сообщества](https://github.com/opengraphintel/ogi-transforms).

> **Примечание по безопасности:** Плагины, требующие ключи API, следует рассматривать как привилегированный код. Если плагин может получить доступ к вашим секретам и совершать исходящие сетевые запросы, он может неправомерно использовать или извлечь эти секреты. Перед установкой или запуском сторонних плагинов проверяйте уровень доверия, разрешения и требуемые сервисы.```bash
# Search for transforms
uv run ogi transform search dns

# Install a transform
uv run ogi transform install shodan-host-lookup
```
### Встроенные категории преобразований

| Категория | Примеры                              |
| --------- | ------------------------------------ |
| DNS       | A, AAAA, MX, NS, CNAME записи        |
| IP & ASN  | GeoIP, обратный IP, информация об ASN|
| SSL/TLS   | Прозрачность сертификатов, SSL labs  |
| Email     | Валидация почтового сервера, проверки на утечки |
| Web       | WHOIS, информация о домене, извлечение данных с веб-страниц |
| Social    | Поиск имени пользователя, социальные профили |
| Hash      | Поиск MD5, SHA1, SHA256             |
| Location  | Геокодирование, погода, данные о ближайших ASN |

### Поддерживаемые типы сущностей

`Person` &bull; `Username` &bull; `Domain` &bull; `IPAddress` &bull; `EmailAddress` &bull; `PhoneNumber` &bull; `Organization` &bull; `URL` &bull; `SocialMedia` &bull; `Hash` &bull; `Document` &bull; `Location` &bull; `ASNumber` &bull; `Network` &bull; `MXRecord` &bull; `NSRecord` &bull; `Nameserver` &bull; `SSLCertificate` &bull; `Subdomain` &bull; `HTTPHeader`

### Создание собственных преобразований

Хотите создать свои? Смотрите [руководство по участию](https://github.com/opengraphintel/ogi-transforms/blob/main/CONTRIBUTING.md).

Если вашему преобразованию требуются внешние учетные данные для сервисов, укажите их в `api_keys_required`. Не храните секреты в настройках преобразования. OGI управляет ими в разделе `API Keys`, а плагины, использующие секреты, считаются привилегированным кодом.

Если ваше преобразование предоставляет настраиваемые ограничения, такие как `max_results` или `max_content_chars`, по возможности отдавайте предпочтение стандартным названиям параметров, а не уникальным именам. OGI может централизованно переопределять максимальные значения с помощью `OGI_TRANSFORM_SETTING_MAX_OVERRIDES`, что помогает облачным развертываниям соблюдать лимиты, в то время как локальные пользователи могут их удалить.

Каждый плагин — это директория с манифестом `plugin.yaml`:```yaml
name: my-transform
version: "1.0.0"
display_name: My Transform
description: What it does
author: Your Name
license: MIT
category: dns
input_types: [Domain]
output_types: [IPAddress]
permissions:
  network: true
  filesystem: false
  subprocess: false
```
## Архитектура

### Технологический стек

| Слой               | Технология                                                                  |
| ------------------ | ---------------------------------------------------------------------------- |
| Бэкенд             | Python 3.14+, FastAPI, SQLModel, asyncpg / aiosqlite                        |
| Фронтенд           | React 19, TypeScript 5.9, Sigma.js (graphology), Zustand, Tailwind CSS 4    |
| База данных        | PostgreSQL 16 (основная) / SQLite (локальное резервное решение)              |
| Аутентификация и реальное время | Supabase Auth + JWT + Realtime (опционально в локальном режиме)             |
| Очередь задач      | Redis 7 + RQ (асинхронные преобразования)                                    |
| ИИ-среда           | Провайдерно-ориентированный ИИ-исследователь с аудированной оркестрацией преобразований |
| Менеджеры пакетов  | uv (бэкенд), pnpm (фронтенд)                                                |
| Развёртывание      | Docker, nginx, GHCR                                                         |

### Структура проекта```
ogi/
├── backend/
│   └── ogi/
│       ├── api/            # REST API routes
│       ├── cli/            # CLI tool (Typer)
│       ├── db/             # Database layer (asyncpg + aiosqlite)
│       ├── engine/         # Graph engine & transform engine
│       ├── models/         # SQLModel definitions
│       ├── store/          # Data stores
│       ├── transforms/     # Built-in transforms
│       │   ├── dns/        # DNS resolution transforms
│       │   ├── cert/       # SSL certificate transforms
│       │   ├── email/      # Email enrichment
│       │   ├── hash/       # Hash lookups
│       │   ├── ip/         # IP/ASN/geolocation
│       │   ├── org/        # Organization info
│       │   ├── social/     # Social media
│       │   └── web/        # Web scraping/extraction
│       ├── worker/         # Async job queue (RQ)
│       ├── config.py       # Pydantic settings
│       └── main.py         # FastAPI entry point
├── frontend/
│   └── src/
│       ├── api/            # API client
│       ├── components/     # React components
│       ├── hooks/          # Custom hooks (realtime sync, etc.)
│       ├── stores/         # Zustand state management
│       ├── types/          # TypeScript types
│       └── App.tsx         # Main application
├── plugins/                # Community plugins directory
├── docs/                   # Documentation & images
├── docker-compose.yml      # Development deployment
├── docker-compose.prod.yml # Production deployment
└── .env.example            # Environment template
```
### Конфигурация

OGI использует [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) с поддержкой файлов `.env`. Переменные времени выполнения/бэкенда имеют префикс `OGI_`.

Настройки в виде списка принимают:

- JSON-массивы, например `["plugins","../plugins"]`
- строки, разделённые запятыми, например `plugins,../plugins`

<details>
<summary><strong>Основные переменные окружения</strong></summary>

| Переменная                                    | Описание                                                                                                      | Значение по умолчанию                              |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| `OGI_APP_NAME`                                | Имя приложения                                                                                                | `OGI`                                              |
| `OGI_HOST`                                    | Хост привязки бэкенда                                                                                         | `0.0.0.0`                                          |
| `OGI_PORT`                                    | Порт бэкенда                                                                                                  | `8000`                                             |
| `OGI_CORS_ORIGINS`                            | Разрешённые источники фронтенда                                                                               | `http://localhost:5173,http://localhost:3000`       |
| `OGI_USE_SQLITE`                              | Использовать SQLite вместо PostgreSQL                                                                         | `true`                                             |
| `OGI_DB_PATH`                                 | Путь к файлу базы данных SQLite                                                                               | `ogi.db`                                           |
| `OGI_DATABASE_URL`                            | Строка подключения PostgreSQL                                                                                 | `postgresql://postgres:postgres@localhost:5432/ogi` |
| `OGI_REDIS_URL`                               | Строка подключения Redis для RQ/задач                                                                         | `redis://localhost:6379/0`                          |
| `OGI_RQ_QUEUE_NAME`                           | Имя очереди для задач преобразования                                                                          | `transforms`                                       |
| `OGI_TRANSFORM_TIMEOUT`                       | Тайм-аут задачи преобразования в секундах                                                                     | `300`                                              |
| `OGI_AGENT_WORKER_POLL_INTERVAL_SEC`          | Интервал опроса для рабочего AI-исследователя                                                                 | `2.0`                                              |
| `OGI_AGENT_CLAIM_TIMEOUT_SEC`                 | Тайм-аут устаревшей блокировки шага AI-исследователя для восстановления                                        | `120`                                              |
| `OGI_AUTO_RUN_MIGRATIONS`                     | Автоматический запуск Alembic при локальном запуске приложения без SQLite                                      | `true`                                             |
| `OGI_RUN_DB_MIGRATIONS`                       | Запуск миграций БД в точке входа контейнера                                                                    | `false`                                            |
| `OGI_DB_MIGRATION_RETRIES`                    | Количество повторных попыток миграции в точке входа                                                           | `30`                                               |
```

---

[Read more](https://github.com/khashashin/ogi)
Скачать инструмент