• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            saga's blog

            突出重點(diǎn),系統(tǒng)全面,不留死角

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              33 Posts :: 2 Stories :: 185 Comments :: 0 Trackbacks

            公告

            QQ:34O859O5

            常用鏈接

            留言簿(15)

            搜索

            •  

            積分與排名

            • 積分 - 210894
            • 排名 - 122

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            最近用winpcap編程發(fā)現(xiàn)winpcap不能直接的提取本地網(wǎng)卡的mac地址.
            ???? 于是通過向自己發(fā)arp請(qǐng)求來獲得本地的mac.自己寫了段代碼,如下:

            int ?getmmac()
            {???
            ????unsigned?
            char ???sendbuf[ 42 ];
            ????
            int ????i = 7 ,k;
            ????ETHDR??eth;
            ????ARPHDR?arp;
            ????
            struct ?pcap_pkthdr? * ??pkt_header;
            ????u_char?
            * ?pkt_data;?

            ????
            for (k = 0 ;k < 6 ;k ++ )
            ????{
            ????????eth.eh_dst[k]
            = 0xff ;
            ????????eth.eh_src[k]
            = 0x0f ;
            ????????arp.arp_sha[k]
            = 0x0f ;
            ????????arp.arp_tha[k]
            = 0x00 ;
            ????}
            ????eth.eh_type
            = htons(ETH_ARP);
            ????arp.arp_hdr
            = htons(ARP_HARDWARE);
            ????arp.arp_pro
            = htons(ETH_IP);
            ????arp.arp_hln
            = 6 ;
            ????arp.arp_pln
            = 4 ;
            ????arp.arp_opt
            = htons(ARP_REQUEST);
            ????arp.arp_tpa
            = myip -> ip;
            ????arp.arp_spa
            = inet_addr( " 127.0.0.2 " );

            ????memset(sendbuf,
            0 , sizeof (sendbuf));
            ????memcpy(sendbuf,
            & eth, sizeof (eth));
            ????memcpy(sendbuf
            + sizeof (eth), & arp, sizeof (arp));

            ????
            if (pcap_sendpacket(slecadopt,sendbuf, 42 ) == 0 )
            ????{
            ????????printf(
            " PacketSend?succeed\n\n " );
            ????}
            ????
            else
            ????{
            ????????printf(
            " PacketSendPacket?in?getmine?Error:?%d\n " ,GetLastError());
            ????????
            return ? 0 ;
            ????}
            ????
            ????
            while ((k = pcap_next_ex(slecadopt, & pkt_header,( const ?u_char ** ) & pkt_data)) >= 0 )
            ????{???????
            ????????
            if ( * (unsigned? short ? * )(pkt_data + 12 ) == htons(ETH_ARP) &&* (unsigned? short * )(pkt_data + 20 ) == htons(ARP_REPLY) &&* (unsigned? long * )(pkt_data + 38 ) == inet_addr( " 127.0.0.2 " ))
            ????????{
            ????????????
            ????????????
            for (i = 0 ;i < 6 ;i ++ )
            ????????????{
            ????????????????myip
            -> mac[i] =* (unsigned? char * )(pkt_data + 22 + i);
            ????????????}
            ????????????????
            break ;
            ????????}
            ????}
            ????
            if (i == 6 )
            ????{
            ????????
            return ? 1 ;
            ????}
            ????
            else
            ????{
            ????????
            return ? 0 ;
            ????}
            }

            寫的是一個(gè)函數(shù),其中arp請(qǐng)求的發(fā)送方地址填的是127.0.0.2.這個(gè)都沒什么關(guān)系.
            當(dāng)然提取本地的mac還可以用api直接獲取.但是不知道用pcap還有別的好方法.高手指教.謝謝
            posted on 2006-04-13 15:02 saga.constantine 閱讀(4722) 評(píng)論(8)  編輯 收藏 引用 所屬分類: Winpcap

            Feedback

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2006-05-08 15:39 oosky
            pcap_next_ex
            pcap_loop
            這兩個(gè)函數(shù)抓到的是通過網(wǎng)卡的原始數(shù)據(jù)包還是被網(wǎng)卡過濾后的IP包?
            對(duì)這些包的格式不了解,進(jìn)而不好分析包的結(jié)構(gòu)。
            郁悶中。  回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2006-05-09 08:25 saga.constantine
            @oosky
            打開網(wǎng)卡時(shí)設(shè)為混雜模式,抓到的就應(yīng)該是原始數(shù)據(jù)包!!但是不會(huì)包括線路上損壞了的數(shù)據(jù)包,那要用硬件嗅探.
            自己可以設(shè)置過濾,是通過過濾函數(shù)結(jié)合過濾表達(dá)式的實(shí)現(xiàn)的,那樣抓到的包就應(yīng)該式過濾后的包了.不一定是ip包,內(nèi)網(wǎng)的arp包等也會(huì)有!
            對(duì)包的結(jié)構(gòu)可以找資料看看,再進(jìn)行分析!
            ip頭和tcp頭的分析都不太難!!
              回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2008-04-25 16:20 牛人
            你真有才。。。
            脫褲子放了個(gè)P  回復(fù)  更多評(píng)論
              

            # 幫助很大!先贊再細(xì)讀! 2008-07-04 18:00 Utensil
            我正苦苦尋覓跨平臺(tái)的,不依賴于pcap以外的庫的獲得本地mac的方法,搜到了博主的文章...首先思路就很啟發(fā)!

            研讀之后會(huì)再來回訪請(qǐng)教~  回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2008-07-05 08:30 Utensil
            其他地方參照http://www.libing.net.cn/read.php/837.htm都看明白了

            請(qǐng)教:
            既然
            unsigned long myip; //本地主機(jī)IP
            為何會(huì)有
            arp.arp_tpa = myip -> ip;
            myip -> mac[i] =* (unsigned char * )(pkt_data + 22 + i);

            myip并不是一個(gè)結(jié)構(gòu)啊?

            我現(xiàn)在頭疼的也正是這個(gè)目標(biāo)IP,我是在尚未上線(802.1x協(xié)議認(rèn)證)的情況下,需要獲得本地MAC。

            改成發(fā)到localhost(127.0.0.1)行不行呢 ?  回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2008-07-05 08:33 Utensil
            另外一個(gè)地方:

            eth.eh_src[k] = 0x0f ;

            0F:0F:0F:0F:0F:0F是什么的MAC啊?  回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2008-07-08 14:23 saga
            0f 可能是隨意添加的 我也記不太清楚了  回復(fù)  更多評(píng)論
              

            # re: [原創(chuàng)]用winpcap獲取本地mac的一段代碼! 2010-07-08 13:01 zuoliang.
            開發(fā)例子包里有通過packet.dll得到mac的例子。  回復(fù)  更多評(píng)論
              

            久久久久亚洲精品日久生情 | 成人国内精品久久久久一区| 国产毛片欧美毛片久久久| 亚洲国产精品无码久久98| 777米奇久久最新地址| 精品久久久久久无码免费| 欧美亚洲国产精品久久| 欧美精品一区二区精品久久| 四虎久久影院| 久久被窝电影亚洲爽爽爽| 亚洲七七久久精品中文国产| 国产精品9999久久久久| 久久只有这里有精品4| 色综合久久精品中文字幕首页 | 欧美麻豆久久久久久中文| 久久综合久久自在自线精品自| 国产成人无码精品久久久免费| 国产A三级久久精品| 久久伊人影视| 国产精品无码久久综合网| 精品国际久久久久999波多野| 中文字幕久久亚洲一区| 精品久久一区二区| 漂亮人妻被黑人久久精品| 欧美伊人久久大香线蕉综合| 久久99热这里只有精品国产| 亚洲综合精品香蕉久久网97| 91久久精品91久久性色| 久久久久久国产精品免费无码| 久久无码专区国产精品发布| 久久久久一级精品亚洲国产成人综合AV区| 91精品国产综合久久久久久| 久久99亚洲网美利坚合众国| 久久精品欧美日韩精品| 精品久久久久久国产| 久久婷婷人人澡人人爽人人爱| 亚洲国产精品成人AV无码久久综合影院| 久久精品国产亚洲5555| 日韩精品无码久久一区二区三| 人妻精品久久久久中文字幕| 中文字幕亚洲综合久久菠萝蜜|