前言
上次折腾IPV6
大约是在一个月前了,捣鼓了一个晚上,最后也没得到想要的结果(手机流量等支持IPV6
的场景下直接访问内网资源,也就是P2P
)。
今天突发奇想关了防火墙试一试,顺着这个思路一步步的就成功了!成就感爆棚!
过程
APP
留意到小米Wifi手机端
权限比Web端
有着更高的权限(功能更全),找到了几个可疑开关,关了之后发现没有效果,于是只好尝试在Web端
获取SSH
权限操作。
SSH
- 登录小米路由管理页面,地址栏
url
里面找到stok
后面字符串替换掉下面url
里面的<STOK>
- 复制替换好的
url
到地址栏中然后回车确认 - 获取
SSH
权限
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
- 修改
root
用户密码为admin
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
需要修改为其他密码自行替换 url 中 admin 部分。
- 复制上面编辑好的
URL
到浏览器地址栏中,然后回车确认,看到以下提示已经成功了。
好了,已经获取了 SSH
权限,并且修改了 ROOT
用户的登录密码,默认是 admin
输入 root
用户密码后回车确认,看到下图就成功以 root
用户身份登录路由器了。
关闭IPV6防火墙
命令:
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
这下外网能Ping通了,但是只要路由器一重启,防火墙还是会自己开启。
- 在
/etc/config/firewall
加入:
config include
option path '/etc/firewall.user'
- 在
/etc/firewall.user
加入:
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
※第二条中 ip6tables -I forwarding_rule 也能加入 /etc/firewall.user 从而自定义开放端口。
后续
留意到IPV6
地址会随着路由器的重启而变化(佬胡说即便不重启也会每天发生变化)。考虑到每一次都进cmd
输入ipconfig
查看地址太过复杂,干脆整一个能自动获取IPV6
地址并自动复制到剪切板的python
程序好了,实现如下(需手动安装pyperclip
库):
import urllib.request
import subprocess
import socket
import re
import pyperclip
child=subprocess.Popen("ipconfig", shell=True, stdout = subprocess.PIPE)
out=child.communicate();
ipv6_pattern='(([a-f0-9]{1,4}:){7}[a-f0-9]{1,4})'
m=re.findall(ipv6_pattern,str(out));
address=m[1][0]
print(address)
print("已复制到剪切板!\n\n按回车键退出...")
pyperclip.copy(address)
input()
参考资料:
https://xenwayne.top/tech/182.html
https://zhuanlan.zhihu.com/p/260531160
https://blog.csdn.net/qq840166422/article/details/89553077
版权属于:soarli
本文链接:https://blog.soarli.top/archives/499.html
转载时须注明出处及本声明。
找到方法了,获取SSH权限时,使用这个地址代码http://192.168.31.1/cgi-bin/luci/;stok=/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
你好,请问一下,我得到了{"code":0},但是ssh连接的时候显示Connection refused,有什么办法吗?我的固件是2.0.23
你好,这个问题我没有遇到过,但可能造成的原因有很多,比如端口号不正确、防火墙限制等。建议向小米售后反馈一下以获得官方的技术支持。
好的,感谢回复!(๑•̀ㅁ•́ฅ)