Torna agli aggiornamenti
New releaseSep 1, 2026

puncia v0.36

Panthera(P.)uncia - Utilità CLI ufficiale per Subdomain Center & Exploit Observer.

Condividi

Panthera(P.)uncia

Utility CLI ufficiale per Subdomain Center & Exploit Observer

Downloads GitHub stars

Puncia è il client ufficiale da riga di comando per due API di intelligence di A.R.P. Syndicate — puntalo su un dominio, un brand o un ID di vulnerabilità e ottieni JSON strutturato in pochi secondi, senza bisogno di un browser:

  • 🕸️ Subdomain Center — enumerazione di sottodomini, emersione di subdomain takeover, scoperta di shadow IT e rilevamento di impersonificazione di brand / domini simili (typosquat) su scala internet.
  • 💥 Exploit Observer — intelligence su exploit e vulnerabilità attraverso oltre 150 schemi di identificatori (CVE, GHSA, EDB, MSF, ZDI, feed di attori statali e altro), con arricchimento CVE/GHSA (punteggi di maturità EPSS + VEDAS) e scansione SBOM.
$ puncia subdomain arpsyndicate.io
╭──────────────────────────────────────────────────────────────────────╮
│ Panthera(P.)uncia v0.38                                              │
│ subdomain recon · brand impersonation · exploit intel · sbom analysis│
│ A.R.P. Syndicate — https://www.arpsyndicate.io                       │
╰──────────────────────────────────────────────────────────────────────╯
[
  "advisories.arpsyndicate.io",
  "asm.arpsyndicate.io",
  "blog.arpsyndicate.io",
  ...
]

$ puncia sbom bom.json ./out
puncia ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% (128/128) 0:00:41

Si prega di notare che, sebbene questi risultati possano talvolta essere piuttosto imprecisi e inaffidabili, possono variare notevolmente di volta in volta a causa delle loro capacità di auto-miglioramento.

I rate-limit aggressivi possono essere evitati con una API key: https://www.arpsyndicate.io/pricing.html

Applicazioni Pratiche

  1. Rilevamento di Impersonificazione di Brand e Domini di Phishing
    Fai emergere domini replica, simili e typosquat che cavalcano il tuo brand prima che vengano usati contro di te o i tuoi clienti.
  2. Scoperta di Shadow IT e Superficie di Attacco Esterna
    Identifica e monitora sottodomini e infrastrutture esposte create al di fuori dei canali ufficiali.
  3. Ricognizione per Subdomain Takeover
    Enumera l'intera impronta di sottodomini di un target, un primo passo chiave per individuare record dangling/soggetti a takeover.
  4. Ricerca e Monitoraggio Avanzato delle Vulnerabilità
    Scopri e traccia minacce note ed emergenti, incluse vulnerabilità oscure o non elencate.
  5. Arricchimento Contestuale dei Dati CVE/GHSA
    Aggiungi profondità e intelligence azionabile (punteggi di maturità EPSS + VEDAS) alle vulnerabilità note per una migliore prioritizzazione.
  6. Rilevamento di Vulnerabilità in Software Bill of Materials (SBOM)
    Analizza i componenti software alla ricerca di exploit noti e problemi di sicurezza usando dati SBOM strutturati.
  7. Integrazione Trasparente con CI/CD e Flussi di Threat Intel
    Automatizza la raccolta di intelligence e i controlli di vulnerabilità all'interno di pipeline di sviluppo o sicurezza.
  8. Monitoraggio delle Tendenze di Exploit di Attori Statali
    Rimani in vantaggio sulle minacce tracciando vulnerabilità segnalate da attori stranieri ma non ancora riconosciute dai database mainstream.
  9. Scoperta di Sottodomini Basata su Parole Chiave
    Fai emergere host che contengono una determinata parola chiave su internet, indipendentemente da uno specifico dominio padre.
  10. Elaborazione in Blocco di Threat Intelligence
    Esegui query in batch (domini, vulnerabilità, ecc.) per un'analisi scalabile su grandi dataset o inventari di asset aziendali.
  11. Ricognizione Passiva per Red Team
    Conduci ricognizione stealth utilizzando fonti di dati passive (nessuna interazione diretta con i target).
  12. Raccolta di Open Source Intelligence (OSINT)
    Combina intelligence su sottodomini ed exploit per migliorare le indagini OSINT.
  13. Supporto a Compliance e Gestione del Rischio
    Arricchisci i dati sulle vulnerabilità per supportare audit di conformità (es. ISO 27001, SOC 2) con un contesto più approfondito.

