files: README + LICENSE

This commit is contained in:
grayTerminal-sh 2026-07-18 09:27:07 +02:00
parent f68c4f88d1
commit 53bf65372d
6 changed files with 1602 additions and 0 deletions

14
CHANGELOG.md Normal file
View file

@ -0,0 +1,14 @@
## [0.1.0-dev]
### Added
- Initialisation du cycle de vie de l'application.
- Création du module `Application`.
- Intégration de GTK4.
- Affichage de la première fenêtre.
### Added
- Module `MainWindow`.
- Séparation de la fenêtre principale du module `Application`.
- Première architecture de la fenêtre principale.

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 fy59
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

170
README.md Normal file
View file

@ -0,0 +1,170 @@
# Objet
Ce dossier regroupe tous les éléments de l'enquête nommée **Ecris ici le nom de l'enquête**. Toutes les informations présentées dans ce dossier ont été collectées exclusivement à partir de sources ouvertes ou de documents transmis volontairement par les victimes et témoins. Aucune méthode intrusive ou d'accès non autorisé n'a été utilisée. Toutes les informations, seront regroupées voire, dans certains cas reformulées et compilées de façons organisées en suivant l'arborescence suivantes:
# Objectifs
Ce dossier a pour objectif de :
- préserver les preuves recueillies ;
- documenter les recherches réalisées ;
- établir des liens entre les différentes informations collectées ;
- produire un rapport clair, vérifiable et exploitable par les services d'enquête.
# Principes
- Les preuves originales ne sont jamais modifiées.
- Toute modification est réalisée sur une copie.
- Chaque information est associée à une ou plusieurs preuves.
- Les hypothèses sont clairement distinguées des faits.
- Chaque recherche est documentée afin d'assurer la traçabilité des travaux.
# Arborésence
```bash
├── 00_BaseDeDonnées
│   └── Enquete.sqlite
├── 01_Preuves_Originales
│   ├── Captures_Ecran
│   ├── Conversations
│   ├── Documents
│   ├── Emails
│   ├── Photos
│   └── Videos
├── 02_Preuves_traitees
│   ├── Annotations
│   ├── Extractions
│   ├── OCR
│   └── Redactions
├── 03_Chronologie
│   ├── Chronologie.csv
│   └── Chronologie.md
├── 04_Entites
│   ├── Adresses_Email
│   ├── Autres
│   ├── Comptes_Bancaires
│   ├── Comptes_Instagram
│   ├── Documents_Identite
│   ├── IBAN
│   ├── Personnes
│   └── Pseudonymes
├── 05_Recherches_Osint
│   ├── Divers
│   ├── Domaines
│   ├── Emails
│   ├── Google
│   ├── IBAN
│   ├── Recherche_Image
│   └── Reseaux_Sociaux
├── 06_Hypothèses
│   ├── A_Verifier.md
│   └── Hypotheses.md
├── 07_Rapports
│   ├── Annexes
│   └── Rapport.md
├── 08_Export_gendarmerie
│   ├── index.pdf
│   ├── Pièces_justificatives
│   └── Rapport_final.pdf
├── 09_Hash
│   ├── SHA256.txt
│   └── Vérification.md
├── Archives
├── Enquete-gui
│   ├── compile_flags.txt
│   ├── database
│   ├── docs
│   ├── enquete-gui
│   ├── include
│   │   ├── app.h
│   │   └── database.h
│   ├── Makefile
│   ├── resources
│   │   ├── css
│   │   ├── icons
│   │   └── ui
│   ├── src
│   │   ├── app.c
│   │   ├── app.o
│   │   ├── database.c
│   │   ├── database.o
│   │   ├── main.c
│   │   └── main.o
│   ├── tests
│   ├── tools
│   └── ui
└── README.md
```
## 01_Preuves_Originales
Dossier contenant les preuves originales sans aucune modifiaction.
Un fichier hash sera lié à chacune d'entre elles afin de valider l'originalité du document.
## 01_Preuves_Traitees
Documents obtenues non modifiées non traité authentifiés par un fichiers hashage.
## 03_Chronologie
Documents et évènements classé chronologiquement.
## 04_Entites
Inventaire des entités identifiées au cours de l'enquête (personnes, pseudonymes, comptes, adresses électroniques, IBAN, documents, etc.).
## 05_Recherches_Osint
Informations reccueillis en sources ouvertes disponibles publiquement. Les recherches sont documentées avec les outils utilisés, la date, les résultats obtenus et, le cas échéant, les sources consultées.
## 06_Hypotheses
Dossier contenant les différentes hypothèses forumlées avant compilation pour le rapport final.
## 07_Rapports
Dossier contenant les différents rapport en corrélation direct avec le rapprochement des differentes preuves et documents obtenues.
## 08_Export_gendarmerie
Dossier compilé et prêt pour exploitation.
## 09_Hash
Dossier contenant les fichiers hash servant à l'authentification des preuves.
# Convention de nommage
Les identifiants utilisés dans ce dossier sont normalisés.
| Préfixe | Signification |
|----------|---------------|
| P | Preuve |
| E | Entité |
| R | Recherche |
| H | Hypothèse |
| S | Source |
| PER | Personne |
| TAG | Tag |
Exemples :
P0001
E0007
S0003
H0002
# Intégrité des preuves
- Les fichiers originaux ne sont jamais modifiés.
- Toute analyse est réalisée sur une copie.
- Chaque preuve possède une empreinte SHA-256.
- Les modifications sont documentées.
# Enquete-gui
Application développée en C17 utilisant GTK4 et SQLite.
Elle permet de :
- gérer les preuves ;
- gérer les entités ;
- documenter les recherches ;
- générer les rapports ;
- faciliter la navigation dans la base de données.
## Licence
Ce projet est distribué sous licence MIT.
Voir le fichier `LICENSE` pour plus d'informations.

