adresy MAC to tzw. OUIs – Organizationally Unique Identifier przyznawane przez IEEE. wszystkie można ściągnąć w postaci pliq textowego (1oMB). w związq z tym skrypt, który odpytuje się o MACa może albo wykorzystać jakieś query dostępne w necie, albo ściągną bazę lokalnie i operować na lokalnym pliq.
plik można ściągnąć na kilka sposób. w tym przypadq invoke-webRequest się wywala ze względu na timeout [duża wielkość pliq]. można zmienić timeout, można oprogramować metodę [System.Net.WebClient] … a można wykorzystać BITS.
poniżej prosty skrypcik, do weryfikacji MAC vendor, po uprzednim zassaniu oui.txt lokalnie. to na co warto zwrócić uwagę – to alternatywny sposób na pobieranie pliqw z netu, oraz parametr 'context’ dla select-string.
get-MACAddressVendor.ps1
################################################################################################ #.SYNOPSIS # simple script getting NIC vendor by checking MAC address OUI table. # use -webAPI to use remote query. otherwise out.txt file will be download locally. #.LINKS # oui file: http://standards-oui.ieee.org/oui.txt # remote query API: http://www.macvendorlookup.com/api #.NOTES # nExoR 2o16 ################################################################################################ param([string]$macAddress,[switch]$webAPI) $macAddressToVerify=$macAddress.Replace(':','').Replace('-','').ToLower() $macAddressToVerify=$macAddressToVerify.Substring(0,6) if($macAddressToVerify -notmatch [regex]'[0-9a-f]{6}') { throw 'NOT VALID MAC ADDRESS' } if($webAPI) { $result=Invoke-WebRequest "http://www.macvendorlookup.com/api/v2/$macAddressToVerify" $result=ConvertFrom-Json $result.Content } else { if(-not (Test-Path .\oui.txt)) { Start-BitsTransfer -Source 'http://standards-oui.ieee.org/oui.txt' -Destination 'oui.txt' -TransferType Download } $result=Select-String -path .\oui.txt -Pattern $macAddressToVerify -Context 0,4 } if($result) { $result } else { throw "Vendor not found for $macAddress" }
eN.