Python代码破解路由器config.bin从入门到放弃
一日,将入深夜。手机震动,拿起手机。“老弟,你能不能帮我破解个文件,我宽带密码给忘了,上网查了下,路由器导出的这个config.bin文件破解的话能查到密码”啊what,还有这种操作,我很对自己声称技术宅的名号感到一丝怀疑。随后缓缓打出这几个字。“小问题,等着吧哥”。谁曾想,这一装逼,就是一晚上的崩溃。为此下记录这一为数不多的放弃案例
前情概要:
为家装一个路由器,需要配置宽带账号密码,由于太过久远,密码忘记了。打电话给运营商客服,客服声称由于宽带密码加密,无法看到,且无法修改(?????我家前几天就这样,我打电话给客服,客服核对了我的身份之后就告诉我了)好吧,既然如此,那么自己动手吧。
解决方法:
方法1:
第一步下载软件:网查最强网络嗅探软件RouterPassView。下载地址“http://www.nirsoft.net/utils/router_password_recovery.html”(官网下载吧,做个懒人)傻瓜安装,傻瓜操作,你会懂得,此处为突出重点不再叙述。
第二步准备文件:准备好路由器内导出的配置文件config.bin,一般是在高级设置的导出文件中。众所周知,bin文件即为二进制流文件,不要像我一样天真的将后缀名改为 txt 就想读出来。
第三部把文件拖入冰箱,呸,拖入软件,够傻瓜吧。嘿嘿嘿,如果此时出现以下界面,你就可以喘一口气了,往下拉,使劲儿拉,你会找到你忘记的那个它的。
RouterPassView结果图但是,要是啥也没有出现,那你还得继续往下看,本着知其然也知其所以然的精神,我们暂且来看看是什么原因。经过一番查看官方文档,可以看到您的路由器型号过于高端,未能支持。牛皮都吹出去了,我们能轻易放弃嘛(还是得放弃,但不是现在,继续吧,方法2)
官方文档 RouterPassView支持的路由器型号列表方法2:
最近刚入python的坑,虽然语法优美,处理简单到令人发指,但我也才刚刚知道python效率低下到同样令人发指,后文再续py效率。
我们来继续头铁,网查(网查确实很关键)config.bin 是基于DES加密的二进制文件,预共享秘钥已经给出 “\x47\x8D\xA5\x0B\xF9\xE3\xD2\xCF”。于是我们很容易就想到利用py自带的DES加密解密库来实现。以下为实现代码,觉代码格式,命名不优美者,可喷。
from Crypto.Cipher import DES
from hashlib import md5
import sys
key = b'\x47\x8D\xA5\x0B\xF9\xE3\xD2\xCF' #一定要加b
crypto = DES.new(key, DES.MODE_ECB)
data = open('configs.bin', 'rb').read()
data_decrypted = crypto.decrypt(data).rstrip('\0')
data_decrypted[:16] == md5(data_decrypted[16:]).digest()
data_decrypted_finally = data_decrypted[16:]
data_decrypted_dict = {}
data_decrypted_array = data_decrypted_finally.split('\r\n')
for item in data_decrypted_array:
if not item:
continue
item_array = item.split(' ', 1)
item_key = item_array[0]
item_value = item_array[1]
data_decrypted_dict[item_key] = item_value
open('config.bin.txt', 'wb').write(data_decrypted_finally)
密码来了吧
当然了,也可能出现这种情况:
乱码暴击
技术流一看就懂,乱码乱码,IDE编码正确,文件编码正确,到底是为什么出现这种情况。冥思苦想,苦想冥思之后。果断断定,加密方法并非DES,或者秘钥并非代码中给出的情况,因此解密过程中,就成这个样子了....那我们还能怎么办呢,官网查询路由器型号区分,我们获得信息,不要深究,太深了。
TP-link WR 系列的,这个系列好像是基于 WRT 的,现在的硬件是 WDR 系列,基于 vxworks
那么我们这种型号是基于什么加密方法呢,AES?3DES?无从查询,为保护用户隐私,该高端型号,未能被广大极客攻破。因此,我段位太低,是时候放弃了!!!。一看时间,凌晨3点20分。我陷入了深思,今夜又是一个不眠夜。
虽然未能成功破解,但是这个过程确实十分美妙,每一点突破,一步一步逼近真实。继续加油吧.