01. Contexte & Symptômes
Des terminaux mobiles industriels subissaient des déconnexions Wi‑Fi intermittentes lors de déplacements dans une zone précise. Le symptôme principal était une perte de connectivité des terminaux au réseau Wi-Fi.
Plusieurs investigations avaient déjà été menées sans conclusion formelle. J'ai été mandaté pour identifier la cause racine en m'appuyant sur des éléments vérifiables : logs, captures réseau et mesures radio.
02. Méthodologie
- • Wireshark : capture des trames et des événements de déconnexion / retransmissions.
- • Logs terminaux : événements Wi‑Fi (désassociation, reachability, reconnexion).
- • Omnipeek : volumétrie radio par point d'accès (comparaison J0 vs J+1).
Objectif : corréler les traces techniques et isoler le composant en défaut (terminal, réseau, AP).
03. Corrélation logs ↔ capture réseau (déconnexion)
La capture met en évidence des déconnexions côté Wi‑Fi. Les logs des terminaux, sur la même fenêtre temporelle, confirment des événements de désassociation et de perte de reachability IP.
Point clé : la coupure est observable dans les trames et corroborée par les logs — ce n'est donc pas un symptôme applicatif.
04. Analyse de l'authentification Wi‑Fi (WPA / EAPOL)
L'étape suivante consiste à vérifier si les déconnexions proviennent d'un problème d'authentification. Les captures montrent des échanges EAPOL et des retransmissions, indiquant une authentification qui n'aboutit pas systématiquement.
Les logs AP permettent de quantifier les occurrences d'événements WLAN_STA_DISCONNECT
sur la journée, et de positionner la première déconnexion sur un AP précis.
Côté terminal, la tentative de reconnexion est immédiate. La key nonce observée correspond à l'authentification en cours, ce qui confirme que le terminal initie correctement le handshake.
Les retransmissions répétées et l'absence de validation finale orientent vers un comportement anormal côté infrastructure (AP) plutôt qu'un défaut terminal.
05. Mesure radio : volumétrie anormale sur certains AP
Pour confirmer l'hypothèse « AP dégradés », une capture Omnipeek est utilisée pour comparer la volumétrie par point d'accès. L'objectif est d'identifier des AP dont le trafic est anormalement faible (symptôme d'un service radio/traitement perturbé).
À J0, plusieurs AP présentent un volume significativement inférieur aux autres. À J+1, après mise à jour, la répartition redevient homogène. La disparition des déconnexions est concomitante à cette normalisation.
Point Bonus : Pour obtenir ces résultats, j'ai réalisé un script PowerShell permettant de convertir une capture TCPDump en fichier CSV afin de facilité la lecture avec PowerBi.
# PcapToCSV
# Tybbow v1
# Lecture des fichiers Pcap
# En extraire les données
# Parser les données
# insertion fichier csv
Param(
[parameter(Mandatory=$true)][string]$capture
)
$tshark = "C:\Program Files\Wireshark\tshark.exe"
$header = "Number;time;wlansa;wlanda;proto;len;type;reason;info;ssid"
$testPath = Test-Path $capture -PathType Leaf
$testTshark = Test-Path $tshark -PathType Leaf
if (!$testPath)
{
Write-Host "[-]" -ForegroundColor Red -NoNewline
Write-Host " Fichier introuvable : $capture"
throw "Error: file not found"
}
if (!$testTshark)
{
Write-Host "[-]" -ForegroundColor Red -NoNewline
Write-Host " Fichier introuvable : $tshark"
throw "Error: file not found"
}
Write-Host "[+]" -ForegroundColor Green -NoNewline;
Write-Host " Lecture du fichier capture" $capture
Write-Host ""
function ParsePcapLines($contents)
{
$lines = $contents -split "[\r\n]+"
$count = $lines.Count
$tabPcap = @($null) * $count
$i = 0
foreach ($line in $lines)
{
if ($i % 1000 -eq 0)
{
Write-Host " Paquets traités : $i"
}
$v = $line.Split(';')
$time = $v[1] -replace ' Paris, Madrid', '' -replace " \(heure d'été\)", ''
$tabPcap[$i] = '{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}' -f `
$v[0], $time, $v[2], $v[3], $v[4], $v[5], $v[8], $v[9], $v[6], $v[7]
$i++
}
return $tabPcap
}
function Main()
{
Write-Host "[+]" -ForegroundColor Green -NoNewline;
Write-Host " Extraction tshark en cours..."
$ParsePcapRaw = $null
$contents = & $tshark @(
'-r', $capture,
'-T', 'fields',
'-e', 'frame.number',
'-e', 'frame.time',
'-e', 'wlan.sa',
'-e', 'wlan.da',
'-e', '_ws.col.Protocol',
'-e', '_ws.col.Length',
'-e', '_ws.col.Info',
'-e', 'wlan.ssid',
'-e', 'wlan.fc.type_subtype',
'-e', 'wlan.fixed.reason_code',
'-E', 'separator=;'
)
$ParsePcapRaw = ParsePcapLines $contents
if (!$ParsePcapRaw.Count)
{
Write-Host "[!]" -ForegroundColor Yellow -NoNewline; Write-Host " Pas de données"
return;
}
$date = Get-Date -Format "yyyyMMdd"
$baseName = $capture.Split("\\")[-1] -replace "\.pcap", ""
$outDir = ".\$date"
$outFile = ".\$($date)\$($baseName).csv"
Write-Host "[+]" -ForegroundColor Green -NoNewline;
Write-Host " Génération des données - Nombre de paquets : $($countPaquets) - fichier: $($outFile)"
New-Item -ItemType Directory -Force -Path $outDir | Out-Null
Set-Content -path $outFile -Value $header
$ParsePcapRaw | Add-Content -path $outFile
Write-Host "[+]" -ForegroundColor Green -NoNewline
Write-Host " Terminé — $($countPaquets) paquets exportés dans : $outFile"
Read-Host "Appuyer sur une touche pour quitter"
}
Main
- Utilisation de l'outil tshark => Wireshark
- Recherche des filtres : wlan.sa, wlan.da, wlan.ssid, _ws.col.Length
06. Conclusion : cause racine
Les éléments convergent vers un défaut côté points d'accès :
- Déconnexions observées dans Wireshark et corroborées par les logs terminaux.
- Handshake WPA initié correctement côté terminal, mais authentification qui n'aboutit pas de manière stable.
- Volumétrie Omnipeek anormalement faible sur plusieurs AP à J0, redevenant normale après mise à jour.
Cause racine : dysfonctionnement logiciel (firmware) sur plusieurs points d'accès, entraînant une dégradation intermittente du traitement radio/802.11 et des échanges d'authentification lors du déplacement des utilisateurs, provoquant les déconnexions.
07.Résultats & Impact
- Identification de plusieurs AP présentant un comportement dégradé (corrélation logs / Wireshark / volumétrie radio).
- Mise en évidence d'un effet correctif après mise à jour firmware (trafic homogène et disparition des déconnexions).
- Stabilisation des terminaux mobiles et clôture d'un incident récurrent.