代码改变世界

找回保存的路由器登录密码

2012-04-30 17:45  Johnny Qian  阅读(1123)  评论(0编辑  收藏  举报

用路由器上网的朋友免不了经常登录路由器查看网络状态或配置信息,为了免去每次输入密码的麻烦,一般我们会选择记住密码。
2012-04-28_080316
这样一来,如果长久不手动输入密码,密码就会容易忘记。哪天重装了系统或者用什么优化工具清除了本地存储的密码,路由器就无法登陆了。虽然说可以重置路由器到出厂状态,但是路由器里面存储了ADSL密码、MAC地址绑定等等信息,重置到出厂状态后又得重新设置,也很麻烦。那有什么办法可以在系统保存了密码的情况下得到密码的明文呢?

也许有的朋友登录路由器,弹出的登录页面不是像上图的Windows窗口,而是一个普通的登录界面。当你第一次登录的时候,浏览器会提示你是否记住此站点的密码,你选择“是”后,浏览器就会为你保存了此站点的登录密码。本篇文章提供的办法也适合这种类型。一般的路由器一般采用的都是弹出类似上图的Windows窗口,让你输入用户名和密码。此种验证方式称为基本身份验证(Basic Authentication),如果你选择了“记住我的密码(Remember my credentials)”,那么Windows 操作系统就会维护这个身份信息。在控制面板中,你可以看到系统为你记住了哪些站点的密码,下面的截图展示了系统帮我记住的一些身份信息:
2012-04-30_134135
路由器验证用户名密码的方式很简单,就是你输入完点击确认后,浏览器讲你输入的用户名和密码提交到一个预定义的页面。而我们所要做的就是截获这个HTTP请求,然后分析浏览器提交的信息。能够截获和分析HTTP请求的工具有很多,在这里我推荐使用Fiddler。请在这里下载并安装它。

打开Fiddler后,在浏览器中打开路由器的登录地址,使用保存的密码登录后,Fiddler就会截获到这样的一个HTTP请求:
2012-04-30_141551
点击右边的 “Inspectors”, 在”Head”选项卡,我们可以看到当前路由器采用的Authentication是Basic,即基本身份验证,它仅仅是使用Base64编码将用户名和密码Encode了一下。点击”Auth”选项卡,你就会看到路由器的用户名和密码明文就豁然显示在其中!
2012-04-30_142147

由此可以看出,使用浏览器或者Windows操作系统记住密码的话,是很不安全的。只要有人能够操作你的电脑,他就能够得到这些保存密码的明文。这时,你也许会很疑惑,像Gmail、163这些大型的站点,它们也允许用户使用浏览器来保存用户的密码信息,如果这样做是不安全的,怎么这些大公司会允许?非也,原因是这些大公司的登陆站点都采用了HTTPS协议来加密从客户端浏览器传送过来的用户名和密码等信息,而使用HTTPS协议传输的请求内容是很难被解密的,所以你可以放心的使用这些大型站点提供的记住密码的功能。