PowerShellでMACアドレスからメーカーを調べる

| 2010年6月1日火曜日
PowerShellでMACアドレスからメーカー(ベンダー)を調べてみる。

まずは、MACアドレスを取得する。
MACアドレスの取り方はいろいろあるけど、ここでは、「nbtstat」コマンドを利用することにした。
まぁ一行であっさり書きたかっただけだけど。

--- Get-MACAddress.ps1 ---
  1. param([string]$ip)
  2. nbtstat -A $ip | ForEach-Object { if ( $_ -match "MAC") { $_ -replace " ","" -replace "MACアドレス=","" } }

次に、取得したMACアドレスからメーカーを調べる。
メーカーを調べるサイトは、ここを利用させてもらう。

--- Find-MacAddressFromVendorName.ps1 ---
  1. param([string]$macaddress)
  2. [void]([Reflection.Assembly]::LoadWithPartialName("System.Web"))
  3. $macaddress = [Web.HttpUtility]::UrlEncode($macaddress)
  4. $webReq = [Net.HttpWebRequest]::Create("http://www.coffer.com/mac_find/?string=$macaddress")
  5. $webReq.Method = "GET"
  6. $webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"
  7. $webRes = $webReq.GetResponse()
  8. $sr = New-Object IO.StreamReader($webRes.GetResponseStream(), $webRes.ContentEncoding)
  9. $content = $sr.ReadToEnd()
  10. $sr.Close()
  11. $webRes.Close()
  12. $content = $content.Split("`n")
  13. $result = $content | ForEach-Object {
  14. if ($_ -match "table2" -and $_ -match "td") {
  15. $_ -replace "<.*?>","" -replace "`t","" }
  16. }
  17. $obj = New-Object PSObject
  18. $obj | Add-Member NoteProperty MacAddress $macaddress
  19. $obj | Add-Member NoteProperty Vendor $result[1]
  20. $obj
利用方法は、パスを通したところにスプリクトを保存しておいて、

> Find-MacAddressFromVendorName ( Get-MACAddress 192.168.0.1)

MacAddress            Vendor
----------                ------
XX-XX-XX-XX-XX-XX       XXX

っといった感じ。

0 コメント: