路由器密码和上网账号密码都忘记了怎么办,可以通过模拟PPPoE协议从路由器获取

假如忘记了上网账号和密码,最简单的就登上路由器看看就知道,但如果路由器的秘密也忘记该怎么办?

还有个办法就是通过模拟PPPoE协议从路由器获取。

路由器通常是通过PPPoE协议接入网络,在路由器连通时不断发送PPPoE请求,我们可以模拟成PPPoE服务器发送响应,诱导路由器给我们发送账号和密码。

首先介绍一个路由器从发送请求到发送验证信息,即账号密码都有哪些过程。

路由器PPPoE请求过程

上图是用wireshark抓包,这些包直接电脑用网线脸上路由器就可以抓得到。步骤不多,协议内容也很简单,都是基于以太网封装的报文。

PADI   路由器不断广播发出,初始化,目的是寻找可供的PPPoE服务initiation

PADO  服务器向路由器的响应,提供自己的信息并响应提供服务offer

PADR  路由器收到PADO后发出请求报文

PADS 服务器返回请求响应,主要是发送sessionID,以便接下来的PPP对话

以上报文主要目的便是寻找服务和取得sessionID

接下来几个报文时路由器在跟服务器协商通讯设置,当双方都发出Request并收到对方的Ack后路由器就会发送验证报文,及账号密码了。

接下来一次看看这些个报文分别长什么样,不同路由器可能有一定程度区别,但本质上是一致的。

PADI

PADI

前12个字节分别是目标mac地址和源mac地址,0x8863代表以下报文是PPPoE Discovery报文。wireshark已经分得很清晰了,而且这个报文是最好获取的。主要就是payload内容PPPoE Tags会带上一个Host-Uniq选项,这个是用来标识PADO报文响应来自于哪个请求。

PADO


需要修改的地方有,以太网封装的源地址和目的地址,PPPoED报文的Code改为0x07,除了来自PADI的Host-Uniq外,添加几个payload信息,AC-Cookie信息0020 行的 01 04表示接下来是AC-Cookie标签,00 10 表示该标签的长度问 0x10,即16个字节,这个长度并不是固定的,然后是AC-Name,和上面同理。

PADR


PADR会带着一个新的Host-Uniq过来请求,所以这个依然要保存下来。PADR的Code是0x19,AC-Cookie便是PADO发送的标签信息了。

PADS


PADS是PPPoED的最后一步,给路由器发送sessionID,这个报文主要不同的地方在于它的session ID不是0x0000了,而是一个由服务器给出的占用两个字节数,这个sessionID用于之后的PPP通讯辨识,之后的每个报文都会带上这个sessionID。报文Code为0x65,Host-Uniq来自PADR。

所有的报文长度信息都要记得根据自己的payload长度进行更改,不然的话报文格式错误,路由器就有可能会不理你的。

如果顺利的话,接下来路由器会发送Configuration Request,这里最简单的做法就是自己找个可行的设置信息,按照这个写出报文请求报文和ack报文发送过去,如果路由器同意的话,那就完工了,路由器就会把账号密码发过来验证。下面两个报文是我测试并在我的路由器上成功获得账号密码的设置信息报文。因为Request报文和Ack报文只有一个字节不同,所以需要修改的地方非常少。

Request请求报文


Ack响应报文


在双方达成协议后就顺利的到账号和密码了呢。都是明文,所以很好辨别,是不是很激动!!!


抓包和发包我是用的Python的scapy模块写的,功能很强大,以后肯定还会有需要用到的地方。代码的话我觉得最好还是根据自己路由器的具体情况写,针对性的写也比较简单,否则要么太复杂,耗时间,要么局限性太大,不好用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值