admin 管理员组

文章数量: 1184232

本文参考 的博文对自己的路由器进行分析,并且实现重启路由器的操作
原理:利用burp site捕获登录路由器时的请求,然后调用python的requests库来重现该请求即可达到登录路由器的目的,同样只要捕获到重启路由器操作时浏览器发送到路由器的请求,然后重现即可。

1.本人第一次用burp site,不太清楚怎么用,就设置浏览器用127.0.0.1:8080这个本地代理,这样burp site就可以捕获到请求了。
2.安装burp site要先装jdk8,然后cmd中执行java -jar burp-loader-keygen.jar安装burp site,后面的安装教程省略自己百度。
3.原博文中调用了requests.session(),这个函数的作用如下:
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息
(1)requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies。
(2)requests库的session对象还能为我们提供请求方法的缺省数据,通过设置session对象的属性来实现

 s=requests.session()
#登录路由器
response = s.get(' headers=header_login)

4.最后面的python代码中,把重启代码换成登录代码可以模拟登录,获取到登录的源代码,登录的代码如下

response = requests.get(' headers=header_login)

下面是登录时捕获的请求:

GET / HTTP/1.1
Host: 192.168.2.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Authorization: ###这里是Authorization参数,包含验证信息,也就是账号密码,这里打个码###

下面是重启时捕获的请求:

POST /apply.cgi HTTP/1.1
Host: 192.168.2.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 48
Authorization: ###这里是Authorization参数,包含验证信息,也就是账号密码,这里打个码###
Connection: close
Referer: 
Upgrade-Insecure-Requests: 1
action_mode=reboot&action_script=&action_wait=90

分析:重启时其实和登录的代码几乎一样,就多了一个 action_mode=reboot&action_script=&action_wait=90 ,这个其实就是重启路由器的post请求。所以重启的代码=登录请求+重启请求

import requests
ip = '192.168.2.1'
#为了避免密码泄露,将Authorization的值存在Authorization.txt中
with open('Authorization.txt') as Authorization_file:
    Authorization = Authorization_file.read()
# 登录get请求,这里其实只需要'User-Agent'和'Authorization'这两个请求头,如果不行可以添加一些捕获的请求中其他的验证
header_login = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
    'Authorization': Authorization
}
# 重启路由器的post请求
reboot = {
    'action_mode': 'reboot',
    'action_script': '',
    'action_wait': '90'
}
#重启路由器(捕获请求第一行`POST /apply.cgi HTTP/1.1`表明了是get请求还是post请求,以及验证的文件为apply.cgi
#所以要在post参数中加上这个,让它知道我需要把该请求头发送给谁,这里是
reboot = requests.post(' = reboot,headers = header_login)
print(reboot.text) #返回重启的页面信息

本文标签: 的请求 系统 编程