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

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

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

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

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

Категории

Все категории
Loading categories
SeekYou — Разведка OSINT по любому IP-адресу, домену или ASN | Kitploit
Инструменты/GitHubGitHub/teycir/seekyou
OSINT (Разведка открытых источников)РазведкаКартирование сетиФиды и агрегаторы угрозАнализ уязвимостейСбор информацииТестирование на ПроникновениеБезопасность облачных средРазведка угрозРеагирование на ИнцидентыКраулерАнализ DNS
19292 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

SeekYou

Разведка OSINT по любому IP-адресу, домену или ASN

РепозиторийСайт

Поддержите разработку

Если этот проект помогает вашей работе, поддержите текущее обслуживание и новые функции.

Кошелек для пожертвований ETH
0x11282eE5726B3370c8B480e321b3B2aA13686582

QR-код для пожертвований Ethereum

Отсканируйте QR-код или скопируйте адрес кошелька выше.

SeekYou

Единая разведка хостов из 15 источников — Запрашивайте любой IP, домен или ASN для мгновенной оценки безопасности, деталей инфраструктуры и корреляций угроз. Работает полностью на бесплатном уровне Cloudflare.

Доступно по адресу: swiy.co/seekyou``` $ curl "https://seekyou.seekyou.workers.dev/api/lookup?q=1.1.1.1"

{ "query": { "raw": "1.1.1.1", "type": "ip", "normalised": "1.1.1.1" }, "core": { "internetdb": { "status": "ok", "data": { "ports": [80,443], "vulns": [] } }, "geo": { "status": "cached", "data": { "country": "US", "org": "AS13335 Cloudflare" } }, "bgp": { "status": "ok", "data": { "name": "CLOUDFLARENET", "rir": "ARIN" } }, ... }, "meta": { "durationMs": 312, "cacheHits": 4, "sourcesQueried": 15, "sourcesFailed": 0 } }

root@kitploit:~
## Скриншоты

<div align="center">

### Главная страница
<img src="https://assets.kitploit.com/production/public/readmes/7467/e00ec4ba8b3e5460ae1e03360cf6540e58d92acc5522c8693445512b591fed29.png" alt="Страница результатов SeekYou" width="800" />


### Страница результатов
<img src="https://assets.kitploit.com/production/public/readmes/7467/09b165feca9927ad4cd50c3ebd28c72e09a0355d72b9ca14d795bf1d04448c92.png" alt="Главная страница SeekYou" width="800" />

### Демо
<a href="https://www.youtube.com/watch?v=b86tAUUqd34">
  <img src="https://assets.kitploit.com/production/public/readmes/7467/8762e8b464816b9a69d929514441f8c7ee9f9ee9719f95b9c5e33ac1672575f8.jpg" alt="Демо SeekYou" width="800" />
</a>

</div>

---

## Содержание

- [SeekYou](#seekyou)
  - [Скриншоты](#screenshots)
    - [Главная страница](#landing-page)
    - [Страница результатов](#results-page)
    - [Демо](#demo)
  - [Содержание](#table-of-contents)
  - [Что такое SeekYou](#what-seekyou-does)
  - [Сценарии использования](#use-cases)
  - [Политика законного использования](#lawful-use-policy)
  - [Связанные инструменты](#related-tools)
  - [Обзор архитектуры](#architecture-overview)
  - [Модель выполнения](#execution-model)
  - [Источники данных](#data-sources)
  - [Структура проекта](#project-structure)
  - [Ключевые проектные решения](#key-design-decisions)
    - [Сначала Edge, без Node.js](#edge-first-no-nodejs)
    - [Многоуровневое параллельное выполнение](#layered-parallel-execution)
    - [Плавная деградация](#graceful-degradation)
    - [Разделение D1 + KV хранилища](#split-d1--kv-storage)
    - [Оптимизация для бесплатного тарифа](#free-tier-optimization)
    - [Запись D1 по принципу «забыл и забыл»](#fire-and-forget-d1-writes)
  - [Стратегия кэширования](#caching-strategy)
  - [Ограничение частоты запросов](#rate-limiting)
  - [Автоматические выключатели](#circuit-breakers)
  - [Ротация ключей — GrayHatWarfare](#key-rotation--grayhatwarfare)
  - [Постоянное хранилище D1](#d1-persistence)
    - [Схема (`schema.sql`)](#schema-schemasql)
    - [Применение схемы](#apply-schema)
    - [Вспомогательные функции](#helper-functions)
  - [Cron-воркер](#cron-worker)
    - [Типизированная разница (`lib/diff.ts`)](#typed-diff-libdiffts)
    - [Полезная нагрузка вебхука](#webhook-payload)
  - [Настройка разработки](#development-setup)
    - [Предварительные требования](#prerequisites)
    - [Локальная разработка](#local-development)
    - [Создание ресурсов Cloudflare (в первый раз)](#create-cloudflare-resources-first-time)
  - [Развертывание](#deployment)
    - [Сборка и развертывание](#build-and-deploy)
    - [Конфигурация Wrangler (`wrangler.toml`)](#wrangler-configuration-wranglertoml)
  - [Секреты и переменные окружения](#secrets-and-environment-variables)
    - [Необходимые секреты](#required-secrets)
    - [`.env.example` (только для локальной разработки)](#envexample-local-dev-only)
  - [Лицензия](#license)
  - [Автор](#author)
  - [Благодарности](#acknowledgments)

---

## Что такое SeekYou

SeekYou — это **инструмент разведки хостов** — вставьте IP-адрес, доменное имя или ASN, и получите единый отчет, охватывающий:

| Категория | Что вы получаете |
|---|---|
| Сеть | Открытые порты, CPE, BGP-префиксы, вышестоящие узлы, пиры, RIR |
| Идентификация | Регистрация RDAP, контакты, регистратор, серверы имен |
| Гео | Страна, город, ISP, флаги прокси / хостинга / мобильного подключения |
| Сертификаты | История crt.sh, SAN, цепочка издателя |
| DNS | Пассивные записи DNS, обратный/прямой DNS Robtex |
| Угрозы | URLhaus, ThreatFox, MalwareBazaar, Feodo, SSLBL |
| CVE | NVD + обогащение CIRCL для каждого ID CVE, о котором сообщает InternetDB |
| Разведка | Обнаруженные корзины GrayHatWarfare, снимки Wayback CDX |

Каждый источник опрашивается параллельно. Сбойный источник переключается на значок «недоступен» — он никогда не ломает страницу.

---

## Сценарии использования

**Операции по безопасности** — Быстрая оценка подозрительных IP-адресов из журналов, корреляция IOC, выявление уязвимых сервисов и CVE, отслеживание вредоносных доменов.

**Сетевые операции** — Проверка BGP-маршрутизации, данных распределения RDAP/WHOIS, исторических записей DNS, изменений SSL-сертификатов.

**Тестирование на проникновение** — Перечисление портов/сервисов/CPE, обнаружение открытых корзин, архивных страниц, поддоменов и связей ASN.

**Анализ угроз** — Проверка инфраструктуры C2 по пяти фидам угроз в одном запросе.

**Соответствие и управление рисками** — Профилирование поставщиков инфраструктуры, обнаружение открытых облачных хранилищ, выявление теневых IT.

---

## Политика законного использования

SeekYou разработан для **законных исследований безопасности, сетевых операций и анализа угроз**. Используя этот инструмент, вы соглашаетесь с:

**Разрешенное использование:**
- Операции по обеспечению безопасности и реагирование на инциденты в сетях, которыми вы владеете или на мониторинг которых уполномочены
- Исследования в области анализа угроз и корреляция IOC
- Сетевая диагностика и аудит инфраструктуры внутри вашей организации
- Тестирование на проникновение с явным письменным разрешением целевой организации
- Академические исследования и обучение в области кибербезопасности
- Аудит соответствия и оценка рисков поставщиков с соответствующим разрешением

**Запрещенное использование:**
- Несанкционированный доступ, разведка или атаки на системы, которыми вы не владеете или на тестирование которых не имеете явного разрешения
- Преследование, слежка или нарушение конфиденциальности отдельных лиц или организаций
- Содействие незаконной деятельности, включая мошенничество, кражу личных данных или киберпреступления
- Обход средств безопасности или ограничений доступа без авторизации
- Нарушение применимых законов, включая CFAA (США), Закон о компьютерных злоупотреблениях (Великобритания), GDPR (ЕС) или аналогичное законодательство вашей юрисдикции

**Ваши обязанности:**
- Убедитесь, что у вас есть надлежащее разрешение перед запросом к инфраструктуре, которой вы не владеете
- Соблюдайте ограничения скорости и не злоупотребляйте сервисом или вышестоящими источниками данных
- Соблюдайте все применимые законы и нормативные акты вашей юрисдикции
- Используйте данные ответственно и не используйте находки в качестве оружия без скоординированного раскрытия
- Понимайте, что запрос к хосту не дает разрешения на доступ к нему или его эксплуатацию

**Отказ от ответственности:**
Автор и соавторы не несут ответственности за неправомерное использование этого инструмента. Пользователи несут единоличную ответственность за соблюдение своих действий применимых законов. Данные, собранные из общедоступных источников, могут быть неполными, устаревшими или неточными — всегда проверяйте находки через авторитетные каналы, прежде чем предпринимать действия.

Если вы обнаружите уязвимость через SeekYou, следуйте практике ответственного раскрытия и уведомите затронутую сторону до публичного раскрытия.

---

## Связанные инструменты

SeekYou является частью ориентированного на конфиденциальность набора инструментов безопасности. Познакомьтесь со всем набором:

| Инструмент | Описание | Ссылка |
|---|---|---|
| **TimeSeal** | Сервис криптографической отметки времени — докажите существование документа в определенный момент времени, не раскрывая содержимого | [timeseal.online](https://timeseal.online) |
| **SanctumVault** | Зашифрованное хранилище с нулевым разглашением — шифрование на стороне клиента для хранения конфиденциальных данных | [sanctumvault.online](https://sanctumvault.online) |
| **GhostChat** | Эфемерный зашифрованный обмен сообщениями — самоуничтожающиеся беседы без серверных журналов | [ghost-chat.pages.dev](https://ghost-chat.pages.dev) |
| **XMRProof** | Проверка платежей Monero — создание криптографических доказательств транзакций XMR | [xmrproof.pages.dev](https://xmrproof.pages.dev) |
| **GhostReceipt** | Анонимное создание квитанций — создание проверяемых записей транзакций без раскрытия личности | [ghostreceipt.pages.dev](https://ghostreceipt.pages.dev) |
| **SeekYou** | Агрегатор разведки хостов — объединенный OSINT из 15 источников для IP, доменов и ASN | [seekyou.seekyou.workers.dev](https://seekyou.seekyou.workers.dev) |
| **HoneypotScan** | Сервис обнаружения ловушек (Honeypot) — выявление имитационных систем и избегание ложных срабатываний в исследованиях безопасности | [honeypotscan.pages.dev](https://honeypotscan.pages.dev) |

Все инструменты работают на периферийной сети Cloudflare с принципами Privacy-First.

---

## Обзор архитектуры

---```
Browser / curl
     │
     ▼
