使用Scapy框架进行PPPOE拨号密码截取

原创文章,转载请注明出处。

PPPoE 协议是什么

  • Point to Point Protocol over Ethernet (点对点协议)
  • 只要记住你平时拨号上网用的是这个协议就行啦(ADSL)

PPPoE 协议工作原理

  1. PPPoE发现阶段(Discovery)
    • 主机广播发起分组(PADI)
    • 有效发现提供包分组(PADO)
    • 有效发现请求分组(PADR)
    • 有效发现会话确认(PADS)
  2. PPPoE会话阶段(Session)
    • LCP协议请求确认配置(LCP-Config-Req)
    • LCP协议确认配置(LCP-Config-Ack)
    • PAP或CHAP验证账号密码
    • 开始进行网络传输

上面可以看到,如果我们在会话阶段的第3步动点手脚,就可以截取到拨号的账号密码

截取原理

  1. 由于PPPoE发现阶段(PADI)发送的是广播包(MAC地址为FFFFFF),我们的网络距离肯定是比ISP的PPPoE服务器近的,所以我们可以比ISP先收到PADI包
  2. 收到PADI包后我们可以伪装为一个正常的PPPoE服务器开始和客户端交互
  3. 伪装PADO,PADS,LCP-Config-Ack后。客户端就认为我们是一个有效的PPPoE服务器,开始进行PAP或CHAP验证
  4. 由于CHAP验证不是明文,所以我们要让客户端认证方式变为PAP(LCP-Config-Ack阶段申明只支持PAP)
  5. 等到PAP会话开始时,就可以正常收到拨号账号密码,我们只需要返回密码错误就可以啦

使用Python的Scapy实现

  • 安装Scapy pip install scapy
  • 安装scapy依赖包,Windows平台请戳我
  • 监听网络请求 scapy.sniff
  • 处理PPPoE包 (过滤type 为 0x88630x8863 的 数据包)

完整代码戳我

参考文献

转载于:https://www.cnblogs.com/Karblue/p/5223240.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值