Con questa guida riuscirete ad eseguire un dump completo del MIB dell'ONT Nokia XS-010X-Q.
Prima di iniziare, ringrazio il team di hack-gpon, senza le loro info non sarei riuscito ad eseguire nulla di tutto ciò, potete trovare la pagina di riferimento di questo modello qui: https://hack-gpon.org/xgs/ont-nokia-xs-010x-q/
CAPITOLO 1 | PREPARIAMO IL NECESSARIO
Per una prima connessione alla scheda dell'ONT, dobbiamo assicurarci di avere:
In più ci serve la password dell'utente ONTUSER, la potete ricavare tramite il sito di hack-gpon ( https://hack-gpon.org/xgs/ont-nokia-xs-010x-q/#login-and-enable ) o se preferite eseguendo questo script python in locale
Premi per mostrare
Premi per nascondere
import hmac
import hashlib
def cigpassword_gpon(ont_serial, ont_user="ONTUSER"):
hardcoded_key = bytes.fromhex("01030a1013051764c8061419b49d0500")
hardcoded_seed = "2345679abcdefghijkmnpqrstuvwxyzACDEFGHJKLMNPQRSTUVWXYZ"
ont_vendor = ont_serial[:4].upper()
ont_id = ont_serial[4:].lower()
formatted_serial = f"{ont_vendor}{ont_id}"
hmac_md5 = hmac.new(hardcoded_key, f"{formatted_serial}-{ont_user}".encode(), hashlib.md5).digest()
output = [hardcoded_seed[b % 0x36] for b in hmac_md5]
return "".join(output)
# Input
ont_user = input("User (ONTUSER): ") or "ONTUSER"
ont_serial = input("Serial number: ")
password = cigpassword_gpon(ont_serial, ont_user)
print("Password: \033[33m" + password + "\033[0m")