┌─────────────────────────────────────┐
│  Cloudflare Pages                   │
│  Next.js App Router (SSR)           │
│                                     │
│  app/page.tsx          search form  │
│  app/host/[query]/page.tsx          │
│    └─ streams /api/stream?q=…       │
│  app/api/recent/route.ts            │
│    └─ recent searches for homepage  │
│  app/targets/page.tsx               │
│    └─ monitoring dashboard          │
│  app/api/targets/route.ts           │
│    └─ saved targets CRUD            │
│        returns riskScore + lastDiff │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  app/api/lookup/route.ts            │
│  (Workers runtime via opennextjs)   │
│  • input validation                 │
│  • per-IP rate limiting (KV)        │
│  • ctx.waitUntil(recordSearch())    │
└──────────────┬──────────────────────┘
               │ runLookup()
               ▼
┌─────────────────────────────────────┐
│  worker/lookup.ts  — orchestrator   │
│  4-layer Promise.allSettled         │
└──┬──────────────────────────────────┘
   │
   ├─► Layer 1+2 (parallel, 12 sources):
   │     InternetDB · IPinfo · RIPE stat · RDAP · crt.sh · HackerTarget · Robtex
   │     URLhaus · ThreatFox · MalwareBazaar · Feodo · SSLBL
   ├─► Layer 3 (after L1): NVD CVE enrichment (only if vulns found, batched 10-at-a-time)
   └─► Layer 4 (parallel): GrayHatWarfare · Wayback (domain queries only)
               │
               ▼
