Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

Crear una WiFi "de mentira" para engañar a aparatejo domótico simulando su nube

jesjimher

Me he comprado una báscula wifi chinorris, que cada vez que te pesas le envía lo gordaco que te has puesto a su nube china, y tú lo ves a su vez en la app para el móvil. Como buen producto chinorris, no permite ni exportar los datos, ni integrarse con terceros, ni nada de nada. Como no me mola tanto cerramiento, y se tiene que conectar a través de Wifi a internet, me había pasado por la cabeza crear una wifi de pacotilla, con una raspberry pi o similar, y emular la web china, de manera que la báscula se crea que ha conectado con su web en Pekín, pero realmente esté conectando con algún servidorcillo mío, y ya con la información hago lo que quiera (además de que así el trasto me seguirá funcionando aunque la empresa china desaparezca).

¿Alguien ha hecho algo parecido? Evidentemente lo primero sería emular la wifi y monitorizar a ver a dónde se está conectando el aparatejo. Sospecho que con alguna distro tipo Kali o similar se deben poder hacer estas cosas, pero como no lo he hecho nunca quería saber si alguna vez alguien ha hecho algo parecido.

Gracias!

BocaDePez
BocaDePez

Si la báscula usa https correctamente, con una store de certificados o mediante cert pinning no podrás hacer nada.

Si no pues en tu propia red con otro pc usa arpspoof y wireshark para ver dónde conecta y qué dice al servidor remoto.

🗨️ 1
jesjimher

Ya, confío en que, siendo de marca china cutre, no sean precisamente unos puristas de la seguridad, y el tinglado sea lo bastante chapucero como para meterle mano.

Googleando he encontrado esto, que creo que podría irme bien:

backtrackacademy.com/articulo/saltando-h…le-framework

Parece que es una herramienta (mitmf) que hace justo eso: ponerse en medio de una conexión y monitorizar todo lo que circula por ahí.

Weikis336
1

Usando una red wifi aunque la crees con el móvil sin conexión a la red y luego con un portátil también conectado viendo por wireshark los paquetes, puede estar divertido el asunto

BocaDePez
BocaDePez
3

Que manera de complicarse la vida, comprate una bascula normal de 10€, cuando te peses lo veras en ella y au.

🗨️ 1
jesjimher

Cierto, también voy a dar de baja la cuenta de Spotify: cuando quiera música me pongo a cantar, y listos :-)

En serio, entiendo que mucha gente no le vea el sentido a estas cosas, y les deseo toda la felicidad del mundo con su báscula de 10 eur. Pero a mí sí me facilitaría la vida, y lo que pregunto son ideas de cómo hacerlo. Para consejos sobre cómo llevar mi vida ya tengo a mi suegra :-D

jesjimher

Un ejemplo de por qué esto, que parece una chorrada, puede ser importante:

xataka.com/internet-of-things/basculas-u…ndose-tontos

Y eso que al menos la mía vale 30 eur, pero al que haya comprado una báscula de 180 eur para que a los pocos meses la compañía decida que ya no funciona, se le va a quedar una cara de tonto que pa qué...

🗨️ 6
NetVicious

Me paso algo similar con un reloj para chiquillos.

Por eso mismo si quieres tener una báscula inteligente de verdad sin tonterías de envíar la información a internet te diría de darle una patada a esa báscula y comprarte la de Xiaomi (vale unos 22€) que se conecta al móvil por bluetooth, y quien guarda la información histórica es el móvil y no una nube chinorris que igual dentro de un tiempo te deja también tirado.

🗨️ 5
jesjimher

No veo qué salgo ganando, cuando el ecosistema de Xiaomi es igual de cerrado que el de cualquier otro. Que Xiaomi tendrá más fama y prestigio que un fabricante chino anónimo y por tanto es menos probable que pase, no lo dudo, pero si en 2-3 años pasa cualquier cosa o simplemente Xiaomi decide que ya no necesita dar soporte a ese modelo antiguo, estoy vendido igual. De hecho he puesto más arriba un link a un caso en el que ha pasado exactamente eso, con un fabricante de prestigio.

Vamos, que prefiero algo abierto, aunque me cueste algo de trabajo, antes que simplemente atarme a otro diferente.

🗨️ 4
BocaDePez
BocaDePez
2

OpenMQTTGateway soporta las basculas BLE de Xiaomi (ademas de muchos mas aparatejos), con lo que no dependeras de si los chinos deciden cerrar su nube de pesos.

github.com/1technophile/OpenMQTTGateway

🗨️ 1
NetVicious

Lo que te he puesto es que la balanza de Xiaomi no necesita internet, se comunica con el móvil por bluetooth, y quien almacena el histórico es el móvil.

La balanza de Xiaomi se gestiona con la aplicación Mi Fit, que es la misma que se utiliza con las miBand y demás. Por ahora no he visto que Xiaomi deje tirado a ningún dispositivo de este estilo.

