|
|
|
|
Strumenti |
19-07-2018, 12:49 | #41 |
Senior Member
Iscritto dal: Nov 2002
Città: Pesaro
Messaggi: 2048
|
@palmerpalm grazie mille per l'HowTo completo linkato sopra.
__________________
Trattative concluse con: Neo1985, afico, _HackAj_, huangwei, Ashardalon, Morpheus90, Black_Nexus_500, musodatopo, nongio, seingal, Sir Alamon, Decagrog, DexTer82, capzero Trattative sulla baya: feedback + 200 - 100% Positivo |
19-07-2018, 14:55 | #42 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerpalm
Se sei d'accordo pensavo di mettere le indicazioni sul tuo tool nel thread del modem DVA-5592 in quanto mi sembra il posto più indicato (non riguarda il mod del frimware in quanto funziona anche con il fiemware standard), Se sei d'accordo, copia il tuo post in uno nuovo nel thread del DVA-5592 e lo linko nei primi post.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live Ultima modifica di Bovirus : 04-08-2018 alle 10:33. |
19-07-2018, 19:04 | #43 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
adbtools2
Quote:
|
|
19-07-2018, 20:27 | #44 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerpalm
Grazie. Ho già messo il link al tuo post 3300 nei primi post. Per favore dai un'occhiata al post 3301 dove ho ricopiato il tuo post evidenziando alcune parte secondo me importanti. Dinmmi per favore cosa ne pensi.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live |
22-07-2018, 10:21 | #45 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerpalm
Avrai una serie di proposte di modifica se possibili per adbtools2 Impostazione come percorso predefinito per load/save dei file della cartella da cui si lancia confeditor.exe Aumento dell'altezza della finestra principale per avere una riga in più in "Router info" (vedi dopo andrebbero aggiunte due righe ma c'è già una riga vuota) Aumneto nel riquadro "Router Info" della larghezza della colonna a sinistra (decsrizione valori) e riduzne della largehzza della coonna a destra (valori). C'è spazio vuoto snella colonna a destra - il valore più lungo è il Serial Number. Aggiunta nel titolo della finestra in alto a sinistra la versione di "ADB Config Editor". Es quella attuale "ADB Config Editor 0.5.13.4" Nella sezione "Router Info" Spostamento di "Router Customer ID" dop la riga "Model name" Spostamento di "Router IP" dopo la riga "Serial Number" Spostamento di "Router NetMask" dopo la riga "Router IP" E qui finiscono i valori statici non modificabili Ora passiamo ai valori modificabili da menu. Modifica di "BSD GUI visible" in "Restricted web GUI visible" (per allnearlo come voce a quella del menu) Aggiungta della riga "Restricted CLI command enabled" con relativo valore true/false (oggi la riga non c'è) Spostamento di "Firmware upgrade allowed" dopo la riga "Restricted CLI command enabled" Spostamento di "Firmware downgrade allowed" dopo la riga "Firmware upgrade allowed" Ho usato "Firmware" al posto di "Fw" perchè credo ci stia. Ho usato "allowed" al posto di "permitted" perchè credo sia più corretto. Aggiunta della riga "Fix dlinkdns - dlinkddns" con relativio valore true/false (oggi la riga non c'è) In questo modo i valori statici sono tutti nella prima parte della sezione "Router info". Poi ci sono i valori modificabili con lo stesso ordine e nome del menu di sblocco. Nel menu Edit la voce "Preferences" non essendo attiva sarebbe preferibile metterla in grigio (non attiva) o modificare il testo per evidenziare che non è attiva. Es."Prefernces (not yet implemented)". Che ne dici?
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live Ultima modifica di Bovirus : 22-07-2018 alle 11:25. |
22-07-2018, 18:55 | #46 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Scusa del ritardo con cui ti rispondo, grazie dell'editing, adesso è assai più chiaro e si si segue più facilmente!
|
23-07-2018, 05:55 | #47 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerplan
Grazie. Figurati. Puoi per favore dare un'occhiata all'elenco delle modifiche proposte nel mio post precedente? Grazie.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live |
23-07-2018, 23:03 | #48 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
1. ho implementato la voce di menù "Edit -> Preferences" che permette di selezionare se si vuole o meno visualizzare i messaggi di debug sulla finestra della console (default è "yes") e se si vuole impostare la cartella di upload/download dei file di configurazione (il default è quella di impostarla all'ultima cartella utilizzata). La configurazione viene salvata in un file di nome .confedit.ini che si trova nella home dir dell'utente su Linux o nella directory APPDATA su Windows 2. la dimensione delle colonne sulla finestra Router Info purtroppo cambiano tra Linux e Windows: su Linux, dove modifico il programma, le dimensioni sono corrette, mentre su windows la seconda colonna risulta essere con parecchio margine. Per non differenziare tra le due versioni lascio così com'è, credo sia un problema minore 3. gli altri suggerimenti li devo ancora guardare |
|
24-07-2018, 05:55 | #49 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerplam
Grazie per le modifiche (speriamo si possano fare tutte quelle indicate - alla fine per la maggior parte è solo un riordino/modifica delle voci visualizate). Secondo me sarebbe preferibile - che la cartella di default se non impostata nel file di configurazione sia la cartella dove c'è il comando confedit. - che il file di configurazione sia memorizzato nella cartella locale dove c'è il comando confedit. Questo per mantenre la portabilità dello strumento.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live |
25-07-2018, 22:50 | #50 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Come diventare root su questo router
Sono riuscito a diventare "root" sul modem e, quindi, potenzialmente a
poter modificare il firmware (cosa che non ho ancora fatto). La procedura, passo passo, per diventare root e' la seguente: 1. entrare in modalita' "factory mode" per avere accesso, da utente non privilegiato, ad una shell linux sul router. Da notare che il comando "factory-mode" e' nascosto, non viene auto-completato premendo tab Codice PHP:
modalita' la funzionalita' di accesso ad Internet viene persa, non ci sono piu' le reti WiFi che avevamo impostato, non e' attivo il DHCP server per cui dovremo impostare a mano l'indirizzo IP sul PC per connetterci al router che ha il suo indirizzo di defautl 192.168.1.1. Anche eventuali altre configurazioni vengono perse 3. fare il login sul router ed entrare nella shell con il comando "system shell" Codice PHP:
Configuration Manager), gira con i diritti di root ed e' il processo che fa praticamente tutto a livello di gestione del router. Viene lanciato dagli script di startup e poi configurato con il comando "cmclient". Inizialmente cmclient lo configura indicandogli dove prendere i file xml che gli definiscono la configurazione e successivamente viene utilizzato sia per interrogare la configurazione attuale che per effettuare le modifiche. 5. Una cosa interessante e' che per fare il lavoro "cm" si appoggia a degli "helper scripts" che si trovano su /etc/ah/, gli helper script da utilizzare gli sono indicati nei file xml di configurazione iniziale, non hanno il path perche' cm li cerca su /etc/ah/ 6. Un altra cosa interessanti e' che cmclient gira da utente non privilegiato, la cosa e' necessaria affinche' l'interfaccia web, che gira come utente "nobody", e la CLI, che gira come utente che ha fatto il login, tipicamente "admin", possano richiedere delle modifiche di configurazione 7. Quello che e' piu' interessante e' che cmclient puo' dare dei comandi di configurazione passando dei file xml che vanno a sovrascrivere la configurazione corrente di cm e, quindi, andando a modificare gli helper script, che sono degli script shell. Probabilmente gli autori, aggiungendo il path /etc/ah a ciascuno degli script presenti nei file xml, hanno trascurato la possibilita' di impostare script su altri path grazie all'utilizzo del doppio punto, che non viene filtrato, per passare ad altri path. Ad esempio "/etc/ah/../../tmp/" equivale a "/tmp" 8. l'hack per avere l'accesso di root si basa, quindi, su una riconfigurazione di uno dei file xml per far puntare ad un helper script su /tmp (una delle poche directory dove l'utente admin puo' scrivere), l'helper script, modificato da noi, verra' eseguito con i diritti di "root" e, alla fine, andra' a modificare /tmp/passwd (/etc/passwd e' un link a /tmp/passwd) e ci permettera' di avere i diritti di root 9. quindi procediamo con il creare un file xml modificato che copiamo dalla posizione originale a /tmp modificando il riferimento a "Users.sh", a cui cm aggiunge il path /etc/ah/, con "../../tmp/Users.sh". Potremmo copiare il file xml in /tmp e poi modificarlo con vi oppure modificarlo con sed come da linea di comando seguente: Codice PHP:
modifichiamo aggiungendo la riga "cat /tmp/passwd > /tmp/pass1" come da snippet seguente: Codice PHP:
modificato da noi e che fa riferimento a /tmp/Users.sh con il comando seguente Codice PHP:
comandi di cmclient per aggiungere un utente: Codice PHP:
il quarto utente (i primi 3 sono user, power e admin). Non ci interessa assegnargli username, password e diritti, ma ci interessa solo verificare che /tmp/pass1 e' stata creata: Codice PHP:
diritti di lettura, ma non quelli di scrittura e quindi non lo possiamo modificare, allora lo copiamo in /tmp/pass2, che modifichiamo togliendo '*' nel campo della password di root, in modo che root non abbia password: Codice PHP:
/tmp/pass2 su /tmp/passwd (cui punta /etc/passwd) in modo da poter poi diventare root con "su". Commentiamo la riga usata precedentemente ed aggiungiamo "cp /tmp/pass2 /tmp/passwd" come da snippet seguente: Codice PHP:
di cmclient che crea un altro utente: Codice PHP:
fare su a root senza che ci venga chiesta una password Codice PHP:
modificare il file system di root jffs2; da notare, pero', che tale file system, sebbene sia montato in rw, non viene mai modificato dal firmware del router che, di fatto, lo considera read only e lo scrive, unicamente, durante l'aggiornamento del firmware. Io ho provato a modificarlo, apparentemente funziona, ma poi sono comparse, sulla console seriale, degli errori di checksum sul file system jffs2, per far sparire tali errori ho dovuto fare l'upgrade del firmware. 19. la cosa che si puo' fare e-, analogamante alla procedura di upgrade del firmware, ricaricare sulla memoria flash, con nandwrite, il file system jffs2 di root oppurtunamente modificato. La procedura di upgrade del firmware esegue i seguenti comandi: Codice PHP:
per farla con ridotti rischi di mettere fuori uso il router. Inoltre, tempo permettendo, mi piacerebbe anche descrivere il processo che mi ha portato a trovare questo hack per diventare root su questo router |
26-07-2018, 06:10 | #51 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerpalm
Grazie per la guida. Inserito link al tuo post precedente nei primi post. Per favroe quando puoi modifica il tools adbtools2.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live |
27-07-2018, 07:21 | #52 |
Senior Member
Iscritto dal: Aug 2015
Messaggi: 301
|
@palmerpalm
Ciao, prima cosa grazie per il tuo prezioso lavoro. Una domanda... modificando il fw da root, come stai cercando di fare, consentirà poi di avere un immagine FW funzionante da caricare sul proprio router utilizzando il normale canale di upgrade o sarà comunque necessario effetttuare la procedura per diventare root?
__________________
Fritzbox 7590 <-- D-link DVA-5592_A1 <-- VSR <-- Dg834GT + 2100AP |
27-07-2018, 18:39 | #53 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Senza prima diventare root ed alterare questo meccanismo, diventa impossibile aggiornare il firmware con uno non originale. La mia idea, da verificare però, è quella di automatizzare con uno script la procedura per diventare root, alterare temporaneamente lo script di upgrade in modo da fargli saltare la verifica dell'autenticità del firmware e poi procedere con un normale upgrade di firmware modificato e con firma fasulla; ho visto che la procedura di upgrade fa una serie di passi per cui può essere rischioso alterare direttamente il firmware con nandwrite per questo è bene modificare direttamente il file di upgrade. |
|
04-08-2018, 10:34 | #54 |
Senior Member
Iscritto dal: Nov 2003
Città: Milano
Messaggi: 31027
|
@palmerpalm
Ho visto che hai aggiornato il tool adbtools2. Mi chiedevo se era possibile implementare le proposte indicate qui https://www.hwupgrade.it/forum/showp...6&postcount=45 Grazie.
__________________
Dlink DSL-3xxT - Dlink DSL-5xxT/G6xxT - Digicom Office Wave 54 Linksys ADSL2MUE - Linksys WAG54GS - Linksys WAG200G - Come usare 2 router in cascata Console seriale - JTAG - 4geek Playo - WD TV Live |
05-08-2018, 15:57 | #55 | |
Senior Member
Iscritto dal: Feb 2014
Messaggi: 1142
|
Quote:
Una cosa non mi è chiara: il filesystem JFFS è montato in modalità RW. Se modificare i file al suo interno produce degli errori di checksum sulla seriale (stoppano il boot o prosegue nonostante gli errori?), dove salva il router le impostazioni? /tmp penso sia soltanto shmfs/tmpfs, quindi non credo che valga come storage di dati, c'è forse un'altra partizione sempre RW dove viene salvato il tutto? E la modifica a /tmp/passwd (che è symlinkato ad /etc/passwd) persiste dopo il reboot? Per quanto riguarda lo script per effettuare automaticamente la procedura di rooting, posso lavorarci anche io senza alcun problema, così ti alleggerirei un po' il carico Cheers e grazie per il walkthrough! Ultima modifica di Robertof_ : 05-08-2018 alle 16:06. |
|
06-08-2018, 12:05 | #56 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
I file modificati, come /etc/passwd.orig, permangono comunque modificati anche dopo il reboot. Sul router ci sono varie partizioni: Codice PHP:
Riguardo allo script per automatizzare il "rooting", in realtà l'ho già fatto, è disponibile su github: https://github.com/digiampietro/adbtools2 e si chiama hack-script.sh. In pratica basta entrare in factory mode (come descritto in un precedente post) poi fare un "cat > /tmp/hack-script.sh" e fare un copia incolla del contenuto di quello script seguito dal "Ctrl-D" per terminare l'input, fare un "chmod a+x /tmp/hack-script.sh", eseguirlo e poi fare un "su -" e si diventa root. Sono a buon punto anche con l'upgrade di un firmware modificato, che già gira sul mio router, in pratica quello che sarà possibile appena finisco è che utilizzando lo stesso script sopra (da modificare ancora), verrà reso possibile fare l'upgrade del firmware con uno non firmato e che conterrà le seguenti modifiche: 1. /usr/sbin/upgrade.sh modificato in modo da permettere l'upgrade di firmware non firmato digitalmente 2. /etc/clish/startup.xml modificato in modo da rendere possibile il comando "system shell" per accedere alla shell anche in modalità normale e non solo in factory mode come adesso 3. /etc/passwd.orig in modo da rendere possibile "su -" a root senza password 4. aggiunta di uno script su /etc/init.d in modo da montare su /opt una chiavetta USB con file system ext3 dove poter installare entware (https://github.com/Entware/Entware) e poter aggiungere vari pacchetti software, sulla chiavetta USB senza troppo interferire con il firmware modificato al minimo indispensabile |
|
06-08-2018, 17:41 | #57 | |
Senior Member
Iscritto dal: Aug 2015
Messaggi: 301
|
Quote:
__________________
Fritzbox 7590 <-- D-link DVA-5592_A1 <-- VSR <-- Dg834GT + 2100AP |
|
07-08-2018, 12:53 | #58 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Grande palmerpalm !
Bel lavoro palmerpalm !
mi era già rassegnato a considerare il router un soprammobile... Se leggo bene dal post sopra in /tmp c'è parecchio spazio che viene salvato in flash, eventuali pacchetti si potrebbero installare lì no ? |
08-08-2018, 14:59 | #59 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Primi smanettamenti
Ho gia cominciato ad esplorare le possibilità da root...
Mi rispondo da solo per quanto chiesto nel post precedente, forse si può, ma bisogna trovare il modo di salvare su flash (quale?), assieme a ciò che al boot viene copiato su /tmp, gli eventuali pacchetti. E per quanto riguarda l'idea di palmerpalm di metterli su chiavetta, bisogna tener conto che il router monta automaticamente le chiavette su /mnt/sda1 e 2. La prima cosa che avevo urgenza di ottenere è il famigerato wakeonlan... In startup.xml al relativo comando non esegue niente, e come ho scoperto manco potrebbe. Per avere il wakeonlan ci sono poche possibilità. C'è l'applet ether-wake di busybox, che naturalmente non è stato configurato nel router, e che comunque dalle prove fatte richiede che sia eseguito da root. C'è l'applet nc (netcat) che comunque non ha l'opzione -b (broadcast). Rimane socat... Mi sono fatto uno scriptino e l'ho salvato in /etc/wol, e ho copiato l'eseguibile di socat in /root. Codice:
#!/bin/sh mac=$(printf '\x01\x02\xaa\xbb\xcc\xdd') # MAC = 01:02:aa:bb:cc:dd wol_packet=$(printf "\xff\xff\xff\xff\xff\xff$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac") echo -n "$wol_packet" | /root/socat -u STDIO UDP-DATAGRAM:192.168.1.255:9,broadcast Codice:
</ACTION></COMMAND><COMMAND name="shell" no-config-gen="true"><ACTION> /etc/hack_script.sh /bin/sh </ACTION></COMMAND><COMMAND name="wol" no-config-gen="true"><ACTION> /etc/wol Tra l'altro una configurazione salvata dopo aver eseguito hack-script.sh rimane invalida... sembra che per gli utenti parta da un /etc/passwd base e poi aggiunga gli altri utenti dalla configurazione. Purtroppo non posso allegare il socat che ho compilato perché eccede il massimo consentito. Infine, per chi volesse compilare socat o quant'altro ho usato buildroot-2018.02-rc2, con Target Architecture (ARM (little endian)) Target Architecture Variant (cortex-A9) Buon smanettamento... Ultima modifica di pimander : 08-08-2018 alle 15:02. |
08-08-2018, 17:18 | #60 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Stateve aqquorti
Ho avuto la (pessima) idea di settare la password di root e poi copiare /tmp/passwd in /etc/passwd.orig, lasciando solo root,nobody e daemon, sperando che al boot lo copiasse in /tmp.
Ma non gli è piaciuto, o meglio, evidentemente il salt è diverso ad ogni riavvio, e ho dovuto modificare hack-script.sh per eliminare la password che avevo settato In più sembra che il router si sia accorto di qualcosa e ha ripristinato startup.xml nonché ranzato i 2 script che avevo copiato in /etc. Morale, qualche modifica al rootfs si può fare e la mantiene, ma bisogna andarci con i piedi di piombo Update: in effetti non ha ripristinato startup.xml originale, il comando shell era ancora lì... Pur avendo lavorato nel settore embedded secoli fa, non ho molta esperienza con i SoC, vado un po' a naso. Si direbbe che con i suoi tempi aggiorni la flash del rootfs (o di una sua copia ?). Facendo le prove ho riavviato varie volte e i file aggiunti/modificati erano rimasti. Ma quando ho sgarrato ha recuperato da qualcosa di già modificato. Forse qualcuno più esperto di SoC ha la spiegazione... Update2: per non dover eseguire ogni volta hack-script.sh dopo un riavvio ho semplicemente tolto l'asterisco da /etc/passwd.orig e pare che funzioni. Per quanto riguarda lo "sgarro", ripensandoci, prima di avere la bella idea di settare la password di root avevo curiosato nelle partizioni mtd, montandone qualcuna. Forse è questo che ha fatto scattare qualcosa e ha provocato quel ripristino parziale del rootfs... Update3: forse ho capito l'arcano... quando la prima volta sono passato in factory-mode mi ero dimenticato di togliere il cavo vdsl e tornando in modo normale con "restore defaultSettings" mi ha rifilato l'ultimo firmware... non avendo voglia di fare il downgrade ho pensato di tenerlo d'occhio ma per il momento di rimanere così. E però ho scoperto adesso per caso che è tornato magicamente al firmware DVA-5592_A1_WI_20170908. Pare che ne abbia una copia di emergenza a bordo e con qualche manovra inconsulta abbia scatenato il panic-mode. Solo non mi spiego come mai startup.xml avesse ancora il comando shell da me aggiunto... Ultima modifica di pimander : 10-08-2018 alle 13:23. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:04.