┌──────────────────────┐   ┌──────────────────────┐
│ D1                   │   │ KV                   │
│ source response cache│   │ rate limiting        │
│ (TTL per source)     │   │ circuit breakers     │
│ searches             │   │ concurrency counters │
│ saved_targets        │   │                      │
└──────────────────────┘   └──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  seekyou-cron (Worker)            │
│  wrangler.cron.toml                 │
│  • hourly blocklist refresh         │
│  • hourly saved-target re-query     │
│    + typed diff (lib/diff.ts)       │
│    + webhook on hasChanges          │
└─────────────────────────────────────┘

Модель выполнения

Уровни 1 и 2 срабатывают одновременно (12 источников в одном Promise.allSettled). Уровень 3 запускается после завершения Уровня 1 — CVE ID из InternetDB управляют обогащением NVD, пакетированными по 10 за раз, чтобы избежать перегрузки API. Уровень 4 срабатывает параллельно с Уровнем 3, но только для запросов доменов; IP/ASN полностью его пропускают. Общее время выполнения ≈ max(Уровень 1+2) + max(Уровень 3+4).

Принудительно обновите любой запрос с помощью ?refresh=1, чтобы обойти кеш D1 и получить актуальные данные от всех источников.


Источники данных

Feodo и SSLBL загружаются как массовые блок-списки и обновляются ежечасно cron-воркером — без отдельных запросов к источникам.