CAPITOLO 2 | APRIAMO L'ONT E CONNETTIAMOCI IN UART
Prima di iniziare, fate una foto all'etichetta del Nokia, dato che posizionata sotto c'è una vite che serve proprio per aprire l'ONT. Una volta tolta la vite potete fare pressione con un cacciavite piatto lungo i vari lati della back cover per sganciarla ed avere accesso alla scheda, in cui potrete subito vedere 5 pad in alto a destra. State molto attenti durante questa operazione e se avete un plettro in plastica invece del cacciavite è anche meglio, almeno evitate sicuramente di fare danni dato che la plastica è molto dura e servirà un pò di forza.
Premi per mostrare
Premi per nascondere
Ora stacchiamo 3 cavetti jumper dal mazzo che abbiamo (ma quei 3 meglio che rimangano attaccati tra loro per semplificare i collegamenti) e colleghiamo i connettori femmina alle porte GND, TXD e RXD del convertitore USB. Assicuriamoci anche che la clip nera sia collegata ai pin con scritto 3V3.
Premi per mostrare
Premi per nascondere
Mentre i connettori maschio li facciamo aderire ai 3 pad centrali dell'ONT, mi raccomando di seguire la giusta sequenza dei colori dei cavi, se si invertono non funzionerà la connessione seriale.
Per assicurarci che rimangano aderenti, possiamo usare un pezzo di nastro isolante e tenerci un dito sopra, tanto dovremo eseguire pochi comandi prima di passare in SSH.
Premi per mostrare
Premi per nascondere
Con l'ONT ancora spento, connettiamo l'adattatore USB al Mac e installiamo minicom tramite brew brew install minicom e poi scriviamo sul terminale minicom -D /dev/cu.usbserial e premiamo tab, la linea si auto-completerà con il nome dell'adattatore usb
Premi per mostrare
Premi per nascondere
Premiamo invio e se tutto funziona correttamente vedremo la schermata di benvenuto
Premi per mostrare
Premi per nascondere
Ora accendiamo l'ONT (con solo il cavo della corrente collegato, oltre i 3 pad) e vedremo il boot di accensione, una volta terminato possiamo premere invio ed eseguire il login scrivendo "enable" e poi "login". Inserendo:
- User name: ONTUSER
- Password: quella estratta al CAPITOLO 1
Premi per mostrare
Premi per nascondere
Una volta dentro all'ONT, dobbiamo scrivere in sequenza i seguenti comandi per abilitare la sessione SSH, in modo da poterci disconnettere dalla connessione seriale:
- enable [invio]
- system [invio]
- misc [invio]
- ssh_en set 1 [invio]
- exit [invio]
- shell [invio]
- iptables -F [invio]
Premi per mostrare
Premi per nascondere
ONT>enable
#ONT>system
#ONT/system>misc
#ONT/system/misc>ssh_en set 1
---ATECMDRESULT--- OK
#ONT/system/misc>exit
#ONT/system>shell
#ONT/system/shell>iptables -F
A questo punto potete disconnettere l'adattatore USB e connettervi tramite cavo ethernet, impostando la scheda di rete con questi valori:
- Indirizzo IP: 192.168.100.2
- Maschera sottorete: 255.255.0.0
- Router: 192.168.100.1
Premi per mostrare
Premi per nascondere
E provando poi ad entrare da terminale tramite SSH con l'agoritmo ssh-rsa, tramite questo comando:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa ONTUSER@192.168.100.1
Premi per mostrare
Premi per nascondere
Se tutto è andate nel verso giusto, avrete accesso all'ONT in SSH tramite cavo di rete
Premi per mostrare
Premi per nascondere
E se non tutto andasse bene? E se mi da connection refused? Bhè si, può capitare, ma niente panico.
Connettiamoci di nuovo in UART e per prima cosa controlliamo che la variabile ssh_en sia impostata su 1 tramite il comando ssh_en get e se così è, eseguiamo di nuovo un iptables -F e proviamo a connetterci di nuovo in SSH
Premi per mostrare
Premi per nascondere
ATTENZIONE: se il valore di ssh_en è già su 1, non dovrete settarlo una seconda volta sempre su 1, perchè l'ONT andrà in segfault e si riavvierà. Di nuovo, niente panico, bisognerà solo aspettare il reboot
Premi per mostrare
Premi per nascondere
Se ancora così non funzionasse, passiamo alle maniere forti 🤓 eseguiamo un bel netstat -tln e probabilmente non vedremo nessuna porta 22 in ascolto, quindi avviamo il servizio ssh tramite il comando dropbear -p 22
Se ora eseguiamo di nuovo netstat -tln vedremo aperta la porta 22 e l'accesso SSH funzionerà
Premi per mostrare
Premi per nascondere
CAPITOLO 3 | ESEGUIAMO IL FULL DUMP DEL MIB
Questo ultimo capitolo sarà un gioco da ragazzi, la parte più difficile l'abbiamo superata!
Dato che il login lo abbiamo già eseguito tramite SSH, possiamo direttamente eseguire il comando enable ed andare in system poi mib. Qui possiamo eseguire help per vedere tutti i comandi esistenti, a noi ci interessa il dump. Una volta eseguito ci dirà dove è stato salvato, a questo punto da shell eseguiamo un cat del file e copiamo l'output della console in un nostro file locale: cat mibdump.txt
Premi per mostrare
Premi per nascondere
Mentre se invece vogliamo vedere un singolo valore, possiamo usare il comando show
Premi per mostrare
Premi per nascondere
Quando avete fatto, potete uscire dall'ONT scrivendo sempre exit finchè la connessione non verrà chiusa
Premi per mostrare
Premi per nascondere
FINE! 😎 tengo a precisare che questa guida è stata scritta il più possibile semplice per poter dare la possibilità di fare un dump anche alle persone che non ne sanno di elettronica, informatica e reti. Tramite il MIB è possibile capire quali dati si aspetta l'OLT per abilitare un ONT. Potete prendere il dump e inviarlo al vostro ingegnere di fiducia, oppure da shell divertirvi a esplorare tutti i vari file e cartelle del firmware del Nokia.
Have fun 🥳