破解ssh

使用小米官网的ssh工具是不能开启ssh的,小米奸商为了节约售后成本关闭了ssh开启通道。想要开启ssh,我们得利用固件bug进行破解。
参考http://www.right.com.cn/forum/thread-178547-1-1.html的方法。
首先下载安装python。

windows

windows我没成功,你可以参考原帖教程。

linux和osx

安装python

linux和osx一般是自带python3的,没有的话自行安装。然后安装依赖

1
pip3 install requests

编辑破解脚本

首先新建一个文件mini.py,向其中粘贴下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/python3
import requests
import time
def main():
Session = input("Paste your session here: ")
#Session = '1387acc0547bc5188bc22bb811b2db9c'
print('++++++++++++++++++++++++++++++++++++++++++++++++++')
print('+ MiRouter OpenSSH exploit +')
print('+ Codez by dadadazhiliao,QQ:271607603 +')
print('++++++++++++++++++++++++++++++++++++++++++++++++++')
print("Prepare hacking your MiRouter")
time.sleep(3)
upload(Session, 'payload', '/extdisks/sda1')
#print ('payload on the way.')
for i in range(1,10):
print('>'*i,'payload on the way',end='\r')
time.sleep(0.3)
filemv(Session, '/etc/rc.local', '/etc/rc.local.bak')
for i in range(11,15):
print('>'*i,'exploit it ',end='\r')
time.sleep(0.3)
filecp(Session, '/extdisks/sda1/payload', '/etc/')
for i in range(16,20):
print('>'*i,'exploit it ',end='\r')
time.sleep(0.3)
filemv(Session, '/etc/payload', '/etc/rc.local')
for i in range(21,25):
print('>'*i,'exploit it ',end='\r')
time.sleep(0.3)
filerm(Session, '/extdisks/sda1/payload')
print('>'*26,'done ')
print('Reboot your Router and get the ssh,enjoy :)')
#filerm(Session, '/userdisk/data/payload')
def upload(Session,file,fpath):
MiUrl = 'http://192.168.31.1/upload?stok=' + Session + '&secret=' + Session + '&target=' + fpath + '&targetRootPath=/'
files = {'file': ('payload', open(file, 'rb'), 'application/octet-stream', {'Expires': '0'})}
req = requests.post(url = MiUrl, files = files)
#print (req.content)

def filemv(Session,mfile,dist):
MiUrl = 'http://192.168.31.1/cgi-bin/luci/;stok=' + Session + '/api/xqdatacenter/request'
data = {"payload":'{"api":50,"source":"' + mfile + '","target":"' + dist + '","token":"' + Session +'"}'}
req = requests.post(MiUrl, data=data)
#print (req.content)

def filecp(Session,mfile,distdir):
MiUrl = 'http://192.168.31.1/cgi-bin/luci/;stok=' + Session + '/api/xqdatacenter/request'
data = {"payload":'{"api":4,"source":"' + mfile + '","target":"' + distdir + '","token":"' + Session +'"}'}
req = requests.post(MiUrl, data=data)
#print (req.content)
def filerm(Session,dfile):
MiUrl = 'http://192.168.31.1/cgi-bin/luci/;stok=' + Session + '/api/xqdatacenter/request'
data = {"payload":'{"api":2,"path":"' + dfile + '","token":"' + Session +'"}'}
req = requests.post(MiUrl, data=data)
#print (req.content)
if __name__ == '__main__':
main()
exit()
#End

给脚本加上权限chmod +x mini.py
然后新建payload文件,向其中粘贴以下代码

1
2
3
4
5
6
7
8
# restore phy config
speed=$(uci -q get xiaoqiang.common.WAN_SPEED)
[ -n "$speed" ] && /usr/sbin/phyhelper swan "$speed"
sed -i ":x;N;s/if \[.*\; then\n.*return 0\n.*fi/#hehe/;b x" /etc/init.d/dropbear
/etc/init.d/dropbear start
pwd=password
(echo $pwd; sleep 1; echo $pwd) | passwd root
exit 0

其中pwd=password那一行请将password换成你路由管理员密码

刷入旧版固件

刷入路由器固件2.6.11稳定版或者2.7.11开发版,注意一定要恢复出厂设置,否则无法成功。恢复完成后给路由器插上u盘。

然后再次进入路由管理界面,完成设置引导,注意这里设置的路由管理员密码要和你上一步payload中的pwd相同成功进入管理控制台。

地址栏url类似下面这样:
http://192.168.31.1/cgi-bin/luci/;stok=e00b01a819d8a18b93d6cedb6f74d621/web/setting/upgradestok=后面的值复制下来

接着运行mini.py,按照提示输入stok值等待破解完成。然后重启路由器即可连接ssh。root密码是你的路由器管理员密码。但是有时也可能是小米官网的ssh密码,请自行尝试。

刷入breed

使用breed刷机可以在刷机失败后利用breed重新刷机,防止变砖。
breed作者地址http://breed.hackpascal.net/breed-mt7620-xiaomi-mini.bin
下载小米专用breed,进入路由ssh,执行

1
2
cd /tmp
wget http://breed.hackpascal.net/breed-mt7620-xiaomi-mini.bin

然后刷入breed

1
mtd -r write /tmp/uboot.bin Bootloader

如果你已经刷了 pandorabox 或者 openwrt ,你需要将路由刷成 ddwrt 才能刷写breed

刷写命令为

1
mtd -r write /tmp/uboot.bin u-boot

然后等待重启完成即可

使用

按住路由器背后reset键开机,直到蓝灯持续闪烁。

电脑使用网线连接lan口,将有线网卡的IPv4设为静态(ip地址:192.168.1.2,掩码:255.255.255.0,网关:192.168.1.1)。

在浏览器中打开192.168.1.1即可进入。

建议刷写 breed 完成后立即进入备份 sn 。

备份好后,你就可以随意刷机了,不用担心路由损坏。这里我推荐华硕的固件http://www.right.com.cn/forum/thread-158208-1-1.html,功能很全,但是我没找到包管理器,所以安装 shadowsocks 等其他软件会很麻烦。

注意

2016年9月17日在我买的新路由器上尝试破解失败了,目前还未解决。


参考资料:
小米路由器破解开启SSH 小米路由器mini丢失SN后恢复找回SN 完美无需编程器!
AR/QCA/MTK Breed,功能强大的多线程 Bootloader