Pregunta

He oído que no es posible con mi biblioteca actual de winpcap.

¿Es esto realmente cierto? Veo un montón de ejemplos en la red, pero luego los comentarios diciendo "Esto no funciona".

¿Cuál es la mejor manera de obtener una dirección MAC de la máquina local?

¿Fue útil?

Solución

Un método común es usar los bits de un UUID, pero esto no es totalmente fiable. Por ejemplo, se volverá un valor incluso en una máquina que no tiene un adaptador de red.

Afortunadamente, hay una manera que funcione de forma fiable en cualquier versión razonablemente recientes de Windows. MSDN dice que sólo se remonta a Windows 2000, pero si falla la memoria, sino que también funciona en NT 4, comenzando alrededor de 5 SP, por si alguien todavía está utilizando NT 4.

#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>

int main() {         
    IP_ADAPTER_INFO *info = NULL, *pos;
    DWORD size = 0;

    GetAdaptersInfo(info, &size);

    info = (IP_ADAPTER_INFO *)malloc(size);

    GetAdaptersInfo(info, &size);

    for (pos=info; pos!=NULL; pos=pos->Next) {
        printf("\n%s\n\t", pos->Description);
        printf("%2.2x", pos->Address[0]);
        for (int i=1; i<pos->AddressLength; i++)
            printf(":%2.2x", pos->Address[i]);
    }

    free(info);
    return 0;
}

Por favor, perdona el código C antigua ...

Otros consejos

No hay tal cosa como "la" dirección MAC si un equipo tiene> 1 NIC. Puede consultar esta información mediante WMI, http://techsupt.winbatch.com/TS/T000001002F19. html para más detalles

GetAdaptersAddresses de IPHelper ()
http://msdn.microsoft.com/en- es / library / aa365915% 28VS.85% 29.aspx
utilizo con éxito en la mueca de dolor para conseguir operstatus, debe trabajar con direcciones MAC también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top