Como bien dices, garantía 100% a 20 años vista (por poner un ejemplo) no te lo va a firmar nadie.

Xiaomi, al igual que Apple, en su ecosistema de gadgets lo tiene bastante bien montado.

🗨️ 1
BocaDePez
BocaDePez

No entiendo nada: ¿La báscula se conecta sola a la WiFi, sin clave?, ¿es la app la que se conecta a internet?, ¿puedes ver el peso en la báscula o necesariamente en la app?, ¿puedes trazar las conexiones y redirigir o bloquear la petición?

🗨️ 3
jesjimher

Cuando sacas la báscula de la caja y la enciendes por primera vez, la báscula crea una wifi propia. La app del móvil se conecta a ella, configura dentro de la báscula los datos de la wifi "de verdad" (que introduces tú), y a partir de ahí la báscula se conecta directamente a internet vía wifi. Cada vez que te pesas, envía el peso (y otras mandangas) a su nube en china vía wifi, y tú desde la app del móvil consultas los datos, también desde la nube.

Para no depender de la nube china, ni sólo poder ver los datos desde la app china, mi idea es, ahora que ya está todo configurado y funcionando, sustituir la wifi "de verdad", con acceso a internet y tal, por otra de mentira, que se llame igual y donde no haya acceso a internet, sólo haya un servidor que se llame igual que el chino (supongo que necesitaré un DNS de mentirijillas también), y que pueda recibir lo que sea que envíe la báscula, que luego ya haré yo lo que quiera con esa información. En realidad veo que con otros cacharros hay gente que ha conseguido hacer algo así. Con el Pebble, un smart-relojillo de hace unos años, los usuarios montaron un servicio online alternativo cuando la empresa dejó de dar soporte oficial, y sigue funcionando a día de hoy.

Por tanto, lo primero que necesito es saber qué está haciendo exactamente la báscula cuando se conecta: a qué URL va, cómo se loguea, en qué formato manda los datos... Parece que tengo que hacerlo con wireshark, pero no tengo demasiada experiencia en el tema, aunque veo que habrá que aprender.

🗨️ 2
BocaDePez
BocaDePez

Le dices al Router que rediriga el tráfico donde quieras, y ese tráfico lo analizas.

🗨️ 1
jesjimher

¿Eso se puede hacer con el típico router de operadora? ¿O hace falta con uno tipo OpenWRT o similar?

BocaDePez
BocaDePez

Pudiendo redireccionar el tráfico tanton en Unix como en Windiws no entiendo que necesidad hay de hacer una "wifi falsa"...

🗨️ 1
jesjimher

Si hay otra forma mejor de hacerlo, pues fantástico, a mí me parecía que lo de hacer una wifi falsa con una raspberry pi o similar era lo más sencillo. El tema es que no sé cómo hacer eso que dices :-)

BocaDePez
BocaDePez
1

Bascula Xiaomi, app mifit modificada, utilidad para exportar datos, lo demás son ganas de complicarse

vukits
1

Perfectamente.

Pero primero tienes que dumpear el tráfico ya sea con tcpdump ya sea con wireshark y ver que API usa, protocolos, etc.

En todo casi, necesitarás que tu router neutro tenga Opnewrt para poder capturar cosas

🗨️ 1
jesjimher

Es lo que me temía, y la verdad es que no tengo ningún router neutro a mano. Yo pensaba que quizá con algo como un portátil con Kali o una raspberry pi, o incluso creando un punto de acceso con el móvil y usando alguna app podría sacar algo.

Probaré lo que he puesto más arriba de mitmf, porque tiene pinta de que sirva para capturar el tráfico entre dos IPs de una misma wifi, a ver si saco algo por ahí...

BocaDePez
BocaDePez

Para mi es mejor modificar directamente la bascula

🗨️ 1
jesjimher

Lo he pensado, pero me parece mucho más lío.

Parece evidente que la báscula lleva un típico ESP8266 para el wifi, como el que llevan tantos cacharros que son flasheables con firmwares alternativos. A priori, podría intentar sacar el firmware, buscar URLs o lo que sea, y volverlo a cargar. Pero claro, eso implica casi seguro abrir la báscula, empezar a soldar conectores en los contactos para flashear (si los hay) y cacharrear a un nivel que, francamente, no controlo nada.

BocaDePez
BocaDePez
1

Yo me compre, una báscula Tefal sin wifi y nada por el estilo, me costo 20€. Y solo yo se mi peso, cuando lo veo en su pantalla. ¿No sería más fácil, comprarte una báscula así, en vez de una con Wi-Fi?

¿Que aparece tú peso en una app? Pues lo apuntas en el bloc de notas del móvil, ó en una libreta, y san se acabó.

🗨️ 2
BocaDePez
BocaDePez

Ya... Pero... Y lo de fardar de smarthome?

jesjimher