Project structure```

SeekYou/ ├── app/ │ ├── page.tsx # Homepage — search form + recent searches │ ├── layout.tsx # Root layout │ ├── globals.css │ ├── about/ # About page │ ├── faq/ # FAQ page │ ├── targets/ │ │ └── page.tsx # /targets — monitoring dashboard (risk + diffs) │ ├── host/[query]/ │ │ └── page.tsx # SSR host report page (streams via /api/stream) │ ├── api/ │ │ ├── lookup/route.ts # GET /api/lookup?q=&refresh=1 │ │ ├── stream/route.ts # GET /api/stream?q= (SSE streaming) │ │ ├── recent/route.ts # GET /api/recent?limit=5 │ │ ├── batch/route.ts # POST /api/batch (multi-query) │ │ ├── targets/route.ts # GET /api/targets (+ riskScore, lastDiff) · POST │ │ ├── targets/[id]/route.ts # DELETE /api/targets/:id │ │ └── admin/reset-breaker/ # POST — manual circuit-breaker reset │ └── components/ │ ├── AnimatedTagline.tsx │ ├── Card.tsx │ ├── CopyButton.tsx │ ├── CveDrawer.tsx │ ├── DecryptedText.tsx │ ├── ExportButton.tsx # JSON export (client, zero backend) │ ├── Footer.tsx │ ├── RecentSearches.tsx # Recent queries from D1 (client) │ ├── RiskBadge.tsx # Risk score pill with breakdown tooltip │ ├── SaveButton.tsx # Save/unsave target │ ├── ScrollProgress.tsx │ ├── ShareButton.tsx │ ├── VulnsStream.tsx # Streaming CVE results │ └── ui/ # Shared UI primitives ├── worker/ │ ├── lookup.ts # 4-layer orchestrator │ ├── cron.ts # Hourly blocklist refresh + target sweep w/ typed diff │ ├── index.ts │ └── sources/ │ ├── internetdb.ts │ ├── ipapi.ts │ ├── bgpview.ts │ ├── rdap.ts │ ├── crtsh.ts │ ├── passivedns.ts │ ├── robtex.ts │ ├── abusech.ts # URLhaus + ThreatFox + MalwareBazaar │ ├── nvd.ts # NVD + CIRCL CVE enrichment │ ├── osv.ts # OSV.dev re-export (via nvd.ts) │ ├── grayhatwarfare.ts │ └── wayback.ts ├── lib/ │ ├── types.ts # All TypeScript interfaces │ ├── cache.ts # D1 cache wrapper (cacheGet/cachePut, bypass on forceRefresh) │ ├── config.ts # All magic numbers: TTLs, timeouts, limits │ ├── diff.ts # TargetDiff — typed change detection between snapshots │ ├── errors.ts # Unified error format + ErrorCode enum │ ├── hooks.ts # Shared React hooks │ ├── keyring.ts # GHW 18-key rotation │ ├── logger.ts # Structured logging │ ├── merge.ts # Result merging │ ├── normalize.ts # Threat indicator normalization │ ├── ratelimit.ts # KV-based per-IP rate limiter + circuit breakers │ ├── results.ts # SourceResult helpers │ ├── risk.ts # computeRiskScore — scored 0–100 with breakdown │ ├── searches.ts # D1 helpers: recordSearch, getRecentSearches │ ├── targets.ts # D1 helpers: saveTarget, listTargets, removeTarget │ ├── textAnimation.ts # Text animation utility │ ├── useHostStream.ts # SSE streaming hook for host results │ ├── validate.ts # Query parsing (IPv4/v6/domain/ASN) │ └── utils.ts ├── test/ │ ├── cache.test.ts │ ├── diff.test.ts # Tests for diffHostResults + summariseDiff │ ├── keyring.test.ts │ ├── logger.test.ts │ ├── merge.test.ts │ ├── normalize.test.ts │ ├── results.test.ts │ ├── risk.test.ts │ ├── validate.test.ts │ └── sources/ ├── docs/ │ ├── ROADMAP.md │ ├── Spec.md │ └── LICENSE.md ├── public/ │ └── publiceth.svg # Donation QR code ├── schema.sql # D1 schema (apply with wrangler d1 execute) ├── wrangler.toml # Pages build config (KV + D1 bindings) ├── wrangler.cron.toml # Cron worker config (separate deploy) ├── next.config.ts ├── open-next.config.ts └── vitest.config.ts

root@kitploit:~
---

## Ключевые проектные решения

### Edge-first, без Node.js
Время выполнения Workers через `@opennextjs/cloudflare` — не требуется экспорт `runtime = 'edge'`. Используются чистые Web API. Холодный старт менее 50 мс по всему миру.

### Многоуровневое параллельное выполнение
Слои 1+2 запускаются вместе (12 источников). Слой 3 (обогащение CVE) выполняется, только если InternetDB находит уязвимости, пакетная обработка по 10 запросов. Слой 4 (GHW + Wayback) выполняется параллельно со слоем 3, но полностью пропускается для IP/ASN запросов. Общее время ≈ самый медленный источник в каждой волне, а не сумма всех источников.

### Постепенная деградация функциональности
Каждый источник обернут в circuit breaker + try/catch. Неудачный источник отображается как бейдж `{ status: 'error' }`. Страница всегда рендерится.

### Раздельное хранение D1 + KV
Кэш ответов источников хранится в **D1** (не в KV) — значения записываются один раз, читаются редко и достаточно велики, поэтому стоимость квоты на запись в KV быстро растет. **KV** зарезервировано исключительно для счетчиков горячего пути: ограничение скорости, circuit breakers и отслеживание одновременных выполнений. Каждый источник имеет собственный TTL (30 дней для CVE, 24 часа для BGP/RDAP, 1 час для основных geo/port, 30 минут для abuse.ch). Параметр `?refresh=1` передает `forceRefresh: true` через каждый загрузчик, чтобы по требованию обойти кэш D1.

### Оптимизация для бесплатного уровня
GrayHatWarfare использует ротацию 18 ключей (1 800 запросов/день). NVD использует пакетирование запросов (максимум 10 одновременных). Feodo/SSLBL загружаются в виде массовых списков cron-воркером и кэшируются в KV — нулевая стоимость каждого запроса к вышестоящему источнику.

### Запись D1 по принципу "забыл и отправил"
`recordSearch()` вызывается внутри `ctx.waitUntil()` — это не добавляет задержки к ответу API. Запись в D1 происходит после отправки ответа.

---

## Стратегия кэширования

Ответы источников кэшируются в **D1** с ручным TTL, контролируемым через столбец `expires_at`. KV не используется для кэширования ответов — оно зарезервировано для ограничения скорости, circuit breakers и счетчиков параллельных выполнений, где важны атомарные инкременты с низкой задержкой.```typescript
// lib/cache.ts
export async function cacheGet<T>(
  db: D1Database,
  key: string,
  bypass?: boolean,        // true when ?refresh=1
): Promise<T | null>

