Seguridad Wireless - Wifi

Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: Noltari en 28-01-2014, 12:14 (Martes)

Título: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 28-01-2014, 12:14 (Martes)
Ahora mismo no hay soporte oficial para este router en OpenWrt.

Firmwares oficiales de Ono
N/A

Wiki
http://wiki.openwrt.org/toh/netgear/cg3100dv3 (http://wiki.openwrt.org/toh/netgear/cg3100dv3)

Código Fuente
N/A

OpenWrt
N/A

Estado
Averiguando los registros del SoC e intentando arrancar una imagen ramdisk...

Agradecimientos
Muchas gracias a unqeko por donar este router a la ciencia ^^.

Saludos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Pteridium en 28-01-2014, 20:35 (Martes)
Creo que Florian tiene algo, aunque está atascado con el los drivers para ethernet (AFAIK se llama GMAC) y usb-otg. Además, danitool tiene un Cisco EPC3825.

Buena suerte, que os hará falta.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: danitool en 28-01-2014, 22:00 (Martes)
Dios nos pille confesados.

 La tarea obligatoria ahora mismo es encontrar material para soldar un socket en el lugar de la flash SPI, y así poder desenchufarla, leerla/programarla y volverla a enchufar cuando sea necesario.
Y tal vez o bien comprar un programador de memorias SPI o fabricarlo. Estoy bastante pez con el tema.

Si alguien tiene alguna recomendación sobre esto que lo indique.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 29-01-2014, 15:15 (Miércoles)
Creo que Florian tiene algo, aunque está atascado con el los drivers para ethernet (AFAIK se llama GMAC) y usb-otg. Además, danitool tiene un Cisco EPC3825.

Buena suerte, que os hará falta.
Contactaré con él a ver que me cuenta.
Pensaba que el driver GMAC era para la plataform bcm47xx. De cualquier forma, este lleva un 53115, así que b53 debería valer...

Dios nos pille confesados.

 La tarea obligatoria ahora mismo es encontrar material para soldar un socket en el lugar de la flash SPI, y así poder desenchufarla, leerla/programarla y volverla a enchufar cuando sea necesario.
Y tal vez o bien comprar un programador de memorias SPI o fabricarlo. Estoy bastante pez con el tema.

