miércoles, 31 de marzo de 2021

SJCL: Cifrado en el Sercomm FG824CD

Como ya sabréis, me estoy pegando con el router FG824CD para intentar recuperar datos que no te dan el usuario cutre que sólo te da unas posibilidades muy limitadas y que apenas sirven para nada. Como quieras hacer cosillas, como obtener los datos de acceso al servidor VoIP, lo llevas claro. 

Una de las cosas que uno se encuentra al hacer debug en la interfaz web mientras se van cargando cada una de las secciones a las que se accede es una librería de cifrado y descifrado sjcl: "Stanford Javascript Crypto Library (SJCL)". Según la describen los que la han desarrollado está destinada para aplicaciones web que no requieran muchos recursos. Y eso es lo que puede necesitar un router. Además tienen una demo que permite hacer pruebas. Yo ya lo intenté ver cuando me puse a pegarme con esto pero no vi muy bien cómo funcionaba. Hasta que hace unos días...

Ahora mi idea es probar a hacer un cifrado con los parámetros que me parezcan lo más parecido posible a lo que veo al debuguear.

Una primera prueba que he hecho ha sido la que se puede ver en la siguiente captura:

Prueba de cifrando con SCJL
Prueba de cifrando con SCJL

En este ejemplo he hecho un cifrado sin tirar de contraseña, ya que he visto que aparentemente en el router se utiliza una clave de 32 dígitos hexadecimales. Al menos, claves de esas me he encontrado en bastantes ocasiones. Al hacer el cifrado el textarea del mensaje se borra. 

Como tengo que volver a buscar algunos datos, ya sea porque no tengo todo y porque ya hace un tiempo que no miro esta parte lo tengo un poco olvidado, voy a recopilar algunos más actualizados. Por lo que buscaré las variables sys_encryption_key y dk, las cuales acababan conteniendo el mismo valor. Queriendo recordar me suena que cuando estas tenían contenían algún valor también había alguna variable justo con los datos del scjl. Lo que también significa que tendré que volver a habilitar los puntos de ruptura en esta librería.

La primera en la frente. Poniendo el hash que me ofrecen y el resultado en el formato json con el que guardaban los datos que van a descifrar, quería probar a lanzarlo yo mismo en la demo, pero el resultado ha salido infructuoso:

SCJL intentando descifrar datos del router Sercomm FG824CD sin éxito
SCJL intentando descifrar datos del router Sercomm FG824CD sin éxito

Hay una cosa curiosa que ya la conté en su momento: ese sys_encryption_key no es estático. He visto un montón de veces que al ir al mismo sitio me mostraba distintos valores. Pero a su vez es  un parámetro que se pasa al método que se encarga de hacer el descifrado. Lo que significa que tiene que sufrir alguna transformación específica. Seguro. O al menos habrá que pensar que algo de eso tiene que ser. Si cada X tiempo cambia o es así o el sistema cifra todos los datos constantemente para poder descifrarlo después. ¿Alguna otra opción se os ocurre?

El método al que se llama contiene este código. De los cuatro parámetros que puede recibir se le mandan dos. El primero es el hash y el segundo el resultado de lo que se obtuvo al cifrar los datos y que ahora el router quiere descifrar.

´Método decrypt de la librería SJCL en el Sercomm FG824CD
´Método decrypt de la librería SJCL en el Sercomm FG824CD

Mientras he estado viendo poco a poco los pasos que hace, y la verdad, algunos resultados intermedios no podría decir qué son porque convierten cadenas a "binario" (eso dicen: acaban siendo arrays numéricos) me he encontrado con una función en la que dentro se muestra precisamente el mensaje del alert que suelta la demo:

SJCL en FG824CD: CCM tag doesn't match
SJCL en FG824CD: CCM tag doesn't match

En este punto tendría que ver por qué en el router no me da este mensaje pero sí que salta en la demo. Iba a dejarlo aquí, pero he querido hacer la siguiente prueba: buscar esa línea en la demo, ver qué me encontraba y a una mala manipular los datos para forzar a que no saltase esa excepción.


Debug de SJCL en la página demo
Debug de SJCL en la página demo

Me ha llamado la atención que son distintas versiones ya que como se puede apreciar las líneas no coinciden. Y por desgracia los valores que se comparan, en efecto, son distintos. No he podido profundizar el por qué. No obstante, he probado a ver qué pasaba si forzaba la igualdad, en dos ocasiones, cambiando el valor del otro operador en cada una de ellas... Pero me ha salido unos datos muy raros. 

