『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3130|回复: 6

[新奇玩法] 光猫温度,cpu,内存,光模块信息获取

[复制链接]

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2022-6-24 21:43:06 | 显示全部楼层 |阅读模式
本帖最后由 ciasdmxhxjjpd@c 于 2022-6-25 12:05 编辑

RT,

路由器的信息获取,有现成的,但光猫信息的获取,资料很少。
今天分享一个获取华为光猫信息的方法。大家可以按照这个思路来获取其他类型的光猫信息。

以获取 ma5671,最新205 固件的 wanip、温度、光模块发射功率(其他信息类推)为例:

pycharm 调试
import os
import pickle
import requests
import re
import base64
import json

import urllib.parse
import codecs


DOMAIN = 'http://192.168.1.1/'
USERNAME = 'telecomadmin'
PASSWORD = 'nE7jA%5m'
HEADERS = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
    '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'
}

# get random
def get_random(session):
    cnt = session.post(url=DOMAIN+'asp/GetRandCount.asp').content.decode('utf-8-sig')
    return cnt

# get login cookie
def get_cookie(session, cnt):
   payload = {'x.X_HW_Token' : cnt}
   password_decode = base64.b64encode(str.encode(PASSWORD)).decode('ascii')
   cookies_dict = {'Cookie': 'Cookie=UserName:' + USERNAME + ':PassWord:' + password_decode + ':Language:english:id=-1' }
   session.post(url=DOMAIN+'login.cgi', data=payload, cookies=cookies_dict)

# get ont temperature
def get_opticinfo(session):
    x = session.get(url=DOMAIN+'html/amp/opticinfo/opticinfo.asp').content.decode('utf-8-sig')
    opticinfos = re.findall('var opticInfos = new Array\(new stOpticInfo\("InternetGatewayDevice.X_HW_DEBUG.AMP.Optic","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)"\),null\);',x)
    return opticinfos

# get pppoe wan ip
def get_wanip(session):
    x = session.get(url=DOMAIN + 'html/bbsp/common/wan_list.asp').content.decode('utf-8-sig')
    wanips = re.findall(
        'var PPPWanList = new Array\(new WanPPP\("InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1","(.*)","(.*)","(.*)","(.*)","(.*)","(.*)","your_adsl_account"',
        x)
    return wanips


# using session
session = requests.Session()
session.headers = HEADERS

# begin
get_cookie(session, get_random(session))
x = session.get(url=DOMAIN + 'frame.asp')
#y = session.get(url=DOMAIN + 'html/ssmp/deviceinfo/deviceinfo.asp')
#z = session.get(url=DOMAIN + 'html/ssmp/reset/reset.asp')
#u = session.get(url=DOMAIN + 'html/ssmp/common/StartFileLoad.asp')
#v = session.post(url=DOMAIN + 'html/ssmp/reset/set.cgi?x=InternetGatewayDevice.X_HW_DEBUG.SMP.DM.ResetBoard&RequestFile=html/ssmp/reset/reset.asp')

# opticinfo
opticinfo = get_opticinfo(session)

# wanip
wanip = get_wanip(session)
unescaped = urllib.parse.unquote(wanip[0][1])
raw_bytes = bytes(unescaped, "utf-8")
decoded = codecs.escape_decode(raw_bytes)[0].decode("utf-8")


# json out
js = {
    "Optical_Temperature" : opticinfo[0][3],
    "RX_Optical_Power": opticinfo[0][1],
    "wan_ip": decoded
}

print(json.dumps(js))


HA 里
  - platform: command_line
    name: XPON Temp
    command: "python /config/get_ont_info.py"
    value_template: "{{ value_json.Optical_Temperature}}"
    unit_of_measurement: "°C"
    scan_interval: 310

  - platform: command_line
    name: Optical Rx Power
    command: "python /config/get_ont_info.py"
    value_template: "{{ value_json.RX_Optical_Power}}"
    unit_of_measurement: "dBm"
    scan_interval: 320

  - platform: command_line
    name: WAN IP
    command: "python /config/get_ont_info.py"
    value_template: "{{ value_json.wan_ip}}"
    scan_interval: 300 
效果图:
捕获.JPG

评分

参与人数 2金钱 +20 收起 理由
dscao + 10 感谢楼主分享!
jjcs + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

47

主题

1659

帖子

6698

积分

论坛元老

Rank: 8Rank: 8

积分
6698
金钱
5029
HASS币
40
发表于 2022-6-24 22:00:17 | 显示全部楼层
还有一个方法就是有些光猫有漏洞,可以获取web的数据,具体可以百度,请求这个页面就行了
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
 楼主| 发表于 2022-6-24 22:02:27 | 显示全部楼层
jjcs 发表于 2022-6-24 22:00
还有一个方法就是有些光猫有漏洞,可以获取web的数据,具体可以百度,请求这个页面就行了 ...

有漏洞,只是少了中间的python模拟登录部分。知道密码的情况下,意义不大。
回复

使用道具 举报

47

主题

1659

帖子

6698

积分

论坛元老

Rank: 8Rank: 8

积分
6698
金钱
5029
HASS币
40
发表于 2022-6-24 22:03:29 | 显示全部楼层
方便啊,有些漏洞的数据还是json格式,还不需要密码模拟登录,nr就行了
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

2

主题

136

帖子

2029

积分

金牌会员

Rank: 6Rank: 6

积分
2029
金钱
1893
HASS币
0
发表于 2022-6-25 08:58:27 | 显示全部楼层
收藏啦,感谢
回复

使用道具 举报

22

主题

414

帖子

2255

积分

金牌会员

Rank: 6Rank: 6

积分
2255
金钱
1841
HASS币
30
发表于 2022-6-25 12:27:25 | 显示全部楼层
多谢分享
你有所不知,小米设备带屏幕都是为了后期广告投送的。
灵长类退散
回复

使用道具 举报

0

主题

38

帖子

244

积分

中级会员

Rank: 3Rank: 3

积分
244
金钱
206
HASS币
0
发表于 2023-3-6 12:06:05 | 显示全部楼层
麻烦问一下.这个怎么用,我保存到根目录执行后没有数据显示
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 04:42 , Processed in 0.089373 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表