export async function cachePut<T>(
  db: D1Database,
  key: string,
  value: T,
  ttl: number,             // seconds
): Promise<void>

Ключи кэша следуют шаблону source:normalised_query — например, internetdb:1.1.1.1, crtsh:example.com.

TTL по источникам (из lib/cache.ts):

Ошибки никогда не кэшируются — неудачный запрос всегда повторяется при следующем запросе. Просроченные строки возвращаются как промах и лениво перезаписываются; фоновой очистки не требуется.


Ограничение скорости

Скользящее окно на основе KV: 100 запросов на IP в час. Реализовано в lib/ratelimit.ts, применяется в app/api/lookup/route.ts перед запуском любого поиска.

Заголовки ограничения скорости возвращаются в каждом ответе:``` X-RateLimit-Limit: 100 X-RateLimit-Remaining: 87 X-RateLimit-Reset: 1716912000

root@kitploit:~
При истощении API возвращает `429` с `Retry-After`.

---

## Автоматические выключатели

Каждый источник имеет автоматический выключатель, отслеживаемый в KV. Если уровень отказов источника превышает **50%** в 5-минутном окне (минимум 4 запроса), выключатель размыкается, и источник пропускается (возвращается `{ status: 'skipped' }`) на **15 минут**, после чего автоматически восстанавливается.

Текущее состояние каждого выключателя включается в `meta.circuitBreakers` в каждом ответе API.

Чтобы вручную сбросить автоматический выключатель в продакшене:```bash
curl -X POST https://seekyou.seekyou.workers.dev/api/admin/reset-breaker \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source": "nvd"}'

Ротация ключей — GrayHatWarfare

GrayHatWarfare позволяет 100 запросов в день на один ключ API. SeekYou переключается между 18 ключами, достигая эффективного лимита в 1 800 запросов в день:```typescript // lib/keyring.ts — round-robin across keys with remaining quota const key = await keyRing.next(env, 'GRAYHATWARFARE_API_KEY')

root@kitploit:~
Keys are named `GRAYHATWARFARE_API_KEY_1` through `GRAYHATWARFARE_API_KEY_18` and stored as Wrangler secrets.

---

## Персистентность D1

### Схема (`schema.sql`)```sql
CREATE TABLE IF NOT EXISTS searches (
  id          TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(8)))),
  query       TEXT NOT NULL,
  query_type  TEXT NOT NULL CHECK (query_type IN ('ip','domain','asn')),
  result_json TEXT NOT NULL,
  duration_ms INTEGER,
  created_at  INTEGER NOT NULL DEFAULT (unixepoch())
);

CREATE INDEX IF NOT EXISTS idx_searches_query
  ON searches (query, created_at DESC);