El resumen: si se os ocurre algo más para atacar este problema, bienvenido sea. Y como de costumbre, lo podéis dejar en los comentarios.

[Update]
Se me ha ocurrido: ¿qué pasaría si me descargase la demo y después la versión de la librería sjcl.js que carga el router para forzar que la demo llame a esta última? Me da el mismo error.
[/Update]

domingo, 7 de marzo de 2021

Maxcio EDM-1WAA-EU: Configuración inalámbrica

Como conté en el anterior post tuve problemas para instalar el Maxcio EDM-1WAA-EU porque en nigún sitio explicaban que había que quitarle el botón para poder atornillarlo en la caja de mecanismos. 

El tema es que las instrucciones tampoco indican muy bien cómo configurarlo para poder gestionarlo con la aplicación de móvil. Una de las cosas que no lo cuentan bien es cómo poner los dos modos en los que se puede enlazar el cacharro. Ya lo conté también en la entrada anterior.

El problema que he me he encontrado es que no ha sido fácil que se sincronice con la aplicación. 

Intentando poner los datos de la wifi en la que yo estaba conectado (el SSID y su clave para que se pudiera conectar) a los pocos segundos dejaba de parpadear su pilotito y ya... Pero la aplicación seguía esperando respuesta sin éxito acabando el tiempo sin resultados. 

Intentando configurarlo en modo AP, para conectar el móvil al mismo tampoco acababa de sincronizarse apagándose también el pilotito antes de tiempo. Eso sí, conseguía averiguar que su servidor DHCP me daba una dirección IP del rango 192.168.175.0/24. Sine embargo, con una prueba básica de intentar acceder a un servidor web no había resultados con éxito. 

Por lo tanto, me puse a mirar qué me indicaba el Mikrotik 4UAHR. En él podía ver cómo el interruptor se conectaba unos segundos, a unos 6 mbps, y pero sólo para Tx (entiendo que en sentido del punto de acceso). Y a los pocos segundos se desconectaba y se volvía a conectar. 

Por otro lado los logs de AP mostraban que en efecto el regulador se desconectaba:

CA:FE:CA:FE:CA:FE:CA@testWifi: disconnected, received deauth: sending station leaving (3)

Y... no he podido saber muy bien qué significaba esto. No obstante... He intentado probar con varias de las tarjetas de red que tenía configuradas. Una o dos de las de prueba les he cambiado el perfil de seguridad para poner una contraseña más fácil. Incluso sin espacios (ya que si se los pones se quejará, aunque no te impide continuar). Y ni por esas. Hasta que se me ha ocurrido hacer una pequeña locura que hay que acordarse de volver a cambiar: no ponerle contraseña. Así, ha funcionado. Se ha conectado a la primera. 

El siguiente paso ha sido volver a poner uno de los perfiles de seguridad. Como estas configuraciones dependen del móvil, el cual lo he ido conectando a la misma red, he podido comprobar que el dimmer ya no necesita que lo vuelva a configurar. Es decir: le he puesto la contraseña segura al móvil y se ha conectado, pero el regulador no ha requerido que se la vuelva a pasar. Es más, conectado a la wifi principal sigue funcionando. Y voy más allá: sin haber creado una cuenta véteTúASaberDónde y tirando de datos móviles también lo puedo manipular.

Un siguiente paso sería cacharrear con sus comunicaciones: por qué no me aparece como conectado en el punto de acceso, qué puertos tiene abiertos... 

¡Ah! No se me olvide: viendo videos al buscar ayuda para su desmontaje me he encontrado con que hay otra marca comercial cuyos tratos yo diría que son exactamente los mismos y se llama Ener-J. Por si también os sirve de ayuda.

Espero si habéis llegado aquí porque teníais problemas haberos podido ayudar.

sábado, 6 de marzo de 2021

Maxcio EDM-1WAA-EU - Instalación física y despiece

Antes de empezar, disclarimer: Cualquier cosa de las que se muestran aquí son posibles soluciones pero podría no funcionarte a ti. No me responsabilizo de lo que le pueda suceder a tu dispositivo o a tu persona dado que estos aparatos funcionan con 220V: si no bajas los diferenciales y demás interruptores generales podrías llegar a electrocutarte o sin ser tan extremos darte un buen calambrazo.

Recientemente me han regalado un regulador de luz Maxcio EDM-1WAA-EU. El tema está en que lo que en teoría debería de ser posible de desmontar en 4 segundos... lo intenté durante horas sin éxito. 

Maxcio EDM-1WAA-EU
Maxcio EDM-1WAA-EU

