DTLcompare - Guide utilisateur
Guide pratique pour comparer deux diagnostics distants DTLknowsWhy et comprendre pourquoi un accès fonctionne depuis un poste mais échoue depuis un autre.
Snapshots JSON SMB Rapports HTML / TXT / JSON Exemples PowerShellObjectif
DTLcompare ne lance pas le diagnostic lui-même. Il analyse deux fichiers JSON déjà produits par DTLknowsWhy :
- un snapshot pris depuis un poste où l'accès distant fonctionne ;
- un snapshot pris depuis un poste où le même accès distant échoue.
Le résultat attendu n'est pas seulement une différence brute. L'outil classe les causes probables, explique les preuves retenues, écarte les fausses pistes et propose une action suivante.
Principe en une minute
Situation typique
Le partage \\SCCF-71SFS42\share est accessible depuis SCCF-CZC025814B, mais pas depuis PC-BEN-001.
Vous produisez donc deux snapshots DTLknowsWhy vers la même cible SCCF-71SFS42, puis vous lancez DTLcompare en donnant d'abord le snapshot du poste qui fonctionne, ensuite celui du poste en échec.
python comparative_analysis.py ok_depuis_SCCF-CZC025814B.json ko_depuis_PC-BEN-001.json
Si le port SMB 445 répond depuis les deux postes mais que les partages ne sont visibles que depuis le poste fonctionnel, l'outil orientera plutôt vers une cause d'identité, de droits ou d'identifiants Windows mémorisés que vers une panne réseau.
Préparer les fichiers
- Lancer DTLknowsWhy depuis le poste où l'accès fonctionne.
- Lancer DTLknowsWhy depuis le poste où l'accès échoue.
- Utiliser strictement la même cible dans les deux diagnostics : même serveur, même IP, même partage si un partage est testé.
- Copier les deux fichiers
.jsondans le dossier de DTLcompare ou noter leur chemin complet. - Renommer les fichiers si nécessaire pour ne pas se tromper entre le cas
OKet le casKO.
Exemple de rangement recommandé
C:\Users\Utilisateur\Documents\Secato\outils\DTLcompare\
comparative_analysis.py
ok_SCCF-CZC025814B_vers_SCCF-71SFS42.json
ko_PC-BEN-001_vers_SCCF-71SFS42.json
Contrôle rapide avant analyse
Dans PowerShell, placez-vous dans le dossier DTLcompare et vérifiez que les deux fichiers sont bien visibles :
cd C:\Users\Utilisateur\Documents\Secato\outils\DTLcompare
dir *.json
Si les fichiers sont ailleurs ou si leur nom contient des espaces, utilisez des guillemets :
python comparative_analysis.py "C:\Temp\diagnostic OK.json" "C:\Temp\diagnostic KO.json"
Lancer l'analyse
La commande attend toujours les fichiers dans cet ordre :
working_snapshot: snapshot où l'accès fonctionne ;failing_snapshot: snapshot où l'accès échoue.
python comparative_analysis.py working_snapshot.json failing_snapshot.json
Exemple avec les fichiers du dossier
python comparative_analysis.py 172.17.7.19_snapshot_20260610_151730.json 172.17.7.19_snapshot_20260610_152617.json
Exemple avec un nom de rapport choisi
mkdir rapports
python comparative_analysis.py `
ok_SCCF-CZC025814B_vers_SCCF-71SFS42.json `
ko_PC-BEN-001_vers_SCCF-71SFS42.json `
--output-prefix rapports\comparaison_SCCF_vers_SCCF-71SFS42
Le caractère ` en fin de ligne permet seulement de couper une commande PowerShell sur plusieurs lignes. Vous pouvez aussi tout écrire sur une seule ligne.
Exemples de lecture
| Ce que DTLcompare observe | Ce que cela signifie souvent | Action concrète |
|---|---|---|
| TCP 445 ouvert depuis les deux postes, cible joignable, partages visibles seulement depuis le poste OK. | Le serveur SMB et le réseau fonctionnent probablement. Le problème est plus probablement lié au compte Windows, aux droits ou à un identifiant mémorisé sur le poste KO. | Sur le poste KO : vider les sessions SMB avec net use * /delete /y, vérifier cmdkey /list, puis retester avec un compte explicite. |
| TCP 445 fermé ou inaccessible uniquement depuis le poste KO. | Le compte n'est peut-être pas encore en cause. Le flux SMB est bloqué entre ce poste et la cible. | Vérifier VPN, pare-feu local, profil réseau Windows, filtrage EDR, VLAN ou règles de routage. |
| Ping KO depuis le poste KO, mais ping OK depuis le poste fonctionnel. | Le problème est probablement plus bas niveau : résolution DNS, routage, connectivité IP ou filtrage ICMP. | Tester nslookup nom_serveur, ping adresse_ip, tracert adresse_ip, puis comparer les routes. |
| L'analyse signale une cible différente entre les deux snapshots. | La comparaison n'est pas fiable : on ne compare pas exactement le même accès. | Refaire les deux diagnostics DTLknowsWhy avec la même cible, puis relancer DTLcompare. |
Rapports produits
Par défaut, DTLcompare écrit trois fichiers dans le dossier courant. Après une exécution réussie, la console affiche leurs chemins.
Rapport HTML
Document principal pour la lecture humaine. Ouvrez-le dans un navigateur et partagez-le avec une équipe support, poste de travail, réseau ou infrastructure.
start .\comparative_analysis_SCCF-CZC025814B_vs_PC-BEN-001_20260610_160015.html
Rapport texte
Synthèse compacte à coller dans un ticket ou un courriel. Il contient la conclusion, les causes probables, les causes écartées et les actions recommandées.
Rapport JSON
Version structurée pour archivage, automatisation ou comparaison ultérieure. Utilisez-le si un autre outil doit relire les constats.
Lire l'analyse
Commencez par la conclusion, puis descendez vers les preuves. Ne vous arrêtez pas au premier message d'erreur Windows : DTLcompare cherche à savoir si ce message est cohérent avec le reste des tests.
- Causes probables : hypothèses classées avec preuves, confiance et score de pertinence.
- Causes éliminées : pistes que les données permettent d'écarter, par exemple serveur SMB muet ou port 445 bloqué.
- Preuves : faits extraits des snapshots, comme ping, TCP 445, partages visibles, type d'identité Windows ou message d'erreur.
- Remédiation : action conseillée lorsque l'analyse permet de proposer une suite logique.
Exemple concret de conclusion
Le serveur SCCF-71SFS42 fonctionne correctement.
Le problème semble spécifique au poste PC-BEN-001.
Preuves :
- SCCF-CZC025814B voit les partages.
- TCP 445 répond depuis les deux postes.
- PC-BEN-001 contient un indice d'échec d'identifiants.
Dans ce cas, il est inutile de commencer par redémarrer le serveur ou modifier le partage. La piste prioritaire est le poste en échec : session SMB, identifiants mémorisés, compte utilisé ou droits associés.
Actions après l'analyse
Quand l'analyse pointe vers une cause d'authentification SMB côté client, voici une procédure simple à exécuter sur le poste en échec.
whoami
whoami /upn
net use
cmdkey /list
net use * /delete /y
Ensuite, retestez l'accès avec un compte explicite. Adaptez le format du compte au contexte réel : domaine, compte local du serveur, compte AzureAD ou UPN.
net use \\SCCF-71SFS42\share /user:DOMAINE\utilisateur *
net use \\SCCF-71SFS42\share /user:utilisateur@domaine.example *
Si le retest fonctionne après nettoyage des sessions ou changement de compte, joignez au ticket le rapport HTML et indiquez le compte utilisé lors du test réussi.
Options utiles
--lang fr|en
--json
--output-prefix chemin\rapport
--no-files
| Option | Quand l'utiliser | Exemple |
|---|---|---|
--output-prefix |
Choisir le dossier et le nom de base des rapports. | mkdir rapports, puis --output-prefix rapports\incident_445_PC-BEN-001 |
--json |
Afficher aussi les constats JSON dans la console. | python comparative_analysis.py ok.json ko.json --json |
--no-files |
Faire un test rapide sans créer de rapports. | python comparative_analysis.py ok.json ko.json --no-files |
--lang en |
Produire une analyse en anglais. | python comparative_analysis.py ok.json ko.json --lang en |
Dépannage
| Symptôme | Cause probable | Correction |
|---|---|---|
ModuleNotFoundError: No module named 'expert' |
DTLknowsWhy n'est pas disponible dans l'environnement Python utilisé. | Lancer DTLcompare depuis l'environnement où DTLknowsWhy est installé, ou ajouter le dossier source de DTLknowsWhy à PYTHONPATH. |
| Le rapport dit que les cibles sont différentes. | Les deux snapshots ne testent pas exactement le même serveur, nom DNS, IP ou partage. | Refaire les diagnostics avec la même cible, puis relancer l'analyse. |
| Aucun rapport n'apparaît. | Le dossier courant n'est pas celui attendu, l'option --no-files a été utilisée, ou le dossier de sortie n'existe pas. |
Regarder les chemins affichés par la console, retirer --no-files, créer le dossier de sortie si nécessaire. |
| Les résultats semblent incohérents. | Les fichiers ont peut-être été passés dans le mauvais ordre. | Relancer avec le snapshot OK en premier et le snapshot KO en second. |