CREATE TABLE IF NOT EXISTS saved_targets (
  id          TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(8)))),
  query       TEXT NOT NULL UNIQUE,
  label       TEXT,
  notes       TEXT,
  result_json TEXT,       -- snapshot of last cron lookup
  checked_at  INTEGER,    -- unix seconds — when cron last re-queried
  created_at  INTEGER NOT NULL DEFAULT (unixepoch())
);

CREATE INDEX IF NOT EXISTS idx_saved_targets_created
  ON saved_targets (created_at DESC);

Применить схему```bash

wrangler d1 execute seekyou --file=schema.sql

root@kitploit:~
### Вспомогательные функции

**`lib/searches.ts`** — история поиска:```typescript
// Write a search row (fire-and-forget safe)
await recordSearch(db, query, queryType, resultJson, durationMs)

// Read last N distinct queries for the homepage (default 5)
const recent = await getRecentSearches(db, 5)
// → [{ query: '1.1.1.1', query_type: 'ip', created_at: 1716912000 }, ...]

lib/targets.ts — сохранённые цели:```typescript // Upsert a target (idempotent on query) const id = await saveTarget(db, query, label, notes)

// List all saved targets const targets = await listTargets(db)

// Remove by id await removeTarget(db, id)

// Fetch one (used by cron before re-querying) const target = await getTarget(db, id)

// Write latest snapshot after cron re-query await updateTargetSnapshot(db, id, resultJson)

root@kitploit:~
---

## Cron-воркер

Отдельный воркер (`worker/cron.ts`) разворачивается отдельно с помощью `wrangler.cron.toml`. Он запускается по **ежечасному триггеру** и выполняет две задачи:

1. **Обновление блок-листов** — проверяет, не устарели ли массовые списки Feodo/SSLBL, и при необходимости перезагружает их.
2. **Обход сохранённых целей** — повторно опрашивает каждую сохранённую цель, вычисляет типизированный `TargetDiff`, сохраняет свежий снимок в D1 и отправляет POST вебхука при обнаружении изменений.

### Типизированный diff (`lib/diff.ts`)

После каждого повторного запроса `diffHostResults(prev, next)` создаёт структурированный `TargetDiff`, охватывающий:

| Signal | Что обнаруживает |
|---|---|
| `ports` | Открытые / закрытые порты (направление для каждого порта) |
| `cves` | Появившиеся / устранённые CVE с указанием серьёзности и оценки CVSS |
| `threats` | Изменения в лентах URLhaus, Feodo, SSLBL, ThreatFox |
| `geo` | Изменения страны, ASN или основного имени хоста |
| `certExpiry` | Сертификаты, срок действия которых истекает в течение 30 дней, или недавно истекшие (срабатывает один раз на сертификат) |
| `risk` | Дельта оценки риска — отображается в `hasChanges` только при Δ ≥ 5 баллов |

`summariseDiff(diff, query)` преобразует структуру в удобочитаемую строку для логов и ретрансляции вебхука.

### Полезная нагрузка вебхука

Когда `diff.hasChanges` истинно и `WEBHOOK_URL` установлен, cron отправляет POST запрос:```json
{
  "sentAt": 1716912000,
  "events": [
    {
      "targetId": "abc123",
      "query": "1.2.3.4",
      "checkedAt": 1716912000,
      "summary": "1.2.3.4:\n  port 3389 opened\n  CVE-2021-44228 appeared [CRITICAL 10]",
      "diff": {
        "diffedAt": 1716912000,
        "hasChanges": true,
        "ports": [{ "port": 3389, "direction": "opened" }],
        "cves": [{ "id": "CVE-2021-44228", "direction": "appeared", "severity": "CRITICAL", "score": 10 }],
        "threats": [],
        "geo": [],
        "certExpiry": [],
        "risk": { "prev": 20, "next": 55, "delta": 35 }
      }
    }
  ]
}

Поле diff полностью структурировано — потребители могут ветвиться по конкретным типам изменений без разбора строк. Поле summary предварительно отформатировано для ретрансляций Slack/Discord.

Разверните крон-воркера:```bash wrangler deploy --config wrangler.cron.toml

root@kitploit:~
Секреты для cron-воркера задаются отдельно:```bash
wrangler secret put NVD_KEY     --config wrangler.cron.toml
wrangler secret put ABUSECH_KEY --config wrangler.cron.toml
wrangler secret put WEBHOOK_URL --config wrangler.cron.toml  # optional — fires on any hasChanges

Настройка разработки

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

  • Node.js 18+
  • Wrangler CLI (npm i -g wrangler)
  • Учетная запись Cloudflare (бесплатного тарифа достаточно)

Локальная разработка```bash

git clone https://github.com/Teycir/SeekYou cd SeekYou npm install

Copy example env — fill in your keys

cp .env.example .env

Run Next.js dev server (KV/D1 stubbed via Wrangler local)

npm run dev

root@kitploit:~
The app is available at `http://localhost:3000`. In local dev, KV and D1 use Wrangler's local SQLite-backed emulation — no Cloudflare account access needed for basic testing.

