Acquisire da qualsiasi fonte, in sicurezza.

In arrivo

Inviare un link o chiamare l’API. Corvidint risolve la fonte, mappa ogni file e acquisisce ciò che la sua policy seleziona, verificato e registrato.

Fonti

  • Link direttihttps://archive.example.org/…
  • Elenchi webIndex of /pub/2026/
  • Servizi onion….onion
  • Swarm peer-to-peermagnet:?xt=urn:btih:…

Pubblicati, dal più recente

  1. attachments/samples.zip1,4 GiBChecksum della fonte verificato
  2. attachments/bulletins/bulletin-2026-07.pdf16,9 MiBChecksum calcolato all’arrivo
  3. captures/listing-0001.html428 KiBChecksum calcolato all’arrivo
  4. attachments/indicators-0417.json2,3 MiBVerificato dal protocollo di trasferimento
  5. screens/page-0001.png717 KiBChecksum calcolato all’arrivo
  6. attachments/bulletins/bulletin-2026-06.pdf14,2 MiBChecksum della fonte verificato
  7. shared/case-0417/notes.txt6,2 KiBChecksum della fonte verificato

Tutto ciò a cui un link può condurre.

Una sola pipeline generica risolve ogni fonte, nota o meno. Standard, ricette verificate e connettori versionati la estendono senza nuovo codice nel core.

Solo fonti da cui è autorizzato a raccogliere. Un accesso mancante diventa una richiesta di intervento, mai un aggiramento.

  1. Link diretti

    Raggiunta tramiteTunnel VPNPool Tor

    Link diretti, condivisi e temporanei, reindirizzamenti e pagine intermedie tra l’uno e l’altro.

    • https://
    • http://
    • 302 Found
    • ?expires=…
  2. Elenchi web

    Raggiunta tramiteTunnel VPNPool Tor

    Indici di server, cataloghi, tabelle, pagine di dettaglio, gallerie, feed ed elenchi JSON paginati.

    • Index of /
    • ?page=2
    • <enclosure>
    • next_cursor
  3. File server

    Raggiunta tramiteTunnel VPN

    FTP e FTPS, SFTP con chiavi host fissate e raccolte WebDAV, cartella per cartella.

    • ftp://
    • ftps://
    • sftp://
    • PROPFIND
  4. Cloud storage

    Raggiunta tramiteTunnel VPN

    Remote di storage configurati e cartelle condivise, elencati tramite le rispettive interfacce.

    • remote:bucket/
    • /shared/
    • next_page_token
  5. File host

    Raggiunta tramiteTunnel VPN

    Servizi di hosting con formati di link propri, risolti da adapter dedicati e motori isolati.

    • /file/…
    • /folder/…
    • #key
  6. Pagine dinamiche

    Raggiunta tramiteTunnel VPNPool Tor

    I link che solo uno script costruisce vengono trovati da un browser in sandbox, entro budget rigorosi.

    • <script>
    • fetch()
    • subresources
  7. Servizi onion

    Raggiunta tramitePool Tor

    Gli indirizzi onion vanno solo al pool Tor isolato e non toccano mai il DNS ordinario.

    • .onion
    • client auth
  8. Swarm peer-to-peer

    Raggiunta tramiteSessioni peer

    Link magnet e file torrent girano in sessioni tunnelizzate dedicate, mai su Tor, senza seeding successivo.

    • magnet:?xt=
    • .torrent
    • info-hash
  9. Archivi e set

    Raggiunta tramiteQualsiasi rete

    Gli archivi vengono elencati elemento per elemento e le parti di un set multiparte si scelgono come un tutto.

    • .zip
    • .tar.gz
    • .7z
    • .rar
    • .iso
    • .part1
  10. Accesso autorizzato

    Raggiunta tramiteTunnel VPNPool Tor

    Password, token, chiavi e chiavi client onion vengono inviati una sola volta, conservati come riferimenti e non più mostrati.

    • username_password
    • token
    • ssh_key
    • onion_client_auth

Un link diventa un inventario completo.

La risoluzione raccoglie prove prima di credere a qualsiasi cosa. Una dimensione resta sconosciuta finché non è provata, e un elenco è completo solo quando ogni ramo si chiude.

