Sempre que ouvimos algo de Hacking logo olhamos diretamente para segurança de aplicações talvez algo com foco em corrupção de memória, ou então algo relacionado a Web. Bom, na real a palavra Hacking pode relacionar-se a qualquer forma inteligente de se resolver um problema, ou em outras palavras, se relaciona a soluções tanto incomuns, isso nos diz que eletrônica também esta dentro desse estereótipo.
Como nos “artigos” anteriores não foi visto algo entorno de eletrônica (algo empírico), então rumo a algo diferente, simples e onde qualquer pessoa pode reproduzir:sabe aquele controle remoto daquela TV velha? Podemos usar ele em qualquer computador apenas utilizando um microcontrolador ligado a um receptor de infra-vermelho , quem sabe para ajudar a automatizar algumas tarefas como controlar um ventilador (vai precisar de relê), atualizar aquele seu servidor com apenas um botão do controle e um shellscript, passar slides de uma apresentação etc.
O que vamos precisar ?
1- Computador com algum Unix Like (nos testes foi usado um Fedora Linux)1- Controle remoto(no meu caso um samsung, o modelo “AA59-00469A”)1- Arduino nano 12,00 USD1- IR recv (vamos usar o “1838B”) 2,00 USD3 -Jumpers 1,00 USD1- Breadboard 2,50 USD
Tente seguir a imagem (imagem feita no Fritzing).
Então:
Fio verde seria terra(GND)Fio laranja seria 5vFio amarelo seria pino 6(entrada , vai passar os dados para o arduino)USB conectado no arduino(geralmente se tem um FTDI).
Por que não usar um attiny, PIC etc?
Gosto de tentar pensar como MacGyver: quanto mais simples e mais barato melhor. Se um cardaço e uma caneta resolver o problema, então para que complicar as coisas? Iriamos perder tempo tentando corroer PCB, fazendo testes etc (talvez seja nobre corroer o PCB em algo para ser feito em produção).
Fazendo Mapeamento de um controle remoto
Feito como planejado, agora precisamos preparar o Software. Suponhamos que já tenha IDE do Arduino, então só precisamos da biblioteca para lidar com a decodificação de entradas do sinal do controle remoto.
Para tal feito:
$ git clone https://github.com/shirriff/Arduino-IRremote$ mv Arduino-IRremote ArduinoRemote; sudo cp -rf ArduinoRemote/ /usr/share/arduino/libraries
Então se tudo estiver OK na IDE do Arduino irá poder ver exemplos de códigos com controle remoto na aba “File”.
Antes de desenvolver nosso código precisamos fazer o mapeamento do controle remoto que vai ser usado. Cada botão do controle representa um endereço diferente, e isso varia de controle para controle.
Passamos o código para o Arduino e então monitoramos a comunicação serial (onde esta circulado de laranja na imagem). Em seguida apertamos as teclas do controle remoto das quais queremos mapear, e anotamos os endereços.
Exemplo: ao apertar a tecla do controle “1”, nos retorna o endereço “E13DDA28”.
Feito o mapeamento, vamos fazer o programa para leitura da porta serial, para isso na teoria basta executar um syscall open() no dispositivo “/dev/ttyUSB0”(dependendo das condições do sistema pode variar) e ir usando read() para cada entrada de dado.
Só ler entrada e interpretar cada endereço não vai ser suficiente, seria interessante passar slides de uma apresentação! Para isso vamos automatizar entradas do teclado como se fosse usuário, então vamos usar o X11. De forma sanar tal problema temos algumas bibliotecas chamadas libXtst e libX11.
Para instalar:
Distribuições rpm like:$ yum install libXtst-devel libX11-develDistribuições deb like:$ apt-get install libXtst-dev libX11-devPara obter o código:
$ git clone https://github.com/CoolerVoid/arduino_ppt_walk
Repare onde foi implementado endereço de cada tecla do controle:
Compilamos o código:
$ gcc IR_remote.c -o IR_remote -lX11 -lXtst -Wall
Então executamos e apontamos para o dispositivo onde se encontra o Arduino:
$ ./IR_remote /dev/ttyUSB0
Abra sua apresentação, e use seu controle remoto para passar os slides…
Um vídeo mostrando seu funcionamento :
Conclusão
Isso só foi uma das muitas atividades que podemos automatizar usando controle remoto.
Note que no botão “3” do nosso programa faz tocar uma música em MP3. No contexto de introdução ao hacking de controle remotos, com este artigo, já se pode fazer muito. Talvez no futuro próximo possamos ver como fazer um Jammer IR, ou mímico de controles remotos.
Referências :
Originalmente postado no Blog da Conviso Application Security – Siga-nos no Twitter @conviso Google+
Parabéns pelo projeto !
Parabéns Antonio!