Journalisation des scans Wifi en PowerShell

Olivier que j’ai formé sur le Wifi pendant 3 jours en début de semaine m’a demandé un outil pour tracer tous les SSIDs et les BSSIDs présents sur le site de son usine. Il travaille dans un secteur où la sécurité informatique est loin d’être un vain mot ! Or, les utilisateurs recourent de plus en plus au BYOD et à leurs téléphones mobiles qu’ils mettent en partage de connexion pour accéder à Internet. J’ai pensé, une fois encore, au PowerShell.

La commande netsh

A l’aide de la commande netsh, vous pouvez disposer assez facilement des différents réseaux Wifi présents dans votre environnement. Lorsque le SSID est masqué, il faut alors recourir à un mode d’exploration sur l’adresse MAC  – ou BSSID – de la borne, du mobile, de la tablette ou de la machine.

netsh wlan show networks mode=bssid

Le script PowerShell

Dans l’hypothèse où vous planifiez l’exécution de ce script, pensez à commenter la ligne où figure la commande Out-GridView en fin de fichier.

#Déclaration d'une whitelist de bornes connues
$whitelist='18:a6:f7:c4:a2:7e','a4:08:f5:4b:ac:5a'
#Le fichier de log
$logfile='d:\ssid.log'
$logs=@()
#Récupération du contenu du fichier existant
If(Test-Path -Path $logfile)
{
    $logs+=Import-CSV -Path $logfile
}
$date=Get-Date
#Scan des SSIDs et des BSSIDs
$cmd=netsh wlan show networks mode=bssid
$n=$cmd.Count
For($i=0;$i -lt $n;$i++)
{
    If($cmd[$i] -Match '^SSID[^:]+:.(.*)$')
    {
        $ssid=$Matches[1]
        $i++
        $bool=$cmd[$i] -Match 'Type[^:]+:.(.+)$'
        $reseau=$Matches[1]
        $i++
        $bool=$cmd[$i] -Match 'Authentification[^:]+:.(.+)$'
        $authent=$Matches[1]
        $i++
        $bool=$cmd[$i] -Match 'Chiffrement[^:]+:.(.+)$'
        $chiffrement=$Matches[1]
        $i++
        While($cmd[$i] -Match 'BSSID[^:]+:.(.+)$')
        {
            $bssid=$Matches[1]
            $i++
            $bool=$cmd[$i] -Match 'Signal[^:]+:.(.+)$'
            $signal=$Matches[1]
            $i++
            $bool=$cmd[$i] -Match 'Type[^:]+:.(.+)$'
            $radio=$Matches[1]
            $i++
            $bool=$cmd[$i] -Match 'Canal[^:]+:.(.+)$'
            $canal=$Matches[1]
            $i=$i+2
            If($bssid -notin $whitelist)
            {
                #Consignation des BSSIDs et des SSIDs
                $logs+=[PSCustomObject]@{date=$date;ssid=$ssid;reseau=$reseau;authentification=$authent;chiffrement=$chiffrement;bssid=$bssid;signal=$signal;radio=$radio;canal=$canal}
            }
        }
    }
}
$cmd=$null
#Sauvegarde dans le fichier de logs
If($logs)
{
    $logs| Export-CSV -NoTypeInformation -Path $logfile
    #Facultatif : affichage des résultats si vous exécutez le script en mode interactif
    $logs|Out-GridView -Title 'Log Scan Wifi'
}
$logs=$null

Visualisation des logs

Le fichier contient tout l’historique de l’activité.

Journalisation des scans Wifi en PowerShell

Réseau  / BSSID BYOD Formateur Powershell Formateur Sécurité informatique Formateur Wifi PowerShell Scan Wifi Scanner Wifi Sécurité informatique SSID Wifi 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)