Installazione

  1. Da PyPi - pip3 install puncia
  2. Da Sorgente - pip3 install .

Quickstart in 30 secondi

pip3 install puncia

# subdomain footprint of a target (shadow IT / attack surface / takeover recon)
puncia subdomain example.com

# lookalike / typosquat / brand-impersonation domains
puncia replica example.com

# what's known about a CVE
puncia exploit CVE-2021-44228

Utilizzo

puncia <mode> <query> [output] [--match M] [--domain D] [--limit N] [--offset N]
                               [--crawl] [--api-key K] [--concurrency N]
                               [--timeout S] [--retries N] [--quiet]

Esegui puncia --help per il riferimento completo. I risultati vengono stampati su stdout; il banner, le barre di avanzamento, gli avvisi e gli errori vanno tutti su stderr, quindi puncia subdomain example.com > out.json produce sempre JSON pulito e valido.

Codici di uscita: 0 successo · 1 errore di richiesta o input · 2 errore di utilizzo.

  1. (A PAGAMENTO) Memorizza una API key (storekey) - puncia storekey <api-key>

    • Memorizzata in ~/.puncia con permessi 0600. $PUNCIA_API_KEY la sovrascrive, il che è di solito ciò che vuoi in CI.
  2. (FREEMIUM) Interroga Domini, raggruppati per dominio (motore subdomain / cuttlefish) - puncia subdomain <domain> <output-file>

    • Paginazione (solo autenticati): un risultato autenticato non ha un limite totale. Per impostazione predefinita subdomain/replica/keyword percorrono ogni pagina e le uniscono per te. Passa --offset (con o senza --limit) per recuperare esattamente una pagina grezza da solo, ad esempio per una scansione ripristinabile o in streaming:
      puncia subdomain bigco.com --limit 50000 --offset 0
      # stderr prints: note: more results available — continue with --offset 50000
      puncia subdomain bigco.com --limit 50000 --offset 50000
      
      Le richieste anonime ignorano --limit/--offset lato server (sempre un campione mescolato di massimo 500 righe); puncia avvisa invece di fingere che abbiano fatto qualcosa.
    • Crawl live (solo autenticati): --crawl integra i risultati memorizzati con una passata di scoperta live. Un determinato dominio viene effettivamente ri-scansionato solo una volta ogni ~6h — le richieste all'interno di quella finestra ricevono il risultato del crawl in cache istantaneamente. Puncia riporta l'esito su stderr: crawl: fresh, 12 newly discovered name(s) (anche partial / cooldown / disabled).
      puncia subdomain bigco.com --crawl
      
  3. (FREEMIUM) Interroga Domini Replica, raggruppati per brand (motore replica / octopus) - puncia replica <domain> --match <prefix|exact|substring> <output-file>

  4. (FREEMIUM) Interroga per Parola Chiave, raggruppati per parola chiave (motore keyword / ammonites) - puncia keyword <keyword> --match <exact|prefix> <output-file>

    • Facoltativamente limita la parola chiave a un singolo dominio con --domain: puncia keyword blog --domain bandcamp.com
  5. Interroga Identificatori di Exploit e Vulnerabilità (exploit)

    • (GRATUITO) Watchlist di Identificatori di Vulnerabilità ed Exploit (^WATCHLIST_IDES) - puncia exploit ^WATCHLIST_IDES <output-file>
    • (GRATUITO) Watchlist di Identificatori di Vulnerabilità ed Exploit con Descrizioni (^WATCHLIST_INFO) - puncia exploit ^WATCHLIST_INFO <output-file>
    • (GRATUITO) Watchlist di Tecnologie Vulnerabili (^WATCHLIST_TECH) - puncia exploit ^WATCHLIST_TECH <output-file>
    • (GRATUITO) Statistiche aggregate di vulnerabilità/exploit (^STATS) - puncia exploit ^STATS <output-file>
    • (GRATUITO) Stato del servizio (^HEALTH) - puncia exploit ^HEALTH <output-file>
    • (FREEMIUM) Identificatori di Vulnerabilità Supportati - puncia exploit <eoidentifier> --match <substring|prefix|exact> <output-file>
  6. (FREEMIUM) Arricchisci Identificatori CVE/GHSA (enrich) - puncia enrich <cve-id/ghsa-id> <output-file>

    • enrich=true ha effetto solo per gli identificatori CVE-/GHSA-; unisce il record completo dell'advisory upstream con i punteggi EPSS + VEDAS.
  7. (A PAGAMENTO) Identificatori Non-CVE per gruppo VEDAS (noncve) - puncia noncve <browser/china/russia/europe/exploitable> <output-file>

  8. (GRATUITO) Stato del servizio Subdomain Center (^HEALTH) - puncia subdomain ^HEALTH <output-file>

  9. Query Multiple (bulk/sbom)

    • (FREEMIUM) Formato File JSON di Input in Blocco - puncia bulk <json-file> <output-directory>
      {
          "subdomain": [
              "domainA.com",
              "domainB.com"
          ],
          "replica": [
              "domainA.com",
              "domainB.com"
          ],
          "keyword": [
              "keywordA",
              "keywordB"
          ],
          "exploit": [
              "eoidentifierA",
              "eoidentifierB"
          ],
          "enrich": [
              "eoidentifierA",
              "eoidentifierB"
          ]
      }
      
    • (FREEMIUM) Formato File JSON di Input SBOM - puncia sbom <json-file> <output-directory>

    Le esecuzioni Bulk e SBOM de-duplicano le query, limitano il parallelismo a --concurrency (predefinito 10) e — quando non è presente una API key — cadenzano le richieste per rimanere automaticamente entro il budget del piano gratuito.

  10. (FREEMIUM) Importazione Esterna

