mswhirl / autoflashgui Goto Github PK
View Code? Open in Web Editor NEWUtility to flash firmware to modems and run setup commands after the flash has completed
License: GNU General Public License v3.0
Utility to flash firmware to modems and run setup commands after the flash has completed
License: GNU General Public License v3.0
Traceback (most recent call last):
File "autoflashgui.py", line 231, in
print(sys.argv, sys.path, os.getcwd())
File "autoflashgui.py", line 36, in getDefaults
config[configKey] = record
ValueError: not enough values to unpack (expected 4, got 3)
[13508] Failed to execute script autoflashgui
This is stopping autoflashgui from starting in cmd.
I get this error message when trying to launch the program:
The version of this file is not compatible with the version of Windows you're running. Check your computer's system information to see whether you need an x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher.
When trying to run the GUI I get this error. Is there a workaround for this?
"urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.1.0h 27 Mar 2018'. See: urllib3/urllib3#2168
Hello.
I have a proposal for an enhancement
Currently the firmware file is defined via default.sini and is in the same folder of autofalshgui.
It seems that there is no check that the firmware file defined is not available.
This is my proposal
Create a firmwares sub-folder. The firmware files should be in this path
Modify the Python code to use for firmware files as default path the firmwares sub-folder
Modify the Python code to add a file check that the firmware file defined in defaults.ini is available.
Modify the Python code to add a browse control to select firmware file from firwmares sub-folder.
Thanks.
I have a proposal for changes about variant strings ind efaults.ini
Use variant in alphabetical order
Ddefine alwatys which model is (no provider name as inet or tiscali)
For multiple modem use different profile
use always before model name then provider.
Ex.
The source code that check OS language didn't work well.
In my OS (Windows 7 or Windows 10 x64 Italin) DDT4ALL started in English.
The old source code worked fine.
Hello.
Thanks for your tool.
Can i contribute with my knowledge to help you to implement mutli-language interface.
I already done a similar job for DDTALL.
It's very short job and help you to have several languages for your tool.
I believe that to have the tool in native language can help the user to be confident with the tool.
Thanks. Best regards.
Connect attempt 1
<Response [200]>
Modem up
Authenticating
Authentication failed, debug values are: []
Exception in Tkinter callback
Traceback (most recent call last):
File "/Users/marselo/Desktop/TCHNCLRHCK/autoflashgui-master/libautoflashgui.py", line 25, in srp6authenticate
token = br.find(lambda tag: tag.has_attr('name') and tag['name'] == 'CSRFtoken')['content']
TypeError: 'NoneType' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/init.py", line 1883, in call
return self.func(*args)
File "autoflashgui.py", line 213, in run
res = libautoflashgui.mainScript(self.host.get(), self.username.get().encode(), self.password.get().encode(), self.flashfirmware.get(), self.firmwarefile.get(), self.flashSleepDelay, self.methodActionList.get(), self.command.get(), self.splitActive.get(), self.ddnsService.get(), self.connectRetryDelay, self.interCommandDelay)
File "/Users/marselo/Desktop/TCHNCLRHCK/autoflashgui-master/libautoflashgui.py", line 132, in mainScript
srp6authenticate(br, host, username, password)
File "/Users/marselo/Desktop/TCHNCLRHCK/autoflashgui-master/libautoflashgui.py", line 55, in srp6authenticate
print(_("Exception: ") + str(sys.exc_info()[0]))
NameError: name 'sys' is not defined
Product Name
MediaAccess TG789MYRvac v2 HP
Software Version
16.3
Firmware Version
16.3.7190-2761003-20170907085601
Firmware OID
59b0ed8197956f5626e64b9a
Bootloader Version
2.0.89
Bootloader OID
unknown
Hardware Version
VBNT-L
OS: Windows 10
Hi there,
Thanks a lot for this tool.
I believe that I have followed the steps correctly, however at the end of running the pyhton script without errors Im unable to login with root:root.
Ive tried it several times, also restored the router a few times without any luck.
Any input would be greatfully appreciated.
Thanks a lot in advance!
I am running Linux Mint 19.1, installed python3.7
, installed robobrowser
using pip
, but when I run python autoflashgui.py
this is what happens:
Traceback (most recent call last):
File "autoflashgui.py", line 13, in <module>
import tkinter as tk
ImportError: No module named tkinter
That's where I get stuck. I also installed python-tk
and python3-tk
, but it did not help.
What should I do? I had a look in a few forums, but got no clue.
Thank you
is compatible for VBNT-K and sw AGTEF_2.1.0?
thanks.
Hello, I've done flashing 17.2 and then 16.3 on my TG789vac v2 using these instructions: https://whirlpool.net.au/wiki/hack_technicolor and those firmwares:
The output does not say anything bad, I can confirm version of the flashed firmware using the browser.
But after flashing and running commands I am unable to connect to device using ssh. It seems, the device is not listening on ports 22 or 6666.
When I try to run some command using browser, It get an error (but the POST request returns 200):
IP address: :::::::;/etc/init.d/dropbear restart
Invalid IP address Label within domain name has invalid syntax
Is there some problem with this rooting method?
I have the latest release of autoflashgui. I have a dga4132 with firmware 1.0.3 to try to root it. the webUI works fine. psw is admin/admin. I do not know which bank it has as active (probably bank 1?).
With the latest release it fails to root and or flash the firmware (again flashing 1.0.3) even when other firmwares are installed (still on bank1) like the 2.0.1
this is the log of the autoflashgui latest version (2 methods to flash, none work)
https://pastebin.com/aSyZvirc
this is the log of autoflashgui version dated 25/09/2018 which fails too
https://pastebin.com/HJ1pDQdu
what works with the dga4132 firmware 1.0.3 is autoflashgui version dated 19/01/2018
here is the log
https://pastebin.com/EdbqW5bn
all the versions works with the tg800vac though.
Commands needed for the root here:
https://www.ilpuntotecnico.com/forum/index.php/topic,80404.msg249992.html#msg249992
Once the modem is rooted the password needs to be changed so an ISP forced update doesn't override it and lock the modem. How about putting a button on autoflashgui to [Confirm Secure Root] ie root password changed?
Discussion & commands here: hack-technicolor/hack-technicolor#68
@mswhirl - let us know if this would be reasonably easy, or quite a bit of work?
If it helps, I can send you a wireshark trace of the login process, firmware flash form post/response, and DDNS form post/responses? And some screenshots
In my Windows 7 x64 Italian OS the autoflash.py works fine as expected (started the program with italian interface).
The exe didn't work as expected (started the UI in English).
Show "GUI language = xx" two times.
Please check.
Hi all,
I would like create a simple script only for the authentication. I've customized "libautoflashgui.py" but I've a problem with my Technicolor AGTHP_1.1.2:
import sys
import mysrp as srp
from urllib.parse import urlencode
import binascii, json, urllib, socket, time
from robobrowser import RoboBrowser
host = '1.1.1.1'
username = 'user'
password = 'pass'
br = RoboBrowser(history=True, parser="html.parser")
try:
br.open('http://' + host)
token = br.find(lambda tag: tag.has_attr('name') and tag['name'] == 'CSRFtoken')['content']
print('Got CSRF token: ' + token)
usr = srp.User(username, password, hash_alg = srp.SHA256, ng_type = srp.NG_2048)
uname, A = usr.start_authentication()
print(("A value ") + str(binascii.hexlify(A)))
br.open('http://' + host + '/authenticate', method='post', data = urlencode({'CSRFtoken' : token, 'I' : uname, 'A' : binascii.hexlify(A)}))
print("br.response " + str(br.response))
j = json.decoder.JSONDecoder().decode(br.parsed.decode())
print(("Challenge received: ") + str(j))
M = usr.process_challenge(binascii.unhexlify(j['s']), binascii.unhexlify(j['B']))
print(("M value ") + str(binascii.hexlify(M)))
br.open('http://' + host + '/authenticate', method='post', data = urlencode({'CSRFtoken' : token, 'M' : binascii.hexlify(M)}))
print("br.response " + str(br.response))
j = json.decoder.JSONDecoder().decode(br.parsed.decode())
print("Got response " + str(j))
if 'error' in j:
raise Exception(("Unable to authenticate (check password?), message:"), j)
usr.verify_session(binascii.unhexlify(j['M']))
if not usr.authenticated():
raise Exception(("Unable to authenticate"))
else:
print("Autenticato!")
except Exception:
print(("Authentication failed, debug values are: "))
print(("Exception: ") + str(sys.exc_info()[0]))
traceback.print_exc()
raise
It produces:
Got CSRF token: 8f06b22c00b9767cf42c2daa1a575e1bd63727332db8c304288edefc127acfe3
A value b'0b68d22f491829bf8517303de617925be6cef22abfaa8a922b26410868c696aa4985958e3075f0af1dab2_bbd240fde23558fef91591be9a2212b69813bf07678d5c0fbe7f6a3131eb794cdf25d7edc34295e90179e96e13f7e4435985e2627cbe2b5efcb826584f07cc8d19e35d310e816b6a1451575c62e26cfcb208a5529c2276159927b28a9f72f9cbf9142030b4ee30c8f06308930bcd7fa0fcd78a10aa89c052417f8c56a7d779bcb0752cb651526033f0f7ba3652dc986f761e2a1b34b28330689d812989eac15da87fddef51b3d76726aa4293655279c8b36e4242750430a36a39c37696bcdd23f1d563f8494603932c3dbd94be8ee61f293c5cb247d'
br.response <Response [200]>
Challenge received: {'B': '6E8A096DE3C9CCA5239827A74DF36B930F9D421D4789331287B2745B4B1ED8C61C1E0A436A8E26F5A2339CD20CF0F9F1A755C0622DCE0143ED1B468EF98FE8736BE099BDF94118625F2241BB9BA22C7FA3A010634635F82114764D669C95A4128F2803E65069557EB545014E07B9C60D6217D919BE3F81C3195C3833EEF7F34D37F5D3DC768DED014B38DB751E0B752E95C42B553F16E8AF8F04B3F45CAC417BD962C1ADEBA42F9C43E1ED131E01E3AFCFA4B09D159843267147A66744D4B14652E1738108C63D59F18229C3F3279565615A5735E8ED5B356AED07E08AC9787EE131C8EFCE8ECE4E3ACD10A5825597CD38B76FA1F99A6D9EF5208C18FFF99234', 's': 'c3e027d8'}
Authentication failed, debug values are:
Exception: <class 'TypeError'>
Traceback (most recent call last):
File "auth.py", line 30, in <module>
M = usr.process_challenge(binascii.unhexlify(j['s']), binascii.unhexlify(j['B']))
File "/home/yo/autoflashgui/autoflashgui-master/mysrp.py", line 304, in process_challenge
self.x = gen_x( hash_class, self.s, self.I, self.p )
File "/home/yo/autoflashgui/autoflashgui-master/mysrp.py", line 194, in gen_x
return H( hash_class, salt, H( hash_class, username + six.b(':') + password ) )
TypeError: Can't convert 'bytes' object to str implicitly
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "auth.py", line 51, in <module>
traceback.print_exc()
NameError: name 'traceback' is not defined
Any tips?
Thank you very much!
pip install robobrowser==0.5.3
and stared:
Traceback (most recent call last):
File "autoflashgui.py", line 14, in <module>
import os, sys, time, socket, tkinter.filedialog, liblang, libautoflashgui
File "/Users/francyesco/Downloads/autoflashgui-master/libautoflashgui.py", line 10, in <module>
from robobrowser import RoboBrowser
File "/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/site-packages/robobrowser/__init__.py", line 3, in <module>
from .browser import RoboBrowser
File "/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/site-packages/robobrowser/browser.py", line 8, in <module>
from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/site-packages/werkzeug/__init__.py)
tried pip install Werkzeug==0.16.1
than
['autoflashgui.py'] ['/Users/francyesco/Downloads/autoflashgui-master', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python37.zip', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/lib-dynload', '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/site-packages'] /Users/francyesco/Downloads/autoflashgui-master
['/Users/francyesco/Downloads/autoflashgui-master/autoflashgui.py'] ['/Users/francyesco/Downloads/autoflashgui-master', '/Users/francyesco/Downloads/autoflashgui-master', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python37.zip', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/lib-dynload', '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Users/francyesco/Downloads/autoflashgui-master/venv/lib/python3.7/site-packages'] /Users/francyesco/Downloads/autoflashgui-master
Traceback (most recent call last):
File "/Users/francyesco/Downloads/autoflashgui-master/liblang.py", line 27, in language_default
if argv[1] == '-l':
IndexError: list index out of range
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "autoflashgui.py", line 239, in <module>
liblang.init_language(sys.argv, sys.path, language)
File "/Users/francyesco/Downloads/autoflashgui-master/liblang.py", line 47, in init_language
lan = language_default(argv)
File "/Users/francyesco/Downloads/autoflashgui-master/liblang.py", line 31, in language_default
lancode2=lancode[0:2]
TypeError: 'NoneType' object is not subscriptable
Finally got it running using also the -l var
python autoflashgui.py -l en
I kept getting a failure with "werkzeug import cached_property". Had to update /usr/local/lib/python3.8/site-packages/robobrowser/browser.py to:
from werkzeug.utils import cached_property
Proposals of changes/improvements for autoflashgui
Check Firmware file (define in defaults.ini) availbility.
Add "Firmware" sub-folder (for firmware files)
Add a "Browse" control to select firmware file (also keep setting in defaults.ini)
Replace "Modem" box selection check box (on the right) with a drop down list selection type.
Hi,
I get an SSL-error message when I try to connect to my device. Do you have an advice for what I should try to solve the problem?
Device info:
Technicolor TG799vacXTREAM
Software Version 18.1
Firmware Version 18.1.0297-1321006-20191213145958
Hardware Version VANT-W
Bootloader Version 15.38.724-0000000-20150917132051-
ISP: Telenor, Sweden
I have double checked and tripplechecked that I have entered the right password. This is the printout in the terminal window:
Authenticating
Exception in Tkinter callback
Traceback (most recent call last):
File "site-packages\urllib3\connectionpool.py", line 600, in urlopen
File "site-packages\urllib3\connectionpool.py", line 343, in _make_request
File "site-packages\urllib3\connectionpool.py", line 849, in validate_conn
File "site-packages\urllib3\connection.py", line 356, in connect
File "site-packages\urllib3\util\ssl.py", line 372, in ssl_wrap_socket
File "ssl.py", line 412, in wrap_socket
File "ssl.py", line 850, in _create
File "ssl.py", line 1108, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verif
y failed: unable to get local issuer certificate (_ssl.c:1045)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "site-packages\requests\adapters.py", line 445, in send
File "site-packages\urllib3\connectionpool.py", line 638, in urlopen
File "site-packages\urllib3\util\retry.py", line 398, in increment
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='192.168.10.1', port=
443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationEr
ror(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to ge
t local issuer certificate (_ssl.c:1045)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "tkinter_init_.py", line 1702, in call
File "autoflashgui.py", line 191, in run
res = libautoflashgui.mainScript(self.host.get(), self.username.get().encode
(), self.password.get().encode(), self.flashfirmware.get(), self.firmwarefile.ge
t(), self.flashSleepDelay, self.methodAction.get(), self.command.get(), self.spl
itActive.get(), self.ddnsService.get(), self.connectRetryDelay, self.interComman
dDelay)
File "libautoflashgui.py", line 69, in mainScript
br._update_state(r)
File "libautoflashgui.py", line 14, in srp6authenticate
br.open('http://' + host)
File "site-packages\robobrowser\browser.py", line 205, in open
File "site-packages\requests\sessions.py", line 512, in request
File "site-packages\requests\sessions.py", line 644, in send
File "site-packages\requests\sessions.py", line 644, in
File "site-packages\requests\sessions.py", line 222, in resolve_redirects
File "site-packages\requests\sessions.py", line 622, in send
File "site-packages\requests\adapters.py", line 511, in send
requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.10.1', port=443)
: Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(
1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get lo
cal issuer certificate (_ssl.c:1045)')))
Hello.
I have a prossoal about a moving of some files of main folder.
build.cmd and clean.cmd can be moved under tools sub-older (of course you have to modify bild.cmd/clean.cmd to reflect the new location) to have all commands unddr tools sub-folder.
What do you think about it?
I pushed this morining the PR.
I added also some checks about file/folfers exist
Could I help in providing keys for this board? The router is from a relatively small ISP in Sweden called ownit.
I also wonder if it is safe to flash the firmware which is for the Telia variant?
https://hack-technicolor.readthedocs.io/en/stable/Firmware%20Repository/#telia-wifi-router-plus
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.