213
data/osint_tools.json Normal file
View file

@ -0,0 +1,213 @@
{
"schema_version": "1.0.0",
"tools": [
{
"identifier": "identity.sherlock",
"name": "Sherlock",
"repository": "https://github.com/sherlock-project/sherlock",
"homepage": "https://sherlockproject.xyz",
"publisher": "Sherlock Project",
"category": "IDENTITY_AND_USERNAME",
"subcategories": [
"USERNAME_ENUMERATION",
"PUBLIC_SOCIAL_ACCOUNTS"
],
"description": "Recherche la présence publique d'un pseudonyme sur de nombreux sites et réseaux sociaux.",
"license": "MIT",
"license_verified": true,
"open_source_status": "OPEN_SOURCE",
"latest_release": "0.16.0",
"last_activity": null,
"primary_language": "Python",
"platforms": {
"ubuntu": {
"supported": true,
"official_packages": [
"sherlock"
],
"install_methods": [
"APT",
"PIPX",
"PYTHON_VENV",
"SOURCE_BUILD"
],
"minimum_version": "24.04",
"tested_versions": [],
"notes": "Le paquet sherlock est disponible dans Ubuntu Noble. La présence du paquet dépendra des dépôts activés sur les postes de la gendarmerie. Une solution Python isolée devra être évaluée comme solution de secours."
},
"arch": {
"supported": true,
"official_packages": [],
"aur_packages": [
"sherlock"
],
"install_methods": [
"AUR",
"PIPX",
"PYTHON_VENV",
"SOURCE_BUILD"
],
"tested_versions": [],
"notes": "Le paquet sherlock est disponible dans l'AUR. Le PKGBUILD doit être relu avant chaque installation ou mise à jour."
}
},
"source_build_supported": true,
"runtime_dependencies": [
"Python >=3.9,<4.0",
"python-certifi",
"python-colorama",
"python-openpyxl",
"python-pandas",
"python-pysocks",
"python-requests",
"python-requests-futures",
"python-stem",
"python-torrequest"
],
"input_types": [
"USERNAME"
],
"output_formats": [
"TERMINAL",
"TXT",
"CSV",
"XLSX"
],
"supports_json": false,
"supports_csv": true,
"supports_stdout": true,
"supports_file_output": true,
"requires_account": false,
"requires_api_key": false,
"requires_paid_service": false,
"network_activity": "Envoie des requêtes HTTP ou HTTPS directes aux sites configurés afin de déterminer si le pseudonyme recherché semble exister.",
"collection_mode": "REMOTE_PUBLIC_REQUESTS",
"authentication_mode": "NONE",
"rate_limit_risk": "MEDIUM",
"terms_of_service_risk": "MEDIUM",
"personal_data_risk": "MEDIUM",
"false_positive_risk": "HIGH",
"evidentiary_value": "CONTEXT_ONLY",
"reproducibility": "MEDIUM",
"tool_version_command": [
"sherlock",
"--version"
],
"integration_mode": "DIRECT_CLI",
"integration_priority": "P0",
"legal_status": "APPROVED_WITH_CONFIGURATION",
"maintenance_status": "MAINTAINED",
"decision": "PROTOTYPE",
"decision_reason": "Très utile pour repérer rapidement les réutilisations d'un pseudonyme, mais les résultats doivent être vérifiés manuellement et ne prouvent jamais que plusieurs comptes appartiennent à la même personne.",
"score": 81,
"notes": "Limiter les sites interrogés lorsque cela est possible, imposer un délai entre les recherches, conserver les URL retournées et archiver séparément les profils confirmés. Ne jamais interpréter une simple correspondance de pseudonyme comme une identité certaine.",
"reviewed_at": "2026-07-17",
"reviewed_by": null
},
{
"identifier": "identity.maigret",
"name": "Maigret",
"repository": "https://github.com/soxoj/maigret",
"homepage": "https://maigret.readthedocs.io/",
"publisher": "soxoj et contributeurs",
"category": "IDENTITY_AND_USERNAME",
"subcategories": [
"USERNAME_ENUMERATION",
"PUBLIC_SOCIAL_ACCOUNTS",
"PROFILE_ENRICHMENT",
"IDENTIFIER_CORRELATION"
],
"description": "Recherche des comptes publics associés à un pseudonyme, extrait les informations publiées sur les profils et peut corréler des identifiants supplémentaires.",
"license": "MIT",
"license_verified": true,
"open_source_status": "OPEN_SOURCE",
"latest_release": "0.6.3",
"last_activity": "2026-07-13",
"primary_language": "Python",
"platforms": {
"ubuntu": {
"supported": true,
"official_packages": [],
"install_methods": [
"PIPX",
"PYTHON_VENV",
"CONTAINER_ROOTLESS",
"SOURCE_BUILD"
],
"minimum_version": null,
"tested_versions": [],
"notes": "Aucun paquet Ubuntu officiel n'est retenu à ce stade. L'installation devra utiliser un environnement Python isolé ou le conteneur officiel. Python 3.10 ou plus récent est requis."
},
"arch": {
"supported": true,
"official_packages": [],
"aur_packages": [
"maigret"
],
"install_methods": [
"AUR",
"PIPX",
"PYTHON_VENV",
"CONTAINER_ROOTLESS",
"SOURCE_BUILD"
],
"tested_versions": [],
"notes": "Le paquet AUR maigret existe en version 0.6.3-1. Le PKGBUILD et ses nombreuses dépendances AUR doivent être relus avant installation."
}
},
"source_build_supported": true,
"runtime_dependencies": [
"Python >= 3.10",
"aiohttp",
"requests",
"socid-extractor",
"lxml",
"dépendances supplémentaires selon les formats de rapport"
],
"input_types": [
"USERNAME"
],
"output_formats": [
"TERMINAL",
"TXT",
"CSV",
"HTML",
"JSON",
"MARKDOWN",
"PDF",
"XMIND",
"GRAPH_HTML"
],
"supports_json": true,
"supports_csv": true,
"supports_stdout": true,
"supports_file_output": true,
"requires_account": false,
"requires_api_key": false,
"requires_paid_service": false,
"network_activity": "Interroge de nombreux sites publics. Peut effectuer des recherches récursives à partir des identifiants découverts et actualise normalement sa base de sites depuis GitHub une fois toutes les 24 heures.",
"collection_mode": "REMOTE_PUBLIC_REQUESTS",
"authentication_mode": "MIXED",
"rate_limit_risk": "HIGH",
"terms_of_service_risk": "HIGH",
"personal_data_risk": "HIGH",
"false_positive_risk": "HIGH",
"evidentiary_value": "CONTEXT_ONLY",
"reproducibility": "MEDIUM",
"tool_version_command": [
"maigret",
"--version"
],
"integration_mode": "DIRECT_CLI",
"integration_priority": "P0",
"legal_status": "APPROVED_WITH_CONFIGURATION",
"maintenance_status": "ACTIVE",
"decision": "PROTOTYPE",
"decision_reason": "Maigret possède une couverture très large, des sorties structurées et des capacités de corrélation intéressantes. Son volume de requêtes, sa récursion, ses fonctions de contournement et le risque de faux positifs imposent toutefois un profil d'exécution restrictif.",
"score": 79,
"notes": "Dans Labfy, désactiver par défaut l'actualisation automatique, la récursion, l'IA, les cookies, Tor, I2P et les fonctions de contournement. Restreindre les sites ou catégories interrogés. Conserver le rapport JSON, la version de Maigret, la copie ou l'empreinte de sa base de sites et les URL confirmées manuellement.",
"reviewed_at": "2026-07-17",
"reviewed_by": null
}
]
}

