Como vemos el vídeo es impresionante , veamos como se ha llegado hasta ahí en este impresionante trabajo
Hay dos maneras de hackear un remoto RF a ser controlado por una computadora o un microcontrolador.
- El mas artesanal : Soldar los cables en las almohadillas del botón del mando a distancia y engancharla a un un microcontolador (por ejemplo Arduino).
- La manera fresca:Mandos a distancia RF la mayoría tienen un módulo separado para transmisión de datos. Este dispositivo tiene generalmente un VCC y una línea GND y una línea de datos. Usted puede fácilmente transmitir sus propios datos inalámbricos conectando un microcontrolador para la línea de datos.Sin embargo, con el fin de transmitir algo que puedan entender los radiorreceptores, primero tienes que averiguar cómo es formateados y transmite los datos inalámbricos.Para hacer este hack necesitará un analizador lógico y, opcionalmente, un osciloscopio.
En adelante vamos a ver la segunda opción : es decir usando herramientas , en este caso de manos de un analizador logico para estudiar como se ha fabricado para luegointentar emular su funcionamiento
En este caso se usa un sonda logica Saleae. Esta es una herramienta increíble y con ella se pueden hacer muchos trabajos de ingeniería inversas usando este dispositivo
Compruébelo en http://www.saleae.com/logic/
Lo malo es que cuesta 149 USD, pero !es una buena inversión para cualquier hacker!
También tiene que estar familiarizado y cómodo con los microcontroladores y programación en C.


- 1 x kit inalámbrico de automatización del hogar
- 1 x caja de proyecto
- 1 conector tipo B x USB
- Diodo zener 2 x 3.6v
- Diodo zener 8.2v x 1
- transistor BC548 x 1
- condensador de cerámica de 2 x 22pF
- condensador de cerámica de 2 x 100nF
- 1 x 4.7uF condensador
- condensador 100uF x 1
- 1 x 470uF capacitor
- 1 x 330uF condensador
- cristal 1 x 12MHz
- 2 x LED con resistencia (yo usé 1 k ohmios)
- 2 x 68R resistor
- 1 x resistencia de 1 k 5
- 1 x resistencia de 2 k 2
- resistor de 1 x 1m
- 1 x 270uH inductor
- Diodo 1N4004 x 1
- microcontrolador ATmega8 x 1
- 1 x protoboard. La soldadura tipo ojo, no perforada.
Manos a la obra


La placa debe tener o claramente etiquetadas al menos 3 entradas:
- VCC
- DATOS
- GND

Ahora yo puede presionar los botones mientras husmea como son los datos en la línea de datos.



Conectar una sonda de osciloscopio a la línea de datos y GND a la línea de GND del mando a distancia. Coloque sondas las dos y apretar un botón.si se convierte la línea de datos en sólo 3 voltios entonces puede conectar la sona logica (l La distancia entre las líneas de puntos horizontales en la pantalla del osciloscopio es 2 voltios.)
El módulo RF parece un dispositivo muy simple, así que simplemente supondremos que puede manejar 5 voltios, así como 3. El microcontrolador se ejecutará a 5 voltios.



El analizador lógico muestra 4 distintos marcos de datos. En un principio puede pensar que quizás esto pueda ser más complicada de realizar ingeniería inversa de previsto,pero en muchos casos puede ser idéntico. Lo mismo sucede con todos los botones del mando a distancia. Los datos se transmisión probablemente 4 veces porque el enlace inalámbrico es inherentemente confiable
Entonces acérquse a uno de los marcos para ver en que consiste los pulsos de diversa longitud.:en este momento tenemos un montón de pulsos cortos y largos

Comenzar el analizador lógico otra vez y presionar el botón de encendido para la lámpara 1, 2, 3 y 4. Luego copiar-pegar en Gimp para tener una visión general.
Entonces cuatro bitse cambian al pulsar un botón. Dos de las partes parecen estar contando en binario de 0 a 3. Es más probable que ellos son los bits de la dirección de la lámpara.
Para lámpara 1 son ambos pulsos largos. Para lámpara 2 hay uno corto y uno largo del pulso. Esto significa que el bit menos significativo es enviado primero.El contrario de manera normalmente escribirías un número binario.
Parece que los bits marcados en verde estar contando de 0 a 3, lo cual pueden ser los bits de la dirección de la lámpara. No sé cuáles son los bits marcados en azul. Probablemente una especie de suma de comprobación para asegurar una comunicación libre de errores.
Además, hemos aprendido de esto que con toda probabilidad, los bits se transmiten como éste.
- Largo pulso: 0
- Corto pulso: 1
Ingeniería inversa: averiguar el resto de los datos



