docs: add project README

This commit is contained in:
grayTerminal-sh 2026-07-18 09:33:28 +02:00
parent 53bf65372d
commit 58fe49a5f2

481
README.md
View file

@ -1,170 +1,375 @@
# Objet # Labfy Investigation
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: Labfy Investigation est un poste de travail libre dinvestigation numérique et dOSINT, développé en **C17** avec **GTK4**.
# Objectifs Le projet vise à fournir un environnement local, modulaire et traçable pour organiser une enquête, préserver les preuves originales, analyser des données, corréler des entités et produire des rapports exploitables.
Ce dossier a pour objectif de : > **État du projet : développement actif**
>
> Le logiciel nest pas encore prêt pour un usage opérationnel en production. Les formats internes, linterface et les mécanismes dintégration peuvent encore évoluer.
- 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 ## Objectifs
- Les preuves originales ne sont jamais modifiées. Labfy Investigation doit permettre de :
- 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 - créer et ouvrir une enquête autonome ;
```bash - conserver les preuves originales sans les modifier ;
├── 00_BaseDeDonnées - organiser les fichiers, entités, relations et événements ;
│   └── Enquete.sqlite - stocker les données structurées dans SQLite ;
├── 01_Preuves_Originales - afficher larborescence complète dune enquête ;
│   ├── Captures_Ecran - exécuter des traitements longs en arrière-plan ;
│   ├── Conversations - intégrer progressivement des outils OSINT externes ;
│   ├── Documents - conserver les sorties brutes, les versions et les paramètres dexécution ;
│   ├── Emails - distinguer les faits observés, les résultats doutils, les corrélations et les hypothèses ;
│   ├── Photos - produire des rapports compréhensibles et traçables.
│   └── Videos
├── 02_Preuves_traitees Le logiciel est pensé pour des usages légaux par des particuliers, journalistes, analystes OSINT, experts judiciaires et forces de lordre.
│   ├── Annotations
│   ├── Extractions ---
│   ├── OCR
│   └── Redactions ## Cadre légal et éthique
├── 03_Chronologie
│   ├── Chronologie.csv Labfy Investigation est conçu pour travailler avec :
│   └── Chronologie.md
├── 04_Entites - des sources publiquement accessibles ;
│   ├── Adresses_Email - des données fournies légalement par une victime ou un enquêteur ;
│   ├── Autres - des API utilisées conformément à leurs autorisations ;
│   ├── Comptes_Bancaires - des recherches passives ou explicitement autorisées ;
│   ├── Comptes_Instagram - des copies locales dont la provenance peut être documentée.
│   ├── Documents_Identite
│   ├── IBAN Le projet na pas vocation à fournir ou automatiser :
│   ├── Personnes
│   └── Pseudonymes - lintrusion dans un système ;
├── 05_Recherches_Osint - le contournement dune authentification ;
│   ├── Divers - lexploitation de vulnérabilités ;
│   ├── Domaines - le brute force ou le credential stuffing ;
│   ├── Emails - le phishing ou lusurpation ;
│   ├── Google - lutilisation de secrets découverts ;
│   ├── IBAN - laccès à des données privées sans autorisation ;
│   ├── Recherche_Image - la modification ou la suppression de données distantes.
│   └── Reseaux_Sociaux
├── 06_Hypothèses Un résultat produit par un outil OSINT constitue une **piste à vérifier**, pas une preuve didentité à lui seul.
│   ├── A_Verifier.md
│   └── Hypotheses.md ---
├── 07_Rapports
│   ├── Annexes ## Principes fondamentaux
│   └── Rapport.md
├── 08_Export_gendarmerie ### Une enquête est autonome
│   ├── index.pdf
│   ├── Pièces_justificatives Chaque enquête est stockée dans un dossier transportable :
│   └── Rapport_final.pdf
├── 09_Hash ```text
│   ├── SHA256.txt MonEnquete/
│   └── Vérification.md ├── 00_BaseDeDonnees/
├── Archives │ └── Enquete.sqlite
├── Enquete-gui ├── 01_Preuves_Originales/
│   ├── compile_flags.txt ├── 02_Preuves_Traitees/
│   ├── database ├── 03_Chronologie/
│   ├── docs ├── 04_Entites/
│   ├── enquete-gui └── 05_Rapports/
│   ├── 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 Une enquête peut être copiée, déplacée, sauvegardée, archivée ou transmise avec ses données.
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 ### Les preuves originales sont immuables
Documents obtenues non modifiées non traité authentifiés par un fichiers hashage.
## 03_Chronologie Toute annotation, conversion, extraction ou analyse doit produire un nouveau fichier. Une preuve originale ne doit jamais être modifiée.
Documents et évènements classé chronologiquement.
## 04_Entites ### SQLite est la source de vérité
Inventaire des entités identifiées au cours de l'enquête (personnes, pseudonymes, comptes, adresses électroniques, IBAN, documents, etc.).
## 05_Recherches_Osint Les tableaux, graphes, chronologies et résultats de recherche sont des vues différentes des mêmes données persistées.
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 ### Les résultats bruts et normalisés sont séparés
Dossier contenant les différentes hypothèses forumlées avant compilation pour le rapport final.
## 07_Rapports Chaque traitement doit conserver :
Dossier contenant les différents rapport en corrélation direct avec le rapprochement des differentes preuves et documents obtenues.
## 08_Export_gendarmerie - loutil utilisé ;
Dossier compilé et prêt pour exploitation. - sa version ;
- les arguments ;
- la date et lheure UTC ;
- la source interrogée ;
- la sortie brute ;
- lempreinte des fichiers produits ;
- les données normalisées utilisées par lapplication.
## 09_Hash ### Linterface ne doit jamais être bloquée
Dossier contenant les fichiers hash servant à l'authentification des preuves.
# Convention de nommage Les opérations longues doivent sexécuter en arrière-plan et rester annulables.
Les identifiants utilisés dans ce dossier sont normalisés. ### Aucun shell construit dynamiquement
| Préfixe | Signification | Les outils externes sont lancés avec `GSubprocess` et des arguments séparés. Les commandes concaténées puis transmises à un shell sont interdites.
|----------|---------------|
| P | Preuve |
| E | Entité |
| R | Recherche |
| H | Hypothèse |
| S | Source |
| PER | Personne |
| TAG | Tag |
Exemples : ---
P0001 ## Fonctionnalités déjà présentes
E0007
S0003
H0002
# Intégrité des preuves Le socle actuel comprend notamment :
- Les fichiers originaux ne sont jamais modifiés. - création et ouverture denquêtes ;
- Toute analyse est réalisée sur une copie. - validation de larborescence ;
- Chaque preuve possède une empreinte SHA-256. - sessions denquête remplaçables proprement ;
- Les modifications sont documentées. - base SQLite versionnée ;
- transactions et remontée structurée des erreurs ;
- DAO et modèles denquête ;
- arborescence des fichiers ;
- fenêtre principale GTK4 ;
- barre latérale et espace de travail ;
- affichage graphique des erreurs ;
- tâches asynchrones annulables ;
- gestionnaire de tâches ;
- panneau dactivité GTK ;
- registre doutils externes ;
- exécution sécurisée par `GSubprocess` ;
- exécution doutils en tâche de fond ;
- catalogue initial doutils ;
- détection de présence et de version.
# Enquete-gui Les outils actuellement présents dans le catalogue initial sont :
Application développée en C17 utilisant GTK4 et SQLite. ```text
dig
host
whois
curl
openssl
```
Elle permet de : Ils restent optionnels : labsence dun outil ne doit pas empêcher Labfy Investigation de démarrer.
- gérer les preuves ; ---
- gérer les entités ;
- documenter les recherches ; ## Architecture
- générer les rapports ;
- faciliter la navigation dans la base de données. Le projet sépare strictement les responsabilités :
```text
Interface GTK4
Application
Services métier
Adaptateurs
├── SQLite
├── système de fichiers
├── outils CLI
└── futures API
```
Règles principales :
- le cœur métier ne dépend pas de GTK ;
- les widgets ne manipulent ni SQLite ni les preuves ;
- les modèles ne connaissent ni GTK ni SQLite ;
- les erreurs remontent jusquà lapplication ;
- chaque allocation possède une responsabilité de libération claire ;
- les tests du cœur ne doivent pas nécessiter le lancement de GTK.
Organisation actuelle :
```text
database/ Ressources et éléments liés à la base
docs/ Architecture, conventions et feuille de route
include/core/ Interfaces du cœur
include/dao/ Interfaces daccès aux données
include/database/ Infrastructure SQLite
include/models/ Modèles métier
include/views/ Fenêtres GTK
include/widgets/ Widgets réutilisables
resources/ Ressources de lapplication
src/core/ Implémentation du cœur
src/dao/ Accès aux données
src/database/ Implémentation SQLite
src/models/ Modèles métier
src/views/ Vues GTK
src/widgets/ Widgets GTK
tests/ Tests unitaires
```
La documentation détaillée se trouve dans :
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
- [`docs/CONVENTIONS.md`](docs/CONVENTIONS.md)
- [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md)
- [`docs/ROADMAP.md`](docs/ROADMAP.md)
- [`docs/database/`](docs/database/)
---
## Environnements ciblés
### Ubuntu
Ubuntu est la cible principale de distribution, notamment pour un futur déploiement auprès des forces de lordre.
Dépendances de compilation :
```bash
sudo apt update
sudo apt install build-essential pkg-config libgtk-4-dev libglib2.0-dev libsqlite3-dev
```
La disponibilité réelle des paquets devra être vérifiée sur les postes utilisant des dépôts institutionnels restreints.
### Arch Linux
Arch Linux est lenvironnement principal de développement et de validation.
```bash
sudo pacman -S --needed base-devel pkgconf gtk4 glib2 sqlite
```
Les paquets AUR ne devront jamais devenir une dépendance obligatoire du futur paquet Ubuntu.
---
## Compilation
Depuis la racine du dépôt :
```bash
make
```
Le binaire produit est :
```text
./labfy-investigation
```
Lancer lapplication :
```bash
make run
```
Nettoyer les fichiers générés :
```bash
make clean
```
Le projet est compilé en C17 avec les avertissements traités comme des erreurs.
---
## Tests
Lancer tous les tests :
```bash
make test
```
Vérifications recommandées avant chaque commit :
```bash
make clean
make
make test
git diff --check
```
Les nouveaux modules doivent être accompagnés de tests couvrant :
- les arguments invalides ;
- le fonctionnement nominal ;
- les erreurs ;
- lannulation lorsque nécessaire ;
- les responsabilités mémoire ;
- les régressions possibles.
---
## Développement
Conventions essentielles :
- C17 uniquement ;
- fichiers et fonctions en `snake_case` ;
- fonctions préfixées par leur module ;
- noms de variables explicites ;
- aucune logique métier dans les widgets ;
- aucun commit tant que la fonctionnalité ne compile pas et ne fonctionne pas ;
- compilation sans avertissement ;
- tests valides avant intégration.
Exemples de préfixes :
```text
database_*
investigation_*
task_manager_*
tool_registry_*
tool_process_*
tool_catalog_*
```
---
## Outils OSINT externes
Le ticket historique **#40** reste ouvert comme inventaire évolutif des outils OSINT potentiels.
Les outils ne sont pas intégrés en masse. Lorsquun besoin concret apparaît :
1. un ticket Forgejo dédié est créé ;
2. loutil est audité techniquement et juridiquement ;
3. sa compatibilité Ubuntu et Arch est vérifiée ;
4. son adaptateur est développé ;
5. ses sorties brutes et normalisées sont testées ;
6. son état est mis à jour dans linventaire.
Aucun outil absent nest installé automatiquement par lapplication.
---
## Suivi du projet
Les tickets sont désormais suivis directement dans Forgejo :
```text
https://git.labfytools.com/fy59/labfy-investigation/issues
```
Les tickets historiques jusquau numéro 40 conservent leur numérotation. Les nouveaux tickets utilisent uniquement le numéro attribué automatiquement par Forgejo.
Le prochain chantier porte sur linitialisation asynchrone du registre et des versions doutils au démarrage.
---
## État du packaging
Le packaging nest pas encore finalisé.
Les cibles prévues sont :
- paquet `.deb` pour Ubuntu ;
- dossier source accompagné dun script de compilation ;
- procédure de développement et de test pour Arch Linux.
Le futur installateur Ubuntu devra fonctionner autant que possible sans dépendre de dépôts non standards.
---
## Contribution
Avant toute modification :
1. consulter les tickets ouverts ;
2. lire larchitecture et les conventions ;
3. limiter chaque changement à un objectif cohérent ;
4. ajouter ou adapter les tests ;
5. vérifier la compilation complète ;
6. documenter toute dérogation architecturale.
---
## Licence ## Licence
Ce projet est distribué sous licence MIT. Labfy Investigation est distribué sous licence MIT.
Voir le fichier `LICENSE` pour plus d'informations. Voir le fichier `LICENSE` pour les conditions complètes.