2010-06-17 13 views
14

Tengo que diferenciar entre las direcciones reales y las direcciones VM usando cualquier API de Windows. Estoy usando GetAdaptersAddresses API para completar una lista de direcciones IP para la máquina local. Necesito extraer solo las direcciones "reales" además de las direcciones asociadas con el adaptador de red VMware y otras direcciones (autoconfiguración y direcciones del adaptador de túnel). No he podido encontrar ninguna API ni ninguna bandera para diferenciar esto. ¿Hay alguna manera de que esto se pueda hacer?Diferenciar el adaptador de red VMware de los adaptadores físicos de red -o-- Detectar el adaptador de red virtual

PS: La bandera IfType en la estructura IP_ADAPTER_ADDRESSES devuelto por GetAdaptersAddresses no me ayuda a diferenciar entre direcciones de VMware y las direcciones reales.

Respuesta

14

el principio (3 primeros segmentos) de la dirección MAC muestra si una interfaz es virtual:

"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 

EDITAR
Para ser más claro, si una interfaz tiene una MAC address que empieza con cualquiera de las anteriores cadenas dadas, entonces es virtual.

+2

solo quería agregar algunos enlaces: use este enlace - http://standards.ieee.org/regauth/oui/index.shtml para encontrar reservas de id. La operación inversa se puede realizar aquí: http://coffer.com/mac_find/ – Andrey

+0

gracias, eso fue bastante útil – Venkat

+0

Esto no responde exactamente a la pregunta: ¿cómo sabemos por el nombre de la empresa si es virtual o no? – Gyuri

2

Encontré un sitio para obtener una lista más completa del prefijo de la dirección MAC, después de leer clyfe respuesta.

favor visite: Vendor/Ethernet/Bluetooth MAC Address Lookup and Search

Por ejemplo: 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 

Al final he preferido para detectar adaptador de red virtual de su 'tarjeta de red Descripción'. Si veo la palabra 'Virtual' o 'VMWare' en la descripción (C++: IP_ADAPTER_INFO :: Description), asumiré que es un adaptador de red virtual.

+0

¿Cómo maneja la "descripción" que no es en inglés? – Ajay

Cuestiones relacionadas