Scan des entrées ARP de votre réseau local en PowerShell

J’ai réalisé un script en PowerShell dont l’objet est de scanner votre réseau par des ping et de consigner les données de la table ARP dans un fichier de logs. Sont exclus toutes les machines distantes dont que le pare-feu ne bloque le protocole ICMP en entrée.

Le protocole ARP

Le protocole ARP est utilisé au niveau du protocole IPv4 pour établir la correspondance entre votre adresse IP et votre adresse MAC. Quel que soit le système d’exploitation, cette table est consultable à l’aide de la commande arp -a. ARP a été remplacé sur IPv6 par le protocole NDP.

Le script PowerShell

Les réseaux privés en 192.168.0.0/16, 172.16.0.0/12 ou 10.0.0.0 nécessité une double, voir une triple boucle. Le script est sur Pastebin.

Clear
#fichier de logs
$logfile='d:\arp.log'
$logs=@()
$cmd=@()
#Récupération du contenu du fichier de logs existant
If(Test-Path -Path $logfile)
{
    $logs+=Import-CSV -Path $logfile
}
$date=Get-Date
#Balayage par ping du réseau 192.168.1.0/24
For($i=1;$i -lt 255;$i++)
{
    $ping=ping 192.168.1.$i -n 1 -w 5
    #Récupération de la commande arp -a toutes les 60 secondes
    If($date.AddSeconds(60) -lt (Get-Date))
    {
        $cmd+=arp -a
        $date=Get-Date
    } 
}
$cmd+=arp -a
#Elimination des doublons du fait de l'exécution régulière de arp -a
$cmd=$cmd|Sort -Unique
#Récupération des adresses ip et mac
ForEach($row in $cmd)
{
    If($row -match '^ +([0-9\.]+) +([0-9a-f\-]+) +[a-z]+ +$')
    {
        $ip=$Matches[1]
        $mac=$Matches[2]
        $logs+=[PSCustomObject]@{date=$date;ip=$ip;mac=$mac}
    }
}
#Sauvegarde des données de la table arp dans le fichier de 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 Arp Scan'
$logs=$null

Le résultat

Les adresses préfixées 224 et 239 sont des adresses de multicast.

Scan des entrées ARP de votre réseau local en PowerShell

 

Réseau  / ARP Formateur Powershell Formateur Réseau Formateur Sécurité informatique PowerShell Réseau local Sécurité informatique 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)