Ou melhor dizendo - Tentando desvendar Controle Remoto RF.

Depois que consegui fazer funcionar o Analisador Lógico com o Arduino, tenho feito várias verificações que sempre quis fazer. Fiz uma análise de controle remoto usando a Luz infravermelha e agora estou fazendo uma análise mais apurada de controle remoto que usa Rádio-frequência RF).

Tutorial - Analisador Lógico com Arduino:

http://labdegaragem.com/profiles/blogs/tutorial-analisador-l-gico-c...

Decodificando Controle Remoto infravermelho:

http://labdegaragem.com/profiles/blogs/6223006:BlogPost:315534

Já li em vários Blogs do Lab de Garagem, que muitos desejam usar o Controle Remoto RF com o Arduino.

Para a minha decepção e acredito que  muitos se decepcionarão também, os controles remotos atuais são criptografados.Por isso, alguns já tentaram usar e falharam.

Para entender melhor, fiz uma análise do Controle Remoto do fabricante Rossi. (aciona a abertura e fechamento de portões de garagem). Esse controle usa o chip HCS201 da Microchip:

http://ww1.microchip.com/downloads/en/DeviceDoc/41098c.pdf

Possui dois botões (chaves) S0 e S1. A frequência da portadora é de 433,92 MHz. Usa uma pilha de 12V.

O link da Rossi portões, com os circuitos de controle de portões:

http://www.rossiportoes.com.br/produtos/120-central-de-comando.html

Lendo o data sheet do chip HCS201 da Microchip, percebi que a tecnologia usada é bem segura.

Ele é bem versátil - cada chip tem um número de série programável de 28 bits e uma chave de criptografia de 64 bits (acredito que é impossível descobri-la) . Essas informações são gravadas pelo fabricante do controle remoto (no caso a Rossi).

Cada transmissão tem um código diferente, por isso, se o circuito receptor não souber a chave criptográfica do fabricante, não haverá rotina de decodificação que permita identificar qual código foi transmitido. Fiz vários testes e comprovei ! Pressionei várias vezes o botão S1 e a cada momento o trem de pulsos era de um formato diferente.

Seria possível usar o controle remoto, desde que usasse um chip programado pelo desenvolvedor.

Assim a rotina de decodificação usaria a chave gravada no chip.

Vejam que interessante as várias telas capturadas usando o Analisador Lógico com o Arduíno.

Minhas medições foram no saída TX OUT do chip HCS201. Alimentei o controle remoto com 5V para não danificar o Arduino.

Essa captura foi feita pressionando o botão S1 - taxa de amostragem de 5 KHz :

Vejam que tem 12 pulsos de preambulo para sincronização :

Taxa de amostragem de 10 Khz.

Os 12 pulsos de preambulo usam a largura de pulso de 780 us:

(taxa de amostragem 50 KHz) 

Para decodificar os bits 0 e bit 1 :

Esse é o formato do Bit 0 : (taxa de amostragem 50 KHz) 

E esse é o formato do Bit 1 : (taxa de amostragem 50 KHz) 

Exibições: 65550

Responder esta

Respostas a este tópico

Pessoal,

achei em um fórum russo do Arduino um sketch que "descodifica" o KeeLoq.

Vejam:

http://arduino.ru/forum/apparatnye-voprosy/biblioteka-chteniya-id-b...

Datasheet da Microchip:

http://ww1.microchip.com/downloads/en/DeviceDoc/41256B.pdf

http://ww1.microchip.com/downloads/en/AppNotes/00217a.pdf

Fiz umas adequações aqui, testei e FUNCIONOU!!!

"Usem SEM moderação!" :)

Putz ! Tá brincando ?

Não sei se isso é bom ou ruim. Para a questão de segurança, isso não é bom...

Parabéns para o cara russo. 

Então, bem por aí...

Mas, pelo q vi/analisei, o código postado permite apenas ler os dados enviados (por exemplo, o serial number do controle e/ou o botão que foi pressionado), mas não descriptografa a parte referente as keys.

Além disso, mesmo que seja feito o ataque de "replay", não vai ter efeito, pq o KeeLoq não permite mensagens repetidas...

Ufa!!!

Ah bom ! Então a segurança continua. 

Abraços

Gustavo

Nunca vi um tópico sobre esse assunto tão esclarecedor. Parabéns Zé Gustavo!
Poderia me ajudar esclarecendo algumas dúvidas que ainda ficaram:

