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.

