我用ADSL拨号上网后,我电脑上出现了二块网卡。一块网卡的IP是公网的,即它是虚拟网卡。
还有一块是我真实网卡的我用ethereal 进行抓包,
选择的网卡是 虚拟网卡的。然后我ping了一下,收到的包为0000   a4 48 20 00 0a 00 00 00 01 00 00 00 08 00 45 00  .H ...........E.
0010   00 3c 5a 3b 00 00 80 01 2d 44 da 12 e3 0c ca 65  .<Z;....-D.....e
0020   2b bd 08 00 49 5c 03 00 01 00 61 62 63 64 65 66  +...I\....abcdef
0030   67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76  ghijklmnopqrstuv
0040   77 61 62 63 64 65 66 67 68 69                    wabcdefghi
里面的目标MAC是 
a4 48 20 00 0a 00 
源MAC是
00 00 01 00 00 00 这二个MAC地址是怎么得到的呢??
是系统自动产生的吗?

解决方案 »

  1.   

    目的MAC就是adsl modem 的
    这个源MAC,看上去是虚拟的
      

  2.   

    如果要获得的话,可以用IPCONFIG 然后用程序获取一下,就可以得到MAC地址我试过了,绝对可以获得所有的MAC地址,虽然不是最好,但是绝对能用
      

  3.   

    目的MAC也不是modem的MAC地址。我后来在softice里面断住发送数据包的地方,然后修改这个数据包中的源MAC和目标MAC
    后来也能收到回应包。我发的是ping请求包。可能在本机这二个MAC地址没什么用,
    但是有什么方法可以获取到呢??
      

  4.   

    没用?
    那这两个MAC干什么呢?
      

  5.   

    取得MAC地址
    GetAdaptersInfo(pInfo,&ulSize);//第一次调用,获取缓冲区大小
    pInfo=(PIP_ADAPTER_INFO)new(char[ulSize]);
    GetAdaptersInfo(pInfo,&ulSize);
    while(pInfo) //遍历每一张网卡
    {
    switch(pInfo->Type)
    {
    case MIB_IF_TYPE_ETHERNET:
    case MIB_IF_TYPE_TOKENRING:
    case MIB_IF_TYPE_FDDI:
    case MIB_IF_TYPE_PPP: // PPP adapter 这是宽带
    case MIB_IF_TYPE_LOOPBACK:
    case MIB_IF_TYPE_SLIP:
    case MIB_IF_TYPE_OTHER:
    default:
    }
    //  pInfo->Address 是MAC地址
    for(i=0;i<(int)pInfo->AddressLength;i++)
    {
    sprintf(buf3,"%02X ",pInfo->Address[i]);
    strcat(buf2,buf3);
    }
    pInfo = pInfo->Next;
    }这个地址是由ADSL猫 的虚电路产生的
      

  6.   

    我用 ipconfig /all 查看到的adsl的MAC地址,与我抓到的数据包里面的不一样。
      

  7.   

    里面的目标MAC是 
    a4 48 20 00 0a 00 
    源MAC是
    00 00 01 00 00 00 
    这个你是怎么看出来的???
      

  8.   

    我用winpcap侦听包时也发现了类似的情况。也就是说,如果是我拨ADSL号上网,我侦听到的包中没有我的物理网卡的MAC。数据如下
    MAC destination 66 8f .......(我就不写全了)
    MAC source 01 00 01 00 00 00第一个MAC不是我的ADSL Modem的MAC,第二个也不知道。谁知道谁告诉我呀~~~