1 - Em algum momento o controle (TX) ele funciona como RX? Parece absurda a pergunta, mas é o seguinte:
Tem uma central PPA que trabalha com código fixo ou rolling code (Sim, PPA agora tem rolling code tbm). Na hora de cadastrar os controles jumpeamos a placa pra escolher como os controles vão trabalhar.
- Se o TX emite um código na hora de cadastrar (e escolho na placa jumper para código FIXO), como o TX vai ficar sabendo que não é para ele ficar trocando de código? (A placa emite um sinal pra ele trabalhar com código fixo? Então o TX recebe esse sinal?)
- Como O TX vai saber como está o jumper do RX, pra trabalhar de acordo com o jumper?

2 - Estou com um TX que usa o chip HT6P20B. Apenas pelo modelo desse chip, é possível determinar se o TX pode ser rolling code? (As informações do fabricante são pobres, palpérrimas! Muita informação comercial e pouca informação técnica.)
-Gostaria de saber se há uma possibilidade desse chip estar sendo usado em vários projetos (learning, ou fixo, ou rolling code) ou se com certeza ele não é rolling code por exemplo.

3 - Sabe oque tenho que observar na hora de comprar um TX novo? Quais as especificações técnicas para o TX ser compatível? (O fabricante tenha designer pobre, controles feios e os clientes perguntam por modelos mais bonitos) gostaria de comprar um controle melhor e mais bonito.)
- Basta ser rolling code, 433,92MHz?
- Ou mesmo sendo da mesma frequencia e mesmo sendo rolling code pode ser incompatível?
- É verdade que cada empresa pode ter o seu "protocolo" rolling code, que pode ser incompatível com outros protocolos de outras empresas?

Grato! Muito grato desde já! :-)

Boa tarde Romulo, obrigado pelos elogios.

As respostas para as suas perguntas. 

1) O módulos tem funções distintas - um só transmite o código e outro só recebe. No caso da Central PPA, ela  deve aceitar somente um tipo de código - fixo ou rolling. Nas especificações da central você poderá encontrar essas informações. Os chips que usam jumpers são antigos e esses jumpers é que definem os bits do código.

2) Como já informado nos tópicos do  tutorial, o chip HT6P20B usa 24 bits de código. Esse código já vem gravado no chip e não pode ser modificado. Portanto não usa o método Rolling. 

http://labdegaragem.com/forum/topics/desvendando-controle-remoto-rf...

3) A frequência da portadora do transmissor tem que ser igual à frequência do receptor - no tutorial a frequência é de 433,92 MHz ( a mais comum). Esse tutorial só mostra como o rolling code é transmitido. Não mostra como ele é descodificado. Se quer montar um sistema de controle remoto, use  o transmissor com o chip  HT6P20B. 

Com esse código, poderá descodifica-lo usando o receptor + Arduino:

http://labdegaragem.com/forum/topics/desvendando-controle-remoto-rf...

Saudações;

Nossa José... MUITO OBRIGADO e também PARABÉNS pela sua atenção em responder e compartilhar conhecimento com quem está aprendendo.

Estou lendo aqui diversas fontes, fazendo testes na bancada... acho que agora eu compreendo um pouco melhor o funcionamento, mas ainda tenho muito que aprender rsrsrs.

(O jumper na placa que eu me referia, não era aquela série de 8 jumper para escolher um código, variação de 2^8 = 256 códigos. Eu me referia a jumpers isolados, de "configuração")

Acho que agora entendi sobre esse jumper na placa que tem duas opções (learning ou rolling, aberto ou fechado):
- O jumper na placa não define como o TX vai trabalhar.
(Os controles já tem jeitos determinados de como trabalhar, ou learning code, ou rolling code)
- O jumper na placa determina COM QUAIS TIPOS de controle a placa vai trabalhar

Bora continuar leituras e testes... aprendendo sempre.

Abraços.

Boa noite Romulo, 

Informe por favor qual a placa PPA que esta se referindo.

Envie o link do produto. 

Saudações meu amigo;

Estou me referindo a placa/central da PPA, modelo "TRIFLEX FACILITY".

O "erro" da PPA tem sido fabricar controles com a mesma carcaça por fora, mas tanto na tecnologia learning, tanto na tecnologia rolling. Os controles são exatamente iguais por fora, impossível uma classificação olhando externamente.

Tudo bem, a gente abre o controle pra classificar pelo chip... mas eles não informam quais chips foram usados na tecnologia learning e quais chips foram usados na tecnologia rolling code.

(estou com uma suspeita, AINDA NÃO CONFIRMADA, que controles learning code usam pilha A23 e que controles rolling code usam baterias CR2032, mas não tenho certeza disso)

Abraços.

Olá, tenho uma dúvida, já foi achado algum tipo de solução para aqueles controles do tipo Rolling code? Obrigado

Boa tarde, 

Como já informado, o Rolling code é criptografado. 

Só o fabricante tem o código. 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço