如果能的话应该怎么样操作?

解决方案 »

  1.   

    侦听的包里面可以显示源mac地址和目的mac地址,所以当然可以获取本机的mac地址但我觉得用"ipconfig /all"命令更简捷方便
      

  2.   

    能啊。。因为WINPACP直接从网卡把数据截获,这个时候数据还是网络数据包的形式呢。当然里面有 MAC地址了。
      

  3.   

    当然可以了!WinPcap得到的以态网的包呀!WindowsApi利用发送ARP包得到MAC地址如:
    //from ip get mac address
    //其中szIPDest,是要得到MAC的目标主机IP,szMACAddress是返回的MAC地址,szIPSrc为NULL
    char *GetMACAddress(LPCTSTR szIPDest, char *szMACAddress, LPCTSTR szIPSrc)
    {
    //char strMACAddress[14]=""; 
        long len = 6; 
        LPBYTE pInfo = new BYTE[len];     if (SendARP(inet_addr(szIPDest), inet_addr(szIPSrc), (PULONG)pInfo, (PULONG)&len) == NO_ERROR) 
            sprintf( szMACAddress,"%02X%02X%02X%02X%02X%02X", pInfo[0], pInfo[1], pInfo[2], pInfo[3], pInfo[4], pInfo[5]); 
        delete[] pInfo;     return szMACAddress;
    }
      

  4.   

    这个不够灵活啊,要有数据包才能查出本机的MAC
    那不是要发送一个给别人,等别人反馈才能知道,这样效率不高啊
    我的意思是像IP Helper里的GetAdapterInfo这样方便的有没有?
      

  5.   

    这个很简单,利用winpcap,你可以填写一个arp包,要解析的是你的地址,得到后你就会受到arp reply数据,取出地址
      

  6.   

    用"ipconfig /all"命令更简捷方便
      

  7.   

    PPACKET_OID_DATA OidData = (PPACKET_OID_DATA)GlobalAllocPtr(GHND, 512);
    if (OidData == NULL) {
    return FALSE;
    } OidData->Oid = OID_802_3_CURRENT_ADDRESS;
    OidData->Length = 256;
    ZeroMemory(OidData->Data, 256);
    if (!PacketRequest(hAdapter, FALSE, OidData)) {
    GlobalFreePtr(OidData);
    return FALSE;
    }         char MacAddr[6];
    memcpy(&MacAddr, OidData->Data, 6);
    return TRUE;