Por esa regla de tres, tampoco necesito el mando a distancia de la TV, me levanto y ya está :-)

Justamente llevo años haciéndolo así, apuntándolo a mano, la idea es hacerlo un poco más automático, por esas cosas de facilitarme la vida.

rbetancor
1

No tienes que complicarte tanto la vida.

Para saber a donde se conecta y que hace la pesa:

- Te vale snifar el tráfico con cualquier portátil/PC conectado a la misma red que la pesa. Puedes usar tshark, tcpdump, wireshark o la herramienta de captura que más te guste, yo te recomiendo wireshark, ya que te permitirá analizar el tráfico más fácilmente.

Luego, ya depende de lo cutres que sean lo chinos:

1- Si se conectan a un servicio HTTP por DNS. Te basta con montar un servidor HTTP y redirigir el tráfico HTTP desde el router, o simplemente meter una entrada DNS estática en el router, para que se resuelva el dominio como la IP de tu server HTTP en vez de los chinos.

2- Si se conectan a un servicio HTTP sin DNS. Le añades al router una segunda IP LAN en el mismo rango que el servidor destino, y a tu server HTTP le pones la IP del servidor chinorris.

3- Si se conectan a un servicio HTTPS por DNS. Lo mismo que en el punto 1 ... solo que tendrás que configurar un servidor HTTPS en vez de uno HTTP

4- Si se conectan a un servicio HTTPS sin DNS. Lo mismo que el punto 2 y el 3

5- Si usan algún tipo de verificación de certificados, date por jodido, no tienes opción. Esto es muy,muy,muy, requetemuy poco probable. Apenas hay marcas de IoTs que hagan esto.

6- Si usan algún protocolo propietario. Estás jodido. Le vas a tener que echar horas al Whireshark como un enano.

Es un tema chachi, Yo lo he tenido que hacer para varios IoT, cuyos fabricantes o han "desaparecido" o han decidido dejar de dar soporte a su fantásticas "clouds" (que no es mas que la forma cool, de llamar a "me quedo con tus datos, que a lo mejor los puedo vender")

🗨️ 1
jesjimher

Sí, la verdad es que confío en que la conexión sea pachanguerilla, porque si lo hacen bien no habrá mucho que hacer. De todas formas, viendo que el circuitín que usa la báscula (según veo en la descripción del firmware y tal) es casi seguro un ESP8266, de estos que se usan con los arduinos para tener wifi y que valen 2 eur en aliexpress, me da a mí que muchas filigranas con certificados no deben hacer. Casi seguro que cuando emparejas la báscula con el móvil se genera un password/token, y luego las conexiones siguientes se hacen accediendo a una URL con ese token, y palante, o alguna cosa por el estilo.

De todas formas cuando pruebe lo veré, gracias por la info!

jesjimher

Me respondo a mí mismo para explicar un poco la conclusión. Finalmente he configurado la wifi sin cifrado, me he enchufado con un portátil con wireshark y he podido cotorrear el tráfico (no ha sido fácil, la báscula sólo se conecta los 4-5 segundos que tarda en enviar el peso). Parece que se conecta por MQTT a una instancia de Amazon, y aunque veo ahí el usuario y la contraseña, los datos en sí deben ir cifrados/codificados de alguna manera, porque sólo se ve un churro sin sentido que no sé cómo descifrar, pero que debe incluir todo lo que mide la báscula (peso, grasa corporal, agua y mandangas diversas).

En cualquier caso, con la investigación he visto que esta báscula, aunque la vendan como producto español (risas), es en realidad de una marca china llamada Tuya, especializada en vender productos "blancos" que luego se reetiquetan con la marca que sea. El caso es que, aunque cada uno se venda con un nombre, al final la integración en la nube la dan siempre estos de Tuya, y hay bastante movimiento en internete para acceder a su nube, incluso para cambiar el firmware de estos aparatos por otro libre. En mi caso mi báscula aún no está soportada, pero parece que es cuestión de tiempo, con lo que me la envaino y quedaré a la espera de que gente más sabia que yo desentrañe el misterio.

Gracias a todos los que me han hecho algún comentario, ha sido interesante.

🗨️ 1
vukits
1

Qu'e interesante...

Muchas gracias por la informaci'on :D

BocaDePez
BocaDePez
1

A mi también me da rabia depender de software y servidores chinos (o de cualquier pais) para controlar aparatos en casa. Home Assistant es una plataforma domótica que convierte tu Raspberry en un servidor domótico y evita tener que usar software y servidores chinos. Sirve para controlar dispositivos sujetos a software tan extendido como "Mi Home" y "Smart Life" y otros muchos. No sé si tu báscula será compatible, pero si lo es es lo que pides.

🗨️ 1
BocaDePez
BocaDePez

Ese es el tema, que esta báscula (ni ninguna que haya encontrado) es compatible más que con sus servidores chinos. La idea es "abrirla" justamente para integrarla con mi Home Assistant.