Con l'avvento della fibra 2.5 gigabit questo modello di router diverrà il più popolare. Quindi proporrei, se possibile, e sarei anche disposto ad occuparmene io, di fare un po' di ordine in questo thread molto disordinato. Scusate, andrò parecchio off topic in questo post.
Innanzitutto salve a tutti, io sono Tranopax, sono un nabbo e mi sono approcciato alla scena di rooting e modding dei router TIM perchè avevo due esigenze:
1) Impostare un'impostazione DNS globale dal router senza dover impostarla su ogni singolo dispositivo di casa mia
2) poter utilizzare un router di terze parti come secondo access point (slave) in modo che col cellulare posso camminare da retewifi a retewifi in parti diverse di casa mia senza alcun litigio fra le reti e problemi di buffering. Sì, di default è possibile realizzare questa cosa solo se si posseggono due modem tim (anche diversi).
Con l'originale TIM HUB (DGA4132) installare l'ansuel gui era la soluzione più semplice che sistemava tutto, ma da quel che vedo non è compatibile con questo modello e ansuel è sparito dalla faccia della terra.
temo sia necessario fare il root e applicare queste modifiche elencate in questa pagina delle wiki
https://hack-technicolor.readthedocs.io/en/stable/UnlockComunque, riassumendo, ecco i due post chiave per fare il root:
METODO DA LINUX:
Ok in questo post cercherò di fare una guida più completa su come ho sbloccato il Tim Hub+.
Requisiti:
- Un dominio con un certificato ssl valido (potete prenderne uno gratis da Freenom e poi generare un certificato con certbot, non sto a spiegare come) che punta verso 10.42.1.1 (dopo verrà spiegato perché).
- Un computer con una porta Ethernet e che abbia come sistema operativo una distribuzione Linux desktop (NON funzionano le macchine virtuali).
- Un Tim Hub+ con qualsiasi firmware (a me è andato con il 1.1.1).
Preparazione delle interfacce di reti:
Il Tim Hub+ ascolta di default richieste da parte di un server DHCP sulla VLAN 83, dobbiamo quindi crearne una dal nostro computer per procedere.
- Aprite il terminale e eseguite nm-connection-editor, si aprirà una finestra con la configurazione della rete.
- Cliccate sulla interfaccia che corrisponde alla vostra porta Ethernet, andate nelle impostazioni IPv4 e selezionate su metodo "Condiviso con altri computer", dopodiché salvate.
- Cliccate nel bottone "+" che sta al fondo della finestra e selezionate come tipo di connessione VLAN.
- Dopo aver creato la VLAN vi apparirà una finestra per la configurazione, impostate come "Interfaccia superiore" quella che corrisponde alla vostra porta Ethernet fisica, impostate 83 come Id, e selezionate nuovamente "Condiviso con altri computer" sulle impostazioni IPv4, infine salvate.
- La VLAN dovrebbe attivarsi in automatico una volta creata, in caso contrario attivatela voi dal pannello delle reti.
Risultato che dovreste avere della configurazione di rete: https://imgur.com/a/Ufkqa07
Sblocco del router [Metodo "NGINX"]:
tch-exploit è l'utility che useremo per sbloccare il router. Dato che però al momento non permette di configurare un server HTTPS, utilizzeremo NGINX come strada alternativa che farà da reverse proxy.
Ho compilato questa build di NGINX statica da utilizzare appositamente come proxy per le richieste dell'ACS, potete scaricarla qui: https://drive.google.com/file/d/1CNx8ze2GuM8vBDfbwrD9HwHkjKgxIqsw/view
La configurazione di base (nginx.conf) punta già verso un altro server HTTP, dovete soltanto aggiungere il vostro certificato SSL valido (fullchain.pem e privkey.pem dentro conf). Ricordatevi di avviarlo eseguendolo da terminale con ./nginx (attraverso i permessi root in caso utilizziate la porta 443).
Configurato il nostro reverse proxy, dobbiamo ora procedere con la fase più importante:
1. Scaricate tch-exploit da qui: https://github.com/BoLaMN/tch-exploit/releases/tag/2.0.2 e estraetelo.
2. Aprite il terminale nella directory dove si trova il programma e eseguite tch-exploit con questa configurazione:
sudo ./tch-exploit-linux --acsurl="https://VOSTRODOMINIO.xyz/" --ip="10.42.1.1" --dhcponly
Rimpiazzate VOSTRODOMINIO.xyz con quello che punta a 10.42.1.1
(L'ip 10.42.1.1 viene impostato automaticamente dalla configurazione delle interfacce di default e sarà usato dal router come gateway per la rete)
3. Preparate un altro terminale sempre nella stessa cartella ma con questo comando SENZA eseguirlo:
sudo ./tch-exploit-linux --port=4346 --ip="10.42.1.1"
(La porta è la stessa che ho impostato di default su nginx.conf)
4. Se non lo avete già fatto, collegate la porta ethernet del vostro computer a quella WAN del router e attivate la interfaccia.
5. Fate il ripristino di fabbrica al Tim Hub+, se non volete accedere alla webui vi basta tenere premuto il tasto reset per circa 8 secondi.
6. Attendete il primo avvio del router, se avete collegato correttamente le porte dovreste vedere dopo un po' il led "Linea" diventare verde.
7. Appena il led "Web" diventa verde (dovreste anche notare delle informazioni apparire nei log di tch-exploit), eseguite l'altro comando comando che avevate preparato.
8. Dopo qualche secondo dovreste iniziare a vedere delle richieste HTTP nel processo che avete appena eseguito, e infine un messaggio dove vi viene chiesto di premere il tasto WPS.
9. Premete il tasto WPS (singola pressione), se non appare nessun led significa che il comando di sblocco è stato eseguito.
10. Connettetevi con il vostro client ssh preferito a [email protected].
Spero di essere stato un po' chiaro con la procedura di sblocco, nel caso abbiate dubbi chiedetemi pure.
PS: Questa guida può funzionare anche nello Smart Modem Plus e nel Tim Hub "liscio" se possiedono almeno il firmware 2.3.0, ovviamente per questi modelli rimane consigliato il classico sblocco attraverso downgrade e autoflashgui in quanto più semplici.
Per farlo da Windows è più complicato ma a quanto pare il procedimento sarebbe questo:
CE L'HO FATTAAAAAAA, MA DA WINDzozZ.... ora vi spiego:
MATERIALI OCCORRENTI:
- Firmware tutti, almeno ad oggi fino al AGTHF_1.1.2_001
quindi non state ad usare vecchi firmware se no dovrete fare upgrade
- un dominio tipo let's encrypt con data scadenza valida
e quindi le relative chiavi pubbliche e private
- il settaggio dynamic dns sul proprio modem di casa che ridiriga
il dominio in questione sull'Ip dinamico del proprio modem di casa
- una scheda di rete aggiuntiva con VLAN ID,
- Windows con Linux WSL per far girare nginproxy e tch-exploit-linux,
- Modifiche al registro di Windows per Internet Connection Sharing,
- nginxproxy,
- tch-exploit-linux.
PROCEDIMENTO:
Ho scaricato nginxproxy, compilato staticamente da @imdadani che ho estratto su windows WSL.
(ah, ricordatevi di aggiungere nobody su /etc/group se non ce l'avete
e ricordatevi di lanciarlo da root perché lega pure la porta 80 anche se non serve)
Nella cartella conf ci copiate il file di certificato pubblico multiplo e quello di chiave privata.
i nomi non hanno alcuna rilevanza. Ricordatevi però che sotto le rispettive voci
ssl_certificate ci metterete il file con la catena di certificati (cert.pem da me)
ssl_certificate_key ci metterete la chiave privata (key.pem da me)
La chiave pubblica, la mia, sono 3 blocchi che iniziano con -----BEGIN CERTIFICATE-----
che contengono i tre certificati della mia catena di certificazione che parte da ISRG Root X1, continua con R3 e infine www.miodominio.com.
La chiave privata è un unico blocco che inizia con -----BEGIN RSA PRIVATE KEY-----
Editate nginx.conf per specificare i nomi delle chiavi che userete.
Sempre nella nginx.conf settate, nella listen
la PORT LAN sulla quale avete ridiretto la connessione ACS che
arriverà sul modem che fornisce internet, e andrà al pc locale
tramite port-forward.
io avevo ridiretto la porta WAN TCP x.x.x.x:8443 sulla LAN TCP 192.168.1.30:8443
dove 192.168.1.30 è l'Ip del pc con Windows usato per il sbloccare il modem.
Quindi il mio nginx dovra' ascoltare la porta LAN 8443. Ci metto quindi
listen 8443 ssl default_server;
listen [::]:8443 ssl default_server;
Tutto bello ma come verifico di non aver sbagliato?
Sempre in nginx.conf, modifico temporaneamente il proxy_pass
e lo faccio puntare ad un server qualsiasi, ma che sia http
proxy_pass http://www.slackware.com;
Proviamo? Dal pc di casa eseguo:
openssl s_client -connect www.miodominio.com:8443
GET / HTTP/1.0 (due volte invio)
a questo punto la richiesta di connessione (SSL) su
https://www.miodominio.com:8443
arriva all'IP pubblico del mio modem-internet e tramite
port-forward del modem-internet va sulla porta locale (SSL)
https://192.168.1.30:8443
che è gestita da nginxproxy che praticamente
trasforma https in http e ridirige su
http://www.slackware.com sulla porta 80
Quindi se tutto funziona, dopo i due INVIO,
dovrete veder passare i codici html della pagina di www.slackware.com.
Rimettete pure proxy_pass http://localhost:4346; nella conf. di nginxproxy.
(il numero di porta può essere cambiato, ma deve corrispondere allo stesso
numero di porta nel successivo comando tch-exploit-linux)
Avevo già una scheda di rete USB funzionante sotto Windows con VLAN ID modificabile
Ho connesso la LAN/WAN del DGA4331 sul connettore della scheda di rete USB
e gli ho assegnato (Proprietà-Configura-Avanzate) VLAN ID 83
Disabilito momentaneamente la scheda di rete che va su Internet.
Se non l'ho fatto prima RESETTO il modem alle impostazioni di fabbrica
questo perché un modem con configurazione estesa ha il cwmp disabilitato.
Dal menù del modem: Gateway-Configurazione-Reset
Se è già stato resettato riavvio il DGA4331, ma non è necessario:
basta scollegare e ricollegare il cavo WAN/LAN per far riassegnare gli IP
Adesso devo fornire due IP, uno per entrambi i lati del cavo
che collega il pc al DGA4331.
Uso un mio programma DHCP che ascolta i mac-address e assegna
degli IP prestabiliti, che quindi sono sempre gli stessi
sempre 58.162.0.12 per il mac corrispondente al DGA4331
e sempre 58.162.0.1 per il mac corrispondente alla scheda-usb con VLAN lato pc
Vengono assegnati due Ip dinamici, ma senza lease, quindi l'IP dura un tempo infinito.
Il programma poi tramite option 43 manda solo al DGA4331 (58.162.0.12)
il comando di connessione a https://www.miodominio.com:8443
Credo si possa fare la stessa cosa con tch-exploit-linux usando l'opzione --dhcponly
# ./tch-exploit-linux --acsurl="https://www.miodominio.com:8443/" --ip="58.162.0.1" --dhcponly
Aspetto che il mio programma mi segnali che ha dato l'ACK
alla richiesta DHCP su entrambi i lati, (quindi i due IP sono confermati),
e noto che non appena il modem riceve l'IP accende di verde Power Linea
e finalmente anche Web (che inizia a lampeggiare)
Infatti il modem ha ricevuto insieme all'Ip anche l'opzione 43
che lo comanda di collegarsi.
Allora abilito la scheda di rete che mi da internet,
quella che avevo prima disabilitato, e poi la condivido
(Proprietà-Condivisione-Consenti ad altri utenti di collegarsi...)
avendo l'accortezza di aver settato le chiavi di registro di Windows
così da far condividere Internet tramite routing su IP 58.162.0.1
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters]
"ScopeAddress"="58.162.0.1"
"ScopeAddressBackup"="58.162.0.1"
così l'IP della scheda sul pc viene ad essere identico a quello
che gli ho dato io via mio DHCP). Ma questa condivisione mi attiva
un secondo DHCP di Windows che assegna ip su 58.162.0.X
e che quindi potrebbe far cambiare l'IP del modem,
(ma non del pc, 58.162.0.1 perché è fissato dalla condivisione internet)
Test eventuale: se io dal pc facendo ping 58.162.0.12 sento la risposta,
significa che il modem DGA4331 è ancora con quell'IP quindi proseguo,
se no eventualmente rifaccio la procedura.
Nota aggiuntiva: Se dovessi rifar tutto e quindi ri-DISABILITARE lato pc
la scheda di rete collegata al DGA4331, ho notato che disabilitando
la scheda di rete condivisa, il DHCP di Windows rimane ATTIVO.
Quindi PRIMA tolgo la Condivisione, POI disabilito la scheda di rete)
Adesso, sempre da WSL, dopo aver precedentemente estratto
tch-exploit-linux, lo lancio:
# ./tch-exploit-linux --port=4346 --ip="58.162.0.1"
Quindi ricapitolando, l'opzione 43 del DHCP comanda il modem
in 58.162.0.12 di collegarsi al https://www.miodominio.com:8443
la connessione viene ridiretta dal port-forward a https://192.168.1.30:8443
la connessione viene presa da nginxproxy che a sua volta la
dirotta in http://192.168.1.30:4346
e questa connessione viene gestita da tch-exploit-linux
Alla fine vedrete scorrere un sacco di scritte verdi,
vedrete passare il file in bash che modifica il dropbear ecc
>>> .STS REQUEST
poi vedrete questo
*** PRESS AND HOLD THE WPS BUTTON ON YOUR GATEWAY ***
Toccate il tasto WPS con un tocco breve, se funziona non si deve accendere
la luce gialla del WPS e nemmeno rossa ma vedrete
>>>WPS CALLBACK
e poi All done
A questo punto tch-exploit SI FERMA e restituisce il prompt
Questo è il segno che tutto è andato bene.
Cambiate i cavi, e collegatevi alla porta LAN del DGA4331
che vi assegnerà un IP 192.168.1.x e lanciate ssh
$ ssh 192.168.1.1 -l root
[email protected]'s password:
BusyBox v1.31.0 () built-in shell (ash)
_______ __ __ __
|_ _|.-----.----.| |--.-----.|__|.----.-----.| |.-----.----.
| | | -__| __|| | || || __| _ || || _ | _|
|___| |_____|____||__|__|__|__||__||____|_____||__||_____|__|
N E X T G E N E R A T I O N G A T E W A Y
--------------------------------------------------------------------
NG GATEWAY SIGNATURE DRINK
--------------------------------------------------------------------
* 1 oz Vodka Pour all ingredients into mixing
* 1 oz Triple Sec tin with ice, strain into glass.
* 1 oz Orange juice
--------------------------------------------------------------------
Nota finale: la procedura una volta avviata è facile, riesce alla prima
e soprattutto è ripetibile.
Infatti dopo aver provato col firmware 1.0.1 ho messo config estesa
per fare gli aggiornamenti del firmware, poi ho aggiornato alla 1.1.2_001,
poi ho resettato per togliere la config estesa
e ho ottenuto di nuovo il root YEAH!
Tuttavia, non mi è ancora chiaro se entrambi i metodi sono attuali nel 2024, visto che ci sono altri post di uomouokko che parlando di certificati incompatibili e simili nelle pagine precedenti.
Aggiornerò questo post con i miei progressi man mano che li faccio lungo questo arduo percorso, sia per appuntarmeli, che per aiutare altri coraggiosi. N.B. se qualcosa si rompe non sono responsabile perchè ne capisco meno di voi.
Parte 0: preparazione. Avrete bisogno di una connessione internet
wi-fi (il mio fisso ha due porte ethernet, ho provato ad usarle, ma per me non ha funzionato) in contemporanea a quello che dovrete fare con il TIM Hub+
attraverso la porta ethernet, ovviamente la connessione wifi deve avvenire attraverso un altro router. Non so se è servito a qualcosa, ma su questo altro router ho aperto, per il mio pc, le porte TCP 80, 83 e 443. Il metodo per sbloccarle dipenderà da router a router, ma non è difficile.
Firmware usato sul timhub+ è stato AGTHP 1.1.1 non è ben documentato nei thread quali firmware funzionino oppure no, ma da quel che ho capito 1.1.1 e 1.1.2 sono quelli consigliati. Se non avete questo firmware installato lo potete ottenere da questo sito web:
https://hack-technicolor.readthedocs.io/en/stable/Repository/#dga4331-vcnt-3Scaricatelo su un dispositivo. Resettate il router alle impostazioni di fabbrica premendo sul retro il pulsante reset con una matita per 8 secondi, dopodichè aspettate il riavvio, accedete con la password di default scritta sul retro del vostro TimHub+, e vi sarà apparsa una nuova mattonella che vi permetterà di abilitare la configurazione estesa. Fatelo, dopodichè riaccedete.
Nella mattonella "generali"/"modem", abilitando le opzioni avanzate, vi apparirà l'opzione di aggiornare il firmware caricando quello che avete scaricato. Fatelo
ottenere Linux: Ho scelto Linux Mint e ho seguito la guida ufficiale per ottenere una USB live di Linux Mint. Dopodichè ho installato Linux Mint creando una partizione su un hard disk che aveva spazio, facendo coesistere Windows e Linux. Avvio in Linux
ottenere un dominio, la parte più difficile. Freenom non funziona più, perciò mi sono rifatto a questa lista su reddit
https://www.reddit.com/r/freenom/comments/16kwmm2/alternatives_to_freenom_megalist/ e ho trovato una pagina github dove è descritto un metodo per ottenere un subdominio facilmente (is-probably.gay) . Come DNS del dominio ho impostato il mio IP esterno.
Dopodichè ho creato il webserver su linux seguendo questa guida
https://www.linuxfordevices.com/tutorials/ubuntu/install-web-server-host-website-linux (N.B. ci sono degli errori nella guida: usate sempre sudo e state attenti quando create la directory del vostro webserver perchè la guida per errore dice di creare la directory /var/vostrodominio.com due volte)
Per ottenere il certificato ho usato Certbot, installandolo come da questa guida
https://www.digitalocean.com/community/tutorials/how-to-use-certbot-standalone-mode-to-retrieve-let-s-encrypt-ssl-certificates-on-ubuntu-16-04. Dopodichè ho aperto la porta 80 e 443 sul router per accesso all'ip del mio server, e poi ho seguito questa guida per ottenere e applicare i certificati ssl
https://www.linuxbabe.com/ubuntu/https-apache-letsencrypt-ubuntu (
n.b. se c'è qualche problema purgate e reinstallate apache2)il che mi ha fatto ottenere, finalmente, il certificato SSL!
N.B. SEGNATEVI IL PERCORSO DEI CERTIFICATI DA QUALCHE PARTEdopodichè, rimetto il dns del dominio che ho creato a 10.42.1.1 , riaggiorno/rifaccio
di nuovo i certificati SSL, e seguo passo passo le istruzioni.
Parte 1: configurazione connessioneSeguite passo passo le istruzioni provviste per configurare correttamente la vostra porta ethernet
Parte 2: Nginx proxyPer avviare nginx proxy, scarichiamo la build che ci è stata precompilata cordialmente e estraiamola dove ci pare. Dopodichè andiamo nella cartella conf a modificare il file di configurazione facendo i seguenti step:
click destro in un punto della cartella e selezionare "apri nel terminale"
scrivere sudo nano nel terminale
trascinare il file all'interno del terminale, così che il percorso si completi automaticamente.
invio
Come specificato, modificare il config per includere i percorsi dei certificati. Per me poi, ho scoperto successivamente esser necessario scrivere all'inizio del config la seguente linea:
user nobody nogroup;
premere ctrl+o, invio e ctrl+x per salvare.
Per avviare nginx, aprire un terminale nella cartella di nginx, scrivere sudo e trascinare dentro il terminale il file nginx. Premere invio. Se dà problemi, forse è perchè dovete spegnere il servizio apache2, che dovete spegnere col seguente comando
sudo service apache 2 stop
controllate il suo status con il comando
systemctl status nginx
Parte 3: tch-exploitok, per me le tempistiche, in confronto a quelle riportate nella guida, sono state molto lunghe, davvero tantissimo.
Ecco com'è andata quando ho fatto il root:
Ho spento il wifi del computer per evitare problemi di tch-exploit nell'identificare le reti (ethernet) su cui lavorare, e poi ho avviato tch-exploit come dettagliato sopra nella guida.
Non funzionava, nel senso che dopo la comparsa della lucina web, e quindi avviato tch-exploit nel secondo terminale, non ho visto succedere nulla per 5 minuti buoni. Ho riacceso il wifi per fare qualche ricerca su internet e poi sono andato al bagno perchè mi scappava lo stimolo, lasciando lì tutto in sospeso. Quando sono tornato,
non era ancora successo niente nella seconda finestra, e questo in realtà era un comportamento inusuale perchè mi ero sempre fermato quando anzichè le scritte verdi mi erano apparse,
nella seconda finestra, scritte insensate ma NON verdi. Dopo pochi secondi, ho visto le scritte verdi apparire!
In totale, da inizio a fine procedura saranno passati 20 minuti buoni. Ma ce l'ho fatta sono al settimo cielo
da qui in poi si tratta di seguire la wiki per i successivi step
https://hack-technicolor.readthedocs.io/en/stable/Hacking/PostRoot/