線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1250
推到 Plurk!
推到 Facebook!

如何由一封包中取出source及destination 網卡 ID

答題得分者是:8866
fangback
初階會員


發表:4
回覆:47
積分:40
註冊:2002-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-13 23:49:42 IP:202.145.xxx.xxx 未訂閱
請教一下,是否有方式可由封包中取得source及destination ip的mac id。我查了很多網上的資料,於linux中用下列的方式可截出封包中的MAC ID,但我怎試在WIN32就是無法使用。大多是將一IP HEADER中解出相關資料訊息(TCP, UDP, ICMP等),但就是無法取得MAC ID。是否有相關的WINSOCK API可使用以便由一封包中取得MAC ID。謝謝!
 
struct ether_header
{
   u_char  ether_dhost[ETHER_ADDR_LEN];
   u_char  ether_shost[ETHER_ADDR_LEN];
   u_char ether_type[2];
};
struct ether_header *eth;
socket(AF_INET, SOCK_RAW, htons(ETH_P_ALL));
....
memset(RecvBuffer, 0, sizeof(RecvBuffer));
recv(SockRaw, RecvBuffer, sizeof(RecvBuffer), 0);
..
eth = (struct ether_header *)RecvBuffer;    printf("dst MAC = X:X:X:X:X:X ", eth->ether_dhost[0], eth->ether_dhost[1], eth->ether_dhost[2], eth->ether_dhost[3], eth->ether_dhost[4], eth->ether_dhost[5] );
printf("src MAC = X:X:X:X:X:X\n", eth->ether_shost[0], eth->ether_shost[1], eth->ether_shost[2], eth->ether_shost[3], eth->ether_shost[4], eth->ether_shost[5] );
..    
8866
中階會員


發表:27
回覆:147
積分:69
註冊:2002-10-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-15 16:25:22 IP:61.222.xxx.xxx 未訂閱
如果我記的沒錯的話, 使用 WinSock 只能拿到 IP 層以下的資料 !!! 想拿到 MAC Address 只能從 Driver 著手了 .
fangback
初階會員


發表:4
回覆:47
積分:40
註冊:2002-06-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-15 17:41:08 IP:61.218.xxx.xxx 未訂閱
謝謝8866的回應。 那是否有相關資料可供小弟從driver方面去研究.....謝謝!
8866
中階會員


發表:27
回覆:147
積分:69
註冊:2002-10-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-19 10:35:15 IP:61.222.xxx.xxx 未訂閱
引言: 謝謝8866的回應。 那是否有相關資料可供小弟從driver方面去研究.....謝謝!
DDK 是最快與直接的方法 !
系統時間:2024-05-04 14:12:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!