DTLknowsWhy — Guide utilisateur v2.1
Guide pratique pour installer, exécuter et interpréter DTLknowsWhy 2.1 — du premier snapshot local à la comparaison causale complète entre deux machines.
Préface
Ce guide explique comment utiliser DTLknowsWhy pour diagnostiquer des problèmes réseau et SMB sous Windows. Il couvre l'interface graphique, tous les modes en ligne de commande, les trois formats de fichiers de sortie, les outils de diagnostic expert et d'analyse comparative, ainsi qu'un ensemble de procédures pas à pas pour les scénarios de dépannage les plus courants.
Pour la documentation complète des modules et de l'API, consultez le Manuel de référence DTLknowsWhy.
Audience visée
Ce guide s'adresse aux administrateurs systèmes et au personnel de support gérant des postes Windows 10 et 11, ainsi qu'aux administrateurs réseau qui diagnostiquent des problèmes SMB, DNS et de connectivité. Aucune expérience de développement Python n'est requise. Une familiarité de base avec l'invite de commandes Windows est supposée.
Conventions
| Convention | Signification |
|---|---|
monospace | Commandes, noms de fichiers et texte à saisir exactement tel qu'il est affiché |
| italique | Texte variable : substituer la valeur réelle |
| Gras | Terme clé ou emphase importante |
[option] | Argument facultatif ; ne pas saisir les crochets |
Documents associés
| Document | Description |
|---|---|
| Manuel de référence DTLknowsWhy | Syntaxe complète des commandes, référence des modules et spécification du format de snapshot |
| Manuel de référence NetDTL | Application web PHP/MySQL d'inventaire réseau agentless |
| Manuel de référence DTLsaysWhat | Outil d'inventaire système Windows |
| README.md | Résumé de démarrage rapide à la racine du dépôt |
Chapitre 1 — Démarrage
1.1 Vue d'ensemble
DTLknowsWhy est un outil de diagnostic et d'analyse experte pour Windows. La plupart des outils de diagnostic répondent à la question : « Quelle est la configuration de cette machine ? » DTLknowsWhy est conçu pour répondre à : « Pourquoi ce problème se produit-il ? »
Exécutez-le sur une machine pour obtenir immédiatement une image complète de sa configuration : version du système d'exploitation, profil réseau, paramètres IP, services Windows clés et connectivité de base. Pointez-le optionnellement vers une seconde machine pour récupérer son snapshot complet via l'agent intégré, puis comparez les deux configurations pour identifier la cause probable de la différence.
| Outil | Objectif |
|---|---|
DTLknowsWhy.exe | GUI : sélecteur de situation, champ cible, sélecteur de langue, volet de résultats |
DTLknowsWhy-CLI.exe / agent.py | CLI : même pipeline, sortie console, scriptable |
DTLknowsWhy-Agent.exe | Agent distant : s'exécute sur la machine cible ; fournit son snapshot via HTTP |
expert.py | Analyse un snapshot unique ; émet des résultats avec étapes de remédiation |
compare.py | Compare deux snapshots ; identifie ce qui diffère entre une machine qui fonctionne et une qui ne fonctionne pas |
1.2 Nouveautés de la version 2.1
Fonctionne sur toute locale Windows
Les versions précédentes analysaient la sortie texte d'ipconfig /all avec des libellés Windows en français et ne fonctionnaient correctement que sur Windows en français. La version 2.1 remplace entièrement ce moteur par des objets PowerShell et CIM structurés. L'adresse IP, le masque, la passerelle, les serveurs DNS, l'état DHCP et l'état NetBIOS sont désormais collectés de manière fiable sur toute locale Windows.
Interface graphique
Le nouvel exécutable DTLknowsWhy.exe présente une liste de situations à cocher, un champ de saisie pour la cible, un sélecteur de langue, un journal de progression en direct et un volet de résultats structurés. Sélectionnez une ou plusieurs situations décrivant votre problème, saisissez optionnellement l'IP ou le nom d'hôte de la machine à diagnostiquer, puis cliquez sur Lancer le diagnostic.
1.3 Prérequis
- Windows 10 ou Windows 11
- Python 3.10 ou ultérieur (bibliothèque standard uniquement — aucun
pip installrequis) - PowerShell 5.1 ou 7+ (préinstallé sur toutes les versions Windows supportées)
- Droits administrateur recommandés (voir Annexe A)
1.4 Installation
Aucun installeur n'est nécessaire. Copiez le dossier du projet sur la machine cible. Les exécutables compilés peuvent être lancés directement. Les fichiers sources Python nécessitent l'installation de Python 3.10+.
Tous les fichiers de sortie sont écrits dans le répertoire depuis lequel l'outil est invoqué. Utilisez un répertoire de travail dédié pour garder les snapshots et rapports organisés.
1.5 Démarrage rapide
| Objectif | Commande |
|---|---|
| Ouvrir l'interface graphique | DTLknowsWhy.exe |
| Snapshot local, rapport en français | python agent.py --snapshot --lang fr |
| Snapshot local + requête agent distant | python agent.py --target 172.17.7.3 --lang fr |
| Diagnostic expert sur le dernier snapshot | python expert.py --lang fr |
| Comparer deux machines | python compare.py REF_snap.json CIBLE_snap.json --lang fr |
| Démarrer l'agent distant (interactif) | DTLknowsWhy-Agent.exe --listen |
| Installer l'agent distant comme service Windows | DTLknowsWhy-Agent.exe install |
1.6 Sélection de la langue
DTLknowsWhy prend en charge le français et l'anglais pour toutes les sorties : libellés des rapports, messages de diagnostic, éléments d'interface et résultats du comparateur.
Dans la GUI : sélectionner la langue dans la liste déroulante du panneau de droite avant de lancer le diagnostic. La sélection s'applique immédiatement à tous les libellés et aux rapports générés. En CLI : passer --lang fr ou --lang en à toute commande. Le défaut est fr pour les fichiers sources Python.
Chapitre 2 — Modes de fonctionnement
2.1 — Mode GUI
DTLknowsWhy.exe [--target IP_OU_HÔTE] [--lang {fr,en}]
- Sélectionner une ou plusieurs situations décrivant le problème (ex. « Machine invisible dans le voisinage réseau », « Accès à un partage Windows distant impossible »)
- Saisir l'IP ou le nom d'hôte de la machine cible si une situation le requiert (signalée par une étoile)
- Sélectionner la langue de l'interface et des rapports
- Cliquer sur Lancer le diagnostic
- Suivre le journal de progression à gauche ; les résultats apparaissent dans le volet des résultats à droite à la fin
- Cliquer sur Ouvrir le rapport HTML pour afficher le rapport complet dans un navigateur
| Situation | Cible requise | Description |
|---|---|---|
| SMB-001 | Non | Machine invisible dans le voisinage réseau malgré un accès SMB fonctionnel |
| SMB-002 | Oui | \\IP\partage fonctionne mais \\NOM\partage échoue — résolution de nom défaillante |
| SMB-003 | Oui | Authentification refusée après réinstallation (erreur 86 ou 1326) |
| LOCAL-NETWORK | Non | Passerelle inaccessible, IP incorrecte, panne DHCP ou profil Public |
| LOCAL-SMB | Non | LanmanServer ou LanmanWorkstation arrêté |
| REMOTE-WINDOWS | Oui | Accès à un partage Windows distant impossible (TCP 445 bloqué ou LanmanServer arrêté) |
| REMOTE-DEVICE | Oui | Identifier et classifier un équipement réseau inconnu |
2.2 — Snapshot local (CLI)
python agent.py --snapshot [--lang {fr,en}]
- Système : nom d'hôte, utilisateur, droits admin, version et build Windows, LmCompatibilityLevel, état BitLocker
- Réseau : nom et catégorie du profil (Public/Private/Domain), IPv4, masque, passerelle, serveurs DNS, état DHCP, option et état NetBIOS
- Tests locaux : ping loopback (127.0.0.1), ping self (IP propre), ping passerelle
- Services : LanmanServer, LanmanWorkstation, FDResPub, fdPHost, lmhosts
- Diagnostic expert : les résultats du moteur de règles sont intégrés dans le JSON du snapshot
Trois fichiers nommés HÔTE_snapshot_HORODATAGE.json, HÔTE_report_HORODATAGE.txt et HÔTE_report_HORODATAGE.html. Les chemins sont affichés dans la console à la fin.
2.3 — Cible distante (CLI)
python agent.py --target {IP|nom_hôte} [--lang {fr,en}]
- Ping : accessibilité ICMP de base
- Résolution du nom d'hôte : recherche de nom depuis l'adresse IP
- Sondages TCP : ports 80 (HTTP), 139 (NetBIOS), 443 (HTTPS), 445 (SMB)
- Adresse MAC : depuis la table ARP locale
- Classification de la cible : attribution automatique de type
- Snapshot de l'agent distant : si DTLknowsWhy-Agent fonctionne sur la cible, son snapshot JSON complet est récupéré et une comparaison causale est effectuée automatiquement
Mêmes trois fichiers qu'un snapshot local. Si un snapshot de l'agent distant a été récupéré, il est également sauvegardé comme fichier JSON séparé et la comparaison causale est intégrée dans le rapport principal.
--target exécute toujours un snapshot local en premier ; inutile de passer aussi --snapshot.Test-NetConnection avec un délai de 15 secondes. Si les quatre ports expirent, les tests distants prennent jusqu'à 60 secondes.2.4 — Mode serveur
python agent.py --listen
GET http://172.17.7.10:5050/snapshot?key=DTLSECRET&lang=fr
Retourne HTTP 200 avec le corps JSON du snapshot complet. Écrit les fichiers JSON, TXT et HTML localement à chaque requête.
DTLSECRET) stockée en clair dans agent/server.py. Modifier la clé par défaut avant tout déploiement. Réseaux locaux de confiance uniquement. Le port TCP 5050 doit être ouvert dans le pare-feu Windows (voir Annexe C).2.5 — Agent distant
DTLknowsWhy-Agent.exe --listen
DTLknowsWhy-Agent.exe install
DTLknowsWhy-Agent.exe start
DTLknowsWhy-Agent.exe stop
DTLknowsWhy-Agent.exe remove
| Mode | Adapté pour |
|---|---|
Interactif (--listen) | Diagnostics distants ponctuels ou occasionnels ; test de l'agent |
| Service Windows | Machines toujours disponibles pour la collecte distante ; intégration NetDTL |
Chapitre 3 — Fichiers de sortie
Chaque collecte écrit trois fichiers dans le répertoire courant. Les fichiers partagent le même nom de base, encodant le nom d'hôte local et un horodatage.
3.1 — Snapshot JSON
expert.py et compare.py. Adapté à l'archivage, au scripting ou aux enregistrements de dépannage versionnés.HÔTE_snapshot_AAAAMMJJ_HHMMSS.json
metadata— horodatage de génération, rôle (local/distant), nom d'hôte ciblesystem— système d'exploitation, droits admin, LmCompatibilityLevel, état BitLockernetwork— configuration IP, profil, option NetBIOS et indicateur activétests— résultats des pings locaux (booléens)services— états des services Windowsdiagnosis— résultats du moteur expert (intégrés)remote_tests— présent uniquement quand--targeta été utilisécausal_comparison— présent uniquement quand--targeta été utiliséremote_agent_snapshot— présent uniquement si l'agent distant a répondu
system, network, tests, services) sont inchangées par rapport à la v2.0. Les snapshots collectés avec les versions antérieures peuvent être analysés par les outils expert et compare de la v2.1 sans conversion.3.2 — Rapport texte
--lang. Adapté à l'impression, à l'attachement à un ticket d'incident ou à l'inclusion dans un e-mail.HÔTE_report_AAAAMMJJ_HHMMSS.txt
- Titre et horodatage de génération
- Machine locale : identité, système, réseau, services Windows, tests locaux
- Résultats de diagnostic expert (niveau, message, remédiation)
- Cible distante (si
--targeta été utilisé) : identification, tests de port, classification, interprétation - Résultats de la comparaison causale (si un snapshot de l'agent distant a été récupéré)
Rapport technique DTLknowsWhy
==================================================
Rapport généré le : 07/06/2026 09:34:42
==================================================
MACHINE LOCALE
==================================================
Identité
--------------------------------------------------
Nom d'hôte : PREDATOR
Utilisateur : didier
Administrateur : Oui
Système
--------------------------------------------------
Système d'exploitation : Windows 11 Pro 23H2
Build : 22631
Réseau
--------------------------------------------------
Profil : Private
Adresse IPv4 : 172.17.7.10
Masque : 255.255.255.0
Passerelle : 172.17.7.1
Serveurs DNS : 172.17.7.1
DHCP : Non
NetBIOS : Oui (via DHCP)
3.3 — Rapport HTML
HÔTE_report_AAAAMMJJ_HHMMSS.html
- Barre d'en-tête : titre, horodatage, logo NetDTL
- Machine locale : identité, système, réseau, services Windows (repliable), tests locaux (repliable)
- Diagnostic expert (résultats avec badges de niveau et remédiation)
- Snapshot de l'agent distant (si récupéré) : données complètes de la seconde machine en disposition symétrique
- Comparaison causale (résultats avec cause et remédiation)
netdtl_logo.png depuis le même répertoire via un chemin relatif. Placer le logo à côté du rapport pour qu'il s'affiche correctement.Chapitre 4 — Outils experts
Les outils experts travaillent sur des snapshots précédemment collectés. Ils ne collectent pas de nouvelles données ; ils analysent ce qui a déjà été capturé et produisent une sortie de diagnostic structurée.
4.1 — Diagnostic expert
# Analyser le dernier snapshot automatiquement
python expert.py --lang fr
# Analyser un snapshot spécifique
python expert.py PC-BEN-002_snapshot_20260607_093442.json --lang fr
Si aucun fichier snapshot n'est spécifié, expert.py sélectionne automatiquement le fichier *_snapshot_*.json modifié le plus récemment dans le répertoire courant. Le workflow CLI typique en deux étapes est : exécuter python agent.py --snapshot, puis python expert.py sans arguments.
| Niveau | Signification | Action |
|---|---|---|
[OK] | Aucun problème pour cette vérification | Aucune |
[INFO] | Information — à noter | Aucune |
[WARN] | Problème potentiel — peut causer des problèmes | Examiner la remédiation |
[FAIL] | Problème confirmé — cause probable du symptôme | Appliquer la remédiation immédiatement |
- Droits administrateur
- Accessibilité de la passerelle (connectivité locale)
- Profil réseau (Public bloque SMB et la découverte réseau)
- État des services LanmanServer et LanmanWorkstation
- État de FDResPub (SMB-001 : machine invisible dans le voisinage réseau)
- Valeur de LmCompatibilityLevel (0 = risque de sécurité ; 5 = peut bloquer SMB en Workgroup)
- État BitLocker (lecteurs actifs : avertissement avant toute modification de configuration système)
- Classification de la cible distante et accessibilité SMB (si
remote_testsest dans le snapshot) - Guidance erreur d'authentification pour les cibles probable_windows avec TCP 445 ouvert (erreur 86/1326)
4.2 — Analyse comparative
--lang.python compare.py REF_snap.json CIBLE_snap.json [--lang {fr,en}]
Le PC B ne peut pas accéder aux partages réseau que le PC A atteint sans difficulté. Collecter un snapshot sur chaque machine, copier les deux fichiers JSON dans le même répertoire et exécuter compare.py. La sortie indiquera si la cause est un profil réseau Public, un service SMB arrêté, un problème de connectivité de passerelle, une différence de produit de sécurité ou un écart de paramètre de configuration.
| Tag (français) | Signification |
|---|---|
| [CAUSE CERTAINE] | La différence cause directement le problème (ex. service SMB arrêté sur la cible) |
| [CAUSE PROBABLE] | Une configuration connue pour bloquer la fonctionnalité en question |
| [CAUSE POSSIBLE] | Une différence susceptible de contribuer selon le scénario |
| [OBSERVÉ] | Constat factuel (ex. partages SMB accessibles listés) ; aucun problème impliqué |
| [À VÉRIFIER] | Configuration notable méritant une vérification manuelle |
| [INFORMATION MANQUANTE] | Champ absent du snapshot cible ; aucune conclusion possible |
- Profil réseau et accessibilité de la passerelle
- État des services LanmanServer, LanmanWorkstation, FDResPub, fdPHost
- Option NetBIOS et serveurs DNS
- Topologie IP (passerelle et masque de sous-réseau)
- Accessibilité TCP 445
- Produits de sécurité (présence de Bitdefender et pile de filtres fltmc)
- Paramètres de configuration SMB client et serveur
- Partages SMB accessibles
- Contexte d'identité (compte local, domaine, AzureAD Joined)
expert.py sur chaque snapshot individuellement pour une analyse absolue de chaque machine.Chapitre 5 — Procédures de dépannage
Ce chapitre fournit des procédures pas à pas pour les problèmes SMB et réseau Windows les plus courants identifiés lors de l'utilisation opérationnelle de DTLknowsWhy.
5.1 — SMB-001 : Machine invisible dans le voisinage réseau
\\IP ou \\NOM fonctionne. net view peut retourner l'erreur 6118.Sélectionner SMB-001 dans la GUI et lancer le diagnostic sur la machine invisible, ou exécuter python agent.py --snapshot --lang fr sur elle.
FDResPub (Publication des ressources de découverte) est arrêté. La visibilité dans le voisinage réseau est gérée par FDResPub et fdPHost, qui sont complètement indépendants du protocole SMB. SMB peut fonctionner parfaitement pendant que la machine est invisible dans l'Explorateur.
sc config fdrespub start= delayed-auto
net start fdrespub
L'erreur « La liste des serveurs de ce groupe de travail n'est pas disponible actuellement » (erreur 6118 de net view) est normale et attendue depuis Windows 10 1709. Le service de navigation réseau SMBv1 est désactivé par défaut. Ne pas tenter de réactiver SMBv1. Utiliser directement \\NOM_MACHINE ou \\IP dans l'Explorateur.
5.2 — SMB-002 : L'accès par IP fonctionne, l'accès par nom échoue
\\192.168.x.x\partage fonctionne mais \\NOM_MACHINE\partage échoue ou est très lent. SMB lui-même fonctionne ; seule la résolution de nom est défaillante.ping -4 NOM_MACHINE
nslookup NOM_MACHINE
nbtstat -A ADRESSE_IP
- NetBIOS désactivé sur l'une ou les deux machines
- Le DNS ne contient pas d'entrée pour la machine
- LLMNR désactivé par stratégie
- FDResPub arrêté (la machine ne publie pas sa présence)
Si le ping par nom fonctionne mais que l'accès SMB par nom est toujours lent : le délai est généralement causé par Windows qui énumère tous les partages quand on parcourt \\NOM plutôt que d'aller directement vers un partage spécifique. Mapper les partages directement au démarrage pour éviter le délai d'énumération :
net use Z: \\NOM_MACHINE\partage /persistent:yes
Vérifier également le Gestionnaire d'identification pour des jetons périmés susceptibles de provoquer des tentatives d'authentification échouées répétées avant que le bon compte soit essayé.
5.3 — SMB-003 : Authentification refusée (Erreur 86 ou 1326)
net use * /delete /y
Puis ouvrir Panneau de configuration → Gestionnaire d'identification → Informations d'identification Windows et supprimer toutes les entrées liées à la machine cible (y compris les entrées MicrosoftAccount:target=...). Après une réinstallation avec un compte Microsoft, Windows peut mémoriser un jeton MSA qui prend la priorité sur les identifiants locaux ou de domaine.
net use \\MACHINE\IPC$ /user:DOMAINE\prenom.nom
Utiliser le nom de domaine (ex. SC\anne.honnyme), pas le nom de la machine locale (MACHINE\anne). Après une réinstallation en Workgroup, la machine ne résout plus automatiquement le contexte de domaine.
Si l'erreur 1326 persiste avec le bon format de compte, vérifier si LmCompatibilityLevel est absent du registre (DTLknowsWhy affichera null dans le snapshot). Une nouvelle installation Windows avec la clé absente utilise le défaut système (NTLMv2 uniquement), que certains serveurs ou configurations Workgroup anciens peuvent rejeter.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" `
-Name LmCompatibilityLevel -Value 1 -Type DWord
# Redémarrage requis
La valeur 1 active la négociation LM+NTLM+NTLMv2. Si cela résout le problème, le serveur cible n'accepte pas NTLMv2 seul.
5.4 — TCP 445 bloqué : net view erreur 53 par IP
net view \\IP retourne « Le chemin réseau n'a pas été trouvé » (erreur 53). Comme l'erreur se produit en utilisant une adresse IP (et non un nom), la résolution de noms n'est pas en cause — c'est un blocage TCP pur sur le port 445.Test-NetConnection IP_CIBLE -Port 445
Si TcpTestSucceeded : False, procéder aux vérifications ci-dessous.
sc query lanmanserver
Si pas Running : sc start lanmanserver
Vérifier que la règle entrante pour le port TCP 445 existe et est activée. Test facile : désactiver temporairement le pare-feu Windows sur la cible et réessayer. Si l'accès est rétabli, le pare-feu est la cause. Réactiver le pare-feu et créer la règle entrante appropriée.
Si ping NOM_MACHINE résout vers une adresse IPv6 link-local (fe80::...), cela ne confirme pas que SMB est accessible sur IPv4. Toujours vérifier avec ping -4 NOM_MACHINE pour obtenir l'adresse IPv4, puis tester Test-NetConnection IP -Port 445.
5.5 — La découverte réseau se désactive toute seule
Get-NetFirewallRule | Where-Object {
$_.DisplayGroup -like '*Network Discovery*' -or
$_.DisplayGroup -like '*Découverte*'
} | Select-Object DisplayName, DisplayGroup, Enabled
Si seules des règles Wi-Fi Direct apparaissent et qu'aucune règle du groupe « Découverte du réseau » n'est listée, les règles ont été supprimées (pas seulement désactivées). Cela peut se produire après un durcissement de sécurité, une GPO ou un outil de sécurité tiers.
# Windows en français
netsh advfirewall firewall set rule group="Découverte du réseau" new enable=Yes
# Windows en anglais
netsh advfirewall firewall set rule group="Network Discovery" new enable=Yes
Si la commande signale « Aucune règle ne correspond aux critères spécifiés », les règles ont été entièrement supprimées. Réinitialiser le pare-feu aux paramètres par défaut ou importer les règles depuis une machine saine. Si les règles réapparaissent mais que la case repasse à désactivée au bout de quelques minutes, un outil de sécurité tiers (ex. un EDR ou antivirus) réapplique une stratégie. Identifier l'outil et configurer une exception.
Exécuter gpresult /r. Si « Type de domaine » affiche « Windows NT 4 » ou « Station de travail autonome » sans GPO listée, le problème n'est pas la Stratégie de groupe — c'est le pare-feu local ou un outil de sécurité.
Annexes
Annexe A — Droits administrateur
DTLknowsWhy fonctionne sans droits administrateur, mais certaines données seront incomplètes. Le tableau suivant indique ce qui est affecté.
| Fonctionnalité | Sans droits admin | Avec droits admin |
|---|---|---|
| Infos système, réseau, tests locaux | Données complètes | Données complètes |
| Requêtes d'état des services | Habituellement complet ; peut être partiel sur les machines durcies | Complet |
| Configuration SMB client/serveur | Peut être inaccessible | Complet |
| État BitLocker | null dans le snapshot | Complet |
| Requêtes Security Center | Peut nécessiter une élévation | Complet |
Champ is_admin | false — le moteur expert émet un [WARN] | true |
Pour exécuter en tant qu'administrateur : cliquer avec le bouton droit sur l'icône de l'invite de commandes ou PowerShell, choisir Exécuter en tant qu'administrateur, puis lancer l'outil depuis cette session élevée.
Annexe B — Classification de la cible
À la fin des tests distants, l'outil attribue un target_type à la machine testée. Les règles sont appliquées dans l'ordre ; la première correspondance l'emporte.
| Classification | Badge | Condition |
|---|---|---|
| probable_mobile_apple | Bleu | Le nom d'hôte résolu contient iphone ou ipad |
| probable_mobile_android | Bleu | Le nom d'hôte résolu contient android |
| probable_windows | Vert | TCP 445 ou TCP 139 ouvert — probablement un poste Windows |
| probable_device | Orange | TCP 80 ou TCP 443 ouvert — équipement réseau ou objet connecté |
| unknown_network_device | Orange | MAC résolue mais aucun port ouvert reconnaissable |
| unknown_host | Gris | Ping réussi mais pas de MAC et pas de port ouvert |
| unreachable | Rouge | Ping échoué |
nmap ou un ping en mode verbeux signale un TTL d'environ 62–63 pour une machine supposée être un PC Windows, il s'agit presque certainement d'une appliance Linux ou d'un équipement réseau (TTL initial 64, moins les sauts). Les PC Windows démarrent à un TTL de 128. DTLknowsWhy classifiera selon les ports ouverts (probable_device ou unknown_network_device) ; vérifier avec arp -a pour identifier le fabricant depuis l'adresse MAC.Annexe C — Configuration du pare-feu pour l'agent distant
DTLknowsWhy-Agent écoute sur le port TCP 5050. Ce port doit être ouvert en entrée dans le pare-feu Windows de la machine cible avant que le poste de diagnostic puisse s'y connecter.
Créer la règle depuis une invite de commandes élevée sur la machine cible :
netsh advfirewall firewall add rule name="DTLknowsWhy Agent" ^
dir=in action=allow protocol=TCP localport=5050
Ou via l'interface graphique : Pare-feu Windows Defender → Paramètres avancés → Règles de trafic entrant → Nouvelle règle → Port → TCP → 5050 → Autoriser la connexion.
Annexe D — Avertissement SmartScreen
Au premier lancement, Windows Defender SmartScreen peut afficher :
Windows a protégé votre PC.
Microsoft Defender SmartScreen a empêché le démarrage d'une application non reconnue.
Ce comportement est attendu pour les exécutables non signés numériquement. Pour continuer :
- Vérifier que le fichier provient du dépôt officiel DTLknowsWhy.
- Cliquer sur Informations complémentaires, puis sur Exécuter quand même.
- En environnement d'entreprise, demander la signature numérique ou l'approbation explicite de l'équipe de sécurité avant tout déploiement étendu.
Annexe E — Limitations connues
- Windows uniquement. L'outil ne fonctionnera pas sous Linux ou macOS.
- Adaptateur unique. Sur les machines multi-adaptateurs, seules les valeurs du premier adaptateur correspondant sont collectées.
- La recherche MAC par ARP requiert l'adjacence Layer 2. La cible doit être sur le même segment réseau ou avoir été contactée récemment.
- Les tests distants peuvent être lents. Chaque sondage TCP a un délai de 15 secondes. Jusqu'à 60 secondes si les quatre ports expirent.
- Le mode serveur écrit des fichiers à chaque requête. Chaque
GET /snapshotdéclenche une collecte complète et écrit de nouveaux fichiers de sortie localement. - La collecte BitLocker requiert les droits administrateur. Sans droits admin,
bitlocker_statusseranull. - compare.py est directionnel. Seules les déviations de la cible par rapport à la référence sont signalées. Exécuter
expert.pysur chaque snapshot séparément pour une analyse indépendante. - Le chemin du logo du rapport HTML est relatif. Placer
netdtl_logo.pngdans le même répertoire que le rapport HTML. - Fichier journal dans le répertoire courant.
dtlknowswhy.logest écrit dans le répertoire d'exécution ; la journalisation échoue silencieusement sans permission d'écriture.
Annexe F — Historique des versions
| Version | Date | Modifications |
|---|---|---|
| 2.1.0 | 7 juin 2026 | Collecte réseau indépendante de la langue (PowerShell/CIM) ; GUI Tkinter avec sélecteur de langue ; clés collecteurs lm_compatibility_level et bitlocker_status ; comparateur entièrement internationalisé ; 15 règles expert issues de sessions opérationnelles ; plus de 280 clés i18n ; format JSON compatible avec les versions antérieures |
| 2.0.0 | 6 juin 2026 | Agent distant ; mode service Windows ; point d'accès HTTP de snapshot ; comparaison causale locale/distante ; rapports HTML enrichis ; moteur de règles expert |
| 1.2.0 | — | Serveur de snapshot distant expérimental |
| 1.0.0 | — | Version initiale : diagnostics et rapports locaux |