在学校弄了移动联通各一个手机号,也就同时使用着这两家的宽带。每次想要切换这两个宽带的时候,你首先要把网线从移动/联通的交换机上拔出来然后,插到另一家的那台交换机上。然后呢我又是用的小米的无线路由器,所以还要登录到管理界面,再输入账号密码点击登陆才能完成切换。

每次都要输入这么一长串账号密码弄得我都有点烦躁了,所以在想直接写一个脚本来完成这一步骤。

我们抓包来看看怎么登陆,可以看出这个包就是我们想要的。

然后我们看看post了什么东西

总算不是明文po上去的了,这么一来我们就得想办法看看怎么加密的了。直接从源码里也能找到不过这多费劲呢,我们先百度一下试试,然后发现正好有人先做过了,http://www.tuicool.com/articles/2qaIzeu

这个博主替我们解决了最难的部分,从页面代码里找到了加密的方式,
利用requests模块进行登录,这里重点需要说明下密码的生成过程

CryptoJS.SHA1(this.nonce + CryptoJS.SHA1(pwd +this.key).toString()).toString();

密码+后端返回的一个key进行一次SHA1加密,转换成字符串之后与nonce相加再进行一个SHA1加密,最后进行一次字符串的转换就的到最终的密文。

我们就利用博主的开源代码直接登进去吧= =

然后找到输入宽带用户名和密码会发生什么,

我们直接用我输入的用户名搜索,发现以下包出现了该字段。

这明显一看就是set_wan就是我们要的啊,戳进去看

明文post过去了,真是省事。注意一下url里面的stok项是登陆以后返回的token的值,不要直接就抄下来url就传参数了。

下面就附带以下代码了~

第一行代码加上之后,给这个py文件赋予执行权限,chmod a+x .py  ,然后双击在mac上就能直接执行啦

#!/usr/bin/env python
# coding=utf-8
# code by zixiaoimport requests
from Crypto.Hash import SHA
import random
import time
import json
import sys
import redef tryLoginMi():#    host = sys.argv[1]#在命令行输入的参数命令行参数,路由器地址host='192.168.31.1'homeRequest = requests.get('http://'+ host +'/cgi-bin/luci/web/home')key= re.findall(r'key:\'(.*)\',',homeRequest.text)[0]mac= re.findall(r'deviceId= \'(.*)\';',homeRequest.text)[0]aimurl = "http://"+host+"/cgi-bin/luci/api/xqsystem/login"nonce = "0_"+ mac +"_"+ str(int(time.time())) +"_"+str(random.randint(1000,10000))#     pwdtext= sys.argv[2]#在命令行输入的第二个参数,密码pwdtext='XXXXX'pwd= SHA.new()pwd.update(pwdtext+key)hexpwd1 = pwd.hexdigest()pwd2 = SHA.new()pwd2.update(nonce+hexpwd1)hexpwd2 = pwd2.hexdigest()data = {"logtype":2,"nonce":nonce,"password":hexpwd2,"username":"admin"}response = requests.post(url=aimurl,data=data,timeout = 5)resjson = json.loads(response.content)if resjson['code'] ==0:print 'Login Success! Token is '+resjson['token']else:print 'Login Failed! Code is '+str(resjson['code'])global token1token1=resjson['token']def changeWan():wan1={"wanType":"pppoe","pppoeName":15052003824,"pppoePwd":xxxxxxxx,"autoset":0}wan2={"wanType":"pppoe","pppoeName":"051602198839","pppoePwd":xxxxxxx,"autoset":0        }switch=input("移动输入1,联通输入2:\n")if switch==1:wan=wan1elif switch==2:wan=wan2setUrl='http://192.168.31.1/cgi-bin/luci/;stok='+token1+'/api/xqnetwork/set_wan'respose1=requests.post(url=setUrl,data=wan,timeout = 5)resjson1=json.loads(respose1.content)if resjson1['code'] ==0:print 'setWan Success!'else:print 'setWan Failed! Code is '+str(resjson1['code'])tryLoginMi()
changeWan()

运行效果