### Создание ресурсов Cloudflare (первый раз)```bash
# Create KV namespace — copy the ID into wrangler.toml
wrangler kv namespace create KV

# Create D1 database — copy the ID into wrangler.toml
wrangler d1 create seekyou

# Apply schema
wrangler d1 execute seekyou --file=schema.sql

Развертывание

Сборка и развертывание```bash

Build + deploy to Cloudflare Pages

bash scripts/deploy.sh

root@kitploit:~
Скрипт выполняет `opennextjs-cloudflare build`, подготавливает выходную директорию Pages и вызывает `wrangler pages deploy .open-next`. **Не** используйте `npm run deploy` или просто `wrangler deploy` — они нацелены на среду выполнения Workers (не Pages) и завершатся ошибкой.

Для отдельного развёртывания cron-воркера:```bash
wrangler deploy --config wrangler.cron.toml

Конфигурация Wrangler (wrangler.toml)```toml

name = "seekyou" pages_build_output_dir = ".open-next" compatibility_date = "2025-05-01" compatibility_flags = ["nodejs_compat"]

[[kv_namespaces]] binding = "KV" id = ""

[[d1_databases]] binding = "DB" database_name = "seekyou" database_id = ""

root@kitploit:~
---

## Секреты и переменные окружения

Все секреты хранятся как секреты Wrangler — никогда в исходном коде или `.env`.

### Обязательные секреты```bash
wrangler secret put NVD_KEY             # NVD API key (optional — higher rate limits)
wrangler secret put ABUSECH_KEY         # abuse.ch API key (URLhaus/ThreatFox/MalwareBazaar)
wrangler secret put ADMIN_TOKEN         # Bearer token for /api/admin/* endpoints

# GrayHatWarfare — repeat for each key you have (1–18)
wrangler secret put GRAYHATWARFARE_API_KEY_1
wrangler secret put GRAYHATWARFARE_API_KEY_2
# ... up to GRAYHATWARFARE_API_KEY_18

