Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SeekYou — Intelligence OSINT su qualsiasi IP, dominio o ASN | Kitploit
Strumenti/GitHubGitHub/teycir/seekyou
OSINT (Open Source Intelligence)RicognizioneMappatura della ReteFeed e Aggregatori di MinacceAnalisi delle VulnerabilitàRaccolta InformazioniPenetration TestingSicurezza CloudThreat IntelligenceRisposta agli IncidentiCrawlerAnalisi DNS
19292 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubteycir/seekyou

SeekYou

Intelligence OSINT su qualsiasi IP, dominio o ASN

Vedi RepositorySito web

Supporta lo sviluppo

Se questo progetto aiuta il tuo lavoro, supporta la manutenzione continua e le nuove funzionalità.

Portafoglio di donazione ETH
0x11282eE5726B3370c8B480e321b3B2aA13686582

Codice QR per donazione Ethereum

Scansiona il codice QR o copia l'indirizzo del portafoglio qui sopra.

SeekYou

Intelligence host unificata su 15 fonti — Interroga qualsiasi IP, dominio o ASN per ottenere una postura di sicurezza immediata, dettagli infrastrutturali e correlazioni di minacce. Funziona interamente sul piano gratuito di Cloudflare.

Disponibile su: 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:~
## Screenshot

<div align="center">

### Pagina iniziale
<img src="https://assets.kitploit.com/production/public/readmes/7467/e00ec4ba8b3e5460ae1e03360cf6540e58d92acc5522c8693445512b591fed29.png" alt="Pagina dei risultati di SeekYou" width="800" />


### Pagina dei risultati
<img src="https://assets.kitploit.com/production/public/readmes/7467/09b165feca9927ad4cd50c3ebd28c72e09a0355d72b9ca14d795bf1d04448c92.png" alt="Pagina iniziale di SeekYou" width="800" />

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

</div>

---

## Indice

