- Dos estudiantes de ciberseguridad intentaron hackear una lavadora por diversión y por el desafío técnico
- Analizaron por ingeniería inversa la app móvil de la lavadora para estudiar la API y el método de cifrado
- Encontraron la clave de cifrado XOR e implementaron una forma de leer y descifrar los datos de estado de la lavadora en tiempo real
- Usando webhooks de Discord, crearon un bot de notificaciones que automatiza el estado de funcionamiento y los avisos de finalización de la lavadora
- Más adelante planean aplicar una automatización de hogar inteligente similar a otros electrodomésticos “tontos”
Introducción
- El autor llevó a cabo un proyecto de hackeo de una lavadora junto con un amigo en la casa a la que se acababa de mudar
- El objetivo era más la diversión y el desafío técnico que la utilidad pura
- Todo empezó por la curiosidad de conectar la lavadora y otros electrodomésticos a un sistema de hogar inteligente
- La experiencia obtenida al hackearlo directamente también ayudó como práctica real de ingeniería inversa
Contexto
- En la casa ya venía instalada una lavadora inteligente con Wi‑Fi
- Esta lavadora puede enviar notificaciones de progreso a través de una app móvil
- Solo una persona a la vez puede vincularla con la app, así que compartirla resulta incómodo
- Viendo esto como una oportunidad, decidieron hacer que varias personas pudieran recibir notificaciones del estado sin las limitaciones de la app
El caso del timbre
- El timbre de la casa usa un sistema que envía alertas mediante señales inalámbricas de 433MHz
- Un amigo creó un sistema que detecta la señal del timbre y envía alertas a un servidor de Discord
- Se usa junto con el sonido real del timbre y también como alerta de respaldo
- A partir de ese caso exitoso, decidieron intentar conectar la lavadora de la misma forma con notificaciones automatizadas
Plan y preparación
- El autor decidió hacer ingeniería inversa de la app móvil para entender cómo funcionaba la API
- Usó un router con OpenWRT para capturar directamente el tráfico de red de la lavadora inteligente
- Conectó la lavadora a una red Wi‑Fi temporal para identificar patrones de comunicación mediante captura de paquetes
Análisis del tráfico de la lavadora
- La lavadora envía y recibe tráfico por varias rutas: su propia IP, 255.255.255.255 (broadcast), servidores externos (API HTTP, tráfico cifrado) y comunicación HTTP directa con la app (puerto 80)
- Se centraron especialmente en la parte de comunicación directa con la app móvil y analizaron esa sección en detalle
Ingeniería inversa de la API de la lavadora
- La app usa repetidamente dos endpoints: /http-read.json?encrypted=1 (lectura de estado) y /http-write.json?encrypted=1 (envío de comandos)
- El objetivo principal era el endpoint de lectura, pero los datos de respuesta están cifrados (HEX, tipo HTML)
- Incluso al pasar el parámetro de query
encrypted=0, solo obtenían fallos de descifrado o errores 400
Análisis del cifrado y obtención de la clave
- Suponiendo que se trataba de un cifrado simple basado en XOR, intentaron fuerza bruta con herramientas en línea como CyberChef
- En un proyecto de referencia (CandySimplyFi-tool) encontraron código que ya había logrado extraer la clave, y con eso consiguieron restaurar la clave y descifrar los datos en segundos
- Para entender mejor el esquema de datos, también consultaron el código open source de ofalvai/home-assistant-candy
Experimentos con los valores de estado de la lavadora
- Confirmaron cómo cambiaban los datos al realizar distintas acciones físicas en la lavadora (cambiar programa, ajustar temperatura y velocidad, iniciar/detener/finalizar)
- Campos principales de los valores de estado:
- Pr: estado de la perilla de selección de programa
- PrPh: ciclo de lavado en curso
- Temp: temperatura configurada
- SpinSp: velocidad de centrifugado configurada
- RemTime: tiempo restante (minutos; a veces puede quedarse fijo en 10 minutos)
- Desventaja: algunos valores (por ejemplo, SpinSp) pueden no coincidir con el valor real
Desarrollo del script de automatización de alertas
- Ya tenían implementados el esquema de la API de la lavadora, la clave de cifrado, la lectura y descifrado de datos, y la detección del estado
- Crearon un script de bot de notificaciones usando webhooks de Discord
- Flujo principal:
- Hacer polling a la lavadora
- Si no hay cambios de estado, dormir y repetir
- Si se detecta un cambio, actualizar el último mensaje o enviar uno nuevo
- Repetir
Cierre y planes futuros
- Ya lograron automatizar las notificaciones del timbre y de la lavadora
- En el futuro planean aplicar automatizaciones similares a lavavajillas, secadora, TV y otros dispositivos (enchufes inteligentes, sensores de vibración, IR blaster)
- También piensan experimentar con un sistema de seguridad sencillo usando una webcam
Conclusión
- Con este proyecto aprendieron las bases de la ingeniería inversa de IoT en la práctica y de un sencillo hackeo de hogar inteligente
- Fue un caso que les permitió experimentar tanto la utilidad como la diversión
1 comentarios
Comentarios de Hacker News
Antes que nada, aclaro que esto no es una crítica al artículo original; me pareció una gran presentación de un proceso de análisis de dispositivos realmente fascinante
Si el dispositivo se comunica con una app de Android, recomiendo apk-mitm
Esta herramienta elimina del APK casi todas las formas conocidas de certificate pinning y además reescribe el manifiesto para permitir usar certificados locales sin root
Si desinstalas la app original y haces sideload del resultado de apk-mitm, puedes usar mitmproxy en un dispositivo común sin modificar
Y otro punto importante: si la app envía datos cifrados y luego los descifra para mostrarlos, entonces la clave tiene que estar en algún lado dentro de la app o llegar desde alguna parte
Si analizas el APK con jadx, puedes verlo casi como código Java, así que a veces incluso puedes encontrar la clave
Pero algunos fabricantes mueven el cifrado a código nativo, y en ese caso toca hacer ingeniería inversa con Ghidra o algo similar
Este proceso puede ser increíblemente tedioso, pero también muy divertido
Aunque el autor se basó en investigaciones previas de otras personas, creo que incluso si nadie ha hecho exactamente ese trabajo antes, vale totalmente la pena intentarlo y no rendirse
Al final, puedes aprender muchísimo al descubrir cómo funciona un dispositivo que te pertenece
Con el tiempo me bloquearon el acceso al servidor, y por casualidad descubrí lo del certificate pinning, así que probé ese repositorio y de verdad lo resolvió limpiamente
Hasta dejó de mostrar anuncios, quizá porque usaba URLs publicitarias antiguas
Y no me da ninguna pena, porque la empresa solo parecía enfocada en arruinar cada vez más la app
Yo uso una lavadora Bosch para monitorear el progreso desde el otro extremo de la casa, a diferencia del artículo original
Gracias a la API de Bosch, puedo saber si terminó el ciclo de lavado y si la puerta ya se abrió
Por ahora uso la versión básica de la API, pero el PoC ya está listo y pienso migrarlo a una opción alojada localmente
Con Home Assistant, si el ciclo terminó pero la puerta no se abrió, eso significa que todavía hay ropa mojada adentro
Así que configuré un aviso cada 15 minutos a mi teléfono y, solo cuando mi esposa está en casa, también al suyo
Es algo muy simple y funciona perfecto
Mi lavadora es un modelo viejo de los 90, así que funciona según la perilla del temporizador
No tiene computadora ni sensores; lo único extra que detecto es la etapa de entrada de agua
Siempre basta con poner el temporizador en 40 minutos, y listo; incluso tiene función para apagar la alarma, así que no podría ser más simple
Yo también estoy pensando hacer algo parecido con un hornito eléctrico
No tiene API ni conectividad, pero planeo conectarlo a un smart plug para medir el consumo eléctrico, detectar si está en espera o en funcionamiento, y mandar avisos
A veces pongo la lavadora antes de dormir y termino dejándola hasta el día siguiente, pero la mía tiene una función tipo "tumble extendido" que mantiene la ropa fresca toda la noche
Usa un poco más de agua, pero me salva la rutina nocturna y además ayuda a aprovechar la electricidad en horario nocturno
Me gusta mucho mi Electrolux, y supongo que otras marcas también tendrán algo parecido
Llevo más de 15 años usando un reloj G-Shock 5600 como recordatorio del temporizador de la lavadora
Cuando empieza el lavado, configuro en el reloj el tiempo total del ciclo, y cuando termina, me avisa con un pitido
Funciona sin importar si hay API o no, y da igual la marca
Es una solución realmente elegante
Lógica simple, pero con una mejora muy real en la vida diaria
Estoy haciendo hardware hacking con un refrigerador
No es por software, sino un refrigerador caro para casa rodante que soporta gas/12v/220v
La parte de control electrónico se incendió y dañó los cables y el interior, pero el refrigerador en sí sigue bien
Como de todos modos tendría que cambiar todas las piezas, en vez de comprar una controladora nueva por 250 dólares, quiero armar un sistema nuevo combinando piezas de una caldera de gas antigua
La motherboard de la caldera ya incluye el sistema de ignición, así que si diseño bien la lógica y las medidas de seguridad, creo que podría hacerlo funcionar en modo gas
Así me ahorro comprar un refrigerador nuevo y además es un buen proyecto para enseñarle electrónica a mi hijo de 9 años
Claro, al ser gas puede ser peligroso, pero al final siempre es divertido, y cuando el hack funciona se acaban las críticas
Si les interesa el proceso, podría escribir una publicación completa
Yo pegué sensores de vibración Zigbee a la lavadora y la secadora, y los conecté a Home Assistant
No se me había ocurrido lo de monitorear corriente/voltaje con un enchufe inteligente, pero me parece una muy buena idea
Con unas condiciones de disparo sencillas, se automatiza la actualización del dashboard y también los correos cuando empieza o termina el lavado
Tiene app y funciones Bluetooth, pero la app pide acceso a la cámara, audio y contactos de mi teléfono, así que no pienso usarla
Parece que también hubo trabajo de integración con HA en el siguiente enlace
https://github.com/home-assistant-HomeWhiz/home-assistant-HomeWhiz/blob/main/README.md
Este tipo de publicaciones son la esencia misma de Hacker News
Ojalá hubiera más publicaciones así, de hacking real en el sentido de modificación por hobby; últimamente siento que todo está lleno de temas de AI/LLM
Si te gusta este tipo de hardware hacking, también recomiendo muchísimo https://hackaday.com/
Instalar certificados propios en Android sin root suele ser bastante engorroso
Solo puedes agregarlos al almacén de certificados del sistema, y normalmente hace falta un módulo de Magisk
Una forma más fácil es ejecutar un emulador viejo de Android en la PC, instalar ahí el certificado y pasar el tráfico a Burpsuite o mitmproxy
Ni siquiera hace falta cambiar de dispositivo
Si analizas el código de la app con APKLab o Jadx, probablemente puedas encontrar al menos el algoritmo de derivación de claves
Me da curiosidad si la app y la lavadora solo funcionan cuando están en la misma red; esa parte me gustó
Me sorprendió la mención de un ciclo de lavado de “3 horas” (que en realidad serían 4 o 5), así que pregunté
Mi lavadora, en modo eco normal, tarda menos de 30 minutos y al terminar hace un aviso muy fuerte
Gracias a la combinación de ciclo corto y alerta, no necesito ninguna solución técnica compleja aparte
Supongo que quien comentó es de Estados Unidos
Las lavadoras europeas tardan más por los requisitos de menor consumo de agua y electricidad
El aparato del artículo también parece ser una combinación lavadora-secadora, así que tarda aún más
En mi casa, incluso el modo normal dura 104 minutos, y si la cargas de más puede llegar hasta 3 horas
Los ciclos largos eliminan mejor los microorganismos cuando usas detergentes enzimáticos y componentes blanqueadores de oxígeno activo
Un ciclo de 30 minutos apenas equivale a “enjuagar” la ropa
https://pubmed.ncbi.nlm.nih.gov/25207988/
Mi secadora es un modelo sin ducto, por desgracia, así que tarda hasta 3 horas
Entre lavar y secar se van 4.5 horas
Es el electrodoméstico que menos satisfecho me ha dejado de todos los que he usado
A veces ni siquiera seca bien
Alguien señaló que no parece haber cifrado
Analizó que los datos en la ventana de entrada del primer screenshot (
cyberchef.avif) son simplemente hex ASCII sin cifrarPor ejemplo, explicó que 7D es {, 0D0A es CRLF, 09 es TAB, 22 es
", etc.Es decir, parece texto plano ya decodificado, así que la explicación sobre cifrado XOR no le cuadró
También observó que el valor de la clave en el screenshot no coincide bien con los límites de bytes ni con los espacios reales de la entrada
Por eso dudó de si la captura estaba manipulada o editada
Dijo que le daba curiosidad saber por qué y qué estaba pasando realmente
Alguien avisó que está roto el enlace de la imagen marcada como “For now, I plugged this key into CyberChef, and was able to decrypt the data.”
Incluso dio detalles del elemento HTML específico y del enlace relacionado
Sobre la parte de que “la lavadora se comunicaba muchísimo consigo misma”, alguien comentó que probablemente se debe a que quien diseñó el stack de red no conocía el concepto de interfaz loopback
Decía que enviaba muchos paquetes a su propia IP y también paquetes por segundo a 255.255.255.255, aunque dijo que no le dio demasiada importancia
He visto ese comportamiento muchas veces en dispositivos IoT, y a veces se usa para detectar conflictos o cambios de IP
Yo pensé algo parecido