https://archive.example.org/collections/0417/

Tunnel VPN

Coperturain corsocompleto nell’ambito

  • archive.example.org/collections/0417/raccolta
  • attachments/83 file1,9 GiB
  • bulletins/79 file282 MiB
  • indicators-0417.jsondati2,3 MiB
  • samples-part2.7zarchiviodimensione sconosciuta286 MiB
  • samples.ziparchivio1,4 GiB
  • readme.txtelemento dell’archivio
  • docs/overview.pdfelemento dell’archivio
  • 10 elementi in più
  • unknown-0042.bintipo sconosciuto3,1 MiB
  • captures/148 file46,1 MiB
  • index.htmlpagina intermedia48,0 KiB
  • README.txttesto2,1 KiB
  • screens/64 file41,1 MiB
  • video/2 file1,5 GiB
  • recording-02.mp4video1,1 GiB
  • walkthrough.mp4video412 MiB
  1. ValidareSchema, porta e classe dell’host vengono controllati senza contattare la fonte.
  2. Scegliere la reteUn nome onion seleziona il pool Tor, qualsiasi altro nome un tunnel VPN.
  3. Raccogliere proveHeader, firme, elenchi e letture per intervalli, dal meno costoso.
  4. ClassificareFile, cartella, raccolta o pagina intermedia, ciascuno con le proprie prove.
  5. EnumerareCartelle pagina per pagina, archivi elemento per elemento, cicli interrotti.
  6. Chiudere l’elencoCompleto nell’ambito solo quando non resta aperto alcun ramo.
Un nodo di quell’albero, come lo restituisce l’API
{"location_id": "loc_01JAH8K2","name": "samples.zip","depth": 1,"has_children": false,"listing_complete": true,"resource": {"resource_id": "res_01JAH8K2","kind": "file","kind_status": "confirmed","discovery_state": "resolved","size": {"bytes": "1481763717","status": "validated","basis": "representation"},"media": {"category": "archive","identification_status": "confirmed","detected_media_type": "application/zip"}}}

Nuovi siti, senza nuovo codice

I protocolli standard richiedono solo configurazione. I layout di pagina noti ricevono ricette dichiarative. I protocolli nuovi un connettore versionato, mai una modifica al core.

  • StandardElenchi web, FTP, SFTP, WebDAV e remote di storage, riconosciuti di serie.
  • RicetteRecuperare, selezionare, estrarre, emettere. Niente script, niente codice, solo operazioni consentite dalla piattaforma.
  • ConnettoriPacchetti versionati che girano fuori processo e superano prima un conformance kit.

Come una ricetta si guadagna il suo posto

  1. Proposta
  2. Testata su fixture
  3. Canary su una quota del lavoro
  4. Promossa sulle prove
  5. Ritirata per deriva

Un modello può proporre i passaggi di una ricetta. Le persone la rivedono, e solo le prove la promuovono.

Un documento di ricetta, nel linguaggio delle ricette
{"recipe_key": "archive-listing.paged","version": 3,"language_version": "1.0","scope": {"hosts": ["archive.example.org"],"path_patterns": ["/collections/*"]},"steps": [{"op": "fetch","target": "input_url","accept": "html"},{"op": "select","language": "css","expression": "table.listing a.file","as": "links"},{"op": "extract","from": "links","attribute": "href","as": "hrefs"},{"op": "emit","kind": "unknown","native_id_from": "hrefs","relation": "contains"}],"expected_evidence": {"exhaustiveness": "provider_declared"}}

Valori fittizi, nomi dei campi esattamente come li definisce l’API

Nulla si scarica prima che l’ordine sia provato.

Le regole decidono cosa è consentito, escluso o messo in quarantena. La selezione rigorosa attende un elenco chiuso e dimensioni note, poi ordina ogni file per dimensione.

Regole di policy, dalla priorità più alta

  1. 1exclude-videopriority: 100I video riproducibili vengono esclusi.
  2. 2inspect-unknownpriority: 50I tipi sconosciuti vengono ispezionati; se inconcludenti, finiscono in quarantena.
  3. 3opaque_encrypted_when_acquiredquarantineGli archivi cifrati restano opachi finché qualcuno non fornisce la password.
  4. 4default_actionallowTutto il resto è consentito.
