Présentation
DTLknowsWhy est un outil Windows de diagnostic et d'analyse experte conçu pour aider les administrateurs, techniciens et équipes support à comprendre non seulement **ce qui** se passe sur un système, mais aussi **pourquoi** cela se produit.
Contenu du README
Présentation
DTLknowsWhy est un outil Windows de diagnostic et d'analyse experte conçu pour aider les administrateurs, techniciens et équipes support à comprendre non seulement ce qui se passe sur un système, mais aussi pourquoi cela se produit.
Le projet combine inventaire automatique, analyse de configuration et connaissances expertes pour identifier des causes probables de problèmes Windows courants : réseau, services, partage SMB, résolution de noms, produits de sécurité et configuration système.
DTLknowsWhy évolue d'un collecteur de données vers un véritable assistant de dépannage capable d'expliquer des symptômes observés et de proposer des causes probables.
Version v2.2.0 - 10 juin 2026 - Didier DTL Morandi - www.didiermorandi.com/netdtl
---
Nouveautés de la version 2.2
La version 2.2 ajoute plusieurs fonctions importantes par rapport à la base 2.1.
Découverte automatique des cibles par adresse IP
L'interface graphique découvre automatiquement les équipements joignables sur le sous-réseau IPv4 local au démarrage.
Le sélecteur de cible est alimenté par des adresses IP, pas par des noms de machines. Quand un nom peut être résolu, il est affiché à côté de l'adresse :
172.17.7.19 - SCCF-71SFS42
172.17.7.22 - SCCF-2C49F63
172.17.7.23 - SCCF-6V5FS42
Si aucun nom n'est connu, seule l'adresse IP est affichée.
Les diagnostics sont lancés contre l'adresse IP elle-même. Cela évite les ambiguïtés NetBIOS, DNS ou de résolution de noms Windows lors de l'analyse de problèmes d'accès.
Comparaison automatique de type GitScan
DTLknowsWhy peut lancer une comparaison automatique entre la machine locale de référence et une cible sélectionnée, sans que l'utilisateur choisisse manuellement une règle de diagnostic.
Ce mode est destiné aux situations de support rapides où la question est :
> « Qu'est-ce qui diffère entre le PC de référence et la cible ? »
Analyse comparative distant-vers-distant
La version 2.2 introduit aussi une analyse comparative de second niveau entre deux diagnostics distants.
Elle compare deux points de vue clients vers la même cible, par exemple :
- le PC A peut énumérer ou accéder à un partage ;
- le PC B atteint TCP 445 mais reçoit une erreur d'authentification.
L'analyse produit :
Exemple :
py -m expert.comparative_analysis PC-A_snapshot.json PC-B_snapshot.json
Le premier snapshot doit représenter le point de vue où l'accès fonctionne. Le second doit représenter le point de vue où l'accès échoue.
La commande écrit par défaut :
comparative_analysis_<PC-A>_vs_<PC-B>_<timestamp>.txt
comparative_analysis_<PC-A>_vs_<PC-B>_<timestamp>.html
Options utiles :
py -m expert.comparative_analysis PC-A_snapshot.json PC-B_snapshot.json --json
py -m expert.comparative_analysis PC-A_snapshot.json PC-B_snapshot.json --output-prefix mon_rapport
py -m expert.comparative_analysis PC-A_snapshot.json PC-B_snapshot.json --no-files
Conclusions typiques :
Snapshot d'agent distant
Quand la cible exécute DTLknowsWhy-Agent, l'outil principal peut demander un snapshot distant complet via HTTP sur le port 5050.
Le rapport peut alors comparer :
Si l'agent distant fonctionne localement sur la cible mais n'est pas joignable depuis la machine de référence, DTLknowsWhy peut identifier la règle pare-feu TCP 5050 probablement manquante.
Collecteur de sécurité des partages SMB
Le collecteur SMB_SHARE_SECURITY analyse chaque partage SMB local et compare les deux couches de droits Windows :
Pour chaque partage, il enregistre :
Everyone, Users ou Authenticated Users.Le collecteur peut produire l'indicateur :
SMB_ACCESS_MISMATCH
Situations détectées :
Cela aide à analyser les cas où un partage est visible depuis un autre poste mais où l'accès est refusé parce que l'onglet Sécurité NTFS reste plus restrictif que les permissions du partage.
Statut et confiance du moteur expert
Les constats experts peuvent désormais distinguer :
Chaque constat peut aussi porter un niveau de confiance :
Cela évite qu'une ancienne observation reste affichée comme un problème actif après correction.
Ordre des rapports
Lorsqu'une cible distante est analysée, les rapports placent désormais les informations de la cible et les constats de diagnostic en premier.
Les données de la machine locale sont placées en fin de rapport, car elles servent surtout de référence de comparaison.
Collecte réseau internationalisée
Les versions précédentes analysaient la sortie de :
ipconfig /all
Cette méthode dépendait des libellés localisés de Windows et ne fonctionnait de manière fiable que sur les installations françaises.
La version 2.1 introduit un moteur de collecte réseau fondé sur PowerShell et les données CIM structurées.
Avantages :
Choix de langue dans l'interface graphique
Depuis la version 2.1, l'interface permet de choisir la langue au démarrage.
La langue sélectionnée est utilisée pour :
Langues actuellement prises en charge :
Cette fonction est indépendante de la langue du système d'exploitation.
---
Compatibilité ascendante
Même si le mécanisme de collecte a été remanié, la structure JSON produite reste compatible.
Les éléments suivants continuent à fonctionner sans modification :
---
Fonctionnalités principales
Inventaire système
Collecte d'informations détaillées sur :
Diagnostics réseau
Collecte et analyse :
Détection sécurité
Détection :
fltmc.Analyse SMB et partage de fichiers
Aide à identifier les problèmes liés à :
Moteur de connaissances expertes
DTLknowsWhy corrèle les données collectées avec des cas de dépannage connus et des bonnes pratiques.
Exemples :
---
Architecture
Système Windows
|
v
Collecte de données
|
v
Inventaire JSON structuré
|
v
Moteur d'analyse experte
|
v
Diagnostics lisibles
L'objectif n'est pas seulement de rapporter des données système, mais de transformer les observations en explications exploitables.
---
Prérequis
---
Cas d'usage typiques
---
Build
Regénérer l'application graphique principale :
py -m PyInstaller --clean DTLknowsWhy.spec
Regénérer l'agent distant :
py -m PyInstaller --clean DTLknowsWhy-Agent.spec
L'agent doit être reconstruit lorsque les collecteurs, le serveur distant, la logique de service ou les formats de rapport évoluent.
---
Documentation
Le guide utilisateur et le manuel de référence DTLknowsWhy v2.2 sont disponibles dans la documentation NetDTL :
https://didiermorandi.com/netdtl/doc/
Version
Version courante : DTLknowsWhy v2.2.0
Mise à jour - 14 juin 2026
Le code courant indique DTLKNOWSWHY_VERSION = "v2.2-2" dans shared/version.py.
Composants présents et confirmés :
IP - nom quand un nom peut être résolu.--snapshot pour générer un snapshot local.--target pour lancer des diagnostics contre une machine distante.--gitscan TARGET pour lancer une comparaison automatique sans choisir manuellement les règles de diagnostic.--listen pour exposer un petit serveur HTTP de snapshot distant, avec --once pour les tests.--service, par exemple pour installer l'agent au démarrage.