我是靠谱客的博主 孝顺冬瓜,最近开发中收集的这篇文章主要介绍2020-10-12获取网卡的MAC地址,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为项目中需要使用liscence,所以就想到了使用网卡的MAC地址加密。这里需要获取网卡的MAC地址。

首先使用的是Netbios()函数获取MAC地址,但是发现只获取了正在联网使用的那个网卡的MAC地址,不能获取所有的网卡MAC地址。

通过这个网站https://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm使用GetAdaptersInfo()函数可以获取所有的网卡MAC地址。

#include <Iphlpapi.h>
#pragma comment(lib, "iphlpapi.lib")

 

static bool GetMACaddress(char *pMAC,int nType,char *pDescription)
{
    USES_CONVERSION;
    char szMac[100] = { 0 };
    IP_ADAPTER_INFO AdapterInfo[16];            // Allocate information for up to 16 NICs
    DWORD dwBufLen = sizeof(AdapterInfo);        // Save the memory size of buffer

    DWORD dwStatus = GetAdaptersInfo(            // Call GetAdapterInfo
        AdapterInfo,                            // [out] buffer to receive data
        &dwBufLen);                                // [in] size of receive data buffer
    assert(dwStatus == ERROR_SUCCESS);            // Verify return value is valid, no buffer overflow
    MIB_IF_TYPE_ETHERNET;
    PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info
    do {
        if (pAdapterInfo->Type == nType)
        {
            strlwr(pAdapterInfo->Description);
            if (strstr(pAdapterInfo->Description, pDescription) != NULL)
            {
                sprintf(pMAC, "%02X-%02X-%02X-%02X-%02X-%02X",
                    pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2],
                    pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
                return true;
            }
        }
        memset(szMac, 0, sizeof(szMac));
        pAdapterInfo = pAdapterInfo->Next;        // Progress through linked list
    } while (pAdapterInfo);// Terminate if last adapter
    return false;
}

这里需要PIP_ADAPTER_INFO结构体

PIP_ADAPTER_INFO::Type是网卡类型,6代表有限网卡和网卡 ,71代表虚拟网卡、蓝牙设备,无线网卡。

PIP_ADAPTER_INFO::Description是网卡的描述,无线=wireless 、有限=ether 这个描述字符串不太确定。

PIP_ADAPTER_INFO::Address 是6个字节的MAC地址 是HEX。

最后

以上就是孝顺冬瓜为你收集整理的2020-10-12获取网卡的MAC地址的全部内容,希望文章能够帮你解决2020-10-12获取网卡的MAC地址所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部