View file

@ -0,0 +1,503 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://labfytools.com/schemas/osint-tools.schema.json",
"title": "Labfy Investigation OSINT Tool Inventory",
"description": "Schéma de qualification des outils OSINT intégrables à Labfy Investigation.",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"tools"
],
"properties": {
"schema_version": {
"type": "string",
"const": "1.0.0"
},
"tools": {
"type": "array",
"items": {
"$ref": "#/$defs/tool"
}
}
},
"$defs": {
"ubuntu_support": {
"type": "object",
"additionalProperties": false,
"required": [
"supported",
"official_packages",
"install_methods",
"tested_versions",
"notes"
],
"properties": {
"supported": {
"type": "boolean"
},
"official_packages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"install_methods": {
"type": "array",
"items": {
"enum": [
"APT",
"DEB",
"PIPX",
"PYTHON_VENV",
"BINARY_RELEASE",
"SOURCE_BUILD",
"CONTAINER_ROOTLESS",
"MANUAL"
]
},
"uniqueItems": true
},
"minimum_version": {
"type": [
"string",
"null"
]
},
"tested_versions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"notes": {
"type": "string"
}
}
},
"arch_support": {
"type": "object",
"additionalProperties": false,
"required": [
"supported",
"official_packages",
"aur_packages",
"install_methods",
"tested_versions",
"notes"
],
"properties": {
"supported": {
"type": "boolean"
},
"official_packages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"aur_packages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"install_methods": {
"type": "array",
"items": {
"enum": [
"PACMAN",
"AUR",
"PIPX",
"PYTHON_VENV",
"BINARY_RELEASE",
"SOURCE_BUILD",
"CONTAINER_ROOTLESS",
"MANUAL"
]
},
"uniqueItems": true
},
"tested_versions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"notes": {
"type": "string"
}
}
},
"tool": {
"type": "object",
"additionalProperties": false,
"required": [
"identifier",
"name",
"repository",
"homepage",
"publisher",
"category",
"subcategories",
"description",
"license",
"license_verified",
"open_source_status",
"latest_release",
"last_activity",
"primary_language",
"platforms",
"source_build_supported",
"runtime_dependencies",
"input_types",
"output_formats",
"supports_json",
"supports_csv",
"supports_stdout",
"supports_file_output",
"requires_account",
"requires_api_key",
"requires_paid_service",
"network_activity",
"collection_mode",
"authentication_mode",
"rate_limit_risk",
"terms_of_service_risk",
"personal_data_risk",
"false_positive_risk",
"evidentiary_value",
"reproducibility",
"tool_version_command",
"integration_mode",
"integration_priority",
"legal_status",
"maintenance_status",
"decision",
"decision_reason",
"score",
"notes",
"reviewed_at",
"reviewed_by"
],
"properties": {
"identifier": {
"type": "string",
"pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"
},
"name": {
"type": "string",
"minLength": 1
},
"repository": {
"type": [
"string",
"null"
]
},
"homepage": {
"type": [
"string",
"null"
]
},
"publisher": {
"type": "string",
"minLength": 1
},
"category": {
"type": "string",
"minLength": 1
},
"subcategories": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"description": {
"type": "string",
"minLength": 1
},
"license": {
"type": [
"string",
"null"
]
},
"license_verified": {
"type": "boolean"
},
"open_source_status": {
"enum": [
"OPEN_SOURCE",
"SOURCE_AVAILABLE",
"OPEN_CLIENT_CLOSED_SERVICE",
"CLOSED_SOURCE",
"UNKNOWN"
]
},
"latest_release": {
"type": [
"string",
"null"
]
},
"last_activity": {
"type": [
"string",
"null"
],
"format": "date"
},
"primary_language": {
"type": [
"string",
"null"
]
},
"platforms": {
"type": "object",
"additionalProperties": false,
"required": [
"ubuntu",
"arch"
],
"properties": {
"ubuntu": {
"$ref": "#/$defs/ubuntu_support"
},
"arch": {
"$ref": "#/$defs/arch_support"
}
}
},
"source_build_supported": {
"type": "boolean"
},
"runtime_dependencies": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"input_types": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"output_formats": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"supports_json": {
"type": "boolean"
},
"supports_csv": {
"type": "boolean"
},
"supports_stdout": {
"type": "boolean"
},
"supports_file_output": {
"type": "boolean"
},
"requires_account": {
"type": "boolean"
},
"requires_api_key": {
"type": "boolean"
},
"requires_paid_service": {
"type": "boolean"
},
"network_activity": {
"type": "string",
"minLength": 1
},
"collection_mode": {
"enum": [
"LOCAL_ONLY",
"PASSIVE_REMOTE",
"REMOTE_PUBLIC_REQUESTS",
"AUTHENTICATED_PUBLIC_API",
"ACTIVE_LOW_IMPACT",
"ACTIVE_INTRUSIVE",
"MIXED"
]
},
"authentication_mode": {
"enum": [
"NONE",
"OPTIONAL_ACCOUNT",
"REQUIRED_ACCOUNT",
"API_KEY",
"COOKIE",
"OAUTH",
"MIXED"
]
},
"rate_limit_risk": {
"enum": [
"NONE",
"LOW",
"MEDIUM",
"HIGH",
"UNKNOWN"
]
},
"terms_of_service_risk": {
"enum": [
"NONE",
"LOW",
"MEDIUM",
"HIGH",
"UNKNOWN"
]
},
"personal_data_risk": {
"enum": [
"NONE",
"LOW",
"MEDIUM",
"HIGH",
"UNKNOWN"
]
},
"false_positive_risk": {
"enum": [
"NONE",
"LOW",
"MEDIUM",
"HIGH",
"UNKNOWN"
]
},
"evidentiary_value": {
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"CONTEXT_ONLY",
"UNKNOWN"
]
},
"reproducibility": {
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"UNKNOWN"
]
},
"tool_version_command": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"integration_mode": {
"enum": [
"DIRECT_CLI",
"DIRECT_LIBRARY",
"LOCAL_SERVICE",
"REMOTE_API",
"BROWSER_ASSISTED",
"EXPORT_IMPORT",
"REFERENCE_ONLY",
"REJECTED"
]
},
"integration_priority": {
"enum": [
"P0",
"P1",
"P2",
"P3",
"BACKLOG",
"REJECTED"
]
},
"legal_status": {
"enum": [
"APPROVED_PASSIVE",
"APPROVED_WITH_CONFIGURATION",
"MANUAL_REVIEW_REQUIRED",
"RESTRICTED_TO_AUTHORIZED_TARGETS",
"REJECTED",
"UNKNOWN"
]
},
"maintenance_status": {
"enum": [
"ACTIVE",
"MAINTAINED",
"LOW_ACTIVITY",
"UNMAINTAINED",
"ARCHIVED",
"UNKNOWN"
]
},
"decision": {
"enum": [
"INTEGRATE",
"PROTOTYPE",
"MONITOR",
"MANUAL_ONLY",
"REJECT",
"UNREVIEWED"
]
},
"decision_reason": {
"type": "string"
},
"score": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 100
},
"notes": {
"type": "string"
},
"reviewed_at": {
"type": [
"string",
"null"
],
"format": "date"
},
"reviewed_by": {
"type": [
"string",
"null"
]
}
}
}
}
}