小米路由器登陆以及切换wan账户脚本相关推荐

  1. 小米路由器PC客户端无法打开路由器…

    问题描述 小米路由器(R2D)1T硬盘版,以前安装了小米路由器PC客户端后,点击左上角的文件夹图标可以直接打开路由器硬盘,访问硬盘中的数据.近期安装的Win10系统,再一次安装了小米路由器PC客户端后 ...

  2. 小米路由器浏览器连不上网的问题

    其他都有网,就是用浏览器老弹出小米路由器登陆页面或者不是安全连接的提示. 之前在网上找了一些方法,都不能长期使用,现在已经解决.经验总结如下: 原因:由于新版本Chrome谷歌浏览器或edge微软浏览 ...

  3. 路由器运行python脚本_写个Python脚本来登录小米路由器

    这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...

  4. 自动路由_小米路由器Mesh首销 多路由自动切换/为智能家居而生

    [CNMO新闻]在小米.米家推出的众多生态链产品中,小米路由器的销量非常大,但是口碑却不尽如人意,尤其是在连接小米智能家居设备时,稳定性很差,时常断连.不过,这种糟糕的用户体验在小米路由器Mesh推出 ...

  5. 小米路由器R3开启SSH登陆权限

    准备工具: 笔记本一台 小米路由器R3一台 小米路由器R3开发板ROM 小米路由器R3开启SSH工具 获取方式: 小米路由器R3开发板ROM www1.miwifi.com 进入小米路由器官网,依次选 ...

  6. 小米路由器linux界面,小米路由器配置ssh登录方法 | 192.168.1.1登陆页面

    小米路由器正在使用Linux内核,可以使用ssh来管理. 复制代码 代码如下所示: 根@ XiaoQiang:\ \/ userdisk # CD ~! 根@ XiaoQiang:~ # uname ...

  7. 小米路由器Pro R3p 刷机 Breed Padavan OpenWrt UART/TTL 救援

    小米路由器Pro R3p 刷机 Breed Padavan OpenWrt UART/TTL 救援 date: 2022-10-08 lastmod: 2022-10-29 一般过程: 小米路由器开发 ...

  8. 嵌入式系统之-小米路由器3G v1

    嵌入式系统之-小米路由器3G v1 相关汇总:嵌入式系统系列目录 第一篇 嵌入式系统之-小米路由器3G V1 第二篇 - 未完待续,欢迎收藏关注. 目录 嵌入式系统之-小米路由器3G v1 前言 一. ...

  9. 小米路由器开启外网访问SSH和WEB管理界面

    前   言 关于<小米路由器开启SSH并连接>参考下文https://blog.csdn.net/desertworm/article/details/117958369 由于小米路由为了 ...

  10. 小米路由器青春版装linux,小米路由器青春版刷机教程

    如今的小米路由器跟很多智能设备一样,都可以进行刷新刷机,升级固件,但一般刷机是有比较大风险的,要谨慎操作,下面是学习啦小编整理的小米路由器青春版刷机教程,仅供参考,小心刷机! 小米路由器青春版刷机教程 ...

最新文章

  1. java 创建5个线程_Java创建线程的三种方式
  2. Android开发之通过CursorAdapter读取数据(源代码分享)
  3. tensorflow综合示例5:图象分割
  4. 二维数组子数组矩形和
  5. map任务和reduce任务个数如何计算
  6. 如何吧汇编语言转换为c语言,如何把汇编语言转换成C语言
  7. SpringBoot工程不注册到Eureka上
  8. mysql最小费用最大流问题_最小费用最大流问题
  9. 网络创新激活西部科技,戴尔2013软件定义网络圆桌会谈的启示
  10. php 数据类型 map,ResultMap和ResultType的区别
  11. Linux下Vivado安装流程
  12. mui登录模板源码解
  13. xLua(一)——介绍
  14. C语言编制排班系统流程图,智能排班系统流程图怎样绘制
  15. Latex中使用实心圆点列表
  16. 保研面试/考研复试英语口语常见问题整理
  17. 公钥和私钥的区别与应用-----到底谁来加密谁来解密
  18. SV学习(8)——随机约束和分布、约束块控制
  19. Adobe Animate把.fla文件导出透明背景图片
  20. 小白从零开始搭建阿里云服务器

热门文章

  1. 纯粹数学的雪崩效应:庞加莱猜想何以造福了精准医疗?
  2. 儿童神经系统肿瘤有哪些,儿童神经系统肿瘤症状
  3. win7计算机未连接网络,教你w7电脑本地连接受限制或无连接的七种解决方法
  4. SpringBoot整合Mail
  5. 【计算机图形学】Bezier曲线软件及操作
  6. pytorch中的torch.nn.Unfold和torch.nn.Fold
  7. CentOS 8 添加中文语言包
  8. 2048游戏(C语言)
  9. 编程需要知道多少数学知识?
  10. 用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练