2010-06-17 9 views
14

Muszę rozróżnić adresy rzeczywiste od adresów maszyn wirtualnych za pomocą dowolnego interfejsu API systemu Windows. Używam API GetAdaptersAddresses do wypełnienia listy adresów IP dla komputera lokalnego. Muszę wyodrębnić tylko "rzeczywiste" adresy poza adresami powiązanymi z kartą sieciową VMware i innymi adresami (automatyczna konfiguracja i adresy adapterów tunelu). Nie udało mi się znaleźć żadnego interfejsu API ani flagi do rozróżnienia tego. Czy jest to możliwe?Wyróżnij kartę sieciową VMware z fizycznych kart sieciowych lub Wykryj wirtualną kartę sieciową

PS: The IfType flag w strukturze IP_ADAPTER_ADDRESSES zwróconej przez GetAdaptersAddresses nie pomaga mi rozróżniać adresy VMware i rzeczywistych adresów.

Odpowiedz

14

początku (pierwsze 3 segmenty) adres MAC wskazuje, czy interfejs jest wirtualny:

"00:05:69"; //vmware1 
"00:0C:29"; //vmware2 
"00:50:56"; //vmware3 
"00:1C:42"; //parallels1 
"00:03:FF"; //microsoft virtual pc 
"00:0F:4B"; //virtual iron 4 
"00:16:3E"; //red hat xen , oracle vm , xen source, novell xen 
"08:00:27"; //virtualbox 

EDIT
Aby być bardziej jasne, czy interfejs ma MAC address zaczynający się od któregokolwiek z powyższych dane ciągi, to jest wirtualne.

+2

Chciałam tylko dodać linki: użyj tego linku - http://standards.ieee.org/regauth/oui/index.shtml, aby znaleźć rezerwacje id. Operację odwrotną można wykonać tutaj: http://coffer.com/mac_find/ – Andrey

+0

dziękuję, to było całkiem pomocne – Venkat

+0

To nie odpowiada dokładnie na pytanie: skąd wiemy, od nazwy firmy, czy jest to wirtualne czy nie? – Gyuri

2

Znalazłem stronę, aby uzyskać pełniejszą listę prefiksu adresu MAC po przeczytaniu odpowiedzi clyfe.

proszę odwiedzić: Vendor/Ethernet/Bluetooth MAC Address Lookup and Search

Na przykład: VirtualBox has 17 MAC prefix!

Prefix Vendor 
000F4B Virtual Iron Software, Inc. (was: Katana Technology) 
001307 Paravirtual Corporation (was: Accenia, Inc.) 
0013BE Virtual Conexions 
0021F6 Virtual Iron Software 
00240B Virtual Computer Inc. 
00A0B1 First Virtual Corporation 
00E0C8 virtual access, ltd. 
545200 linux kernal virtual machine (kvm) 
000F4B Virtual Iron Software, Inc. (was: Katana Technology) 
001307 Paravirtual Corporation (was: Accenia, Inc.) 
0013BE Virtual Conexions 
0021F6 Oracle Corporation (was: Virtual Iron Software) 
00240B Virtual Computer Inc. 
00A0B1 First Virtual Corporation 
00E0C8 virtual access, ltd. 
18922C Virtual Instruments 
3CF392 Virtualtek. Co. Ltd 

Pod koniec wolałem wykryć wirtualną kartę sieciową z jego 'Opis karty sieciowej'. Jeśli widzę w opisie słowo "Wirtualny" lub "VMWare" (C++: IP_ADAPTER_INFO :: Opis), zakładam, że jest to wirtualna karta sieciowa.

+0

Jak radzisz sobie z "opisem" innym niż angielski? – Ajay

Powiązane problemy