View file

@ -0,0 +1,681 @@
# TICKET-040 — Inventaire et qualification de larsenal OSINT
## Statut
À faire
## Priorité
Très haute
## Nature
Recherche, audit juridique, architecture et préparation des futures intégrations.
La présence dun outil dans cet inventaire ne signifie pas quil est approuvé.
---
## Objectif
Constituer une base large, structurée et maintenable doutils OSINT pouvant être intégrés à Labfy Investigation afin daider à enquêter légalement sur :
- pseudonymes et comptes publics ;
- adresses e-mail ;
- numéros de téléphone ;
- domaines, IP, certificats et infrastructures publiques ;
- documents, faux papiers, photos et vidéos ;
- historiques de pages supprimées ;
- dépôts publics ;
- IBAN, entreprises et cryptomonnaies ;
- relations entre personnes, comptes, domaines et moyens de paiement ;
- réseaux descrocs réutilisant les mêmes identifiants.
Le résultat doit être traçable, reproductible et présentable à des enquêteurs.
---
## Cadre légal non négociable
Labfy Investigation reste limité à :
- sources publiquement accessibles ;
- données remises légalement par une victime ou un enquêteur ;
- API et comptes utilisés conformément à leurs autorisations ;
- collecte sans contournement dauthentification ;
- recherche passive ou explicitement autorisée ;
- conservation de la méthode, de la source et de la sortie brute.
Sont exclus :
- intrusion ;
- exploitation de vulnérabilité ;
- brute force dauthentification ;
- credential stuffing ;
- phishing ;
- vol ou réutilisation de jetons ;
- usurpation ;
- social engineering ;
- accès à une ressource privée ;
- modification dune ressource distante ;
- utilisation de données obtenues illicitement.
---
## Livrables
```text
docs/osint/TOOL_INVENTORY.md
docs/osint/LEGAL_AND_OPERATIONAL_POLICY.md
data/osint_tools.json
data/osint_tools.csv
```
Le JSON deviendra la future source de génération du catalogue étendu.
---
## Schéma dune fiche outil
```text
identifier
name
repository
homepage
publisher
category
subcategories
description
license
license_verified
open_source_status
latest_release
last_activity
primary_language
installation_methods
ubuntu_packages
runtime_dependencies
input_types
output_formats
supports_json
supports_csv
supports_stdout
supports_file_output
requires_account
requires_api_key
requires_paid_service
network_activity
collection_mode
authentication_mode
rate_limit_risk
terms_of_service_risk
personal_data_risk
false_positive_risk
evidentiary_value
reproducibility
tool_version_command
integration_mode
integration_priority
legal_status
maintenance_status
decision
decision_reason
notes
reviewed_at
reviewed_by
```
---
## Valeurs normalisées
### open_source_status
```text
OPEN_SOURCE
SOURCE_AVAILABLE
OPEN_CLIENT_CLOSED_SERVICE
CLOSED_SOURCE
UNKNOWN
```
### collection_mode
```text
LOCAL_ONLY
PASSIVE_REMOTE
REMOTE_PUBLIC_REQUESTS
AUTHENTICATED_PUBLIC_API
ACTIVE_LOW_IMPACT
ACTIVE_INTRUSIVE
MIXED
```
### legal_status
```text
APPROVED_PASSIVE
APPROVED_WITH_CONFIGURATION
MANUAL_REVIEW_REQUIRED
RESTRICTED_TO_AUTHORIZED_TARGETS
REJECTED
UNKNOWN
```
### integration_mode
```text
DIRECT_CLI
DIRECT_LIBRARY
LOCAL_SERVICE
REMOTE_API
BROWSER_ASSISTED
EXPORT_IMPORT
REFERENCE_ONLY
REJECTED
```
### integration_priority
```text
P0
P1
P2
P3
BACKLOG
REJECTED
```
### decision
```text
INTEGRATE
PROTOTYPE
MONITOR
MANUAL_ONLY
REJECT
UNREVIEWED
```
---
## Notation sur 100
- valeur opérationnelle : 30 ;
- intégrabilité : 20 ;
- légalité et maîtrise du risque : 20 ;
- traçabilité : 15 ;
- maintenance : 10 ;
- coût : 5.
Un outil sous 50/100 ne doit pas être intégré sans justification écrite.
---
# Inventaire initial à auditer
## A. Pseudonymes, comptes et identités publiques
| Outil | Dépôt/projet | Usage | Priorité |
|---|---|---|---|
| Sherlock | `sherlock-project/sherlock` | Recherche de pseudonymes | P0 |
| Maigret | `soxoj/maigret` | Recherche approfondie de pseudonymes | P0 |
| Blackbird | `p1ngul1n0/blackbird` | Comptes et enrichissement | P1 |
| WhatsMyName | `WebBreacher/WhatsMyName` | Base de règles de présence | P0 |
| Enola | `theyahya/enola` | Recherche rapide de pseudonymes | P2 |
| Social Analyzer | `qeeqbox/social-analyzer` | Analyse multi-plateformes | P2 |
| socialscan | `iojw/socialscan` | Pseudonymes et e-mails | P1 |
| GHunt | `mxrch/GHunt` | Écosystème Google | P1 |
| GitFive | `mxrch/GitFive` | Corrélation GitHub | P1 |
| Holehe | `megadose/holehe` | Présence dune adresse sur des services | P0 |
| MOSINT | `alpkeskin/mosint` | Enrichissement de-mails | P2 |
| h8mail | `khast3x/h8mail` | Jeux de données autorisés uniquement | P1 restreint |
| Ignorant | `megadose/ignorant` | Présence dun téléphone sur des services | Revue |
| Instaloader | `instaloader/instaloader` | Contenus Instagram publics | Revue |
| snscrape | `JustAnotherArchivist/snscrape` | Collecte sociale publique | Revue |
| gallery-dl | `mikf/gallery-dl` | Conservation de médias publics | P1 |
| yt-dlp | `yt-dlp/yt-dlp` | Métadonnées et médias publics | P0 |
## B. E-mails
| Outil | Usage | Priorité |
|---|---|---|
| Holehe | Présence sur des services | P0 |
| MOSINT | Enrichissement multi-source | P2 |
| h8mail | Recherche dans des sources licites | Restreint |
| GHunt | Enrichissement Google | P1 |
| theHarvester | E-mails liés à un domaine | P0 |
| SpiderFoot | Modules denrichissement | P1 |
| Recon-ng | Framework modulaire | P2 |
| python-email-validator | Validation et normalisation | P1 |
| dnspython | Vérification DNS et MX | P1 |
| Clients OpenPGP | Identifiants publiés dans des clés | P2 |
## C. Téléphones
| Outil | Dépôt/projet | Usage | Priorité |
|---|---|---|---|
| PhoneInfoga | `sundowndev/phoneinfoga` | Pays, opérateur, formats, sources publiques | P0 |
| libphonenumber | `google/libphonenumber` | Parsing et validation | P0 |
| python-phonenumbers | `daviddrysdale/python-phonenumbers` | Adaptateur Python | P2 |
| Ignorant | `megadose/ignorant` | Présence sur certains services | Revue |
| Normalisation E.164 interne | Labfy | Canonicalisation | P0 |
Aucun outil ne doit prétendre identifier le titulaire réel dun numéro sans source officielle ou judiciaire.
## D. Domaines, DNS, certificats et infrastructures
| Outil | Dépôt/projet | Usage | Priorité |
|---|---|---|---|
| Amass | `owasp-amass/amass` | Cartographie dactifs | P1 |
| Subfinder | `projectdiscovery/subfinder` | Sous-domaines passifs | P0 |
| theHarvester | `laramies/theHarvester` | Domaines, e-mails, IP, noms | P0 |
| SpiderFoot | `smicallef/spiderfoot` | Automatisation multi-source | P1 |
| Recon-ng | `lanmaster53/recon-ng` | Framework modulaire | P2 |
| sn0int | `kpcyrd/sn0int` | Framework semi-automatique | P2 |
| BBOT | `blacklanternsecurity/bbot` | Orchestration récursive | Revue |
| dnsx | `projectdiscovery/dnsx` | Requêtes DNS structurées | P1 |
| Findomain | `Findomain/Findomain` | Sous-domaines | P2 |
| assetfinder | `tomnomnom/assetfinder` | Actifs passifs | P2 |
| dnstwist | `elceef/dnstwist` | Typosquatting et variantes | P0 |
| URLCrazy | `urbanadventurer/urlcrazy` | Variantes de domaines | P1 |
| CertStream | `CaliDog/certstream-python` | Certificats publics | P1 |
| massdns | `blechschmidt/massdns` | Résolution de masse | Restreint |
| puredns | `d3mondev/puredns` | Résolution de masse | Restreint |
| shuffledns | `projectdiscovery/shuffledns` | Résolution de masse | Restreint |
| Knockpy | `guelfoweb/knock` | Sous-domaines | Revue |
| Sublist3r | `aboul3la/Sublist3r` | Sous-domaines | Surveillance |
| httpx | `projectdiscovery/httpx` | Qualification HTTP | Restreint |
| httprobe | `tomnomnom/httprobe` | Services HTTP | Restreint |
| Katana | `projectdiscovery/katana` | Exploration Web | Restreint |
| RDAP clients | À sélectionner | Enregistrements normalisés | P0 |
| curl | Projet curl | Requêtes HTTP reproductibles | P0 |
| OpenSSL | Projet OpenSSL | Certificats TLS | P0 |
| dig / host / whois | Paquets système | DNS et enregistrements | P0 |
Les outils à forte volumétrie sont désactivés par défaut.
## E. Historique du Web et conservation
| Outil | Dépôt/projet | Usage | Priorité |
|---|---|---|---|
| waybackurls | `tomnomnom/waybackurls` | URLs Wayback | P0 |
| gau | `lc/gau` | URLs darchives multiples | P0 |
| waymore | `xnl-h4ck3r/waymore` | Historique approfondi | P1 |
| ArchiveBox | `ArchiveBox/ArchiveBox` | Archivage local | P0 |
| Browsertrix Crawler | `webrecorder/browsertrix-crawler` | WARC/WACZ | P0 |
| Browsertrix | `webrecorder/browsertrix` | Service local | P2 |
| ArchiveWeb.page | `webrecorder/archiveweb.page` | Capture navigateur | P0 |
| pywb | `webrecorder/pywb` | Relecture WARC | P1 |
| warcio | `webrecorder/warcio` | Lecture/écriture WARC | P0 |
| ReplayWeb.page | `webrecorder/replayweb.page` | Relecture darchives | P1 |
| SingleFile | `gildas-lormeau/SingleFile` | Copie autonome dune page | P0 |
| monolith | `Y2Z/monolith` | Sauvegarde autonome | P1 |
| grab-site | `ArchiveTeam/grab-site` | Archivage WARC | Revue |
| Heritrix | `internetarchive/heritrix3` | Crawl darchivage | Restreint |
| waybackpy | `akamhy/waybackpy` | Client Wayback | P2 |
| Perma | `harvard-lil/perma` | Préservation de références | Manuel/API |
## F. Documents, photos et vidéos
| Outil | Dépôt/projet | Usage | Priorité |
|---|---|---|---|
| ExifTool | `exiftool/exiftool` | Métadonnées multi-format | P0 |
| MediaInfo | `MediaArea/MediaInfo` | Audio et vidéo | P0 |
| FFmpeg / ffprobe | `FFmpeg/FFmpeg` | Analyse technique | P0 |
| Exiv2 | `Exiv2/exiv2` | Métadonnées dimages | P1 |
| Hachoir | `hachoir/hachoir` | Formats binaires | P1 |
| oletools | `decalage2/oletools` | Documents Office | P0 |
| DidierStevensSuite | `DidierStevens/DidierStevensSuite` | PDF et OLE | P1 |
| Poppler tools | Projet Poppler | PDF, texte et images | P0 |
| qpdf | `qpdf/qpdf` | Structure PDF | P0 |
| Tesseract OCR | `tesseract-ocr/tesseract` | OCR local | P0 |
| ImageMagick | `ImageMagick/ImageMagick` | Inspection de copies | P1 |
| OpenCV | `opencv/opencv` | Comparaison dimages | P2 |
| ImageHash | `JohannesBuchner/imagehash` | Empreintes perceptuelles | P1 |
| pHash | Projet pHash | Empreintes perceptuelles | P2 |
| file/libmagic | Paquet système | Identification de format | P0 |
| strings/binutils | Paquet système | Chaînes de caractères | P1 |
| MAT2 | `jvoisin/mat2` | Métadonnées sur copies | P2 |
| yt-dlp | `yt-dlp/yt-dlp` | Conservation de médias publics | P0 |
| gallery-dl | `mikf/gallery-dl` | Galeries publiques | P1 |
| InVID-WeVerify | Extension/service | Vérification manuelle | Manuel |
| face_recognition | `ageitgey/face_recognition` | Comparaison locale | Restreint |
| DeepFace | `serengil/deepface` | Comparaison locale | Restreint |
| InsightFace | `deepinsight/insightface` | Analyse faciale | Restreint |
Aucune recherche biométrique massive ne doit être intégrée.
## G. Dépôts publics et code
| Outil | Usage | Priorité |
|---|---|---|
| GitFive | Corrélation GitHub | P1 |
| GitHub CLI | API et données publiques | P0 |
| TruffleHog | Dépôts publics autorisés | Revue |
| Gitleaks | Secrets publiés | Revue |
| ggshield | Dépôts autorisés | Revue |
| ripgrep | Recherche locale | P0 |
| git-sizer | Structure de dépôt | P2 |
| Git natif | Historique, auteurs et dates | P0 |
Un secret découvert ne doit jamais être utilisé pour accéder à un compte.
## H. Réputation et APIs
| Outil/client | Usage | Priorité |
|---|---|---|
| vt-cli | VirusTotal | API |
| OTX Python SDK | AlienVault OTX | API |
| urlscan-go | URLScan | API |
| Shodan Python | Shodan | API |
| Censys Python | Censys | API |
| pyGreynoise | GreyNoise | API |
| PyMISP | MISP | P2 |
| OpenCTI client | OpenCTI | P2 |
| YARA | Classement local | P2 |
| capa | Analyse locale | Backlog |
Toute donnée envoyée à un tiers doit être affichée avant lappel.
## I. Corrélation et graphes
| Outil | Usage | Priorité |
|---|---|---|
| NetworkX | Algorithmes de graphe | P1 |
| igraph | Graphes performants | P2 |
| Graphviz | Rendu | P0 |
| Gephi | Analyse visuelle externe | Export |
| Cytoscape | Analyse visuelle externe | Export |
| OpenCTI | Référence de modèle | Référence |
| MISP | Référence dindicateurs | Référence |
| Aleph | Recherche documentaire et entités | P1 |
| OpenSanctions | Entités et sanctions publiques | P1 |
| FollowTheMoney | Modèle de relations | P1 |
| Neo4j Community | Base graphe externe | P3 |
| OSINTBuddy | Graphe denquête | Surveillance |
Labfy conserve son propre modèle de données.
## J. Géolocalisation
| Outil | Usage | Priorité |
|---|---|---|
| geopy | Géocodage configurable | P2 |
| Nominatim | Géocodage OpenStreetMap | P1 |
| OSMnx | Réseaux géographiques | P3 |
| Overpass API | Données OpenStreetMap | P2 |
| QGIS | Analyse externe | Export |
| SunCalc | Position du soleil | P2 |
| Skyfield | Calculs astronomiques | P3 |
| ExifTool | Coordonnées de médias | P0 |
## K. IBAN, entreprises et cryptomonnaies
| Outil | Usage | Priorité |
|---|---|---|
| python-stdnum | Validation IBAN et identifiants | P0 |
| iban4j | Validation IBAN | P3 |
| OpenSanctions | Personnes et organisations | P1 |
| FollowTheMoney | Relations structurées | P1 |
| bitcoin-etl | Données publiques Bitcoin | P2 |
| ethereum-etl | Données publiques Ethereum | P2 |
| GraphSense | Analyse de blockchains | P2 |
| BlockSci | Analyse locale | Surveillance |
| mempool | Explorateur Bitcoin open source | P2 |
| Bitcoin Core | Nœud local | P3 |
| Geth | Nœud Ethereum local | P3 |
Un IBAN ne permet pas didentifier publiquement son titulaire. Labfy se limite à la validation, au pays, à la banque lorsquelle est publique et aux corrélations entre dossiers.
---
# Outils exclus du mode OSINT standard
```text
nmap
masscan
naabu
nuclei
gobuster
ffuf
dirsearch
sqlmap
hydra
metasploit
Sn1per
Nikto
WPScan
scanners actifs Burp
outils dexploitation
outils de credential stuffing
outils de phishing
```
Décision initiale :
```text
integration_mode = REJECTED
decision = REJECT
```
---
# Vague prioritaire pour laffaire descroquerie
## P0
```text
Sherlock
Maigret
WhatsMyName
Holehe
PhoneInfoga
libphonenumber
GitHub CLI
ExifTool
MediaInfo
ffprobe
Tesseract OCR
Poppler tools
qpdf
oletools
file/libmagic
yt-dlp
waybackurls
gau
ArchiveBox
Browsertrix Crawler
ArchiveWeb.page
warcio
SingleFile
theHarvester
Subfinder
dnstwist
python-stdnum
Graphviz
```
## P1
```text
Blackbird
GHunt
GitFive
h8mail avec sources licites uniquement
gallery-dl
SpiderFoot
Amass
dnsx
URLCrazy
OpenSanctions
FollowTheMoney
Aleph
NetworkX
ImageHash
VirusTotal CLI
urlscan
```
---
# Audit obligatoire par outil
1. données envoyées sur Internet ;
2. domaines et API contactés ;
3. compte, cookie ou jeton requis ;
4. compatibilité avec les CGU ;
5. volume de requêtes ;
6. accès strictement public ;
7. capacité de modifier une ressource distante ;
8. risque de faux positif ;
9. précision des sources ;
10. sortie brute conservable ;
11. reproductibilité ;
12. commande de version ;
13. licence et redistribution ;
14. installation Ubuntu ;
15. dépendances ;
16. coût ou API obligatoire ;
17. activité du projet ;
18. vulnérabilités connues ;
19. télémétrie ;
20. scripts dinstallation distants.
Aucun `curl | sh`, `wget | bash`, `sudo pip install` ou `sudo npm install -g` ne doit être exécuté sans audit.
---
# Modèle de sécurité dintégration
```text
arguments séparés
aucun shell
utilisateur non privilégié
dossier temporaire
environnement minimal
timeout
limites stdout/stderr
annulation
journal
empreinte du binaire
version
domaines contactés
sortie brute UTC
SHA-256
```
---
# Valeur probatoire
Labfy doit distinguer :
```text
résultat de loutil
source publique
copie locale
interprétation
corrélation
hypothèse
```
Chaque exécution doit conserver :
```text
outil
version
commande
arguments
date UTC
source
URL
sortie brute
capture
archive
SHA-256
statut HTTP
notes
niveau de confiance
```
Un résultat Sherlock, Maigret, Holehe ou PhoneInfoga ne prouve jamais une identité à lui seul.
---
# Phases
## Phase 1
Créer le JSON, le CSV et le schéma.
## Phase 2
Auditer toute la liste P0.
## Phase 3
Auditer la liste P1.
## Phase 4
Attribuer note, priorité, mode dintégration, statut juridique et décision.
## Phase 5
Produire le rapport des outils retenus, manuels, surveillés et rejetés.
## Phase 6
Validation humaine avant tout passage à `INTEGRATE`.
---
# Contrôles automatisés futurs
- identifiants uniques ;
- noms non vides ;
- dépôt renseigné ;
- licence vérifiée pour tout outil approuvé ;
- décision renseignée ;
- aucune priorité P0 pour un outil rejeté ;
- aucun outil actif marqué passif ;
- JSON valide ;
- CSV généré depuis le JSON ;
- aucune clé API ;
- aucun secret ;
- aucune donnée issue dune enquête réelle.
---
# Critères dacceptation
- au moins 80 outils ou composants recensés ;
- toutes les catégories couvertes ;
- tous les P0 audités ;
- licences P0 vérifiées ;
- installation Ubuntu P0 documentée ;
- qualification juridique P0 ;
- commande de version P0 ;
- séparation claire passif/actif/intrusif ;
- aucun outil rejeté proposé à lutilisateur ;
- inventaire Markdown, JSON et CSV ;
- décisions justifiées ;
- feuille de route dintégration ;
- document présentable à des enquêteurs.
---
# Suite prévue
```text
#041 — Initialisation asynchrone des dépendances
#042 — Adaptateurs pseudonymes
#043 — Adaptateurs e-mail
#044 — Adaptateurs téléphone
#045 — Documents et métadonnées
#046 — Archivage probatoire du Web
#047 — Domaines et infrastructures passives
#048 — Graphe de corrélation
```