华为路由器后台登录协议实现

本文介绍了使用Python登录华为路由器后台的实现过程,包括获取必要的数据、加密算法以及如何通过requests库进行HTTP交互。着重解释了如何处理csrf_param、csrf_token、nonce等关键参数,并提到了PBKDF2加密算法在Python中的应用。
摘要由CSDN通过智能技术生成

实际使用路由器为荣耀路由Pro

下面所述过程,很大部分参考了下面两篇博客
https://blog.csdn.net/Touale/article/details/113571862
https://www.ruterfu.com/2021/04/19/20210419-login-by-codes-huawei-router-WS5200/
其中第一篇博客稍显不好,只是给出简略的过程,若是对于http, js(javascript)不熟悉的人很难上手,实际实现的代码也没有,但还是给出的登录过程的关键数据。第二篇博客就很好的了,给出了整个的加密过程还有最终实现的代码。由于本人多用python,对javascript及java不是很熟悉,稍做尝试,还是用回python。感谢两位博主,特此写上自己的python实现,希望有需要的用得上。

实现过程

导入库
 

import sys
import requests
from lxml import etree
import json

import hashlib
import hmac
from Crypto import Random

其中requests用于http的交互,etree用于解析网页源码html,并获取相应字段,hashlib和hmac用于实现加密算法,Crypto也是加密算法库,但这里用的不多,仅是用来生成随机字符串
Crypto的安装为pip3 install pycryptodome

获取第一次post中需要的csrf_param,csrf_token,username,firstnonce数据

可查看第二篇博客,有关于post的抓包,这里就不放我的抓包的,用wireshark即可。
重点说明这几个数据来源:
csrf_param,csrf_token为上一次访问回复中的数据,所以第一次post时,应先访问首页来获得这两个数据
username则默认为admin,我的路由器是只有密码输入的。
firstnonce则32位长的随机字节流,在表现上可能是64位的hex码,如在post上,抓包也是,64位(只含0-9,a-f的)
 

    firstNonce = Random.get_random_bytes(32)
    result = sess.get("http://192.168.3.1/html/index.html")
    update_Information(result)

    request_header = {
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Origin': 'http://192.168.3.1',
    'Content-Type': 'application/json;charset=UTF-8',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest',
    '_ResponseFormat': 'JSON',
    'Referer': 'http://192.168.3.1/html/index.html',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    }

    firstNonce_str = Random.get_random_bytes(32).hex()
    firstNonce = bytes(firstNonce_str, encoding='utf-8')
    
    login_post_data = {

        'csrf': {'csrf_param': gl_csrf_param, 'csrf_token': gl_csrf_token},
        'data': {'username': 'admin', 'firstnonce': firstNonce_str},
    }

    url_routerlogin = 'h
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值