Hola Visitante

Autor Tema: Reiniciando automáticamente el router CG6640E  (Leído 125 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 29
    • Ver Perfil
Reiniciando automáticamente el router CG6640E
« en: Octubre 29, 2017, 05:00:54 pm »

Desde hace un tiempo el router de ONO me falla cuando hace más de una semana que no se ha reiniciado, por lo que cada X tiempo me tenía que acordar de reiniciarlo para no quedarme sin servicio durante algún hito importante.


Trasteando un poco he visto que en su firmware existía una página que estaba oculta en los menús:


http://192.168.x.1/modem_configuration.html


Esta página, además de permitirte hacer un reset de fábrica del aparato, te permite cambiar las frecuencias favoritas del CM y hacer un reboot del dispositivo:


Configuración avanzada del modem de ONO


Con lo que con un poco de ayuda de las herramientas de desarrollador de google y unos cuantos reinicios del dispositivo he podido ver que estaba ejecutando por debajo:


http://192.168.x.1/setRestartCM.html


Eso es un avance, llamando a esa url se reinicia el módem siempre que haya un usuario logeado en el módem desde la IP que llama.


Por lo que he tenido que investigar como hacer login en el dispositivo, es un mecanismo muy sencillo que no usa ni cookies ni tokens ni sesiones, solo depende de la IP de origen de la petición:


http://192.168.x.1/login/Login.txt?password=xxxx&user=admin


Una vez hecho login la petición de login, el router devolverá el nombre del usuario si ha sido correcto o false si no ha funcionado el login.


Para finalizar, sólo es necesario hacer una petición http a cualquier html para que el reinicio se ejecute correctamente.


Si juntamos todos estos requisitos, queda el siguiente script en bash:




#!/bin/bash

USER="admin"
PASSWORD='password'
HOST="192.168.x.1"

#Login

echo "[+] Loging"

curl -v -G -XGET "http://${HOST}/login/Login.txt" --data-urlencode  "password=${PASSWORD}" --data-urlencode  "user=${USER}"


#Reboot
sleep 4
echo "[+] Rebooting"
curl -0 -v -XGET  "http://${HOST}/setRestartCM.html"

# Fake HTML

sleep 1
echo "[+] Sending Fake HTML"
curl -0 -v -XGET  "http://${HOST}/index.html"


Con un crontab para ahorrarnos el trabajo, quedaría un script capaz de reiniciar automáticamente el router con la frecuencia que le digamos.