|
|
|
|
Strumenti |
13-08-2018, 23:51 | #61 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Adesso stavo lavorando sulla modifica del firmware, a tempo ridotto perchè, essendo in ferie, gli impegni "vacanzieri" e familiari richiedono più tempo degli impegni lavorativi |
|
13-08-2018, 23:55 | #62 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Il posto migliore per mettere pacchetti aggiuntivi è utilizzare una chiavetta USB, mi manca poco per implementare un firmware modificato che permette di installare entware su chiavetta USB e, tramite esso, installare pacchetti aggiuntivi già disponibili. |
|
14-08-2018, 00:00 | #63 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Mi pare, ma potrei sbagliarmi, che la chiavetta venga montata automaticamente solamente se è abilitata la relativa funzione di condivisione del contenuto della chiavetta tramite Samba. Se Samba non è abilitato la chiavetta non dovrebbe essere montata.
|
14-08-2018, 00:06 | #64 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Anche io ho utilizzato buildroot, ma 2018.05, e qemu per emulare un sistema ARM cortex-A9 vagamente simile a quello del router ed ho utilizzato ampiamente qemu ed il debugger GDB per capire il funzionamento di alcuni eseguibili come sig_verify o cm. Spero di poter fare un post in futuro descrivendo anche questo setup, adesso vado in ordine di priorità puntando a trovare una strada non troppo complicata per installare un firmware modificato.
|
14-08-2018, 00:14 | #65 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Potrebbe anche essere che, a seguito di questi errori, alcuni nuovi nodi jffs2 che hanno sostituito i vecchi possano essere marcati errati e, quindi, al riavvio potrebbero riapparire vecchi nodi e vecchi files. Riguardo all'upgrade il router utilizza la partizione mtd3 per caricare il firmware di upgrade; appena caricato, grazie ad un modulo proprietario, tale partizione viene divisa in due e create due nuove partizioni (mtd8 e mtd9) dove vanno il nuovo bootloader ed il nuovo root file system, al riavvio queste due partizioni diventano quelle attive ma, se per qualche ragione qualcosa non dovesse andare, il router fa un paio di reboot e ricarica la versione precedente funzionante ancora presente sulle vecchie partizioni e non ancora cancellata. |
|
14-08-2018, 00:25 | #66 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Firmware Modification Kit
Sul mio repository github adbtools2 ho appena rilasciato un "Firmware Modification Kit" con istruzioni e script per generare un firmware modificato e poterlo caricare sul router, seppure con alcune limitazioni:
Nei prossimi giorni cerco di trovare un po' di tempo per fare un post un po' più articolato e di concludere con la installazione di entware. Al momento il software modificato dal kit può essere ampiamente personalizzato, ma di default effettua solo 3 modifiche:
|
15-08-2018, 10:29 | #67 |
Member
Iscritto dal: Jan 2008
Messaggi: 163
|
si riesce ad alzare la portante?
|
15-08-2018, 22:44 | #68 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
|
15-08-2018, 23:36 | #69 |
Member
Iscritto dal: Jan 2008
Messaggi: 163
|
|
16-08-2018, 17:20 | #70 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
@palmerpalm
Ciao,
stavo pensando di metter su una schedulazione per l'accesso da remoto, come avevo sul vecchio router. Pensavo di usare il busybox che ho compilato che comprende crond e quando si tratta di abilitare/disabilitare usare il meccanismo del clish, visto che modifica le iptables e altre cose. Se ho capito bene si tratta di eseguire /etc/ah/SSH.sh con dei parametri, come X_ADB_SSHServer.RemoteAccess.Enable = true/false. Ma non mi è chiaro se è un parametro o una (o più) variabile d'ambiente da settare prima di eseguirlo. Tu sai come funziona ? |
16-08-2018, 17:58 | #71 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Capito...
Mi rispondo da solo, bastava guardare hack-script.sh...
Bisogna dare in sequenza (?) Codice:
cmclient DOM Device /etc/cm/tr181/dom/Management.xml OK OK cmclient SET X_ADB_SSHServer.RemoteAccess.Enable false/true OK OK Update: pare di no, ho riavviato ed è bastato il secondo. Dovrò però gestire lo stato al riavvio visto che così la configurazione non la salva, e anche salvandola è da gestire nel caso che per qualche ragione riavvi mentre non ci sono, per esempio se manca la luce abbastanza tempo da far morire l'UPS. Ultima modifica di pimander : 16-08-2018 alle 18:06. |
16-08-2018, 18:18 | #72 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Io però cercherei di usare il meno possibile le particolarità di tale firmware, tramite l'utilizzo di cmclient, perchè non sono documentate e talvolta potrebbero non fare quello che ci si aspetta. Io cercherei di utilizzare entware che è l'oggetto del mio prossimo post, che sto per fare. |
|
16-08-2018, 18:26 | #73 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Non so
Ma entware non è solo un repository di pacchetti con più o meno le stesse cose che ottieni con buildroot ?
Se si qualunque pacchetto bisogna vedere se non fa a pugni con ciò che già gira sul router, o pensi di escludere in qualche modo tutta la gestione che fa attualmente ? |
16-08-2018, 19:04 | #74 |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Rilasciato il firmware modificato (v0.8)
Rilasciato una nuova versione del firmware modificato (v0.8)
Sul mio repository GitHub (https://github.com/digiampietro/adbtools2), come avevo accennato in un post precedente, si trova un po' di documentazione su come diventare root sul router e su come modificare il firmware originale utilizzando il "Firmware Modification Kit" in ambiente Linux e disponibile sempre nello stesso repository (directory mod-kit). Utilizzando questi tool ho generato una versione di firmware modificato che, rispetto a quello originale, ha le seguenti modifiche:
Per procedere alla installazione del firmware ed all'utilizzo di entware sono necessari i seguenti pre-requisiti:
Una volta che si ha a disposizione il file del firmware modificato (DVA-5592_A1_WI_20180405-mod-v0.8.sig) e' necessario procedere ad "hackerare" il router per permettere l'installazione di un firmware non originale e non firmato digitalmente dal costruttore. Nell'ambito di questa procedura la configurazione del router viene azzerata e riportata alla configurazione di fabbrica, e' bene, pertanto, prima di procedere salvare la configurazione esistente in modo da poterla ricaricare alla fine della procedura. Inoltre durante la durata della procedura la funzionalita' normale de router viene meno, non funzionera' ne' l'accesso WiFi ne' l'accesso ad Internet fino al completamento della procedura che, di solito, richiede 15-30 minuti. Da tenere presente le solite avvertenze del caso: si sta per effettuare una operazione che non solo non e' supportata da chi ci ha fornito il router, ma che aggira le protezioni che il costruttore del router ha messo in atto per impedirci proprio di effettuare questa operazione. Essendo una operazione che modifica il firmware del router l'utente che la effettua lo fa a proprio rischio e pericolo, nessuna responsabilita' potra' essere attribuita all'autore di questa procedura, neanche qualora la procedura di modifica, o il firmware modificato dovessero procurare danneggiamenti al router e/o persino all'ambiente circostante. Io posso solo dire che, nel mio personalissimo caso, ho installato il firmware modificato senza inconvenienti e che, volendo, posso sempre ritornare ad installare il firmware originale. Per modificare il firmware occorre eseguire i seguenti passi:
Da notare che da root non e' opportuno modificare il file system di root formattato in jffs2, ho notato che il firmware originale, sebbene monti tale file system in modalita' read/write, in realta' non lo modifica mai e lo tratta come se fosse di sola lettura. Andando a modificare tale file system ho notato che iniziano ad apparire dei messaggi di "jffs2 checksum error" sulla console del router (la console seriale collegandosi alle piazzole etichettate IN, OUT, GND, VCC, sulla motherboard), tali messaggi sono disponibili anche con il comando "dmesg" che recupera gli ultimi messaggi di log da un buffer circolare tenuto in memoria. E' bene disabilitare l'aggiornamento automatico del firmware, altrimenti tutto quello che si e' ottenuto con il firmware non ufficiale viene rimosso dal firmware ufficiale che potrebbe anche aver corretto le vulnerabilita' e non essere piu' "hackerabile" con il metodo utilizzato qui. Ultima modifica di palmerpalm : 20-08-2018 alle 20:01. Motivo: aggiornamento alla versione v0.8 |
16-08-2018, 20:17 | #75 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Errori di chacksum
Ho tenuto d'occhio dmesg dopo che ho messo su la schedulazione, e quindi aver copiato busybox e gli script, ma non c'è stato nessun errore di checksum...
E comunque, il rootfs è uno di quei layered filesystem, con lo strato di sotto tipicamente readonly (qua parrebbe rw, ma non so se ci sia da fidarsi) e quello sopra in ram. Quale abbiano usato dei vari disponibili non è dato sapere, ma potrebbe essere una versione ad hoc, già che anche l'opkg è taroccato. Molti di questi filesystem non toccano proprio lo strato sottostante e salvano le differenze a parte per poi ripristinarle al mount. E in effetti jffs2 sarebbe un panico da gestire in rw, non è proprio fatto per lavorare così. Ultima modifica di pimander : 16-08-2018 alle 22:14. |
18-08-2018, 13:03 | #76 |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Wakeonlan again...
Ho compilato un programmino per il wakeonlan, in allegato.
Codice:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char **argv) { int fd; // file descriptor for the connected socket unsigned char buf[512]; struct sockaddr_in servaddr; // server's address socklen_t slen = sizeof(servaddr); int broadcastOn = 1; if(argc != 3) { printf("usage: %s subnet macaddress\n", argv[0]); return 1; } int m[6]; if(4 != sscanf(argv[1], "%d.%d.%d.%d", &m[0], &m[1], &m[2], &m[3])) { printf("invalid subnet\n"); return 1; } if(6 != sscanf(argv[2], "%02x:%02x:%02x:%02x:%02x:%02x", &m[0], &m[1], &m[2], &m[3], &m[4], &m[5])) { printf("invalid macaddress\n"); return 1; } memset((char*)&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(9); if(inet_aton(argv[1] , &servaddr.sin_addr) != 1) { fprintf(stderr, "inet_aton() failed\n"); return 1; } if((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { perror("cannot create socket"); return 1; } int i; for(i = 0; i < 6; i++) buf[i] = 0xff; for(i = 0; i < 6; i++) buf[i + 6] = m[i]; for(i = 0; i < 15; i++) memcpy(&buf[12 + 6 * i], &buf[6], 6); buf[102] = 0; setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &broadcastOn, 4); int ret = 0; if (sendto(fd, buf, 102, 0, (const struct sockaddr *)&servaddr, slen) == -1) { perror("cannot sendto()"); ret = 1; } close(fd); return ret; } Codice:
chmod a+x wakeonlan Codice:
/path-dove-lo-avete-messo/wakeonlan 192.168.1.255 aa:bb:cc:dd:ee:ff Ultima modifica di pimander : 19-08-2018 alle 10:23. |
20-08-2018, 00:11 | #77 |
Member
Iscritto dal: Dec 2008
Messaggi: 144
|
Complimenti e grazie palmerpalm per l'operazione di hacking e pimander per il primo utilizzo pratico.
Sarebbe utile, se qualcuno avesse tempo, una guida con esempi comuni e pratici per estendere le funzioni del router (es. DLNA). Per accedere ai pacchetti scaricati, una volta installato Entware, per esempio come bisogna fare? Entware presenta una UI e come si vede la UI dei pacchetti che la prevedono? Ps. Sono curioso di conoscere la storia della scoperta della falla appena torni dalle vacanze. Tuttavia i già prolissi dettagli sulla tecnica predispongono a una rapida chiusura di tale falla nei prossimi fw... |
20-08-2018, 12:36 | #78 | |
Member
Iscritto dal: Feb 2010
Messaggi: 105
|
Quote:
Non ci sono GUI, i pacchetti bisogna installarli con opkg, da cui puoi anche ottenere informazioni sui pacchetti disponibili, installati e sui files che compongono un pacchetto, vedi il post di palmerpalm. Ma tutto questo si fa da telnet, una volta loggati come root. E' un router, non un pc Volendo si potrebbero installare le libs necessarie per poi accedere con vnc o cose simili , ma non credo che sia il caso... Ultima modifica di pimander : 20-08-2018 alle 12:44. |
|
20-08-2018, 21:05 | #79 | |
Member
Iscritto dal: Jun 2018
Messaggi: 48
|
Quote:
Comunque molto in breve:
|
|
20-08-2018, 21:14 | #80 |
Senior Member
Iscritto dal: Nov 2017
Città: Verona (VEROITBC)
Messaggi: 5359
|
@palmerpalm:
Complimenti per il lavorone Seguo di striscio il thread, non ho nemmeno il modem in questione, ma lo trovo veramente interessante! (E se lo Zyxel fosse stato così blindato non ne avrei cavato un ragno dal buco ) |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:55.