Así, en teoría, al poner el destornillador en la pestaña que tiene en la parte inferior, se podrá desmontar o despiezar para:
  1. Dejar los agujeros de los tornillos al descubierto para poderlo anclar en la caja de mecanismos.
  2. Trastear o cacharrear, si se desea, con los chips que trae como si de un Arduino se tratara. Recuerda: este es un aparato que va conectado a los 220V; Mucho ojo con lo que haces que si lo haces con el aparato conectado directamente te podría dar un arreón de cuidado. 
Maxcio EDM-1WAA-EU - Pestaña para abrir el regulador
Maxcio EDM-1WAA-EU - Pestaña para abrir el regulador

Como decía: en teoría apoyando el destornillador justo dentro de lo que he marcado, en la misma esquia que se genera en ese hueco (lo más cerca posible del vértice verde, pero por dentro... Se debería de poder abrir este dimmer con mucha facilidad en apenas unos segundos. Pero me fue imposible. Se abría parcialmente sólo por dos lados contiguos. Tanto es así que lo apoyé donde no era ya por desesperación y acabé deformando parte de la carcasa (por eso os estoy dejando la foto con la deformación, para que se sepa dónde no poner el destornillador). De hecho, cuidado, porque por ahí está el chip y lo podrías estropear. Yo toqué un poco... Así, mi hermano me encontró una solución:

Once installed and setup the dimmer switch works perfectly. However, the first hurdle is taking off the face plate. After struggling to take it off I realised the dimmer button must be removed followed by the small washer on the metal button. After removing these, the face plate comes off easily. The instructions do not display this anywhere.

Es decir, que quitando el botón se debería de poder desmontar. No voy a negar que casi me lo esperaba porque el regulador que voy a quitar se hace así. De hecho, es mucho más sencillo porque el antiguo al ofrecer resistencia se quita el botón fácilmente pero este puede girar y girar sin fin. Así, al hacer un poco de fuerza con el botón hacia afuera, conseguí quitarlo:

Maxcio EDM-1WAA-EU - Quitar botón, tuerca y arandela

Como se puede ver, el botón se puede retirar. Una vez lo has quitado, se puede ver que hay una tuerca y debajo una arandela (que en esta foto aún no la he quitado). También hay que fijarse en que la espiga tiene una muesca (que he marcado en amarillo) que coincide con lo que he indicado en la parte inferior del botón.

Por lo que por fin he podido atornillarlo a la caja de mecanismos:

Maxcio EDM-1WAA-EU - Atornillado a la caja de mecanismos
Maxcio EDM-1WAA-EU - Atornillado a la caja de mecanismos

La verdad es que encajó casi por milímetros. Y los tornillos: tuve que aprovechar los originales porque los que venían con este regulador no entraban. También se puede ver que marqué un poco el chip al intentar abrirlo. ¡Ah! Y tuve que volver a poner uno de los cables de nuevo porque era rígido y se partió.

Por lo que ya estaría instalado y "funcionando". Sólo quedaría que configurarlo. Pero eso lo dejaré para más adelante.

Maxcio EDM-1WAA-EU - Instalado y encendido
Maxcio EDM-1WAA-EU - Instalado y encendido

Por lo que una vez subí los interruptores del cuadro de luces con todos los cables bien puestos en su interior... Ya estaba funcionando. Al menos pulsando para encender las luces... Girando a izquierda y derecha para regular las luces... Y volviendo a pulsar para apagar... Vamos: tal y como funciona un regulador básico, común, normal y corriente.

Como pistas y spoilers para intentar configurarlo:
  • Modo rápido o flash: Estado inicial, "apagado". Es decir, tal y como se muestra la foto. Pulsar entre 3 y 5 segundos. En alguna ocasión he tenido que hacerlo hasta 10. En este modo, con la aplicación, te piden qué red wifi quieres que se conecte (en teoría la misma donde estás) y poner la clave para que el regulador pueda conectarse a dicha wifi. Aquí deberías de tener las luces encendidas y el pilotito parpadeando rápido.
  • Modo AP: Con el pilotito parpadeando rápido vuelves a apretar unos segundos el pulsador. Debería de parpadear lento. 
Se quedará en el modo seleccionado muy pocos minutos. Mi problema está en que no consigo configurarlo hasta el final. Por eso lo dejo para otro día. 

Espero que si te encuentras con algún problema de los aquí descritos te haya sido de ayuda. Ya sabes: para cualquier cuestión, pregunta y a ver si te puedo ayudar.