• Dr.COM EPortal 认证


    Dr.COM EPortal 认证

    来源 https://www.txisfine.cn/archives/2b1ff890.html

    Dr.COM 认证脚本合集,适用于 Dr.COM 的 Web 认证。目的是为了解决一些特殊设备无法使用浏览器进行认证的问题和防止设备被 Dr.COM 踢下线。

    认证原理
    构建 POST 请求

    通过抓包分析 Dr.COM 的 Web 认证是通过 POST 提交用户信息完成认证的,我们可以通过模拟 POST 完成认证。

    General

    Request URL:http://192.168.100.1/0.htm
    Request Method:POST
    Status Code:200 OK
    Remote Address:192.168.100.1:80
    Referrer Policy:no-referrer-when-downgrade

    Response Headers
    Accept-Ranges:bytes
    Cache-Control:no-cache
    Connection:keep-alive
    Content-length:3573
    Content-type:text/html; charset=gbk
    Server:DrcomServer1.0

    Request Headers
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:zh-CN,zh;q=0.9
    Cache-Control:max-age=0
    Connection:keep-alive
    Content-Length:64
    Content-Type:application/x-www-form-urlencoded
    Cookie:smartdot=123456; myusername=user1; username=user1
    Host:192.168.100.1
    Origin:http://192.168.100.1
    Referer:http://192.168.100.1/0.htm
    Upgrade-Insecure-Requests:1
    User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36

    Form Data
    DDDDD:user1
    upass:123456
    0MKKey:%B5%C7%A1%A1%C2%BC
    v6ip:

    主要有这样几个地方是有用的,一是 Request URL 这个是你需要发送请求的地址,还有就是提交的内容 DDDD(用户名)、upass(密码)、0MKKey(一个 KEY)、v6ip(ipv6 地址)。可能每个设备都不太一样,不可照抄。

    认证脚本

    Linux 临时认证
    curl -d "DDDDD=user1&upass=123456&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=" http://192.168.1.100/0.html

    批处理认证保持

    需要 CURL 请先下载对应版本的 CURL。
    注册 CURL:
    copy curl.exe C:WindowsSystem32curl.exe

    脚本(保存为 bat 运行):
    shell set url=www.baidu.com :p ping -w 1000 -n 3 %url%|find "TTL" if %errorlevel%==0 goto p if %errorlevel%==1 goto dr :dr curl -d "DDDDD=user1&upass=123456&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=" http://192.168.1.100/0.html goto p
    修改 curl -d "DDDDD=user1&upass=123456&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=" http://192.168.1.100/0.html 对应的内容即可。

    Python 认证保持
    需要 Python 环境,因为脚本中有注释,不做过多解释。

    脚本(保存为 py 运行):

        import os
        import time
        import requests
        import subprocess
    
        # enter the username and password of your drcom account here
        username=""
        upass=""
    
        # urls for login
        # In different college, it is different
        # but you can find out what it is by doing:
        # 1. use your cellphone to connect to the wifi of your computer or of your campus
        # 2. visit a website, such as baidu, then the browser should jump to the login page
        # 3. copy the address of this login page, and paste it to the LoginUrl below.
        LoginUrl = "http://192.168.1.100/a30.htm"
        LogoutUrl = "http://192.168.1.100/F.htm"
    
        ZeroMKKey = '%B5%C7%A1%A1%C2%BC'
    
        v6ip = ''
    
        # here is the ip addresses that used to ping, so we can find out if we are online.
        # you can use ";" to seperate the ip addresses that you want to use to ping.
        PingIpAddresses = "58.83.230.159;202.108.22.5"
    
        SleepTime = 5
    
        def login():
            data = {"DDDDD":username, 'upass':upass, '0MKKey':ZeroMKKey,'v6ip':v6ip}
            r = requests.post(LoginUrl, data)
            if r.status_code == 200:
                print u"login successfully!"
            else:
                print u"login failed"
            return r
    
        def logout():
            r = requests.get(LogoutUrl)
            if r.status_code != 200:
                print u"logout failed"
            else:
                print u"logout successfully"
            return r
    
        def ping_ips(ips):
            for ip in ips.split(";"):
                ret = subprocess.Popen("ping -n 1 -w 1 %s " % ip, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                ret.communicate()
    
                if ret.returncode == 0:
                    print "ping %s...successful!" % ip
                    return True
                else:
                    print "ping %s...failed!" % ip
    
            return False
    
        def keep_login():
            while True:
                if ping_ips(PingIpAddresses) == False:
                    login()
                else:
                    time.sleep(SleepTime)
    
    
        if __name__ == "__main__":
            keep_login()
        ```
    

    ### Shell 认证保持

    Shell 文件需要 `chmod +x` 授予执行权限

    #!/usr/bin/env bash
    
    while true; 
    do 
    	if ping -c 1 www.baidu.com >/dev/null 2>&1; 
    	then
    		echo Network is Ok! sleep 5s else echo DrComing… 
    		curl -d "DDDDD=user1&upass=123456&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=" http://192.168.100.1/0.html
    		sleep 5s 
    	fi
    done

    ================

    General
    Request URL: http://172.30.0.8/0.htm
    Request Method: POST
    Status Code: 200 OK
    Remote Address: 172.30.0.8:80
    Referrer Policy: no-referrer-when-downgrade

    Response Headers
    Accept-Ranges: bytes
    Cache-Control: no-cache
    Connection: keep-alive
    Content-length: 397
    Content-type: text/html; charset=gbk
    Server: DrcomServer1.0

    Request Headers
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cache-Control: max-age=0
    Connection: keep-alive
    Content-Length: 50
    Content-Type: application/x-www-form-urlencoded
    Cookie: myusername=test9; username=test9; smartdot=123456
    Host: 172.30.0.8
    Origin: http://172.30.0.8
    Referer: http://172.30.0.8/0.htm
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36

    Form Data
    DDDDD: test9
    0MKKey: (unable to decode value)
    upass: 123456

    ================= End

  • 相关阅读:
    Rancher中删除k8s节点数据,还原机器用于重新安装
    k8s、pod中的应用获取宿主机IP、PODIP等信息
    通过物理设备了解Osi网络架构
    el-tree懒加载无子级数据时去掉下拉箭头
    使用axios.all和axios.spread处理并发请求
    element日期控件修改时候显示1970年的问题
    echarts柱状图区域缩放可拖动参数配置
    记录element表格设置右侧固定,边框线消失的问题
    echarts饼图数据为0时隐藏数据指示线
    vue使用moment.js处理时间格式
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/13718831.html
Copyright © 2020-2023  润新知