.env.example (только для локальной разработки)```bash

NVD_KEY=your_nvd_key_here ABUSECH_KEY=your_abusech_key_here ADMIN_TOKEN=change_me GRAYHATWARFARE_API_KEY_1=your_ghw_key_here

root@kitploit:~
> **Замечание по безопасности:** Никогда не коммитьте `.env`. Он находится в `.gitignore`. Если секреты когда-либо были закоммичены, перевыпустите все ключи и очистите историю git с помощью BFG (`bfg --delete-files .env`).

---

## Лицензия

**Business Source License 1.1 (BSL)**

© 2026 Teycir Ben Soltane <[email protected]>

Разрешено: личное использование, исследования, образование, некоммерческие проекты, внутренние бизнес-инструменты.  
Запрещено: коммерческие SaaS-предложения, перепродажа как услуга, конкурирующие продукты.

Через 4 года с даты выпуска это программное обеспечение переходит под лицензию Apache 2.0.

Полные условия см. в [docs/LICENSE.md](https://github.com/teycir/seekyou/blob/master/docs/LICENSE.md).

---

## Автор

**Teycir Ben Soltane**  
Эл. почта: [email protected]  
GitHub: [@Teycir](https://github.com/Teycir)

---

## Благодарности

- [InternetDB](https://internetdb.shodan.io) (Shodan)
- [IPinfo](https://ipinfo.io)
- [RIPE stat](https://stat.ripe.net)
- [RDAP](https://rdap.org)
- [crt.sh](https://crt.sh)
- [HackerTarget](https://hackertarget.com)
- [Robtex](https://www.robtex.com)
- [abuse.ch](https://abuse.ch) — URLhaus, ThreatFox, MalwareBazaar, Feodo, SSLBL
- [NVD](https://nvd.nist.gov) (NIST)
- [CIRCL](https://www.circl.lu/services/cve-search/)
- [OSV.dev](https://osv.dev)
- [GrayHatWarfare](https://grayhatwarfare.com)
- [Internet Archive](https://web.archive.org) (Wayback Machine)

---

## 🌐 Связанные проекты

Изучите другие инструменты, ориентированные на конфиденциальность и безопасность:

### Приватность и шифрование
- **[Timeseal](https://github.com/Teycir/Timeseal)** — Хранилище шифрования с временной блокировкой и функцией «Dead Man's Switch». Криптография AES-256 с разделением ключей, эфемерные печати.
- **[Sanctum](https://github.com/Teycir/Sanctum)** — Зашифрованное хранилище с нулевым доверием и криптографическим правдоподобным отрицанием. XChaCha20-Poly1305, Argon2id.
- **[GhostChat](https://github.com/Teycir/GhostChat)** — Полностью P2P-зашифрованный чат через WebRTC. Никаких серверов, никакого хранения, самоуничтожающиеся сообщения.
- **[xmrproof](https://github.com/Teycir/xmrproof)** — Проверка платежей Monero, полностью на стороне клиента.
- **[GhostReceipt](https://github.com/Teycir/GhostReceipt)** — Анонимная генерация чеков с доказательствами с нулевым разглашением.

### Инструменты безопасности
- **[BurpAPISecuritySuite](https://github.com/Teycir/BurpAPISecuritySuite)** — Расширение Burp Suite для тестирования безопасности API. 15 типов атак, более 108 нагрузок, обнаружение BOLA/IDOR.
- **[Mcpwn](https://github.com/Teycir/Mcpwn)** — Автоматизированный сканер безопасности для серверов Model Context Protocol. Обнаруживает RCE, path traversal, инъекции подсказок.
- **[DiffCatcher](https://github.com/Teycir/DiffCatcher)** — Обнаружение Git-репозиториев, захват различий, извлечение элементов кода.
- **[HoneypotScan](https://github.com/Teycir/HoneypotScan)** — Сервис обнаружения ловушек (honeypot) для исследований безопасности.
- **[CheckAPI](https://github.com/Teycir/CheckAPI)** — Валидатор ключей API для LLM от нескольких провайдеров. В первую очередь конфиденциальность, проверка на стороне клиента.

### MCP-серверы безопасности
- **[burp-mcp-server](https://github.com/Teycir/burp-mcp-server)** — MCP-сервер для Burp Suite Professional. Сканирование уязвимостей через ИИ-ассистентов.
- **[nuclei-mcp](https://github.com/Teycir/nuclei-mcp)** — MCP-сервер для Nuclei. Многоцелевое сканирование, фильтрация по серьёзности.
- **[nmap-mcp](https://github.com/Teycir/nmap-mcp)** — MCP-сервер для Nmap. Скрытая разведка, сканирование уязвимостей/NSE.
- **[frida-mcp](https://github.com/Teycir/frida-mcp)** — MCP-сервер для Frida. Динамическая инструментация, обход привязки SSL.

---

## 💼 Предлагаемые услуги

- 🔒 **Разработка с приоритетом приватности** — P2P-приложения, зашифрованная связь, системы с нулевым разглашением
- 🚀 **Веб-разработка** — Full-stack разработка на Next.js, React, TypeScript
- 🔧 **Решения для граничных вычислений** — Cloudflare Workers, Pages, D1, KV, Durable Objects
- 🛡️ **Разработка инструментов безопасности** — Расширения Burp, инструменты тестирования на проникновение, фреймворки автоматизации
- 🤖 **Интеграция ИИ** — Приложения на базе LLM, интеллектуальная автоматизация, индивидуальные ИИ-решения
- 🔍 **OSINT и разведка угроз** — Пользовательские инструменты разведки, агрегация потоков угроз, корреляция IOC

**Свяжитесь со мной**: [teycirbensoltane.tn](https://teycirbensoltane.tn) | Доступен для фриланс-проектов и консультаций

---

<div align="center">

**Сделано с 💚 [Teycir Ben Soltane](https://teycirbensoltane.tn)**

</div>
Скачать инструмент
УровеньИсточникЧто предоставляетТребуется авторизация
1InternetDBОткрытые порты, CPE, CVE IDНет
1IPinfoГео, провайдер, ASN, флаг anycastНет
1RIPE statBGP-префиксы, владелец ASN, RIRНет
1RDAPРегистрация, контакты, серверы имен, CIDRНет
2crt.shИстория сертификатов, SAN, цепочка эмитентовНет
2HackerTargetПассивный DNS — обратный IP и поиск хостовНет
2RobtexОбратный/прямой DNS, информация об ASНет
2URLhausURL-адреса распространения вредоносного ПОABUSECH_KEY
2ThreatFoxБаза данных IOCABUSECH_KEY
2MalwareBazaarМетаданные образцов вредоносного ПОABUSECH_KEY
2Feodo TrackerIP-адреса C2 ботнетовНет (массовая загрузка)
2SSLBLВредоносные SSL-сертификатыНет (массовая загрузка)
3NVD + CIRCLДетали CVE, оценки CVSS v2/v3NVD_KEY (опционально)
4GrayHatWarfareОткрытые корзины S3/Azure/GCSGRAYHATWARFARE_API_KEY_1..18
4WaybackИсторические снимки CDXНет
ИсточникиTTL
CVE (NVD/CIRCL)30 дней
Wayback7 дней
BGP, RDAP, Robtex24 часа
crt.sh, HackerTarget passive DNS12 часов
GrayHatWarfare6 часов
InternetDB, IPinfo1 час
Feodo, SSLBL (bulk)1 час
URLhaus, ThreatFox, MalwareBazaar30 минут