import asyncio
import puncia

async def main():
   # Without an API key (ratelimited)
   print(await puncia.query_api("exploit", "CVE-2021-3450"))
   print(await puncia.query_api("subdomain", "arpsyndicate.io"))

   # With an API key
   await puncia.store_key("ARPS-xxxxxxxxxx")
   api_key = await puncia.read_key()
   print(await puncia.query_api("subdomain", "arpsyndicate.io", apikey=api_key))
   print(await puncia.query_api("replica", "arpsyndicate.io", match="exact", apikey=api_key))
   print(await puncia.query_api("enrich", "CVE-2021-3450", apikey=api_key))
   print(await puncia.query_api("noncve", "exploitable", apikey=api_key))

   # Static endpoints (unauthenticated, unlimited)
   print(await puncia.query_api("subdomain", "^HEALTH"))
   print(await puncia.query_api("exploit", "^STATS"))

   # Live crawl, with the outcome surfaced via a callback
   await puncia.query_api(
       "subdomain", "bigco.com", apikey=api_key, crawl=True,
       on_crawl=lambda h: print("crawl status:", h.get("X-Crawl-Status")),
   )

   # Write straight to disk
   await puncia.query_api("subdomain", "arpsyndicate.io", "out.json", apikey=api_key)

asyncio.run(main())

I fallimenti sollevano puncia.PunciaError; un risultato vuoto ({} / []) viene restituito così com'è invece di essere trattato come un errore. Riusa una singola sessione attraverso molte query passando session= e un limiter= condiviso, esattamente come fa process_bulk().

from puncia import PunciaError, query_api

try:
    data = await query_api("exploit", "CVE-2021-3450", apikey=api_key)
except PunciaError as exc:
    print(f"lookup failed: {exc}")

Sviluppo

git clone https://github.com/ARPSyndicate/puncia && cd puncia
pip install --upgrade pip     # editable installs need pip >= 21.3
pip install -e ".[dev]"
pytest                        # 42 offline tests, no API calls or network access

La suite di test è completamente offline — copre la costruzione degli URL, il contenimento dei percorsi di output, il parsing SBOM, la pianificazione bulk e la temporizzazione del ratelimiter senza toccare la rete, quindi è sicuro eseguirla in qualsiasi ambiente.

Arricchimento CVE


Arricchimento GHSA


Menzioni Notevoli

Categorie