Si alguien tiene alguna recomendación sobre esto que lo indique.
Esto es lo que llevo hasta el momento:
(https://drive.google.com/uc?id=0ByrtEG1tVo67eXJQNnpXREFuWXM) (https://drive.google.com/uc?id=0ByrtEG1tVo67eXJQNnpXREFuWXM)
Le he soldado a la flash unos pines para poder trabajar cómodamente. Yo me apaño así pero lo que propones tú seguro que es mucho mejor xD.

Como primer intento para ver si las conexiones estaban bien he probado a leer la flash con el arduino y una librería llamada S25FLx a la que he tenido que hacer algunos ajustes.
https://github.com/BleepLabs/S25FLx/ (https://github.com/BleepLabs/S25FLx/)

Una vez que he comprobado que la flash se podía leer mi primer pensamiento ha sido utilizar el Altera USB Blaster para acceder por SPI y leer los datos, pero por algún motivo no me funciona...
Así que después me he acordado de lo que me dijo danitool de utilizar su livebox para leer la flash por SPI y he pensado "coño, tienes una Raspberry, úsala huevón".
Así que he encontrado un programa que se llama flashrom que puede utilizar la interfaz SPI de la raspberry para leer/escribir/borrar flashes SPI.
http://flashrom.org/RaspberryPi

Ya os contaré cuando tenga más "avances".

P.D: estoy aprendiendo bastante con la tontería xD.

Saludos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Pteridium en 29-01-2014, 15:29 (Miércoles)
Ya os contaré cuando tenga más "avances".

P.D: estoy aprendiendo bastante con la tontería xD.

Saludos!

>:( >:( >:( >:( >:( >:( >:(
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: rafius15 en 29-01-2014, 21:18 (Miércoles)
Espectacular trabajo compañero! Yo tengo un cg3100DV3 con la versión de firmware V1.04.02 por si necesitas algo, me tienes para lo que necesites!

Mucha suerte!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 29-01-2014, 21:31 (Miércoles)
Buenas otra vez,

Al final he conseguido hacer un dump de la flash con la Raspberry Pi. La verdad es que ha ido bastante rápido y sin problemas.
https://dl.dropboxusercontent.com/u/4708147/routers/bcm33xx/CG3100Dv3/flash.rar
Por si las moscas he hecho 3 dumps y los he comparado para ver que no había diferencias :P.

Me he servido de esta página como apoyo: http://www.win-raid.com/t58f16-Guide-Recover-from-failed-BIOS-flash-using-Raspberry-PI.html
La verdad es que está bastante bien detallado.

Por lo que puedo ver en el dump de la flash hay partición nvram.
A parte de eso simplemente decir que con esto ya tengo un punto de partida si me cargo algo xD.
Lo próximo será ver si se pueden extraer los firmwares como hago con brcm63xx, aunque me parece que no...
¿Alguien tiene algún firmware por ahí de este router? Me vendría bien para ver la estructura :$.

Saludos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: danitool en 30-01-2014, 17:04 (Jueves)
Finalmente usé el estilo Noltari, sin desoldar la flash, conectando directamente al SPI que trae el livebox. Para ello primero tuve que usar este código en el kernel del livebox:
Código: [Seleccionar]
static struct mtd_partition epc_partitions[] = {
[0] = {
.name = "epc3825spi",
.offset = 0x0,
.size = 0x800000,
},
};

static struct flash_platform_data blue5g_spiflash_data = {
.parts = epc_partitions,
.nr_parts = ARRAY_SIZE(epc_partitions),
};


static struct spi_board_info blue5g_spi_info[] = {
{
.bus_num = 0,
.chip_select = 0,
.mode = 0,
.max_speed_hz = 781000,
.modalias = "m25p80",
.platform_data = &blue5g_spiflash_data,
},
};


/*Livebox 1 - DV4210*/
static struct board_info __initdata board_blue5g9 = {
.name = "blue5g9",
.expected_cpu_id = 0x6348,

.has_uart0 = 1,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,

.enet0 = {
.has_phy = 1,
.use_internal_phy = 1,
},

.enet1 = {
 .has_phy = 1,
 .phy_id = 31,
},

.has_ohci0 = 1,
.has_pccard = 1,

.has_dsp = 0, /*TODO some Liveboxes have dsp*/
.dsp = {
.gpio_rst = 6,
.gpio_int = 35,
.cs = 2,
.ext_irq = 2,
},

.leds = {
{
.name = "blue5g9:red:adsl-fail",
.gpio = 0,
.active_low = 0,
.default_trigger = "default-on",
},
{
.name = "blue5g9:red:adsl",
.gpio = 1,
},
{
.name = "blue5g9:red:traffic",
.gpio = 2,
},
{
.name = "blue5g9:red:phone",
.gpio = 3,
},
{
.name = "blue5g9:red:wifi",
.gpio = 4,
},
},

.buttons = {
{
.desc = "BTN_1",
.gpio = 36,
.active_low = 1,
.type = EV_KEY,
.code = BTN_1,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "BTN_2",
.gpio = 7,
.active_low = 1,
.type = EV_KEY,
.code = BTN_2,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
},
.spis = blue5g_spi_info,
.num_spis = ARRAY_SIZE(blue5g_spi_info),
};

El cual hace el pegamento con el driver que controla los chips flash SPI.

Simplemente uní con cables directamente el SPI del livebox1 a la memoria flash del Cisco epc3825. Arrancado el livebox, detecta la flash del cisco como un mtd más:

Código: [Seleccionar]
[    0.488000] Creating 5 MTD partitions on "physmap-flash.0":
[    0.492000] 0x000000000000-0x000000010000 : "CFE"
[    0.504000] 0x000000010100-0x000000110000 : "kernel"
[    0.508000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.528000] 0x000000110000-0x0000007f0000 : "rootfs"
[    0.540000] mtd: device 2 (rootfs) set to be root filesystem
[    0.544000] mtd: partition "rootfs_data" created automatically, ofs=0x2e0000, len=0x510000
[    0.556000] 0x0000002e0000-0x0000007f0000 : "rootfs_data"
[    0.564000] 0x0000007f0000-0x000000800000 : "nvram"
[    0.576000] 0x000000010000-0x0000007f0000 : "linux"
[    0.592000] m25p80 spi0.0: found s25sl064p, expected m25p80
[    0.600000] m25p80 spi0.0: s25sl064p (8192 Kbytes)
[    0.604000] Creating 1 MTD partitions on "spi0.0":
[    0.612000] 0x000000000000-0x000000800000 : "epc3825spi"
[    0.624000] bcm63xx-spi bcm63xx-spi: at 0xfffe0c00 (irq 9, FIFOs size 63)
En este momento me dispongo a hacer un backup con dd.. pero me suelta este mensaje:
Código: [Seleccionar]
[  308.112000] m25p80 spi0.0: unable to do transfers larger than FIFO size (517 > 63)
Lo intento de nuevo pero esta vez con un tamaño de bloque de 24
Código: [Seleccionar]
root@OpenWrt:/tmp# dd bs=24 if=/dev/mtd6 of=epcbackup.bin
y bingo!, es lento pero crea el backup sin problemas
https://drive.google.com/file/d/0B-EMoBe-_OdBbEUzdzRscXpFYTA
Quien decía que el livebox1 no tenía mucha utilidad?  >:D

Ahí va una imagen del livebox1 en acción succionando los datos del Cisco:
(https://docs.google.com/uc?export=download&id=0B-EMoBe-_OdBeXF6X3JnSHB5aW8)

Ahora bien, tengo mis dudas de si será capaz de hacer escritura, por lo de tener que especificar un tamaño de bloque más pequeño que el bloque de la flash SPI.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 01-02-2014, 02:07 (Sábado)
Me ha comentado Florian que la semana que viene integrará los parches del 3380 en el repositorio oficial.

Saludos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 01-02-2014, 05:15 (Sábado)
Hola danitool

Respecto a tus dudas sobre la escritura de la memoria flash:
Ahora bien, tengo mis dudas de si será capaz de hacer escritura, por lo de tener que especificar un tamaño de bloque más pequeño que el bloque de la flash SPI.

Habria que mirar las hojas de caracteristicas de cada chip en concreto, pero por defecto todos funcionan de la misma forma:
01.- Es necesario que la pagina (256 bytes) este borrada , todos los bits a 1 (los bytes a 0xFF), ya que la escritura solo permite "grabar" los bits de 1 a 0.
Pero no se borra solo una pagina, se borra:
02.- Segun el chip pueden aceptar escrituras:
Tambien depende del algorithmo que estes utilizando en el kernel del livebox, y si tiene los comandos de la memoria flash adecuados.
En las hojas de caracteristicas vienen los comandos aceptados por cada memoria, pero muchos de ellos son comunes a todas las memorias, por estar estandarizados por JEDEC.

La M25P80 de micron/numonyx/st tiene 8Mbits (1MByte):
http://www.micron.com/~/media/Documents/Products/Data%20Sheet/NOR%20Flash/Serial%20NOR/M25P/M25P80.pdf (http://www.micron.com/~/media/Documents/Products/Data%20Sheet/NOR%20Flash/Serial%20NOR/M25P/M25P80.pdf)
Y la habras podido leer como de 8MBytes (64Mbits) porque has hecho una lectura continua de la que realmente hay puesta, que debe de ser una Spansion FL064PIF:
http://www.spansion.com/Support/Datasheets/S25FL064P_00.pdf (http://www.spansion.com/Support/Datasheets/S25FL064P_00.pdf)
Que el propio codigo te marca:
Citar
Código: [Seleccionar]
[    0.592000] m25p80 spi0.0: found s25sl064p, expected m25p80
[    0.600000] m25p80 spi0.0: s25sl064p (8192 Kbytes)

He abierto un hilo para comentar y proponer procedimientos de programacion de estas memorias flash serie SPI:
https://foro.seguridadwireless.net/openwrt/procedimientos-para-leer-y-programar-memorias-serie-spi-flash-25xxx/ (https://foro.seguridadwireless.net/openwrt/procedimientos-para-leer-y-programar-memorias-serie-spi-flash-25xxx/)
Si quieres echale un vistazo y comenta.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 01-02-2014, 06:47 (Sábado)
Hola desarrolladores

La memoria flash SPI es de 128Mb (16MB) en vez de 64Mb (8MB) del resto de routers del hilo, pero la estructura es similar.
El tamaño extra sera debido al firmware necesario para la telefonia.

Desafortunadamente las ultimas versiones del software de estos routers tienen desactivados los puertos del telnet y del SSH, y no permiten actualizaciones por estas vias, y no se como poder acceder a un terminal para utilizar el tftpd.

Creo que hay un archivo de configuracion (de Judokan) que al introducirlo en el router vuelve a habilitar las opciones de telnet y ssh, pero no lo localizo por ningun lado.
Si alguien lo tiene o sabe el procedimiento, que lo diga. De esta forma se abriria una puerta a actualizaciones de routers sin necesidad de programadores "hardware".

ACTUALIZACION:

Nota:
Valido solamente para routers CG3100D (sin v3) con interfaz "CG3100D-RG" y versiones:
- V5.5.2R06b
- V5.5.4.mp2_R09b

Se habilita el SSH realizando el siguiente procedimiento:
01.- Copia de seguridad de nuestros parametros de configuracion "GatewaySettings.bin"
02.- Actualizacion con los siguientes parametros, segun la version que tengamos:
        - GatewaySettings V5.5.2R06b.bin
        - GatewaySettings V5.5.4.mp2_R09b.bin
03.- Reiniciar el router y conectarse ,al poco tiempo, con Putty por SSH, a cualquiera de estas direcciones:
http://192.168.1.1 (http://192.168.1.1)
http://192.168.100.1 (http://192.168.100.1)
04.- El usuario y password (pueden que sean validos algunos mas, pero estos sirven):
user: admin
password: password
05.- Recibiremos lo siguiente:
Citar
CG3100D>
Una bonita consola de eCos, pero con un monton de lineas de escaneo de frecuencias
06.- Las desactivaremos de la siguiete forma:
Citar
cd /
cd d
scan_stop
07.- Lo primero es hacer un "help", aunque en cada carpeta es "diferente".
08.- Habria que instalar y configurar en el PC un servidor de tftp, como el tftpd32 para win32:
http://tftpd32.jounin.net/tftpd32_download.html (http://tftpd32.jounin.net/tftpd32_download.html)
En el que se colocaria una imagen con el firmware.bin, actualmente todos los usados son de este tamaño: 3.932.160 bytes
09.- El siguiente paso seria actualizar el firmware usando algun metodo como:
dload
snmp
Aunque esto todavia no lo he realizado, ni probado, hay indicaciones por internet de como se hace.
10.- Algun comando interesante:
Citar
cd /
find_command show
Muestra carpetas y comandos disponibles con la cadena "show".

Nota:
Este metodo no es valido de momento para el CG3100Dv3, ya que aun no se ha encontrado un "GatewaySettings.bin" que habilite los puertos SSH o telnet.
Lo mismo pasa con routers como el EPC3825, el EPC3925 o el SBG6580, asi que creo que seria adecuado realizar un listado para clasificarlos y no cometer errores.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: danitool en 01-02-2014, 12:03 (Sábado)
Gracias espeltron por toda esta magnífica información  :D.

En cuanto a la escritura con el livebox, finalmente puedo decir que sí funciona. Ahora bien, primero tengo que especificar un borrado manual de la partición que quiero programar.
Código: [Seleccionar]
mtd erase epc3825spio bien
Código: [Seleccionar]
flash_erase /dev/mtd6 0 0
Y luego escribir usando el comando dd pero con un tamaño de bloque inferior a 60
Código: [Seleccionar]
dd if=imagen.bin of=/dev/mtd6 bs=48
Por lo que diría que efectivamente la memoria admite escritura de trozos de página.

No puedo usar mtd write o flashcp de forma normal, debido a que al driver SPI de los bcm63xx le falta un hervor para que haga todo de forma correcta. Pero con dd puedo esquivar las carencias del driver.

Sobre encontrar una puerta para poder flashear sin programador,  creo que requiere un trabajo a un nivel muy bajo, de tipo desensamblador. Como lo que hacen en :
http://www.devttys0.com/blog/



Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 05-02-2014, 05:26 (Miércoles)
Ejemplo de activacion de un parametro de configuracion a traves de una pagina web parcheada
El objetivo es poder habilitar el puerto telnet, el SSH o la consola a traves de este metodo y obtener un fichero de configuracion valido para el resto de routers del mismo modelo.
 
En el EPC3925, para habilitar el Remote Management que activa el puerto 161 del SNMP, hay que seguir los siguientes pasos:

1.- Descargar Opera 12 u Opera 11:
http://www.opera.com/download/get/?partner=www&opsys=Windows&classic=1 (http://www.opera.com/download/get/?partner=www&opsys=Windows&classic=1)
http://www.opera.com/download/get/?id=35879&location=360&nothanks=yes&sub=marine (http://www.opera.com/download/get/?id=35879&location=360&nothanks=yes&sub=marine)
http://get.geo.opera.com/pub/opera/win/1216/int/Opera_1216_int_Setup.exe (http://get.geo.opera.com/pub/opera/win/1216/int/Opera_1216_int_Setup.exe)
Para la extension "Source" no vale una version del navegador Opera distinta de estas.
Por ejemplo, la version 19 solo permite visualizar el codigo fuente, no permite aplicar cambios.

2.- Instalar el navegador:
Opera_1216_int_Setup.exe

3.- Instalar la extension "Source" para Opera:
Es un plugin que solo funciona en las versiones 11 o 12 de Opera.
https://addons.opera.com/es/extensions/details/source/?display=en (https://addons.opera.com/es/extensions/details/source/?display=en)
https://addons.opera.com/extensions/download/source/ (https://addons.opera.com/extensions/download/source/)
Desde un navegador distinto de Opera se descargara el archivo:
source-1.0.3-1.oex
Si lo habeis hecho con Opera se habra instalado esta extension.
Esta extension es para editar paginas HTML "al vuelo".
Y esto es lo que se utilizara para modificar las opciones ocultas de las paginas web de los routers cisco.
Se sabe la estructura que tienen las paginas web gracias a otros routers que tienen estas opciones visibles.

4.- Editar la pagina del router donde se modificara la configuracion del Route Management:
Pasos:
- Acceder a la web del router, con las contraseñas que se esten utilizando (sin usuario y sin contraseña, o la que le hayamos puesto, no usar admin/W2402).
- Ir a Administration
- Os debera aparecer la pagina de Management

Apariencia:
(https://dl.dropboxusercontent.com/sc/9u7pr4oee0k3hya/73hTDnTmo9/0) (https://dl.dropboxusercontent.com/sc/9u7pr4oee0k3hya/73hTDnTmo9/0)
Esta es la imagen que aparece por defecto en el router

Si se repiten los mismos pasos hasta llegar hasta esta pagina, pero con el Opera 12, con la extension "Source" instalada, sera posible ver y editar el codigo fuente.
(https://dl.dropboxusercontent.com/sc/uj6z0mkkoegq2sa/PaGbsdIda6/0) (https://dl.dropboxusercontent.com/sc/uj6z0mkkoegq2sa/PaGbsdIda6/0)

Dando a Ctrl+U vemos el codigo fuente:
(https://dl.dropboxusercontent.com/sc/7ucxtvhn5u2ubb1/LakssMTwfo/0) (https://dl.dropboxusercontent.com/sc/7ucxtvhn5u2ubb1/LakssMTwfo/0)

El siguiente paso es abrir el siguiente archivo de texto:
http://pastebin.com/raw.php?i=W0eQy7mM (http://pastebin.com/raw.php?i=W0eQy7mM)

Seleccionarlo todo con Ctrl+A y copiar con Ctrl+C.
Ir al codigo fuente del Opera 12 abierto anteriormente.
Seleccionarlo todo con Ctrl+A y pegar con Ctrl+V.

Hay que darle al boton Aplicar cambios.
(https://dl.dropboxusercontent.com/sc/ijowxufko74itd1/oMgs-i3ZY0/0) (https://dl.dropboxusercontent.com/sc/ijowxufko74itd1/oMgs-i3ZY0/0)

Si vamos a la pestaña de Management, dentro del mismo Opera 12, vemos que el aspecto ha cambiado:
(https://dl.dropboxusercontent.com/sc/klkbbjcoiho2nq5/sj7xKmM55h/0) (https://dl.dropboxusercontent.com/sc/klkbbjcoiho2nq5/sj7xKmM55h/0)

Solo queda fijar un usuario, el password y en "Remote Management" marcar "Enable".
El puerto que indica se puede dejar en 139, porque da igual, ya que utlizara el que hay por defecto, el 161 para el SNMP y creo que el 162 para el SNMP trap.

El resto de opciones no cambiarlas, dejar deshabilitado UPnP.
(https://dl.dropboxusercontent.com/sc/niy1tkn7msbk1mr/QmnDXJwtkU/0) (https://dl.dropboxusercontent.com/sc/niy1tkn7msbk1mr/QmnDXJwtkU/0)

Vamos otra vez a la pestaña de "Administration", en "Back Up & Restore", y hacemos un "Back Up":

El archivo "filename.gwc" generado pasa de tener en su interior:
Citar
Remote Configuration Management (Yes or No)=No;
A tener en su interior:
Citar
Remote Configuration Management (Yes or No)=Yes;
Remote Management Port=139;

En los CG3100D y CG3100Dv3 el archivo de configuracion se guarda en un fichero binario con el nombre "GatewaySettings.bin".
En el EPC3825 y en el EPC3925 el archivo de configuracion se guarda en un fichero de texto plano con el nombre "filename.gwc".

Ahora el interes esta en encontrar las paginas htm, html o asp que habiliten el parametro Telnet.

Las siguientes cadenas son las que pueden estar relacionadas con la habilitacion del parametro que activa la conexion telnet:
Telnet Access Enabled =
Telnet Enable Mode =

Posibles procedimientos:
1.- SNMP  (se tienen que hacer pruebas hasta encontrar el OID y la forma de habilitar la variable de "telnet enable")
2.- Modificacion de pagina web "al vuelo", como se acaba de explicar.

Resultados de algunas pruebas:

Capturas de pantalla de "netscan" mostrando como se localiza el router EPC3925 en el puerto 161 del SNMP:
(https://dl.dropboxusercontent.com/sc/b0ly3jj592bxwaj/Ipy5tbyIl4/0) (https://dl.dropboxusercontent.com/sc/b0ly3jj592bxwaj/Ipy5tbyIl4/0)

http://www.softperfect.com/products/networkscanner/ (http://www.softperfect.com/products/networkscanner/)
http://www.softperfect.com/download/freeware/netscan.zip (http://www.softperfect.com/download/freeware/netscan.zip)

Con otro programa, el "snmptester", puedo mandar OIDs del tipo "custom".
(https://dl.dropboxusercontent.com/sc/gu0k7rd4ew26b60/IX6fGrzR5r/0) (https://dl.dropboxusercontent.com/sc/gu0k7rd4ew26b60/IX6fGrzR5r/0)
He mandado el mismo OID y he obtenido la misma respuesta que con el programa anterior.

http://www.paessler.com/tools/snmptester (http://www.paessler.com/tools/snmptester)
http://download-cdn.paessler.com/download/snmptester512.zip (http://download-cdn.paessler.com/download/snmptester512.zip)
http://download-cdn.paessler.com/download/snmptester.pdf (http://download-cdn.paessler.com/download/snmptester.pdf)

Se ha encontrado una pagina interesante con OIDs de Cisco:
http://tools.cisco.com/Support/SNMP/public.jsp (http://tools.cisco.com/Support/SNMP/public.jsp)

Se ha probado uno relacionado con la habilitacion del telnet:
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en&translate=Translate&objectInput=1.3.6.1.4.1.14179.1.2.1.2.3 (http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en&translate=Translate&objectInput=1.3.6.1.4.1.14179.1.2.1.2.3)
Citar
Description "Allow new telnet sessions (enable or disable) Config telnet disable means that no new Telnet sessions are to be established. Any already established session remains active until the session is ended or an abnormal network error ends it. "
Pero en esta prueba inicial no ha funcionado ese OID, al menos en mi router.

Posibles communities:
public, private, secret, cisco, ono, gesCM1, docsDevNmAccessIp, DevNmAccessIpMask, NmAccessCommunity, DevNmAccessControl, DevNmAccessInterfaces, DexNmAccessStatus, ...

net-snmp:
Quien quiera usar comandos SNMP tendra que utilizar una herramienta mas avanzada de linea de comandos:
http://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.7-binaries/net-snmp-5.7.0-1.x86.exe/download (http://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.7-binaries/net-snmp-5.7.0-1.x86.exe/download)
Despues de instalarla tendra que añadir a la variable de entorno "Path" del sistema operativo la ruta de la carpeta "bin" del programa.
Normalmente:
"c:\Archivos de programa\snmp\bin"

Vamos a empezar con un comando sencillo:
Citar
c:\tmp>snmpget -v2c -c public 192.168.100.1 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco EPC3925 EuroDocsis 3.0 2-PORT Voice Gateway <<HW_REV: 1.0; VENDOR: Cisco; BOOTR: 2.3.0_R1; SW_REV: epc3925-E10-5-v302r125553-120726c-TLC; MODEL: EPC3925>>

c:\tmp>

Ahora vamos a intentar uno de modificacion de parametros del tipo string:
Citar
c:\tmp>snmpset -v2c -c public 192.168.100.1 1.3.6.1.4.1.4413.2.99.1.1.1.2.1.2.1 s password
Error in packet.
Reason: notWritable (That object does not support modification)
Failed object: SNMPv2-SMI::enterprises.4413.2.99.1.1.1.2.1.2.1


c:\tmp>

Ahora vamos a intentar uno de modificacion de parametros del tipo integer:
Citar
c:\tmp>snmpset -v2c -c gesCM1 192.168.100.1 1.3.6.1.4.1.14179.1.2.1.2.3 i 1
Error in packet.
Reason: noAccess
Failed object: SNMPv2-SMI::enterprises.14179.1.2.1.2.3


c:\tmp>

Por internet hay algunos comandos snmp para los routers CG3100D, pero no he conseguido que funcionen en mi EPC3925.
Solo hay que hacer una busqueda de: snmpset CG3100D
No solo hay que saber las OIDs que lleva cada router, sino que tambien hay que saber como se utilizan, los tipos de variables que utilizan (si strings o integers i) y como funcionan.

Haciendo pruebas se ha visto que exite otra IP activa, la 192.68.100.5, seguramente es la del propio cablemodem.

Espero que esta informacion le sirva al resto de desarrolladores y se pueda avanzar en estas familias de routers.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: rafius15 en 05-02-2014, 09:20 (Miércoles)
Hola!
Muchísimas gracias espeltron, he estado trasteando con mi V3 por ahi con el opera y el editor de codigo al vuelo. Esta muy guapo y no lo había probado nunca.

Os comento:
He conseguido desactivar el WPS completamente, ya que el primer parametro en la pagina que se abre inicialmente es wps_enable=1, cambiandolo a wps_enable=0 se desactiva por completo.

Por otra parte no he podido acceder de ninguna forma por telnet o ssh, puesto que la pagina que editaría ese comportamiento esta inaccesible incluso activandola desde el codigo. La pagina de la que os hablo es RgRemoteManagement.asp, la cual podemos activar en la pestaña avanzado, configuracion avanzada, configuración remota, pero luego obtenemos un bonito 404.

Venga, que lo conseguiremos!

Un abrazo chicos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: berni69 en 05-02-2014, 09:33 (Miércoles)
Hola Noltari,
personalmente me interesa bastante este tema, tengo un router de estos parados si quieres que realice alguna prueba avisa.

he visto que has avanzado en el tema de la lectura de la flash, por favor, avísame =)

Saludos y continuad así  :D
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 10-02-2014, 02:51 (Lunes)
Router CG3100D
El router CG3100D es una de las versiones previas al router CG3100Dv3.

Como se puede observar en las siguientes imagenes el aspecto de la carcasa cambia ligeramente:
(https://dl.dropboxusercontent.com/sc/zjo1kluf7hs589z/VQvMV8_IT1/0) (https://dl.dropboxusercontent.com/sc/zjo1kluf7hs589z/VQvMV8_IT1/0)
(https://dl.dropboxusercontent.com/sc/ca8t5jyubhiwr31/X4qI4QGlZS/0) (https://dl.dropboxusercontent.com/sc/ca8t5jyubhiwr31/X4qI4QGlZS/0)
(https://dl.dropboxusercontent.com/sc/xe75xrj10zpyrck/M0nFelAL8p/0) (https://dl.dropboxusercontent.com/sc/xe75xrj10zpyrck/M0nFelAL8p/0)

La placa electronica tambien es diferente:
(https://dl.dropboxusercontent.com/sc/2fysn578yqaoygs/-_Raq4ePfK/0) (https://dl.dropboxusercontent.com/sc/2fysn578yqaoygs/-_Raq4ePfK/0)
(https://dl.dropboxusercontent.com/sc/ubparo7nsasoyg7/c-0uPh-rvP/0) (https://dl.dropboxusercontent.com/sc/ubparo7nsasoyg7/c-0uPh-rvP/0)

Pero sigue manteniendo la misma memoria flash serie Spansion S25FL064PIF de 64Mb (8MB):
http://www.spansion.com/Support/Datasheets/S25FL064P_00.pdf (http://www.spansion.com/Support/Datasheets/S25FL064P_00.pdf)
(https://dl.dropboxusercontent.com/sc/guplorh2tjfmx7x/00cLMCPKph/0) (https://dl.dropboxusercontent.com/sc/guplorh2tjfmx7x/00cLMCPKph/0)

Bootlogs del CG3100D V5.5.2R06b original (telnet y SSH cerrados):

Se ha realizado una conexion a traves de un terminal serie a 115200, 8, n, 1.

El conexionado es el siguiente:
(https://dl.dropboxusercontent.com/sc/c121ut7dnlmlz3o/SpGgAzuX2u/0) (https://dl.dropboxusercontent.com/sc/c121ut7dnlmlz3o/SpGgAzuX2u/0)
Se ha utilizado el tipico adaptador USB-UART-TTL de 3.3V.

Todos los bootlogs se han tomado con el firmware original del router (tras un reset por hardware).

Las capturas son capturas de prueba, realizadas una a continuacion de otra (tras la desconexion y reconexion de la alimentacion del router).

Se ha detectado que en cada arranque el bootlog cambia en el indicador del tiempo y en el CRC.

Durante el arranque, en los boots posteriores se han pulsado las teclas 'p' y '2' para ver como afectaban en dicho arranque.

Con 'p' se accede a una consola que permite bastantes cosas utiles.

Con '2' no pasa en principio nada, se podrian hacer mas pruebas para ver si la imagen que debiera cargar se debe de transferior por tftp.

Creo recordar que otros modelos de routers tenian las opciones '1', '2' y 's' en el arranque (de momento no se ha probado la opcion 's').

Este firmware original tiene por defecto los puertos telnet y SSH cerrados.

La version del firmware de este router es la V5.5.2R06b, version de la que hay disponible un GatewaySettings.bin que habilita el puerto SSH.

Con pocos ensayos, realizando varias lecturas de la flash con el SSH cerrado y el SSH abierto sera posible descifrar la estructura de los bytes de configuracion, y asi poder parchear las flash de otros routers:
- CG3100Dv3
- EPC3825
- EPC3925

Una vez parcheadas esas flash se pueden modificar los parametros de configuracion y generar nuevos archivos de configuracion "GatewaySettings.bin" o "filename.gwc" con los puertos telnet o SSH abiertos.
Esos nuevos archivos de configuracion "GatewaySettings.bin" con los puertos telnet o SSH abiertos serviran para "desbloquear" cualquier router que este "bloqueado" con el firmware original y los puertos telnet y SSH cerrados.
Una vez abierto cualquiera de estos puertos sera posible una actualizacion del firmware original al firmware OpenWrt sin necesidad de programadores "hardware".

Hay 2 posibilidades para la deteccion de las posiciones de los bytes de configuracion del telnet o el SSH:
1.- Hacer modificaciones en la flash directamente, desde la consola que aparece tras el "boot" (si pulsamos la tecla 'p' a traves de un hiperterminal).
2.- Restaurando por pagina web el archivo de configuracion "GatewaySettings V5.5.2R06b.bin" que tiene el puerto SSH abierto.
Cualquiera de estas 2 opciones genera cambios en la memoria flash que permitira la localizacion de las posiciones de esos bytes, por comparacion con la memoria flash original con los puertos cerrados.

Si se ha mantenido parte de las estructura de configuracion en otras versiones y modelos de routers no sera muy dificil localizar esas posiciones en las flashes de esos routers.

Como datos a tener en cuenta:
- El CRC, mas que un CRC de 32 bits parece 4 checksums de 1 byte, ya que el CRC32, aunque solo haya una variacion en 1 byte en los datos, tiende a modificar los 4 bytes del resultado, no solo 1 o 2.
- La comprobacion del CRC de la imagen se puede deshabilitar, o al menos eso parece. Esto permitira cargar una imagen de OpenWrt sin problemas.

Bootlogs obtenidos:
00_bootlogs_115200_8N1_originales_CG3100D.zip (http://www.mediafire.com/download/l0xarrzkezt4182/00_bootlogs_115200_8N1_originales_CG3100D.zip)

Firmware del CG3100D V5.5.2R06b original (telnet y SSH cerrados):
A continuacion se ha procedido a desoldar la memoria flash serie y a leerla en un programador:
(https://dl.dropboxusercontent.com/sc/cg1zldyvt5v020s/jUGRRcj_g-/0) (https://dl.dropboxusercontent.com/sc/cg1zldyvt5v020s/jUGRRcj_g-/0)
(https://dl.dropboxusercontent.com/sc/w3jilz2iq73gmfx/4dd5lATrP7/0) (https://dl.dropboxusercontent.com/sc/w3jilz2iq73gmfx/4dd5lATrP7/0)
(https://dl.dropboxusercontent.com/sc/euv16arsfzw94d2/DsiaYgD_Ku/0) (https://dl.dropboxusercontent.com/sc/euv16arsfzw94d2/DsiaYgD_Ku/0)

Firmware obtenido:
flash-CG3100D-original.zip (http://www.mediafire.com/download/q3yl2dr1qqkkbb4/flash-CG3100D-original.zip)

En cuanto pueda seguire con las pruebas y relecturas de la memoria, con las distintas opciones de aperturas de puertos habilitadas.

Saludos
espeltron
Título: Re: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: jar229 en 10-02-2014, 08:30 (Lunes)
Que bien se lo pasan algunos con un soldador en las manos :D

Enviado desde mi CUBOT GT99 usando Tapatalk
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 11-02-2014, 23:02 (Martes)
Nuevos descubrimientos:

01.- El firmware del CG3100Dv3 funciona correctamente en el CG3100D.
(https://dl.dropboxusercontent.com/sc/9iyxwyud9u9crp3/wX5nPZbTJP/0) (https://dl.dropboxusercontent.com/sc/9iyxwyud9u9crp3/wX5nPZbTJP/0)
Funciona correctamente:
- Consola serie, con los mensajes del boot.
- Los puertos ethernet.
- Los leds indicadores, incluidos los de los modos 100M del switch (color naranja).
- La antena wifi, haciendo conexiones WPA2 correctamente.
Asi que las diferencias del firmware del OpenWrt serian minimas (en principio solo el puerto USB que si existe en el CG3100D).

Alguien que tuviera el hardware CG3100Dv3 podria probrar el caso contrario, si el firmware del CG3100D funciona correctamente o no en el hardware CG3100Dv3.

02.- El firmware del CG3100Dv3 si responde a la consola serie si se pulsa '2' en los primeros 2 segundos tras el encendido, pero indica que no puede cargar la imagen y se resetea. Seguramente el volcado seria por tftp o puede que por consola serie, aunque improbable.

03.- Generando un archivo de imagen flash.bin con los primeros 128K de la flash de la version CG3100D y los 7.9M restantes de la flash CG3100Dv3 es posible el arranque y la carga del firmware con la interfaz Genie, con algun mensaje de "anomalia" en el boot, pero aun asi la pagina web Genie funciona correctamente.
Durante el arranque se puede ver el siguiente mensaje en la consola serie:
Código: [Seleccionar]
Enter '1', '2', or 'p' within 2 seconds or take default...Y al entrar con 'p' podemos modificar ciertos parametros del boot, pero ninguna configuracion del firmware.
Código: [Seleccionar]
Board IP Address  [0.0.0.0]:
Board IP Mask     [255.255.255.0]:
Board IP Gateway  [0.0.0.0]:
Board MAC Address [00:10:18:ff:ff:ff]:

Internal/External phy? (e/i)[i]
Waiting for link up...


Main Menu:
==========
  b) Boot from flash
  g) Download and run from RAM
  d) Download and save to flash
  e) Erase flash sector
  m) Set mode
  s) Store bootloader parameters to flash
  i) Re-init ethernet
  r) Read memory
  w) Write memory
  j) Jump to arbitrary address
  z) Reset


Link up: 1G full


Mode Configuration Bits
=======================
 0x8000 Boot
 0x4000 Load-N-Go
 0x0004 Boot image 1
 0x0002 Verify image CRC
 0x0001 Prompt

Phy Selection
-------------
 0x0000  Default PHY
 0x0100  Internal EPHY
 0x0200  External EPHY

Enter hex value of desired features
MODE=8003: Enter new value:
Asi que la utilidad de esto esta limitada a opciones y parametros del boot exclusivamente, y para alguna carga manual de un firmware una vez "flasheada" la memoria con este boot (bloque inicial de tamaño 128K).

04.- En una de las pruebas, por error en la escritura de ciertos bloques de la flash, dicha flash no pudo arrancar el router CG3100D, indicando un mensaje de error en el CRC.
Por tanto, si no se deshabilita el CRC en el boot hay que crear imagenes OpenWrt con su CRC correcto (si se decide mantener este bootloader).

05.- Tras mas de 10 volcados de memorias "flash" he llegado a la conclusion de que los parametros de configuracion nvram se localizan en los ultimos 64K de la memoria flash.
Concretamente a partir de la posicion 0x7F00CA.
En diferentes pruebas y ensayos realizados en el router, todos los datos anteriores a esa posicion se mantienen inalterados (en todos los ficheros flash.bin obtenidos).
Las pruebas que modificaban los parametros nvram han sido:
- Encendido y apagado del router.
- Actualizacion del fichero "GatewaySettings.bin".
- Pulsacion del boton "Reset" del router.

06.- Por el aspecto de la zona de memoria, se sospecha tambien que puede haber otra nvram secundaria de 64K.
Se localizaria en el penultimo bloque de la memoria flash, a partir de la posicion 0x7E0000, aunque esto esta sin confirmar.
Este bloque no sufre modificaciones en ningun momento.
Este segundo bloque de nvram podria servir para alojar los parametros de la imagen '2', que no existe aun.
Como dicha imagen nunca se ha cargado y utilizado, no se ha modificado esta zona de memoria.

07.- El firmware del CG3100Dv3 si responde a comandos SNMP, al menos al que indica la descripcion del aparato.
Citar
c:\tmp>snmpget -v2c -c public 192.168.100.1 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Netgear Cable Modem <<HW_REV: 2.00; VENDOR: NETGEAR; BOOTR: 2.3.0beta6; SW_REV: V1.04.02; MODEL: CG3100D>>

Objetivo de todas estas pruebas:
El objetivo es obtener un archivo de configuracion "GatewaySettings.bin" con los puertos telnet o SSH abiertos.
Esto es todavia complicado de conseguir, ya que parece que todos los accesos estan bloqueados.
De momento solo esta la opcion de actualizacion a OpenWrt mediante reprogramacion de la flash con un programador de memorias SPI.

Modelos de routers que si permitirian una actualizacion del firmware por software:
- CG3100D (con versiones software V5.5.4.mp2_R09b.bin, V5.5.2R06b.bin o anteriores)

A la espera de los parches de Florian.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 13-02-2014, 13:30 (Jueves)
Nuevos descubrimientos:

01.- El firmware del CG3100Dv3 funciona correctamente en el CG3100D.
(https://dl.dropboxusercontent.com/sc/9iyxwyud9u9crp3/wX5nPZbTJP/0) (https://dl.dropboxusercontent.com/sc/9iyxwyud9u9crp3/wX5nPZbTJP/0)
Funciona correctamente:
- Consola serie, con los mensajes del boot.
- Los puertos ethernet.
- Los leds indicadores, incluidos los de los modos 100M del switch (color naranja).
- La antena wifi, haciendo conexiones WPA2 correctamente.
Asi que las diferencias del firmware del OpenWrt serian minimas (en principio solo el puerto USB que si existe en el CG3100D).

Alguien que tuviera el hardware CG3100Dv3 podria probrar el caso contrario, si el firmware del CG3100D funciona correctamente o no en el hardware CG3100Dv3.

02.- El firmware del CG3100Dv3 si responde a la consola serie si se pulsa '2' en los primeros 2 segundos tras el encendido, pero indica que no puede cargar la imagen y se resetea. Seguramente el volcado seria por tftp o puede que por consola serie, aunque improbable.

03.- Generando un archivo de imagen flash.bin con los primeros 128K de la flash de la version CG3100D y los 7.9M restantes de la flash CG3100Dv3 es posible el arranque y la carga del firmware con la interfaz Genie, con algun mensaje de "anomalia" en el boot, pero aun asi la pagina web Genie funciona correctamente.
Durante el arranque se puede ver el siguiente mensaje en la consola serie:
Código: [Seleccionar]
Enter '1', '2', or 'p' within 2 seconds or take default...Y al entrar con 'p' podemos modificar ciertos parametros del boot, pero ninguna configuracion del firmware.
Código: [Seleccionar]
Board IP Address  [0.0.0.0]:
Board IP Mask     [255.255.255.0]:
Board IP Gateway  [0.0.0.0]:
Board MAC Address [00:10:18:ff:ff:ff]:

Internal/External phy? (e/i)[i]
Waiting for link up...


Main Menu:
==========
  b) Boot from flash
  g) Download and run from RAM
  d) Download and save to flash
  e) Erase flash sector
  m) Set mode
  s) Store bootloader parameters to flash
  i) Re-init ethernet
  r) Read memory
  w) Write memory
  j) Jump to arbitrary address
  z) Reset


Link up: 1G full


Mode Configuration Bits
=======================
 0x8000 Boot
 0x4000 Load-N-Go
 0x0004 Boot image 1
 0x0002 Verify image CRC
 0x0001 Prompt

Phy Selection
-------------
 0x0000  Default PHY
 0x0100  Internal EPHY
 0x0200  External EPHY

Enter hex value of desired features
MODE=8003: Enter new value:
Asi que la utilidad de esto esta limitada a opciones y parametros del boot exclusivamente, y para alguna carga manual de un firmware una vez "flasheada" la memoria con este boot (bloque inicial de tamaño 128K).

04.- En una de las pruebas, por error en la escritura de ciertos bloques de la flash, dicha flash no pudo arrancar el router CG3100D, indicando un mensaje de error en el CRC.
Por tanto, si no se deshabilita el CRC en el boot hay que crear imagenes OpenWrt con su CRC correcto (si se decide mantener este bootloader).

05.- Tras mas de 10 volcados de memorias "flash" he llegado a la conclusion de que los parametros de configuracion nvram se localizan en los ultimos 64K de la memoria flash.
Concretamente a partir de la posicion 0x7F00CA.
En diferentes pruebas y ensayos realizados en el router, todos los datos anteriores a esa posicion se mantienen inalterados (en todos los ficheros flash.bin obtenidos).
Las pruebas que modificaban los parametros nvram han sido:
- Encendido y apagado del router.
- Actualizacion del fichero "GatewaySettings.bin".
- Pulsacion del boton "Reset" del router.

06.- Por el aspecto de la zona de memoria, se sospecha tambien que puede haber otra nvram secundaria de 64K.
Se localizaria en el penultimo bloque de la memoria flash, a partir de la posicion 0x7E0000, aunque esto esta sin confirmar.
Este bloque no sufre modificaciones en ningun momento.
Este segundo bloque de nvram podria servir para alojar los parametros de la imagen '2', que no existe aun.
Como dicha imagen nunca se ha cargado y utilizado, no se ha modificado esta zona de memoria.

07.- El firmware del CG3100Dv3 si responde a comandos SNMP, al menos al que indica la descripcion del aparato.
Citar
c:\tmp>snmpget -v2c -c public 192.168.100.1 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Netgear Cable Modem <<HW_REV: 2.00; VENDOR: NETGEAR; BOOTR: 2.3.0beta6; SW_REV: V1.04.02; MODEL: CG3100D>>

Objetivo de todas estas pruebas:
El objetivo es obtener un archivo de configuracion "GatewaySettings.bin" con los puertos telnet o SSH abiertos.
Esto es todavia complicado de conseguir, ya que parece que todos los accesos estan bloqueados.
De momento solo esta la opcion de actualizacion a OpenWrt mediante reprogramacion de la flash con un programador de memorias SPI.

Modelos de routers que si permitirian una actualizacion del firmware por software:
- CG3100D (con versiones software V5.5.4.mp2_R09b.bin, V5.5.2R06b.bin o anteriores)

A la espera de los parches de Florian.

Saludos
espeltron
Buenas,

He conseguido instalar el bootloader del CG3100D en el CG3100Dv3 sin problemas :D.
Funciona todo y encima tengo cli, así que puedo arrancar ramdisks.

En cuanto tenga tiempo lo añado al primer post, aunque lo ideal sería encontrar qué hay que cambiar en el bootloader para conseguir activar la consola, porque estoy convencido de que realizando ciertos cambios se puede habilitar en el mismo bootloader original.

Saludos!
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 13-02-2014, 16:09 (Jueves)
Creo que una opcion seria ver la interfaz web y los codigos fuente de las paginas de configuracion que habilitan el telnet o el SSH.
La version V5.5.2R06b y las posteriores no tienen estas opciones, porque se las han borrado de la interfaz, pero es posible que las variables las hayan mantenido de forma oculta.
Con Opera 12 y sabiendo que codigo hay que insertar en la pagina adecuada seria posible habilitar el Telnet en las nuevas versiones.
Supongo que aunque la interfaz Genie sea distinta, ciertas variables se hayan mantenido.

Hay dos firmwares que puede que aun tengan habilitadas las opciones de telnet en su interfaz web:
V5.5.2R05.bin
V5.5.2R04E-HYEA.bin

Seria cuestion de probar y ver.
Yo actualmente no tengo tiempo para estas pruebas, a ver si podeis hacerlas alguno de vosotros y comentais los resultados.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: danitool en 13-02-2014, 17:06 (Jueves)
Creo que una opcion seria ver la interfaz web y los codigos fuente de las paginas de configuracion que habilitan el telnet o el SSH.
La version V5.5.2R06b y las posteriores no tienen estas opciones, porque se las han borrado de la interfaz, pero es posible que las variables las hayan mantenido de forma oculta.
Con Opera 12 y sabiendo que codigo hay que insertar en la pagina adecuada seria posible habilitar el Telnet en las nuevas versiones.
Supongo que aunque la interfaz Genie sea distinta, ciertas variables se hayan mantenido.

Para probar esto hace falta recurrir a los firmwares anteriores, con versiones que si tenian la casilla del telnet:
Citar
Backup Netgear.rar
http://www.mediafire.com/?o5noau4hv1j71uo (http://www.mediafire.com/?o5noau4hv1j71uo)

Hay dos firmwares que puede que aun tengan habilitadas las opciones de telnet en su interfaz web:
V5.5.2R05.bin
V5.5.2R04E-HYEA.bin

Seria cuestion de probar y ver.
Yo actualmente no tengo tiempo para estas pruebas, a ver si podeis hacerlas alguno de vosotros y comentais los resultados.

Saludos
espeltron

Podrían darse dos situaciones
- o bien borraron solo visibilidad html en las páginas esas variables que habilitan el telnet
- o bien borraron en las páginas html pero también en el ejecutable que se comunica con el servidor web para hacer cambios en la configuración.

De temas html, cgi, etc sé más bien poco, así que me lo imagino de esa forma.

Personalmente no tengo mucho interés en encontrar rápidamente un método para habilitar telnet/flasheo sin usar programador porque
- Aun no hay ningún firmware OpenWrt que se pueda testear
- En caso de haberlo, todavía estaría en fase alfa.
- Encontrar una forma fácil de flashear firmwares fase alfa, es una buena forma de hacer que gente, que simplemente quiere probar openwrt, lo flashee así sin más (porque es fácil) sin saber en que estado está el firmware, con el riesgo de crear un brick o/y dañar la re****ción de OpenWrt.

Así que hasta que haya algo potable, prefiero simplemente hacer alguna que otra prueba y si por casualidad descubro algo pues bienvenido sea. Mientras tanto, programar directamente la flash es lo más fácil e indoloro que hay.

Si alguien tiene aportes por supuesto son bienvenidos.
espeltron ha realizado un muy buen trabajo con el tema de la flash, creo que es una buena base para que otros lo usen para avanzar con esto.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: espeltron en 16-02-2014, 19:02 (Domingo)
Para poder saber como esta estructurada la imagen flash y como funciona el firmware es necesario conocer los routers anteriores. En algunas cosas las diferencias son minimas.

Manual encontrado en internet, con VxWorks, comandos SNMP para el Factory Mode, SB5100 y mas cosas:
http://kts.es/Enlightened-Mans/Guides/Hacking%20The%20Cable%20Modem.pdf (http://kts.es/Enlightened-Mans/Guides/Hacking%20The%20Cable%20Modem.pdf)

Aqui se puede ver parte de la estructura del "Firmware Images" conincidente tambien con los modelos de routers actuales:
http://wiki.openwrt.org/oldwiki/openwrtdocs/hardware/scientific_atlanta/dpc2100 (http://wiki.openwrt.org/oldwiki/openwrtdocs/hardware/scientific_atlanta/dpc2100)
Citar
2 bytes: signature (hardware target ID)
2 bytes: "Control" (image compression format)
   00 00 -- Uncompressed
   00 01 -- LZRW1/KH
   00 02 -- mini-LZO
   00 03 -- Uncompressed
   00 04 -- NRV2D99 (required for bootloader?)
   00 05 -- (non-standard) LZMA
   00 06 -- Uncompressed
   00 07 -- Uncompressed
2 bytes: Major Rev 00 03
2 bytes: ?? Minor Rev 00 00
4 bytes: Build Time
4 bytes (int32): File Length
4 bytes: Load Address
   81 f8 00 00 -- for Bootloader?
   80 01 00 00 -- for Firmware Image
64 bytes: Filename (padded null)
2 bytes: HCS (Header checksum?) 06 49
2 bytes: 00 00
4 bytes: CRC
*Data*
El DPC2100 lleva un  Broadcom BCM3349, misma familia BCM33xx que los BCM3380 de los CG3100D, CG3100Dv3, EPC3825 y EPC3925.

Si se analizan los firmwares de los BCM3380 se observa que hay 2 imagenes completas.
La estructura de la memoria SPI quedaria asi:
Código: [Seleccionar]
0x000000 .. 0x01FFFF Bootloader y algunos parametros de configuracion permanentes (128K)
0x020000 .. 0x3FFFFF Imagen 1 (3968K)
0x400000 .. 0x7DFFFF Imagen 2 (3968K)
0x7E0000 .. 0x7EFFFF ¿?, vacio, sin usar, ¿NVRam 2? (64K)
0x7F0000 .. 0x7FFFFF NVRam (64K)

Tambien resaltar que los parametros de configuracion se encuentran en una zona localizable por la cadena magica "MLog".
Dicha cadena "MLog" se encuentra en la parte alta de la zona "bootloader" y en la parte final de la memoria, en "NVRam".

Sospecho que "Permanent settings from non-vol" esta en la parte alta del bootloader y "Dynamic settings from non-vol" esta en la parte de ""NVRam", tal y como hace sospechar las localizaciones de los "MLog".
http://wiki.openwrt.org/toh/netgear/cg3100dv3 (http://wiki.openwrt.org/toh/netgear/cg3100dv3)
Citar
Reading Permanent settings from non-vol...
Checksum for permanent settings: 0x49ca063
Settings were read and verified.

Reading Dynamic settings from non-vol...
Checksum for dynamic settings: 0xc3fa1d95

En algunos routers de la familia BCM33xx ya se ha conseguido implementar "algo" del OpenWrt.
En concreto en el WebSTAR DPC2100 con el procesador BCM3349.
http://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm33xx (http://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm33xx)

Otro router, el CVG834G, de la misma familia BCM33xx, utiliza el BCM3368:
http://wiki.openwrt.org/doku.php?id=oldwiki%3Aopenwrtdocs:hardware%3Anetgear:cvg834g (http://wiki.openwrt.org/doku.php?id=oldwiki%3Aopenwrtdocs:hardware%3Anetgear:cvg834g)
Que tambien tiene algo compilado para OpenWrt:
http://downloads.openwrt.org/snapshots/trunk/brcm63xx/openwrt-cvg834g-squashfs.bin

El parche para los BCM3368 esta disponible:
http://git.openwrt.org/?p=openwrt.git;a=blob_plain;f=target/linux/brcm63xx/patches-3.10/036-MIPS-BCM63XX-add-support-for-BCM3368-Cable-Modem.patch;hb=HEAD (http://git.openwrt.org/?p=openwrt.git;a=blob_plain;f=target/linux/brcm63xx/patches-3.10/036-MIPS-BCM63XX-add-support-for-BCM3368-Cable-Modem.patch;hb=HEAD)

Y de otros sitios se ve que tambien esta disponible:
http://lxr.free-electrons.com/source/arch/mips/bcm63xx/boards/board_bcm963xx.c (http://lxr.free-electrons.com/source/arch/mips/bcm63xx/boards/board_bcm963xx.c)
Código: [Seleccionar]
39 /*
 40  * known 3368 boards
 41  */
 42 #ifdef CONFIG_BCM63XX_CPU_3368
 43 static struct board_info __initdata board_cvg834g = {
 44         .name                           = "CVG834G_E15R3921",
 45         .expected_cpu_id                = 0x3368,
 46
 47         .has_uart0                      = 1,
 48         .has_uart1                      = 1,
 49
 50         .has_enet0                      = 1,
 51         .has_pci                        = 1,
 52
 53         .enet0 = {
 54                 .has_phy                = 1,
 55                 .use_internal_phy       = 1,
 56         },
 57
 58         .leds = {
 59                 {
 60                         .name           = "CVG834G:green:power",
 61                         .gpio           = 37,
 62                         .default_trigger= "default-on",
 63                 },
 64         },
 65
 66         .ephy_reset_gpio                = 36,
 67         .ephy_reset_gpio_flags          = GPIOF_INIT_HIGH,
 68 };
 69 #endif

Respecto a los EPC3825 y EPC3925, he encontrado un metodo que tal vez pueda servir para habilitar el telnet basandose en una pagina web oculta:
http://www.forocable.com/foro/threads/55094-DPC2100r2-dpc2100R2-v2-0-2r1256-100923as?highlight=EPC2100 (http://www.forocable.com/foro/threads/55094-DPC2100r2-dpc2100R2-v2-0-2r1256-100923as?highlight=EPC2100)
Citar
crear un nuevo archivo, copiar el codigo de abajo y guardar como modem.html luego abrir con el navegador de internet y en la pagina que se abre elegir 2 y listo.
Código: [Seleccionar]
<html>
  <head>
    <title>CISCO DPC2100 Modem Unlock Tool</title>
  </head>
  <body>
    <form action="http://192.168.100.1/goform/_aslvl" method="post">
      <input type="hidden" name="SAUsername" value="admin" />
      <input type="hidden" name="SAPassword" value="W2402" />
      <table border="1">
        <tr>
          <th>Access Level</th>
          <td><select type="dropdown" name="SAAccessLevel">
            <option value="0">0</option>
            <option value="1">1</option>
            <option value="2">2</option>
          </select></td>
        </tr>
        <tr>
          <th colspan="2"><input type="submit" name="submit" value="Submit" /></th>
        </tr>
      </table>
    </form>
  </body>
</html>
Aunque esta sin probar.
Es posible que en vez de "_aslvl" la direccion web correcta sea "_aslvl.asp" ya que esta cadena si aparece dentro de la imagen descomprimida del firmware EPC3825.

Esperemos que los parches para el BCM3380 esten pronto.

Saludos
espeltron
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Noltari en 30-05-2014, 03:19 (Viernes)
Buenas,

Florian me ha pasado los parches del BCM3380 y he conseguido "iniciar" OpenWrt en el CG3100Dv3:
http://pastebin.com/c07C7zPJ

Aquí tenéis disponible un repo con los parches para hacer pruebas:
Atención: cuidado con lo que hacéis.
https://github.com/openwrt-es/openwrt/tree/bcm3380

La mitad de las funcionalidades no están activadas, la RAM está forzada a 16MB... Pero por lo menos hay algo y funciona, que ya es un avance.

Saludos.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Yona en 03-06-2014, 20:00 (Martes)
Tengo el netgear CG3100 de ono, desde que actualizaron el firmware ya no puedo usar una funciona que usaba habitualmente que era la del filtro horario, me gustaría saber si puedo instalarle un firmware anterior o cualquier otro, si se fastidia el router pues bueno uno menos para algo pago la factura de Internet, me gustaría instalarle cualquier cosa con tal de que tenga un firmware normal y no sin opciones a penas, parece que tenga la NAT desactivada de tan pocas opciones... saludos.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Pteridium en 04-06-2014, 10:38 (Miércoles)
Tengo el netgear CG3100 de ono, desde que actualizaron el firmware ya no puedo usar una funciona que usaba habitualmente que era la del filtro horario, me gustaría saber si puedo instalarle un firmware anterior o cualquier otro, si se fastidia el router pues bueno uno menos para algo pago la factura de Internet, me gustaría instalarle cualquier cosa con tal de que tenga un firmware normal y no sin opciones a penas, parece que tenga la NAT desactivada de tan pocas opciones... saludos.
No te va a valer porque la wifi, el puerto usb y la lan no funcionan: el bcm3380 gestiona los periféricos de una manera muy extraña.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: robitibillo en 17-01-2015, 02:28 (Sábado)
Hola, me habeis dejado totalmente impresionado con vuestro gran trabajo, daros a todos las gracias y preguntaros si aún se continua el desarrollo y si a conseguido algún avance al respecto. Ha mí ONO me a instalado este router que es un asco, está totalmente cerrado y si necesitais alguna prueba me encanta soldar y no le tengo miedo a trastear nada je.

Saludos
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: pepin1 en 05-02-2015, 10:02 (Jueves)
Buenos días,

llevo buscando información de este router y me encuentro con este gran trabajo,
seguir adelante,
muchas gracias.
Título: Re: [Desarrollo] OpenWrt en Netgear CG3100Dv3
Publicado por: Pteridium en 11-02-2015, 13:21 (Miércoles)
Hola, me habeis dejado totalmente impresionado con vuestro gran trabajo, daros a todos las gracias y preguntaros si aún se continua el desarrollo y si a conseguido algún avance al respecto. Ha mí ONO me a instalado este router que es un asco, está totalmente cerrado y si necesitais alguna prueba me encanta soldar y no le tengo miedo a trastear nada je.

Saludos
El problema con el BCM3380 es que no se ha portado el código del driver ethernet ni el del usb, además de que el bus interno es un poco raro y tampoco hay código fuente disponible.  :(
Lo que sí hay es soporte en el kernel, desde la versión 3.19, del BCM3384, pero varían varias cosas con lo que no sé si valdrá para el 3380.
De momento está estancado ...
Buenos días,

llevo buscando información de este router y me encuentro con este gran trabajo,
seguir adelante,
muchas gracias.
Que más quisiéramos muchos pero de momento el soporte para este chip está parado.  :-\