OrdineFilePesoDecisione
1samples.zip1,4 GiBConsentito
2bulletin-2026-07.pdf16,9 MiBConsentito
3bulletin-2026-06.pdf14,2 MiBConsentito
53indicators-0417.json2,3 MiBConsentito
294README.txt2,1 KiBConsentito
samples-part2.7z286 MiBIn attesa di una passwordpassword richiesta
unknown-0042.bin3,1 MiBIn quarantenaidentificazione sconosciuta
recording-02.mp41,1 GiBEsclusovideo escluso
walkthrough.mp4412 MiBEsclusovideo escluso

Registrato con la selezione

strict_order_closed_inventory

Ogni file dell’inventario completo è stato ordinato per dimensione prima del download.

Modalità di selezione

  1. 1Ogni file, dal più grande
  2. 2Il file più grande
  3. 3Il file più grande di ogni cartella
  4. 4File entro un intervallo di dimensione

La modalità rigorosa attende un elenco chiuso e dimensioni note. La modalità progressiva parte subito, e lo dichiara.

Una decisione, come la restituisce l’API
{"candidate_id": "rep_0008D","display_name": "walkthrough.mp4","candidate_kind": "representation","selection_revision": 2,"action": "exclude","rule_id": "exclude-video","reason_codes": ["video_excluded"],"evidence": [{"mechanism": "format_header","attribute": "kind","status": "confirmed","summary": "video/mp4"}]}

Ogni richiesta esce attraverso un tunnel.

Sonde, elenchi e trasferimenti usano tutti un egress autorizzato. Se un tunnel cade, le richieste si fermano: non esiste una via diretta di ripiego.

Sessioni di tunnel VPNPool Tor isolatoSessioni peer

Ogni richiesta attraversa il gate di policy, poi esce dalla corsia richiesta dalla sua fonte.

Il traffico onion usa circuiti Tor a più livelli, in un pool isolato dedicato.

Gli swarm si raggiungono da sessioni peer dedicate. I pezzi arrivano e nulla viene condiviso in seguito.

Tunnel caduto. Le nuove richieste si fermano, i trasferimenti vanno in checkpoint e nulla esce direttamente.

Tunnel ripristinato. I trasferimenti riprendono dai loro checkpoint.

  • Gli indirizzi privati, di loopback e di metadata vengono rifiutati al momento della connessione.
  • I nomi onion non toccano mai il DNS ordinario.
  • Le sessioni peer smettono di condividere non appena i file richiesti sono completi.
  • Un binding revocato chiude le connessioni attive, e il gateway lo conferma.
  • Quando non è possibile confermare un arresto, la sua capacità resta riservata finché non lo è.
  • I file parziali risiedono nell’object storage, così un’altra unità può riprenderli.

Verificati, registrati, mai eseguiti.

Un verificatore indipendente calcola l’hash di ogni file in staging. I byte sono archiviati per contenuto, pubblicati una sola volta e serviti solo come allegati.

File pubblicati del job fittizio e relativo livello di integritàChecksum della fonte verificatoCorrisponde a un checksum pubblicato dalla fonte stessa.Verificato dal protocollo di trasferimentoControllato con gli hash del protocollo stesso, file per file.Checksum calcolato all’arrivoSHA-256 dei byte archiviati, ed etichettato esattamente così.
attachments/samples.zip1,4 GiB21d80013…336753Checksum della fonte verificato
attachments/bulletins/bulletin-2026-07.pdf16,9 MiB45fc57dc…6589c6Checksum calcolato all’arrivo
attachments/bulletins/bulletin-2026-06.pdf14,2 MiBd918bbf1…71f434Checksum della fonte verificato
attachments/indicators-0417.json2,3 MiB13e8534b…865223Verificato dal protocollo di trasferimento
captures/listing-0001.html428 KiBa3651f3c…f7b3e8Checksum calcolato all’arrivo
screens/page-0001.png717 KiB1a53f598…76d1dbChecksum calcolato all’arrivo

