Preserve the local graph-first investigation stack through macro V1. Include reviewed source, tests, contracts, documentation and synthetic assets. Retain the standalone financial V21 test foundation without runtime migration. Runtime remains V20; operational JobStore remains V3. Local experimental checkpoint, not a stable release.
122 lines
10 KiB
Markdown
122 lines
10 KiB
Markdown
# Toolkit, adapters et capabilities
|
|
|
|
> **Statut :** contrat `TARGET` et inventaire `CURRENT` vérifié dans le dépôt
|
|
> **Important :** la présence dans ce document ne signifie ni installation ni
|
|
> disponibilité sur la machine
|
|
|
|
## 1. Contrat cible
|
|
|
|
Le frontend consomme des capabilities, pas une liste de commandes. Une
|
|
capability déclare au minimum :
|
|
|
|
```text
|
|
tool_id / tool_version adapter_id / adapter_version
|
|
capability_id output_contract_version
|
|
accepted_object_types produced_object_types
|
|
action_class effects
|
|
requirements network_contact
|
|
credentials_required cost / risk
|
|
availability / health unavailable_reason
|
|
```
|
|
|
|
Familles d'adapters : `NATIVE`, `SUBPROCESS`, `HTTP_API`, `MANUAL`. Un adapter
|
|
ne dépend ni de GTK, ni du frontend Web, ni directement de SQLite. Il conserve
|
|
le brut et produit des observations normalisées ; les services contrôlent jobs,
|
|
scope, persistance et publication.
|
|
|
|
Le futur gestionnaire distingue `ready`, `missing`, `incompatible`,
|
|
`credentials_missing` et `unhealthy`, avec version, origine d'installation et
|
|
profil d'exécution. Installation et mise à jour restent explicites et
|
|
versionnées ; aucun clic sur un nœud ne les déclenche.
|
|
|
|
## 2. État réellement présent — CURRENT
|
|
|
|
Le catalogue C enregistre les outils ci-dessous comme **optionnels**. Leur
|
|
détection ne prouve pas une intégration complète. L'action DNS dispose d'un
|
|
parcours structuré ; les recherches Sherlock, Maigret et Holehe sont des actions
|
|
cataloguées dont la disponibilité dépend de l'outil. Les parcours documentaires
|
|
emploient déjà ExifTool, Tesseract et qpdf de façon spécialisée.
|
|
|
|
| Outil / source primaire | Rôle actuel | Licence et dépendance | Entrée / sortie | Réseau, secrets et limites |
|
|
|---|---|---|---|---|
|
|
| [`dig`, `host` — BIND](https://www.isc.org/bind/) | DNS ; `dig` a un parcours révisable | licence du paquet à vérifier avant redistribution ; exécutables BIND optionnels | domaine / texte puis propositions DNS | `TARGET` pour DNS réel ; aucun secret ; contrat Toolkit générique absent |
|
|
| [`whois`](https://github.com/rfc1036/whois) | catalogue optionnel | licence du paquet à vérifier ; exécutable optionnel | cible / texte | registre tiers ; aucun secret prévu ; sortie hétérogène |
|
|
| [curl](https://curl.se/) | catalogue optionnel HTTP | licence curl à vérifier avant redistribution ; exécutable optionnel | URL / octets | tiers ou cible ; secrets possibles ; pas une capability générique sûre |
|
|
| [OpenSSL](https://www.openssl.org/) | catalogue optionnel TLS | licence/version du paquet à qualifier ; exécutable optionnel | endpoint ou fichier / texte | cible si connexion ; sortie dépendante de version |
|
|
| [Tesseract](https://github.com/tesseract-ocr/tesseract) | OCR spécialisé | Apache-2.0 vérifiée ; Leptonica et modèles de langue | image / texte, TSV | `NONE` ; qualité dépendante du document et des langues |
|
|
| [ExifTool](https://exiftool.org/) | métadonnées spécialisées | licence double à vérifier avant redistribution ; Perl et modules packagés | fichier / JSON | `NONE` ; contenu et métadonnées non fiables |
|
|
| [qpdf](https://qpdf.readthedocs.io/) | traitement PDF spécialisé | Apache-2.0 ou Artistic-2.0 vérifiée ; exécutable et bibliothèques packagées | PDF / PDF ou diagnostic | `NONE` ; PDF hostile, chiffrement et taille à borner |
|
|
| [John, pdf2john](https://www.openwall.com/john/) | récupération PDF facultative | licence/édition à vérifier ; exécutables optionnels | PDF / candidats et diagnostic | `NONE` ; coût CPU/temps élevé, aucun succès garanti |
|
|
| [Sherlock](https://github.com/sherlock-project/sherlock), [Maigret](https://github.com/soxoj/maigret) | actions username cataloguées | licences et dépendances Python à qualifier avant admission | username / résultats propres à l'outil | nombreux tiers ; conditions par site ; normalisation uniforme absente |
|
|
| [Holehe](https://github.com/megadose/holehe) | action e-mail cataloguée, à requalifier | licence et dépendances Python à requalifier | e-mail / réponses propres à l'outil | nombreux tiers ; effets observables possibles ; statut audit « à requalifier » |
|
|
|
|
Ce statut provient de `src/core/tool_catalog.c`,
|
|
`src/models/osint_action_catalog.c` et des parcours spécialisés. Il ne décrit
|
|
pas la présence des exécutables sur un poste donné.
|
|
|
|
## 3. Candidats recommandés par l'audit — TARGET
|
|
|
|
Les licences marquées « vérifiée » ont été confrontées à la source officielle
|
|
pendant J0 ; les autres restent une condition d'admission, pas une supposition.
|
|
Les versions ne sont volontairement pas figées ici.
|
|
|
|
| Capacité / outil | Statut Labfy et référence primaire | Licence / dépendances | Entrée / sortie cible | Contact réseau, secrets et limites |
|
|
|---|---|---|---|---|
|
|
| [ExifTool](https://exiftool.org/) | `CURRENT` spécialisé ; candidat adapter local | Perl et modules ; Perl Artistic/GPL à vérifier avant redistribution | fichier → JSON + brut | `NONE` ; formats non fiables, tailles bornées |
|
|
| [Tesseract](https://github.com/tesseract-ocr/tesseract) | `CURRENT` spécialisé ; candidat adapter OCR | Leptonica et modèles ; Apache-2.0 vérifiée | image → texte/TSV/hOCR selon contrat | `NONE` ; langues/modèles, qualité variable |
|
|
| [qpdf](https://qpdf.readthedocs.io/) | `CURRENT` spécialisé ; candidat adapter PDF | bibliothèques packagées ; Apache-2.0 ou Artistic-2.0 vérifiée | PDF → diagnostic ou dérivé | `NONE` ; chiffrement, bombes et taille |
|
|
| [RDAP](https://www.icann.org/rdap) | protocole candidat, aucun fournisseur choisi | client HTTP/provider à choisir ; licence à vérifier | domaine/IP/ASN → JSON | `THIRD_PARTY`, rate limits et conditions propres au registre |
|
|
| [Certificate Transparency](https://certificate.transparency.dev/) | écosystème candidat, aucune API unique choisie | client/provider à choisir ; licence à vérifier | domaine/certificat → entrées structurées | `THIRD_PARTY`, couverture et conditions propres au journal/service |
|
|
| [Wayback CDX](https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server) | API candidate | client HTTP ; licence et conditions à vérifier | URL/domaine → index CDX/JSON | `THIRD_PARTY`, disponibilité, quotas, contenu archivé non fiable |
|
|
| [Subfinder](https://github.com/projectdiscovery/subfinder) | candidat passif, non intégré | binaire Go et providers ; MIT vérifiée | domaine → JSONL/liste avec sources | `THIRD_PARTY`, clés possibles, quotas et conditions par provider |
|
|
| [theHarvester](https://github.com/laramies/theHarvester) | candidat multi-source, non intégré | Python/modules/providers ; licence à vérifier | domaine → résultats structurés/bruts | `THIRD_PARTY`, clés et quotas selon modules |
|
|
| [Maigret](https://github.com/soxoj/maigret) | `CURRENT` catalogué, adapter commun non livré | Python/modules ; licence à vérifier | username → JSON/rapport + brut | `THIRD_PARTY`, faux positifs et conditions des sites |
|
|
|
|
RDAP est un protocole et Certificate Transparency un écosystème de journaux :
|
|
chaque provider futur aura son propre contrat, ses limites et ses conditions.
|
|
|
|
## 4. Candidats optionnels ou suspendus
|
|
|
|
| Outil/service | Position F0 | Condition avant intégration |
|
|
|---|---|---|
|
|
| [Sherlock](https://github.com/sherlock-project/sherlock) | optionnel, catalogué `CURRENT` | licence, formats, limites et dépendance des sources |
|
|
| [Amass](https://github.com/owasp-amass/amass) | optionnel | mode passif/actif, licence et ressources |
|
|
| [dnsx](https://github.com/projectdiscovery/dnsx) | optionnel | contact DNS, concurrence et provenance |
|
|
| [httpx](https://github.com/projectdiscovery/httpx) | optionnel | classe `PUBLIC_ACTIVE`, scope et redirections |
|
|
| [Katana](https://github.com/projectdiscovery/katana) | optionnel | crawling actif, budgets et contenus hostiles |
|
|
| [SpiderFoot](https://github.com/smicallef/spiderfoot) | optionnel | architecture, licences des modules et duplication fonctionnelle |
|
|
| [Nominatim](https://nominatim.org/) | provider géographique optionnel | politique d'usage, données transmises et cache |
|
|
| [GraphSense](https://graphsense.org/) | optionnel spécialisé | API/provider, licence, coût et interprétation financière |
|
|
| [Holehe](https://github.com/megadose/holehe) | à requalifier malgré le catalogue actuel | effets observables, maintenance, licence et légitimité des requêtes |
|
|
| Metagoofil, Photon, BlockSci | non retenus actuellement | nouvelle analyse explicite nécessaire |
|
|
| Nmap, Nuclei, Greenbone/OpenVAS | future piste autorisée séparée | seulement laboratoire/cibles autorisées, jamais v0.1.0 |
|
|
|
|
## 5. Runner et contrat machine
|
|
|
|
Le lot J4 est désormais `CURRENT` pour l'analyse EML native et ExifTool. Son
|
|
contrat détaillé, ses profils et limites sont dans
|
|
[`LOCAL_TOOLKIT_RUNNER.md`](../architecture/LOCAL_TOOLKIT_RUNNER.md). Le registre
|
|
est interrogé à l'exécution et lors de la projection ; les autres outils de ce
|
|
catalogue ne sont pas implicitement migrés.
|
|
|
|
Un adapter subprocess utilise des arguments séparés, un environnement minimal,
|
|
un répertoire privé, des limites CPU/mémoire/fichiers/processus, timeout,
|
|
annulation et arrêt des descendants. `stdout` et `stderr` sont capturés en
|
|
streaming avec plafonds distincts.
|
|
|
|
Le contrat distingue : aperçu tronqué, artefact réellement conservé et statut
|
|
`PARTIAL`. Une empreinte ne peut pas être présentée comme celle d'un contenu
|
|
complet qui n'a pas été conservé. La publication passe par staging, validation,
|
|
renommage puis transaction ou compensation documentée.
|
|
|
|
Pour Python/CLI/API, le contrat machine est versionné : schéma de sortie,
|
|
erreurs structurées, timeout, plafond, compatibilité et fixtures synthétiques.
|
|
Les sorties d'outil restent non fiables.
|
|
|
|
## 6. Règle d'admission
|
|
|
|
Avant intégration : source primaire, licence et redistribution, maintenance,
|
|
version, formats, dépendances, contact réseau, secrets, coût, limites, isolation,
|
|
normalisation, provenance et tests synthétiques sont documentés. Une absence
|
|
d'outil désactive proprement la capability. Aucun auto-update, téléchargement
|
|
exécutable ou installation silencieuse n'est autorisé.
|