Comenzar el analizador lógico y presionado ON para todos 4 lámparas, entonces apagando, entonces todo encendiedo y todo apagando y finalmente DIM + y -.
Para que sea un poco más fácil de depurar, escribír todos los fotogramas capturados en OpenOffice. Omitír los primeros 13 bits, puesto que sabemos lo que son
Parece que los datos de carga tienen dos bits para la dirección de la lámpara, entonces 4 bits para datos de comando.
Los bits de orden eran fáciles de entender. En la segunda foto, se e divide los datos en 3 columnas, dirección de lámpara, pedacitos de comando y suma de comprobación.
Como puede ver comando 2 es sólo cuando pulso los botones de todos o de todos. Eso significa que este bit es una difusión brocas que hace que todos los receptores de escuchen.
- Bit 3 es solamente cuando presiono el botón o DIM – botón. Permite llamar a este pedazo de mando ON/OFF.
- Bit 4 es sólo cuando presiono el DIM botones +/-. Llamémoslo DIM.
- Bit 5 siempre es NCe. ¿Tal vez está ahí porque el algoritmo de comprobación necesita un número par de bits?
En la última foto, se puede ver que tengo marcha atrás diseñado el marco todos los datos.
Pensaba que el sistema tenía 4 direcciones de la lámpara, puesto que hay 4 botones del mando a distancia. Pero otra posibilidad es que los tres primeros bits son Dirección lámpara, y esa dirección 111 se emite. Si este es el caso, entonces puedes tener 7 lámparas + transmisión en una red ID.
ingeniería inversa: checksum


Así que con esto en mente, intentemos algo más simple. Como hemos notado que las secuencias de 01 y 01 se anulan mutuamente y producen un checksum de 00, y que las secuencias de 01 y 10 produciría un checksum de 11, esto deja entrever hacia un simple algoritmo XOR.
Después de un ensayo y error, hemos encontrado un algoritmo simple que siempre produce la suma de comprobación correcto.
Los primeros dos bits son XOR’ed con los dos bits 2do. El resultado de esto es XOR’ed con los dos últimos bits.
Verificación de la imagen para ver cómo se hace el cálculo de hcecksum:
Ingeniería inversa: sincronización


Cada fotograma, bit de arranque excluido, es la Sra. 38.4 38,4/20 = 1.92 Sra. así 1,92 ms me parece un buen punto de partida para la creación de los tiempos bien.

El ATmega está funcionando a 12MHz.
Un contador de tiempo está configurado con un prescaler 128 en el modo de CTC. En el modo CTC, se restablece el temporizador y se llama una interrupción cuando el contador llegue a un contador de tiempo determinado comparar valor.
El contador se actualiza cada ciclo de 128 reloj. Esto significa que tengo que usar 120 y 58 como los valores del contador para los pulsos cortos y largos.
(1000/12000000) * 128 * 121 = 1,29 mS
(1000/12000000) * 128 * 59 = 0,62 mS
Esto está muy cerca de los tiempos originales.
Armar una simple función para llenar un búfer con los tiempos de retardo para un determinado marco de RF. Una rutina de interrupción luego enciende un pin de IO y apaga y establece el temporizador comparar valor para crear el pulso de la longitud deseada.
Podemos enganchar hasta el analizador lógico y copiar-pegar el resultado en Gimp.¡ Bingo! La señal resultante es idéntica a del control remoto RF 😀
Hardware: RF-fail y carga de la bomba

Pero no es elegante o tener una batería de 9v dentro del gadget,así que podemos usar una bomba de carga consiste en un inductor, un transistor, un diodo y un condensador.
Cuando se activa el transistor, el inductor es cortocircuito a tierra. Cuando se desactiva el transistor, hay un efecto de flyback en el inductor que libera una corta ráfaga de alta tensión. Este voltaje atraviesa el diodo y queda atrapado en el condensador.

