winpcap能不能够获取本机的mac? 如果能的话应该怎么样操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 侦听的包里面可以显示源mac地址和目的mac地址,所以当然可以获取本机的mac地址但我觉得用"ipconfig /all"命令更简捷方便 能啊。。因为WINPACP直接从网卡把数据截获,这个时候数据还是网络数据包的形式呢。当然里面有 MAC地址了。 当然可以了!WinPcap得到的以态网的包呀!WindowsApi利用发送ARP包得到MAC地址如://from ip get mac address//其中szIPDest,是要得到MAC的目标主机IP,szMACAddress是返回的MAC地址,szIPSrc为NULLchar *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;} 这个不够灵活啊,要有数据包才能查出本机的MAC那不是要发送一个给别人,等别人反馈才能知道,这样效率不高啊我的意思是像IP Helper里的GetAdapterInfo这样方便的有没有? 这个很简单,利用winpcap,你可以填写一个arp包,要解析的是你的地址,得到后你就会受到arp reply数据,取出地址 用"ipconfig /all"命令更简捷方便 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; 高分求MFC中对话框中每个控件的映射代码! 关于hook编程问题,请各位指教。 一个WaitForMultipleObjects的问题,大家帮我分析分析。烦恼好几天了 WinCE下面读写COM口的问题 这个功能vc可以实现吗? 怎样判 m_pRecordset->Open(,,, )是否还回成功好! 请大家讨论一下:如何让vc程序效率最高。进者有分! 寻找i/DATABASE源码 mpg文件有时 急需解决的问题 给我推荐一款网站空间吧 简单sql语句
//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;
}
那不是要发送一个给别人,等别人反馈才能知道,这样效率不高啊
我的意思是像IP Helper里的GetAdapterInfo这样方便的有没有?
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;