Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
MC889A_DNAY_B13_FWAOnko firmisversio FWA malliin?
Onko tähän ohjeita?Tyhjentämällä tr069-config toimii normaalisti, ainakin itsellä jo toista kuukautta yhteyden uptime
Sen verran lähelle menee, että hyödynnetään samaa threadia. ZTE on julkaissut tietyille markkinoille uuden MC889(A) Pro -version, jossa on ainakin tehokkaampi antennivahvistus ja kiinnitysmekanismi muuttunut helpottamaan suuntaamista. Saa nähdä, tuleeko Suomen markkinoille saataville:
setTR069Config kun POSTaa hallinnasta kikkailen tyhjäksi niin katoo ne tiedot. On tuohon kans python-pala, mut en oo korjannu siihen paria juttua ja voi vaatia koodin läpikäyntiä;MC889A_DNAY_B13_FWA
Onko tähän ohjeita?
#!/bin/python3
import requests
from requests.exceptions import RequestException
import hashlib
from datetime import datetime
import urllib.parse
import json
import sys
import time
import urllib3
#from http.server import BaseHTTPRequestHandler, HTTPServer
import argparse
parser = argparse.ArgumentParser("ZTE tr069 tool")
parser.add_argument("ip", help="Router ip address")
parser.add_argument("username", help="Router username", default="admin")
parser.add_argument("password", help="Router password")
parser.add_argument("--login", help="Login method (multi, single)", default="single")
args = parser.parse_args()
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
s = requests.Session()
class zteRouter:
def __init__(self, ip, username, password, login):
self.login = login
self.ip = ip
self.protocol = "http" # default to http
self.username = username
self.password = password
self.try_set_protocol()
self.referer = f"{self.protocol}://{self.ip}/"
def try_set_protocol(self):
protocols = ["http", "https"]
for protocol in protocols:
url = f"{protocol}://{self.ip}"
try:
response = requests.get(url, timeout=5, verify=False)
if response.ok:
self.protocol = protocol
# print(f"{self.ip} is accessible via {protocol}")
return
except RequestException:
pass # If RequestException occurs, try the next protocol
# print(f"Could not determine the protocol for {self.ip}")
def hash(self, str):
return hashlib.sha256(str.encode()).hexdigest()
def get_LD(self):
header = {"Referer": self.referer}
payload = "isTest=false&cmd=LD"
r = s.get(self.referer + f"goform/goform_get_cmd_process?{payload}&_=", headers=header, data=payload, verify=False)
return r.json()["LD"].upper()
def getVersion(self):
header = {"Referer": self.referer}
payload = "isTest=false&cmd=wa_inner_version"
r = s.get(self.referer + f"goform/goform_get_cmd_process?{payload}", headers=header, data=payload, verify=False)
return r.json()["wa_inner_version"]
def get_AD(self):
def md5(s):
m = hashlib.md5()
m.update(s.encode("utf-8"))
return m.hexdigest()
def sha256(s):
m = hashlib.sha256()
m.update(s.encode("utf-8"))
return m.hexdigest() # no .upper() to match whatever mc7010 had
#return m.hexdigest().upper() # .upper() to match your example hash
wa_inner_version = self.getVersion()
hash_function = sha256 # set depending on device, MC7010 md5, MC889 sha256?
cr_version = "" # is empty, is printed on getInfos
a = hash_function(wa_inner_version + cr_version)
header = {"Referer": self.referer}
rd_response = s.get(self.referer + "goform/goform_get_cmd_process?isTest=false&cmd=RD", headers=header, verify=False)
rd_json = rd_response.json()
u = rd_json.get("RD", "")
result = hash_function(a + u) # Use hash_function here as well
print("result (hash of a + u):", result) # Debug print
return result
def getCookie(self, username, password, LD, login):
header = {"Referer": self.referer}
hashPassword = self.hash(password).upper()
ztePass = self.hash(hashPassword + LD).upper()
if login == "multi":
payload = {
'isTest': 'false',
'goformId': 'LOGIN_MULTI_USER',
'password': ztePass,
'user': username
}
else:
payload = {
'isTest': 'false',
'goformId': 'LOGIN',
'password': ztePass,
}
r = s.post(self.referer + "goform/goform_set_cmd_process", headers=header, data=payload, verify=False)
return "stok=" + r.cookies["stok"].strip('\"')
def getTRInfo(self):
ip = self.ip
cookie = self.getCookie(username=self.username, password=self.password, LD=self.get_LD(), login=self.login)
#cmd_url = f"{self.protocol}://{self.ip}/goform/goform_get_cmd_process?multi_data=1&isTest=false&cmd=wa_inner_version%2Clte_rssi%2CZ5g_rssi%2Clte_rsrp%2CZ5g_rsrp%2Clte_rsrq%2CZ5g_rsrq%2Clte_snr%2CZ5g_SINR%2Csignalbar%2Ccell_id%2Cnr5g_action_band%2Ccell_id%2Cnetwork_provider%2Cmonthly_tx_bytes%2Cmonthly_rx_bytes%2Crealtime_tx_bytes%2Crealtime_rx_bytes%2Crealtime_tx_thrpt%2Crealtime_rx_thrpt%2Cwan_ipaddr%2Cwan_apn"
cmd_url = f"{self.protocol}://{self.ip}/goform/goform_get_cmd_process?multi_data=1&isTest=false&cmd=cr_version%2Ctr069_ServerURL%2Ctr069_CPEPortNo%2Ctr069_ServerUsername%2Ctr069_ServerPassword%2Ctr069_ConnectionRequestUname%2Ctr069_ConnectionRequestPassword%2Cwan_ipaddr%2Ctr069_PeriodicInformEnable%2Ctr069_PeriodicInformInterval%2Ctr069_CertEnable%2Ctr069_DataModule%2Ctr069_Webui_DataModuleSupport"
headers = {
"Host": ip,
"Referer": f"{self.referer}index.html",
"Cookie": f"{cookie}"
}
response = s.get(cmd_url, headers=headers, verify=False)
return response.text
def setTRInfo(self):
ip = self.ip
#cookie = self.getCookie(username=self.username, password=self.password, LD=self.get_LD())
cookie = self.getCookie(username=self.username, password=self.password, LD=self.get_LD(), login=self.login)
headers = {
"Host": ip,
"Referer": f"{self.referer}index.html",
"Cookie": f"{cookie}"
}
payload = {
'isTest': 'false',
'goformId': 'setTR069Config',
'AD': self.get_AD(),
"tr069_ServerURL": "https://ltm.mdna.fi:7548/tr069/ServiceHandle",
"tr069_CPEPortNo": "",
"tr069_ServerUsername": "",
"tr069_ServerPassword": "",
"tr069_ConnectionRequestUname": "",
"tr069_ConnectionRequestPassword": "",
"tr069_PeriodicInformEnable": "1",
"tr069_PeriodicInformInterval": "7200",
"tr069_CertEnable": "1",
"tr069_DataModule": "",
"tr069_Webui_DataModuleSupport": ""
}
response = s.post(self.referer + "goform/goform_set_cmd_process", headers=headers, data=payload, verify=False)
return response.text
zteInstance = zteRouter(args.ip, args.username, args.password, args.login)
#class serveInfos():
# gatheredJson = json.loads(zteInstance.getTRInfo())
# print(json.dumps(gatheredJson))
class setInfos():
gatheredJson = json.loads(zteInstance.getTRInfo())
print(json.dumps(gatheredJson))
print(zteInstance.setTRInfo())
if __name__ == "__main__":
setInfos()
Tilasin tuollaisen MC889A Pron nyt sitten 7010:n korvaajaksi (bigbox.fi:stä, varmaan tuovat sen juuri jostain Puolasta ensin Baltiaan ja sitten lähettävät tänne). Toivottavasti softa ei ole aivan yhtä kuraa...889 ja Pro vierekkäin, kokoero on huomattava.
Tilasin tuollaisen MC889A Pron nyt sitten 7010:n korvaajaksi (bigbox.fi:stä, varmaan tuovat sen juuri jostain Puolasta ensin Baltiaan ja sitten lähettävät tänne). Toivottavasti softa ei ole aivan yhtä kuraa...
Olen testannut Puolalaista MC7010 kotimaisissa 5G verkoissa muutama vuosi sitten ja 5G ei mennyt päälle.Tilasin tuollaisen MC889A Pron nyt sitten 7010:n korvaajaksi (bigbox.fi:stä, varmaan tuovat sen juuri jostain Puolasta ensin Baltiaan ja sitten lähettävät tänne). Toivottavasti softa ei ole aivan yhtä kuraa...
python3 tr069.py
Kun resetoit modeemin, niin se palauttaa oletus TR069 asetukset.Olisiko joku DNA:n omistava voinut ajaa tuon scriptin ja laittaa mulle vaikka YV:nä nuo tr069 tiedot, mitä tulostuu konsoliin ja tiedostoon?
Juu. Tiedän, mutta olisin koittanut laittaa nuo DNA:n TR069 asetukset omaan laitteeseen, niin ehkä olisi päässyt DNA:n päivitysten piiriin.Kun resetoit modeemin, niin se palauttaa oletus TR069 asetukset.
Tässä laitoit, että modeemissasi on DNA:n kiinteän asennuksen firmis, eli se saa kyllä DNA:n päivitysasetukset resetin jälkeen. Ne tulevat laitteen tiedostojärjestelmästä (firmwarelta), eikä sim-kortilta. B13 on uusin firmis tälle ja ei-FWA laitteelle.Juu. Tiedän, mutta olisin koittanut laittaa nuo DNA:n TR069 asetukset omaan laitteeseen, niin ehkä olisi päässyt DNA:n päivitysten piiriin.
MC889A_DNAY_B13_FWA
@Richard Modasin vähän tuota sinun Python scriptiä. Mielenkiintoista on se, että kun kirjoitat mitään tr069 asetuksia, niin se nollaa kaikki nuo asetukset.
Tuolta löytyy uusin versio. Käyttö menee:
Valinnaisia argumentteja on <ip> <username> <password> --settr069 "filename"Koodi:python3 tr069.py
Jos ei laita mitään, niin käyttää 192.168.8.1 admin 1234
Tämä tallentaa tr069.json tiedostoon tr069 asetukset, jos ei käytä --settr069 argumenttia.
Olisiko joku DNA:n omistava voinut ajaa tuon scriptin ja laittaa mulle vaikka YV:nä nuo tr069 tiedot, mitä tulostuu konsoliin ja tiedostoon?
Tässä kannattaa myös huomioida, että osassa SYV tolpista, joissa B20, B8, B28 on käytössä, ei ole low band comboja aktivoitu.Ilmeisesti tällä pitäisi toimia B20+B8 ja B8+B28 combot SYV alueella? Kaikki nuo taajuudet löytyy tukiasemasta, mutta saa B8 vaan käyttöön jos sen laittaa päälle. B20 jos aktivoi niin ei yhdistä B8 ollenkaan sitten.
B8 toimii, mutta ei missään CA combossa.
Testattu MR5200 Varkaus/Pieksämäki, vika ei laitteessa vaan SYV verkossa CA:ta ei ole täällä ko. taajuudelle aktivoitu.
Laitoin kysymystä eteenpäin, toivotaan selventävää lausuntoa alkuviikosta.
Tuliko tähän mitään, vai katosiko lomaposteihin?
Kyllä tuosta hieman keskustelua käytiin statuksella sisäinen.
Tästä voimme kuitenkin päätellä, että tosiaan b8 kombot ei ainakaan osassa SYV:iä ole päällä, mutta syitä voimme vain arvailla.
Toimijat ovat ainakin tietoisia asiasta ja siitä mitä täällä on kirjoitettu. Kannattaa tarkkailla miten tilanne kehittyy.
Mukana tulevan (tosin omani on MC7010) injektorin läpi menee kyllä tuo nopeus.Onkos jossain jo kerrottu kun en nyt hauilla löytänyt tuon mukana tulevan injectorin porttinopeuksia? Kun tuo modeemi kuitenki tukee 2,5Gb niin tukeekohan myös injektori?