家里用的是D-link路由器,不超过100块那种。由于路由器年代久远,偶尔会抽风连不了外网,这时就需要重启路由器。一般常规的做法一是断电重启;二是登陆路由器系统设置选项进行重启。有时路由器离电脑太远了不想跑过去断电,登陆路由器又有点烦锁,什么打开浏览器输入用户名密码找到系统设置选项再点击重启。于是就设想写个python脚本,直接双击或者快捷键打开马上重启路由器。
用python来模拟人员登陆路由器设置界面进行重启操作,人工操作其实最重要的就是两步:一是登陆路由器,二是向路由器发送重启的指令。
首先用burp site 抓取登陆路由器的信息
POST /session.cgi HTTP/1.1 Host: 192.168.5.1 Content-Length: 80 Origin: http://192.168.5.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36 Content-Type: application/x-www-form-urlencoded Accept: */* Referer: http://192.168.5.1/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8 Cookie: uid=PPgJoMGJTN REPORT_METHOD=xml&ACTION=login_plaintext&USER=admin&PASSWD=123456&CAPTCHA=
再抓取点击重启时发送到路由器的信息
POST /service.cgi HTTP/1.1 Host: 192.168.5.1 Content-Length: 12 Origin: http://192.168.5.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36 Content-Type: application/x-www-form-urlencoded Accept: */* Referer: http://192.168.5.1/tools_system.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8 Cookie: uid=S1pAXZvdoE EVENT=REBOOT
其实整个重启过程就是两个步骤:1登陆2重启
电脑主要就是向路由器发送了上面两段信息
python代码如下:
import requests ip='192.168.5.1' username='admin' pwd='123456' header={ 'Host': ip, 'Origin': 'http://'+ip, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept':' */*', 'Referer': 'http://'+ip, 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8' } #登陆时向服务器POST的数据 login={ 'REPORT_METHOD':'xml', 'ACTION':'login_plaintext', 'USER':username, 'PASSWD':pwd, 'CAPTCHA':'' } #重启时向路由器POST的数据 reboot={ 'EVENT':'REBOOT' } s=requests.session() #登陆路由器 login=s.post('http://'+ip+'/session.cgi',data=login,headers=header) print login.text #重启路由器 reboot=s.post('http://'+ip+'/service.cgi',data=reboot,headers=header) print reboot.text
执行结果如下:
第一段<RESULT>SUCCESS<RESULT>表示登陆成功
第二段<result>OK<result>表示重启成功