Packet.dll的頭文件為Packet32.h,lib為Packet.lib
它似乎是比wpcap.dll更底層(wpcap.dll似乎是透過packet.dll跟ring0中的NPF驅動作溝通)
packet.dll少數的範例文件存在於winpcap原始碼包中的Examples\PacketDriver
裡面有一個範例就是取得MAC(GetMacAddress.c)
下面是一小段我寫出來的程式,主要參考GetMacAddress.c 部份文件是參考packet32.h和ntddndis.h
temp=4096;
PacketGetAdapterNames((PTSTR)dev_names,&temp); //列舉網卡名稱
i=0;
j=0;
oid_data=(PPACKET_OID_DATA)new u_char[sizeof(PACKET_OID_DATA)+6]; //取得資訊用的緩衝區
RtlZeroMemory(oid_data,sizeof(PACKET_OID_DATA)+6);
while(dev_names[i]!='\0' || dev_names[i+1]!='\0'){
dev_name[j]=dev_names[i];
if(dev_names[i]=='\0'){
dev_adapter=PacketOpenAdapter(dev_name); //開啟網卡
oid_data->Oid=OID_802_3_CURRENT_ADDRESS; //要取得的資訊類型,
oid_data->Length=6;
PacketRequest(dev_adapter,FALSE,oid_data); //送出請求
printf("%sMAC=%02x:%02x:%02x:%02x:%02x:%02x\n",dev_name,
oid_data>Data[0],
oid_data->Data[1],
oid_data->Data[2],
oid_data->Data[3],
oid_data->Data[4],
oid_data->Data[5],
j=0;
}
i++;
j++;
}
作者已經移除這則留言。
回覆刪除