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
- attachments/samples.zip1,4 GiBChecksum della fonte verificato
- attachments/bulletins/bulletin-2026-07.pdf16,9 MiBChecksum calcolato all’arrivo
- captures/listing-0001.html428 KiBChecksum calcolato all’arrivo
- attachments/indicators-0417.json2,3 MiBVerificato dal protocollo di trasferimento
- screens/page-0001.png717 KiBChecksum calcolato all’arrivo
- attachments/bulletins/bulletin-2026-06.pdf14,2 MiBChecksum della fonte verificato
- 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.
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=…
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
File server
Raggiunta tramiteTunnel VPN
FTP e FTPS, SFTP con chiavi host fissate e raccolte WebDAV, cartella per cartella.
- ftp://
- ftps://
- sftp://
- PROPFIND
Cloud storage
Raggiunta tramiteTunnel VPN
Remote di storage configurati e cartelle condivise, elencati tramite le rispettive interfacce.
- remote:bucket/
- /shared/
- next_page_token
File host
Raggiunta tramiteTunnel VPN
Servizi di hosting con formati di link propri, risolti da adapter dedicati e motori isolati.
- /file/…
- /folder/…
- #key
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
Servizi onion
Raggiunta tramitePool Tor
Gli indirizzi onion vanno solo al pool Tor isolato e non toccano mai il DNS ordinario.
- .onion
- client auth
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
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
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.
- archive.example.org/
collections/ raccolta0417/ - 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.pdf elemento 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
- ValidareSchema, porta e classe dell’host vengono controllati senza contattare la fonte.
- Scegliere la reteUn nome onion seleziona il pool Tor, qualsiasi altro nome un tunnel VPN.
- Raccogliere proveHeader, firme, elenchi e letture per intervalli, dal meno costoso.
- ClassificareFile, cartella, raccolta o pagina intermedia, ciascuno con le proprie prove.
- EnumerareCartelle pagina per pagina, archivi elemento per elemento, cicli interrotti.
- Chiudere l’elencoCompleto nell’ambito solo quando non resta aperto alcun ramo.
{"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
- Proposta
- Testata su fixture
- Canary su una quota del lavoro
- Promossa sulle prove
- Ritirata per deriva
Un modello può proporre i passaggi di una ricetta. Le persone la rivedono, e solo le prove la promuovono.
{"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
- 1exclude-videoI video riproducibili vengono esclusi.
- 2inspect-unknownI tipi sconosciuti vengono ispezionati; se inconcludenti, finiscono in quarantena.
- 3opaque_
encrypted_ Gli archivi cifrati restano opachi finché qualcuno non fornisce la password.when_ acquired - 4default_
action Tutto il resto è consentito.
Registrato con la selezione
strict_order_closed_inventory
Ogni file dell’inventario completo è stato ordinato per dimensione prima del download.
Modalità di selezione
- 1Ogni file, dal più grande
- 2Il file più grande
- 3Il file più grande di ogni cartella
- 4File entro un intervallo di dimensione
La modalità rigorosa attende un elenco chiuso e dimensioni note. La modalità progressiva parte subito, e lo dichiara.
{"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.
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.
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.
{"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
- 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"} - 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} - 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}} - 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"} - 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.
Preferisce l’email? Scriva a [email protected].