La parte principal es un microcontrolador AVR ATmega8. Un conector USB está conectado vía algunas resistencias y diodos zener. Las señales USB son 3.3v, así que necesitamos para reducir el voltaje Zéner.
La línea de datos del módulo de RF está conectada a un pin de IO. El transistor de la bomba de carga y el LED de estado también están conectadas a los pines de IO.
La señal de retorno del circuito de la bomba de carga está conectada con el comparador analógico. Compara la tensión a una tensión de referencia interna.Creo que la tensión de referencia es 1,1 voltios ish. No es tan importante.
El circuito tiene los circuitos regulares como condensadores de filtrado también y un cristal de 12MHz.
(faltan solo las resistencias en los LEDs en el esquema. Usted puede agregar resistencias adecuadas.)
Se suministra una señal PWM para el transistor para hacer este 23.000 ish veces por segundo. Cada vez que lanza el transistor, aumenta un poco la tensión en el condensador.
Para evitar que crezca la tensión alta, el voltaje en el condensador es alimentado hacia el microcontrolador mediante un Diodo zener. El comparador analógico comprueba si el voltaje es superior a 1,2 voltios + el voltaje zener.
El bucle principal del microcontrolador continuamente comprueba si el voltaje está por debajo del umbral. Si lo es, se inicia la señal pwm. Si se alcanza el nivel umbral, pwm está deshabilitado.

http://www.obdev.at/Products/vusb/index.html
No voy a entrar en detalle sobre cómo funciona el software. La ingeniería inversa es el énfasis de . Aquí está la versión corta:Tiene dos programas para hacer que esto funcione. Un programa en su ordenador y el firmware para el microcontrolador.
Microcontrolador:
Las transmisiones RF actuales se realizan mediante una rutina de interrupción.Se usa una interrupción del temporizador porque esta es la manera más fácil de obtener sincronización exacta. La interrupción del temporizador Lee de un búfer global donde se almacenan los tiempos de retardo. No almacenar el estado de encendido/apagado del transmisor RF desde el encendido y apagado siempre suplentes. Comience con un pulso apagado, y luego alternar dentro y fuera de pulsos.
El tampón contiene valores de 42. Hay 21 bits para ser transmitido, y cada uno tiene un período de bajo y un periodo de alto. Esta configuración no es muy eficiente de RAM, pero el ATmega8 tiene un montón. Podrás cambiar RAM para la legibilidad del código en lugar de tener memoria ram sin usar!
El buffer está poblado por la función send_rf_frame (red, capacidad de carga).En los tiempos en la matriz de tampón rf, empezando con el bit de arranque, seguido por el identificador de red de 12 bits y los 8 bits de carga + comprobación bien llena. Cuando el buffer se llena, la variable posición tampón se restablece a 0, para que la rutina de interrupción comenzará el trabajo de bit 0 en el búfer.
Cuando se enviaron datos al microcontrolador por el puerto USB, se llama la función usbFunctionSetup(). Esta es una función que crea y donde pones tu código USB entrante.
Dependiendo del tipo de solicitud enviado desde la PC, puedes hacer cosas diferentes dentro de esta función. Tengo pedido dos tipos configurados, set_network_id y send_command.
La solicitud de set_network_id sólo toma el identificador de red de 12 bits enviado desde el ordenador y almacena en un valor entero global.
La solicitud de send_command llama send_rf_frame() y pasa el byte recibido comando a él. Después de eso, la rutina de interrupción asume el control.
Dentro del bucle main():
usbPoll(); tiene que ser llamado cada pocos milisegundos (10 o 50, no estoy seguro) para el USB para que funcione correctamente.
Después de eso, se comprueba el comparador analógico. Si el voltaje de carga de la bomba es demasiado bajo, se inicia la bomba de carga. Si es en la tensión deseada, se apaga la bomba de carga.
Por último, un LED de estado se establece en ON si la bandera rf_busy está activa.
Ordenador :
En el lado del ordenador también es necesario modificar el ejemplo proporcionado por el objetivo de desarrollo. Se puede añadir un código para analizar los argumentos de la línea de comandos. También puede escribír una función para crear los bytes de carga útil. Toma argumentos como el número de la lámpara, encendido/apagado, difusión.
El programa informático puede utiliza libusb para comunicarse con el microcontrolador.
También es util un pequeño script para llamar el programa informático de línea de comandos cuando se presionan los botones de una página web. Abra la página web en tu Android/iPhone y controlan las luces!
Debe estar conectado para enviar un comentario.