- [SeekYou](#seekyou)
  - [Screenshot](#screenshots)
    - [Pagina iniziale](#landing-page)
    - [Pagina dei risultati](#results-page)
    - [Demo](#demo)
  - [Indice](#table-of-contents)
  - [Cosa fa SeekYou](#what-seekyou-does)
  - [Casi d'uso](#use-cases)
  - [Politica di utilizzo lecito](#lawful-use-policy)
  - [Strumenti correlati](#related-tools)
  - [Panoramica dell'architettura](#architecture-overview)
  - [Modello di esecuzione](#execution-model)
  - [Fonti dei dati](#data-sources)
  - [Struttura del progetto](#project-structure)
  - [Decisioni progettuali chiave](#key-design-decisions)
    - [Edge-first, senza Node.js](#edge-first-no-nodejs)
    - [Esecuzione parallela a strati](#layered-parallel-execution)
    - [Degradazione graduale](#graceful-degradation)
    - [Storage D1 + KV separato](#split-d1--kv-storage)
    - [Ottimizzazione per il piano gratuito](#free-tier-optimization)
    - [Scritture D1 fire-and-forget](#fire-and-forget-d1-writes)
  - [Strategia di caching](#caching-strategy)
  - [Rate limiting](#rate-limiting)
  - [Circuit breaker](#circuit-breakers)
  - [Rotazione delle chiavi — GrayHatWarfare](#key-rotation--grayhatwarfare)
  - [Persistenza D1](#d1-persistence)
    - [Schema (`schema.sql`)](#schema-schemasql)
    - [Applicare lo schema](#apply-schema)
    - [Funzioni helper](#helper-functions)
  - [Worker cron](#cron-worker)
    - [Diff tipizzato (`lib/diff.ts`)](#typed-diff-libdiffts)
    - [Payload del webhook](#webhook-payload)
  - [Configurazione di sviluppo](#development-setup)
    - [Prerequisiti](#prerequisites)
    - [Sviluppo locale](#local-development)
    - [Creare le risorse Cloudflare (prima volta)](#create-cloudflare-resources-first-time)
  - [Distribuzione](#deployment)
    - [Build e deploy](#build-and-deploy)
    - [Configurazione di Wrangler (`wrangler.toml`)](#wrangler-configuration-wranglertoml)
  - [Segreti e variabili d'ambiente](#secrets-and-environment-variables)
    - [Segreti richiesti](#required-secrets)
    - [`.env.example` (solo sviluppo locale)](#envexample-local-dev-only)
  - [Licenza](#license)
  - [Autore](#author)
  - [Ringraziamenti](#acknowledgments)

---

## Cosa fa SeekYou

SeekYou è uno **strumento di intelligence sugli host** — incolla un indirizzo IP, un nome di dominio o un ASN e ottieni un report unificato che copre:

| Categoria | Cosa ottieni |
|---|---|
| Rete | Porte aperte, CPE, prefissi BGP, upstream, peer, RIR |
| Identità | Registrazione RDAP, contatti, registrar, nameserver |
| Geo | Paese, città, ISP, flag proxy / hosting / mobile |
| Certificati | Storico crt.sh, SAN, catena dell'emittente |
| DNS | Record DNS passivi, DNS inverso/diretto di Robtex |
| Minacce | URLhaus, ThreatFox, MalwareBazaar, Feodo, SSLBL |
| CVE | Arricchimento NVD + CIRCL per ogni CVE ID segnalato da InternetDB |
| Ricognizione | Bucket esposti di GrayHatWarfare, snapshot Wayback CDX |

Ogni fonte viene interrogata in parallelo. Una fonte che fallisce degrada a un badge "non disponibile" — non rompe mai la pagina.

---

## Casi d'uso

**Operazioni di sicurezza** — Profila rapidamente IP sospetti dai log, correla gli IOC, identifica servizi esposti e CVE, traccia domini dannosi.

**Operazioni di rete** — Ispeziona il routing BGP, i dati di allocazione RDAP/WHOIS, i record DNS storici, le modifiche ai certificati SSL.

**Test di penetrazione** — Enumera porte/servizi/CPE, scopri bucket esposti, pagine archiviate, sottodomini e relazioni ASN.

**Threat intelligence** — Verifica l'infrastruttura C2 contro cinque feed di minacce in un'unica query.

**Compliance e rischio** — Profila l'infrastruttura dei fornitori, rileva storage cloud esposti, identifica lo shadow IT.

---

## Politica di utilizzo lecito

SeekYou è progettato per **ricerca di sicurezza lecita, operazioni di rete e threat intelligence**. Utilizzando questo strumento, accetti:

**Usi consentiti:**
- Operazioni di sicurezza e incident response su reti di tua proprietà o che sei autorizzato a monitorare
- Ricerca di threat intelligence e correlazione degli IOC
- Risoluzione dei problemi di rete e audit dell'infrastruttura all'interno della tua organizzazione
- Test di penetrazione con autorizzazione scritta esplicita dell'organizzazione target
- Ricerca accademica e formazione in cybersecurity
- Audit di conformità e valutazioni del rischio dei fornitori con la dovuta autorizzazione

**Usi vietati:**
- Accesso non autorizzato, ricognizione o attacchi contro sistemi che non possiedi o che non hai il permesso esplicito di testare
- Molestie, stalking o violazioni della privacy contro individui o organizzazioni
- Agevolare attività illegali, incluse frodi, furto d'identità o cybercrimine
- Eludere i controlli di sicurezza o le restrizioni di accesso senza autorizzazione
- Violare le leggi applicabili, inclusi CFAA (USA), Computer Misuse Act (Regno Unito), GDPR (UE), o la legislazione equivalente nella tua giurisdizione

**Le tue responsabilità:**
- Assicurati di avere la dovuta autorizzazione prima di interrogare infrastrutture che non possiedi
- Rispetta i rate limit e non abusare del servizio o delle fonti dati upstream
- Rispetta tutte le leggi e i regolamenti applicabili nella tua giurisdizione
- Usa i dati in modo responsabile e non trasformare i risultati in armi senza una divulgazione coordinata
- Comprendi che interrogare un host non concede il permesso di accedervi o sfruttarlo

**Esclusione di responsabilità:**
L'autore e i collaboratori non si assumono alcuna responsabilità per l'uso improprio di questo strumento. Gli utenti sono gli unici responsabili di garantire che le proprie attività rispettino le leggi applicabili. I dati aggregati da fonti pubbliche possono essere incompleti, obsoleti o imprecisi — verifica sempre i risultati attraverso canali autorevoli prima di agire.

Se scopri una vulnerabilità tramite SeekYou, segui le pratiche di divulgazione responsabile e informa la parte interessata prima della divulgazione pubblica.

---

## Strumenti correlati

SeekYou fa parte di un toolkit di sicurezza incentrato sulla privacy. Esplora l'intera suite:

| Strumento | Descrizione | URL |
|---|---|---|
| **TimeSeal** | Servizio di marcatura temporale crittografica — dimostra l'esistenza di un documento in un momento specifico senza rivelarne il contenuto | [timeseal.online](https://timeseal.online) |
| **SanctumVault** | Cassaforte crittografata zero-knowledge — crittografia lato client per l'archiviazione di dati sensibili | [sanctumvault.online](https://sanctumvault.online) |
| **GhostChat** | Messaggistica crittografata effimera — conversazioni autodistruggenti senza log server | [ghost-chat.pages.dev](https://ghost-chat.pages.dev) |
| **XMRProof** | Verifica dei pagamenti Monero — genera prove crittografiche delle transazioni XMR | [xmrproof.pages.dev](https://xmrproof.pages.dev) |
| **GhostReceipt** | Generazione di ricevute anonime — crea registrazioni di transazioni verificabili senza esporre l'identità | [ghostreceipt.pages.dev](https://ghostreceipt.pages.dev) |
| **SeekYou** | Aggregatore di intelligence sugli host — OSINT unificato su 15 fonti per IP, domini e ASN | [seekyou.seekyou.workers.dev](https://seekyou.seekyou.workers.dev) |
| **HoneypotScan** | Servizio di rilevamento honeypot — identifica i sistemi esca ed evita falsi positivi nella ricerca di sicurezza | [honeypotscan.pages.dev](https://honeypotscan.pages.dev) |

Tutti gli strumenti girano sulla rete edge di Cloudflare con principi di progettazione privacy-first.

---

## Panoramica dell'architettura```
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          │
└─────────────────────────────────────┘

Modello di esecuzione

I livelli 1 e 2 vengono attivati simultaneamente (12 fonti in un unico Promise.allSettled). Il livello 3 parte dopo che il livello 1 si è concluso — gli ID CVE provenienti da InternetDB guidano l'arricchimento NVD, elaborati in lotti da 10 alla volta per evitare di sovraccaricare l'API. Il livello 4 viene attivato in parallelo al livello 3, ma solo per le query relative ai domini; IP/ASN lo saltano del tutto. Tempo totale trascorso ≈ max(Livello 1+2) + max(Livello 3+4).

Forza l'aggiornamento di qualsiasi query con ?refresh=1 per bypassare la cache D1 e recuperare dati live da ogni upstream.


Fonti di dati

Feodo e SSLBL vengono recuperati come blocklist di massa e aggiornati ogni ora dal worker cron — nessuna chiamata upstream per singola query.


Struttura del progetto```

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:~
---

## Decisioni progettuali chiave

### Edge-first, senza Node.js
Il runtime di Workers tramite `@opennextjs/cloudflare` — nessuna esportazione `runtime = 'edge'` necessaria. Solo Web API pure ovunque. Cold start sotto i 50 ms a livello globale.

### Esecuzione parallela a livelli
I livelli 1+2 vengono eseguiti insieme (12 sorgenti). Il livello 3 (arricchimento CVE) viene eseguito solo se InternetDB trova vulnerabilità, in batch da 10 alla volta. Il livello 4 (GHW + Wayback) viene eseguito in parallelo al livello 3, ma viene saltato del tutto per le query IP/ASN. Il tempo totale è ≈ quello della sorgente più lenta di ogni ondata, non la somma di tutte le sorgenti.

### Degradazione graduale
Ogni sorgente è incapsulata in un circuit breaker + try/catch. Una sorgente in errore diventa un badge `{ status: 'error' }`. La pagina viene sempre renderizzata.

### Storage D1 + KV separato
Le cache delle risposte delle sorgenti risiedono in **D1** (non in KV) — i valori vengono scritti una volta, letti occasionalmente e sono abbastanza grandi da far lievitare rapidamente il costo della quota di scrittura di KV. **KV** è riservato esclusivamente ai contatori hot-path: rate limiting, circuit breaker e tracciamento della concorrenza in-flight. Ogni sorgente ha il proprio TTL (30 giorni per le CVE, 24h per BGP/RDAP, 1h per geo/porte principali, 30m per abuse.ch). `?refresh=1` propaga `forceRefresh: true` attraverso ogni fetcher per bypassare la cache D1 on demand.

### Ottimizzazione per il piano gratuito
GrayHatWarfare ha una rotazione su 18 chiavi (1.800 richieste/giorno). NVD usa il batching delle richieste (massimo 10 in parallelo). Feodo/SSLBL vengono recuperate come elenchi in blocco dal cron worker e messe in cache in KV — zero costi upstream per ogni query.

### Scritture D1 fire-and-forget
`recordSearch()` viene chiamato all'interno di `ctx.waitUntil()` — non aggiunge alcuna latenza alla risposta API. Le scritture D1 avvengono dopo il flush della risposta.

---

## Strategia di caching

Le risposte delle sorgenti vengono messe in cache in **D1** con un TTL manuale applicato tramite una colonna `expires_at`. KV non viene usato per il caching delle risposte — è riservato al rate limiting, ai circuit breaker e ai contatori di concorrenza in-flight, dove contano gli incrementi atomici a bassa latenza.```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>

Cache keys follow the pattern source:normalised_query — e.g. internetdb:1.1.1.1, crtsh:example.com.

TTL per sorgente (da lib/cache.ts):

Gli errori non vengono mai memorizzati nella cache — una richiesta fallita viene sempre ritentata alla richiesta successiva. Le righe scadute vengono restituite come miss e sovrascritte pigramente; non è necessaria alcuna pulizia in background.


Limitazione della frequenza

Finestra scorrevole basata su KV: 100 richieste per IP all'ora. Implementata in lib/ratelimit.ts, applicata in app/api/lookup/route.ts prima dell'esecuzione di qualsiasi lookup.

Gli header di rate limiting vengono restituiti in ogni risposta:``` X-RateLimit-Limit: 100 X-RateLimit-Remaining: 87 X-RateLimit-Reset: 1716912000

root@kitploit:~
In caso di esaurimento, l'API restituisce `429` con `Retry-After`.

---

## Interruttori di circuito

Ogni sorgente ha un interruttore di circuito tracciato in KV. Se una sorgente supera il **50% di tasso di errore** in una finestra di 5 minuti (minimo 4 richieste), l'interruttore si apre e la sorgente viene saltata (restituisce `{ status: 'skipped' }`) per **15 minuti**, poi si ripristina automaticamente.

Lo stato attuale di ogni interruttore è incluso in `meta.circuitBreakers` in ogni risposta API.

Per resettare manualmente un interruttore in produzione:```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"}'

Rotazione delle chiavi — GrayHatWarfare

GrayHatWarfare consente 100 richieste/giorno per chiave API. SeekYou ruota tra un massimo di 18 chiavi per un totale effettivo di 1.800 richieste/giorno:```typescript // lib/keyring.ts — round-robin across keys with remaining quota const key = await keyRing.next(env, 'GRAYHATWARFARE_API_KEY')

root@kitploit:~
Le chiavi sono denominate da `GRAYHATWARFARE_API_KEY_1` a `GRAYHATWARFARE_API_KEY_18` e memorizzate come segreti Wrangler.

---

## Persistenza D1

### Schema (`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);

Applica schema```bash

wrangler d1 execute seekyou --file=schema.sql

root@kitploit:~
### Funzioni helper

**`lib/searches.ts`** — cronologia delle ricerche:```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 — target salvati:```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:~
---

## Worker cron

Un Worker standalone (`worker/cron.ts`) viene distribuito separatamente tramite `wrangler.cron.toml`. Viene eseguito con un **trigger orario** e svolge due attività:

1. **Aggiornamento blocklist** — verifica se le liste di massa Feodo/SSLBL sono obsolete e le riscarica se necessario.
2. **Scansione dei target salvati** — ri-interroga ogni target salvato, calcola un `TargetDiff` tipizzato, salva lo snapshot aggiornato su D1 e invia tramite POST un payload webhook quando vengono rilevate modifiche.

### Diff tipizzato (`lib/diff.ts`)

Dopo ogni nuova interrogazione, `diffHostResults(prev, next)` produce un `TargetDiff` strutturato che copre:

| Segnale | Cosa rileva |
|---|---|
| `ports` | Porte aperte / chiuse (direzione per porta) |
| `cves` | CVE comparse / risolte, con gravità e punteggio CVSS |
| `threats` | Modifiche ai feed URLhaus, Feodo, SSLBL, ThreatFox |
| `geo` | Modifiche a paese, ASN o hostname principale |
| `certExpiry` | Certificati in scadenza entro 30 giorni o appena scaduti (scatta una volta per certificato) |
| `risk` | Delta del punteggio di rischio — compare in `hasChanges` solo quando Δ ≥ 5 punti |

`summariseDiff(diff, query)` converte la struttura in una stringa leggibile per i log e l'inoltro webhook.

### Payload del webhook

Quando `diff.hasChanges` è true e `WEBHOOK_URL` è impostato, il cron effettua il POST di:```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 }
      }
    }
  ]
}

Il campo diff è completamente strutturato — i consumatori possono distinguere tipi di modifica specifici senza dover interpretare righe di stringa. Il campo summary è pre-formattato per l'inoltro a Slack/Discord.

Distribuisci il worker cron:```bash wrangler deploy --config wrangler.cron.toml

root@kitploit:~
I segreti per il worker cron sono impostati separatamente:```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

Configurazione di sviluppo

Prerequisiti

  • Node.js 18+
  • Wrangler CLI (npm i -g wrangler)
  • Account Cloudflare (il piano gratuito è sufficiente)

Sviluppo locale```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:~
L'app è disponibile all'indirizzo `http://localhost:3000`. In sviluppo locale, KV e D1 utilizzano l'emulazione locale basata su SQLite di Wrangler — non è necessario l'accesso a un account Cloudflare per i test di base.

### Crea le risorse Cloudflare (prima volta)```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

Distribuzione

Build e deploy```bash

Build + deploy to Cloudflare Pages

bash scripts/deploy.sh

root@kitploit:~
Lo script esegue `opennextjs-cloudflare build`, prepara la directory di output di Pages e chiama `wrangler pages deploy .open-next`. Non usare `npm run deploy` o il semplice `wrangler deploy` — queste destinano la runtime Workers (non Pages) e falliranno.

Per distribuire il cron worker separatamente:```bash
wrangler deploy --config wrangler.cron.toml

Configurazione di 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:~
---

## Segreti e variabili d'ambiente

Tutti i segreti sono memorizzati come segreti Wrangler — mai nel codice sorgente o in `.env`.

### Segreti richiesti```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 (solo dev locale)```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:~
> **Nota di sicurezza:** Non committare mai `.env`. È in `.gitignore`. Se dei segreti sono stati committati, ruota tutte le chiavi e ripulisci la cronologia git con BFG (`bfg --delete-files .env`).

---

## Licenza

**Business Source License 1.1 (BSL)**

Copyright © 2026 Teycir Ben Soltane <[email protected]>

Consentito: uso personale, ricerca, istruzione, progetti non commerciali, strumenti aziendali interni.  
Limitato: offerte SaaS commerciali, rivendita come servizio, prodotti concorrenti.

Dopo 4 anni dalla data di rilascio, questo software passa ad Apache 2.0.

Consulta [docs/LICENSE.md](https://github.com/teycir/seekyou/blob/master/docs/LICENSE.md) per i termini completi.

---

## Autore

**Teycir Ben Soltane**  
Email: [email protected]  
GitHub: [@Teycir](https://github.com/Teycir)

---

## Riconoscimenti

- [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)

---

## 🌐 Progetti Correlati

Scopri altri strumenti incentrati sulla privacy e sulla sicurezza:

### Privacy e Crittografia
- **[Timeseal](https://github.com/Teycir/Timeseal)** - Archivio crittografato con blocco temporale e Dead Man's Switch. Crittografia AES-256 a chiave divisa, sigilli effimeri.
- **[Sanctum](https://github.com/Teycir/Sanctum)** - Archivio crittografato zero-trust con negazione plausibile crittografica. XChaCha20-Poly1305, Argon2id.
- **[GhostChat](https://github.com/Teycir/GhostChat)** - Chat crittografata P2P reale tramite WebRTC. Nessun server, nessuno storage, messaggi autodistruggenti.
- **[xmrproof](https://github.com/Teycir/xmrproof)** - Verifica dei pagamenti Monero, 100% lato client.
- **[GhostReceipt](https://github.com/Teycir/GhostReceipt)** - Generazione di ricevute anonime con prove a conoscenza zero.

### Strumenti di Sicurezza
- **[BurpAPISecuritySuite](https://github.com/Teycir/BurpAPISecuritySuite)** - Estensione Burp Suite per il test di sicurezza delle API. 15 tipi di attacco, 108+ payload, rilevamento BOLA/IDOR.
- **[Mcpwn](https://github.com/Teycir/Mcpwn)** - Scanner di sicurezza automatizzato per server Model Context Protocol. Rileva RCE, path traversal, prompt injection.
- **[DiffCatcher](https://github.com/Teycir/DiffCatcher)** - Scoperta di repository Git, acquisizione di diff, estrazione di elementi di codice.
- **[HoneypotScan](https://github.com/Teycir/HoneypotScan)** - Servizio di rilevamento honeypot per la ricerca sulla sicurezza.
- **[CheckAPI](https://github.com/Teycir/CheckAPI)** - Validatore di chiavi API LLM per più provider. Privacy-first, validazione lato client.

### Server di Sicurezza MCP
- **[burp-mcp-server](https://github.com/Teycir/burp-mcp-server)** - Server MCP per Burp Suite Professional. Scansione delle vulnerabilità tramite assistenti AI.
- **[nuclei-mcp](https://github.com/Teycir/nuclei-mcp)** - Server MCP per Nuclei. Scansione multi-target, filtraggio per gravità.
- **[nmap-mcp](https://github.com/Teycir/nmap-mcp)** - Server MCP per Nmap. Ricognizione stealth, scansione vulnerabilità/NSE.
- **[frida-mcp](https://github.com/Teycir/frida-mcp)** - Server MCP per Frida. Strumentazione dinamica, bypass del certificate pinning SSL.

---

## 💼 Servizi Offerti

- 🔒 **Sviluppo Privacy-First** - Applicazioni P2P, comunicazione crittografata, sistemi a conoscenza zero
- 🚀 **Sviluppo di Applicazioni Web** - Sviluppo full-stack con Next.js, React, TypeScript
- 🔧 **Soluzioni Edge Computing** - Cloudflare Workers, Pages, D1, KV, Durable Objects
- 🛡️ **Sviluppo di Strumenti di Sicurezza** - Estensioni Burp, strumenti di penetration testing, framework di automazione
- 🤖 **Integrazione AI** - Applicazioni basate su LLM, automazione intelligente, soluzioni AI personalizzate
- 🔍 **OSINT e Threat Intelligence** - Strumenti di ricognizione personalizzati, aggregazione di threat feed, correlazione IOC

**Contattami**: [teycirbensoltane.tn](https://teycirbensoltane.tn) | Disponibile per progetti freelance e consulenza

---

<div align="center">

**Creato con 💚 da [Teycir Ben Soltane](https://teycirbensoltane.tn)**

</div>
Scarica lo strumento
LivelloFonteCosa fornisceAutenticazione richiesta
1InternetDBPorte aperte, CPE, ID CVENo
1IPinfoGeo, ISP, ASN, flag anycastNo
1RIPE statPrefissi BGP, titolare ASN, RIRNo
1RDAPRegistrazione, contatti, nameserver, CIDRNo
2crt.shStorico certificati, SAN, catena dell'emittenteNo
2HackerTargetDNS passivo — reverse IP e hostsearchNo
2RobtexDNS inverso/diretto, info ASNo
2URLhausURL di distribuzione malwareABUSECH_KEY
2ThreatFoxDatabase IOCABUSECH_KEY
2MalwareBazaarMetadati dei campioni malwareABUSECH_KEY
2Feodo TrackerIP C2 di botnetNo (download di massa)
2SSLBLCertificati SSL dannosiNo (download di massa)
3NVD + CIRCLDettagli CVE, punteggi CVSS v2/v3NVD_KEY (opzionale)
4GrayHatWarfareBucket S3/Azure/GCS espostiGRAYHATWARFARE_API_KEY_1..18
4WaybackSnapshot CDX storiciNo
Source(s)TTL
CVE (NVD/CIRCL)30 giorni
Wayback7 giorni
BGP, RDAP, Robtex24 ore
crt.sh, HackerTarget passive DNS12 ore
GrayHatWarfare6 ore
InternetDB, IPinfo1 ora
Feodo, SSLBL (bulk)1 ora
URLhaus, ThreatFox, MalwareBazaar30 minuti