友情提示:
如果你有一个涂卡专用铅笔的朋友,一定要!远!离!他!
他会把你拉到和他一样的智商水平,
然后用他强大的经验打败你!
〇、前言
绝交了近半年的“女朋友”迎面走来,突然回头装作没看到。
立刻发微信鄙视他!!!
装没看见给你台阶你还不承认!!!

必须报复!!!
先扒他KMS服务器,再忽悠他给我解决各种遗留的问题~
开干,又一次凌晨四点,隐约看到了当年iKuai和某国内著名防火墙较量的几个不眠夜。。。
一、参考资料
与iMoke共同参考:tp-link路由器破解/SSH登录/root权限
“抄袭”自iMoke:解决TL-R479G+ Google浏览器打开缓慢问题
二、环境说明
破解设备型号:TP-Link TL-R479G+(TP-Link商用网络-企业级VPN路由器)
Linux环境(建议Ubuntu或CentOS)
证书、私钥一对
三、破解原因及需求
用FireFox打开路由器管理页面无论是HTTP还是HTTPS速度都很快,用Chrome打开HTTP管理页面速度很快,但是打开HTTPS的管理页面速度在半分钟以上, 有时候甚至根本打不开。

怀疑是Chrome对非信任的HTTPS证书处理有问题。

发现设备自签证书有OpenWRT字样,希望打开设备SSH功能上去看看到底发生了什么,顺便把证书换了。

四、解决方案
1、扫描设备端口
从iMoke的资源里偷来ScanPort工具,扫描出1900(miniupnp)、5080(修改后的HTTP端口, 出厂默认是 80)、5443(修改后的HTTPS端口,出厂默认是443)、20002(经过各种试验没查出来是干啥的)。

2、从备份文件下手
由于是OpenWRT定制的系统,根据参考教程从配置文件下手,进入路由器管理后台把当前配置导出文件。

导出文件是个bin扩展名的文件,根据教程,用7z解包。

但是在Windows上用7z解压会报错,解压确实能解出内容。

3、转战Linux
考虑到系统是OpenWRT,而且又是压缩包文件。无非就是这几种格式:zip,7z,tar,tar.bz,tar.gz
rar在Windows用的较多,Linux并不常用;
7z在Linux下也不常见,而且用Windows测试过了。估计也不是。
灵光一闪,把bin文件拷贝到Linux中,使用tar解包。
tar zxvf backup.bin
果然,是gzip压缩包。
4、修改SSH配置文件
根据教程提示,了解到openwrt的SSH是由dropbear提供的,找到dropbear的配置文件,打开SSH功能。
# 修改文件userconfig/etc/config/dropbear
# 查看option ssh_port_switch值,修改为'on'
# 如果已经为'on'则无需修改
config dropbear
option PasswordAuth 'on'
option RootPasswordAuth 'on'
option Port '33400'
option ssh_port_switch 'on'
# 记下option Port端口号--这是SSH连接端口号
5、打包
tar zcvf tp-link-479g.bin tmp/
6、将配置文件导回路由器

7、添加用户
由于以为ssh用户就是路由器的用户和密码,之前没有添加用户直接导回路由器尝试ssh连接的时候发现连接失败。只能重新参考教程添加用户。
# 文件:userconfig/etc/passwd
# 可以直接复制这行添加进去,也可以复制第一行root,但是一定要改名字!
# 在最后一行添加
imoke:x:0:0:root:/root:/bin/ash
这样就创建了一个不要脸的用户名imoke,权限为root。
8、配置密码
# 文件:userconfig/etc/shadow
# 在最后一行添加
imoke:$1$aaaabbbb$CfFXeYhL8X2fSjAss1ycl.:17703:0:99999:7:::
# 密码是imokepassword
# 你也可以通过下面的命令为自己生成一个密码
# 你需要一台自己的Linux
perl -e 'print crypt("imokepassword","\$1\$aaaabbbb\$") . "\n"'
$1$aaaabbbb$CfFXeYhL8X2fSjAss1ycl.
2020.03.14:注意!!!后面成功登入用户后千万不要删掉这个新增加的用户,实测即使修改了root密码,当时能登陆,只要重启root密码就会变!!!
建议在新增用户的时候设置简单的用户密码如:123456,进入ssh后再用passwd命令改成复杂密码。
ssh的访问权限受”系统工具-系统管理-远程管理”中配置的保护,在外网访问的时候web页面和ssh都会同步检查是否符合该项配置的”远程地址”。
9、重新打包导入配置
重复5、6两步
10、替换证书
证书:/etc/uhttpd.crt
私钥:/etc/uhttpd.key
证书和私钥必须是DER格式。
2020.03.26:由于最开始破解的时候读出来设备原有的证书是DER格式,没敢尝试PEM格式证书。但DER格式比较der,无法配置成证书链,一直调研DER格式证书链问题。但最近经过一番对OpenWRT的uhttpd调研,发现uhttpd的证书和私钥是可以直接配置成PEM格式的,并且证书能直接使用证书链,不需要任何额外设置。
路由器本身没有lrzsz需要使用scp进行上传。
11、最终效果
在本机添加好根证书(仅针对自建CA的情况,如果是在服务商申请的公共CA签发的证书则无需添加),再重新打开路由器管理页面。

由于设备型号较老,HTTPS的TLS版本是1.0,所以显示连接并非完全安全,但是证书认证已经顺利完成,浏览器打开慢的问题彻底解决。