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

本文详细介绍了如何编写一个Python脚本登录小米路由器。通过分析登录请求,确定了需要的参数,包括username、MD5加密后的password、logtype和nonce。其中nonce是通过设备MAC地址、时间戳和随机数生成的。通过模拟登录流程,使用requests模块发送POST请求,成功实现了Python自动化登录小米路由器。
摘要由CSDN通过智能技术生成

这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速。好了,一起来分析分析。

首先看下小米路由器的登录界面

可以看到只需要输入密码即可登录,博主这里为了演示,设置了简单的登录密码12345678,使用firebug记录登录的请求。当然,这里也可以使用Burp拦截请求,只不过有点大材小用了,来,我们尝试登录一下,看下做了哪些请求,使用正确的密码进行登录,post到服务端的数据如图所示

从图上很明显的可以看到,post了4个参数到这个地址:http://192.168.65.1/cgi-bin/luci/api/xqsystem/login 进行登录操作。

参数 username 的值为admin,这个很明显就是一个内置的用户名,也就是默认的用户名,所以页面只需要输入密码就可以正常登录。

参数 password 一眼看上去应该是个MD5加密后的密文

参数 logtype 的值为2,这个应该也是系统默认内置的一个登录类型

参数 nonce 看起来应该是 mac地址加时间戳加随机数的组合

登录成功之后的响应如图

上面对参数含义的推测不一定准确,为了了解真正的含义,博主决定去代码里面一探究竟,查看页面源代码,找到了处理登录的方法

function loginHandle ( e ) {

e.preventDefault();

var formObj = document.rtloginform;

var pwd = $( '#password' ).val();

if ( pwd == '') {

return;

}

var nonce = Encrypt.init();

var oldPwd = Encrypt.oldPwd( pwd );

var param = {

username: 'admin',

password: oldPwd,

logtype: 2,

nonce: nonce

};

$.pub('loading:start');

var url = '/cgi-bin/luci/api/xqsystem/login';

$.post( url, param, function( rsp ) {

$.pub('loading:stop');

var rsp = $.parseJSON( rsp );

if ( rsp.code == 0 ) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用Python来写一个脚本来获取华为路由器接口IP地址。你可以使用urllib模块来实现这一功能,并使用正则表达式来提取IP地址。你还可以使用requests模块来访问指定的URL,获取该网页的源代码,并解析出IP地址。 ### 回答2: 要编写一个自动获取华为路由器接口IP地址的Python脚本,首先需要使用Python的网络编程库来与路由器进行通信。以下是一个可能的实现思路: 1. 导入必要的Python库,如paramiko(用于SSH连接)、re(用于正则表达式匹配)和time(用于延时等待)。 2. 创建一个SSH连接路由器的函数。在函数中使用paramiko库来建立SSH连接,并使用用户名和密码进行身份验证。 3. 在SSH连接中执行命令来获取路由器的接口信息。使用paramiko库中的`exec_command()`函数来执行命令,并使用`recv()`函数来获取命令输出。 4. 使用正则表达式匹配从路由器接口信息中提取IP地址。可以使用re库中的`findall()`函数来匹配IP地址的模式,并将匹配到的IP地址保存在一个列表中。 5. 返回IP地址列表。 以下是一个简单的示例代码: ```python import paramiko import re import time def get_router_ip(username, password): router_ip_list = [] # SSH连接路由器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('router_ip', username=username, password=password) # 执行命令获取接口信息 stdin, stdout, stderr = ssh.exec_command('display ip interface brief') time.sleep(1) # 等待命令执行完成 # 获取命令输出并使用正则表达式匹配IP地址 output = stdout.read().decode('utf-8') ip_addresses = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', output) # 将匹配到的IP地址添加到列表中 for ip_address in ip_addresses: router_ip_list.append(ip_address) # 关闭SSH连接 ssh.close() return router_ip_list # 调用函数并打印结果 username = 'your_username' password = 'your_password' router_ip_list = get_router_ip(username, password) print(router_ip_list) ``` 请注意,此示例仅提供了基本的框架和思路,实际操作中需根据华为路由器的具体配置和命令进行调整。同时,需要替换掉代码中的'router_ip'、'your_username'和'your_password'为实际的路由器IP地址、用户名和密码。 ### 回答3: 要编写一个自动获取华为路由器接口IP地址的Python脚本,你可以使用telnetlib库来远程连接路由器并发送命令。以下是一个示例脚本: ```python import telnetlib host = "路由器IP地址" username = "路由器用户名" password = "路由器密码" # 连接到路由器 tn = telnetlib.Telnet(host) # 输入用户名 tn.read_until(b"Username: ") tn.write(username.encode('ascii') + b"\n") # 输入密码 tn.read_until(b"Password: ") tn.write(password.encode('ascii') + b"\n") # 登录成功后发送命令 tn.write(b"interface brief\n") tn.write(b"display ip interface brief\n") tn.write(b"quit\n") # 读取路由器返回的结果 output = tn.read_all().decode('ascii') # 解析结果,获取接口IP地址 lines = output.split("\n") for line in lines: words = line.split() if len(words) >= 4 and words[0].startswith("GigabitEthernet"): interface = words[0] ip_address = words[1] print("接口名:", interface, " IP地址:", ip_address) # 关闭连接 tn.close() ``` 在上述脚本中,需要将`host`变量替换为你的华为路由器的IP地址,`username`和`password`变量替换为你的登录凭据。脚本首先通过telnet连接到路由器,然后输入用户名和密码进行登录。之后发送命令`interface brief`和`display ip interface brief`来获取接口IP地址的信息,并解析返回的结果,输出接口名和IP地址。最后关闭telnet连接。 请注意,使用telnet进行远程连接存在安全风险。为了更安全地获取接口IP地址,推荐使用SSH协议,可以使用`paramiko`库来进行SSH连接和命令发送。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值