Una discrepanza viene messa in quarantena e acquisita di nuovo, mai pubblicata.

Due posizioni, un solo blob

Byte identici vengono archiviati una sola volta tramite il loro SHA-256. Ogni posizione che vi puntava viene conservata.

Conservati come evidenza, mai eseguiti

  • Nulla di ciò che viene acquisito viene aperto, eseguito, installato o montato.
  • Gli analizzatori girano senza rete, come utente dedicato, con limiti di tempo e memoria.
  • I percorsi degli archivi vengono controllati prima di estrarre anche un solo elemento.
  • I file escono solo come allegati, tramite link di breve durata su un’origine separata.
Una voce di manifest, come la restituisce l’API
{"file_id": "file_0008","logical_path": "attachments/samples.zip","stored_name": "21d80013bfc9266b","size_bytes": "1481763717","sha256": "21d80013bfc9266bc453a3db98d1f3d14a2be4483d5020d74ec194a763336753","integrity_level": "origin_checksum_verified","origin_checksum": {"algorithm": "sha256","value": "21d80013bfc9266bc453a3db98d1f3d14a2be4483d5020d74ec194a763336753"},"source_resource_id": "res_01JAH8K2","published_at": "2026-10-05T08:31:00Z"}

Valori fittizi, nomi dei campi esattamente come li definisce l’API

Progettato per essere chiamato, pronto per il parser.

Qualsiasi progetto invia job tramite l’API e li segue per eventi. Il parser prende ogni file pubblicato con il suo checksum e la sua provenienza.

  • Il suo progetto
  • Downloader
  • Parser
  1. Il suo progettoDownloaderInvia un jobUn job con una chiave di idempotenza: un nuovo tentativo non crea mai un secondo job.
    Il job che invia il suo progetto
    {"sources": [{"url": "https://archive.example.org/collections/0417/"},{"url": "https://share.example.net/s/K7q2xWm9"}],"policy_profile": "evidence-default","destination_id": "evidence-store","client_reference": "Archive capture, case 0417"}
  2. DownloaderIl suo progettoLo accetta una volta archiviatoRisposta solo dopo che il job e la sua policy sono archiviati.
    Ciò che torna indietro
    {"job_id": "job_01JAH7Q2M4K8V3","policy_revision": "prv_4","accepted_at": "2026-10-05T08:12:04Z","idempotent_replay": false}
  3. DownloaderParserAnnuncia un file pubblicatoWebhook firmati, oppure eventi da interrogare o ricevere in streaming a partire da un cursore.
    L’evento che riceve il parser
    {"event_id": "0f6e2a90-41d7-4c0b-9e5a-000000000010","event_type": "file.published","schema_version": "1.0","occurred_at": "2026-10-05T08:31:12Z","job_id": "job_01JAH7Q2M4K8V3","aggregate_type": "file","aggregate_id": "file_0008","aggregate_version": 3,"stream_seq": "10","data": {"file_id": "file_0008","logical_path": "attachments/samples.zip","size_bytes": "1481763717","verification_level": "origin_checksum_verified","selection_revision": 2}}
  4. ParserDownloaderLegge il record del fileIl parser verifica che il file sia confermato e legge il suo SHA-256.
    Il record del file che il parser verifica
    {"file_id": "file_0008","job_id": "job_01JAH7Q2M4K8V3","logical_path": "attachments/samples.zip","original_name": "samples.zip","size_bytes": "1481763717","sha256": "21d80013bfc9266bc453a3db98d1f3d14a2be4483d5020d74ec194a763336753","integrity_level": "origin_checksum_verified","state": "committed","detected_media_type": "application/zip"}
  5. ParserDownloaderLo recupera con un link di breve durataUn link di breve durata; il parser ricalcola l’hash dei byte prima dell’analisi.

Inventario, manifest e decisioni si esportano anche come NDJSON.

Valori fittizi, nomi dei campi esattamente come li definisce l’API

Lo metta alla prova sulle sue fonti.

Ci dica di cosa ha bisogno. Le mostreremo una cattura dal vivo, dal post al record sigillato.

Richiedi un briefing

Preferisce l’email? Scriva a [email protected].