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 PowerShell

Objectif

DTLcompare ne lance pas le diagnostic lui-même. Il analyse deux fichiers JSON déjà produits par DTLknowsWhy :

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

  1. Lancer DTLknowsWhy depuis le poste où l'accès fonctionne.
  2. Lancer DTLknowsWhy depuis le poste où l'accès échoue.
  3. Utiliser strictement la même cible dans les deux diagnostics : même serveur, même IP, même partage si un partage est testé.
  4. Copier les deux fichiers .json dans le dossier de DTLcompare ou noter leur chemin complet.
  5. Renommer les fichiers si nécessaire pour ne pas se tromper entre le cas OK et le cas KO.

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 :

  1. working_snapshot : snapshot où l'accès fonctionne ;
  2. 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.

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.