Índice:

Hackeie a porta de sua garagem: 5 etapas
Hackeie a porta de sua garagem: 5 etapas

Vídeo: Hackeie a porta de sua garagem: 5 etapas

Vídeo: Hackeie a porta de sua garagem: 5 etapas
Vídeo: Dá pra HACKEAR pelo celular? 📱 2024, Novembro
Anonim
Hackeie a porta de sua garagem
Hackeie a porta de sua garagem
Hackeie a porta de sua garagem
Hackeie a porta de sua garagem
Hackeie a porta de sua garagem
Hackeie a porta de sua garagem

Quem nunca sonhou em voltar para casa apenas com um aplicativo de telefone, ou poder ouvir e copiar novamente os bondes de dados? Fico feliz em poder compartilhar com vocês o que percebi e como procedi. Comecei este projeto depois da segunda vez que esqueci minhas chaves …

Claro que a codificação, o tipo de modulação, a frequência da portadora, as informações de conexão bluetooth e os dados que vou mostrar no exemplo não são os originais, prefiro não ter visitantes;-).

Esta aplicação aplica-se a qualquer objeto capaz de receber informação digital por ondas eletromagnéticas (porta de garagem, carro, algumas venezianas …). Todo o sistema consiste em um objeto conectado por bluetooth a um telefone, podendo este objeto enviar os mesmos frames que o controle remoto associado ao que queremos hackear. Coloquei este objeto na minha garagem e posso conectá-lo do lado de fora.

Etapa 1: Equipamento

Equipamento
Equipamento
Equipamento
Equipamento

Linguagens utilizadas: C ++, MATLAB, Typescript, C, html.

Conhecimentos básicos em eletrônica digital e telecomunicações / processamento de sinais.

Custo: menos de $ 35.

Requisitos de hardware:

- NooELEC NESDR: para capturar os dados. Este módulo muito barato realiza uma demodulação digital, daí sua alta portabilidade. Este modelo é compatível com MATLAB. ($ 18,95)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: este esp32 é um microcontrolador barato, equipado com Wifi e Bluetooth. Não usaremos Wifi neste aplicativo, mas isso é amplamente concebível. ($ 4,74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: este rádio transmissor nos dá uma flexibilidade extrema, desde a frequência da portadora escolhida até o tipo de modulação. ($ 2,63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Fios, cabeçalhos, equipamento de soldagem, bateria lipo 3,7 V para autonomia, possivelmente osciloscópio e / ou analisador lógico para depuração e, aliás, um smartphone …

Requisitos de software:

- MATLAB / Simulink: para capturar os dados. Outros softwares alternativos gratuitos podem ser usados, como o Audacity para visualização de dados. (licença)

fr.mathworks.com/products.html?s_tid=gn_ps

- Conjunto de ferramentas esp-idf: será usado para programar o esp32. O ide Arduino também pode ser usado, mas não permite tanta liberdade quanto o que iremos usar. (gratuitamente)

esp-idf.readthedocs.io/en/latest/get-starte…

- TI SmartRF Studio: ajudará na configuração dos registradores cc1101, de acordo com nossas especificações. (gratuitamente)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: para construir o aplicativo. Você pode fazer a escolha de construir aplicativos nativos, mas o Ionic nos permite rodar nosso aplicativo em dispositivos Android e IOS, com um único código. O desempenho não é procurado em nosso caso. (gratuitamente)

ionicframework.com/

- Seu ide favorito …

Etapa 2: espionando o controle remoto

Espiando o controle remoto
Espiando o controle remoto
Espiando o controle remoto
Espiando o controle remoto
Espiando o controle remoto
Espiando o controle remoto

Começaremos observando os dados que os comandos do controle remoto produzem. Para fazer isso, usaremos um dongle rtl-sdr e uma antena:

fr.mathworks.com/hardware-support/rtl-sdr….

Seguindo este link, você encontrará o pacote MATLAB, bem como um livro gratuito explicando todos os preços com suas explicações. Para resumir o que nos preocupa, os dados de trânsito estão na forma de um sinal de QI: um dado em fase "I", combinado com um dado de quadratura "Q". Este método facilita as telecomunicações. Só estaremos interessados em receber o sinal em fase. Agora vamos reunir as informações físicas e digitais do controle remoto. Se você puder encontrar alguma documentação sobre ele, será mais fácil. Eu não encontrei nenhum. Para ser capaz de observar temporariamente o sinal, devemos primeiro saber qual é a portadora de freqüência do sinal emitido. Usaremos o exemplo fornecido com a documentação do pacote "Análise Espectral com Rádio RTL-SDR", para saber exatamente em qual frequência observamos uma potência de pico quando enviamos um comando. No meu caso, é 868,22 MHz. As frequências "padrão" para este tipo de aplicações giram em torno de 868 MHz.

Com essas indicações, poderemos escrever um código MATLAB para recuperar os dados. Este está anexado na foto e comentado. O resultado nos permite encontrar o tipo de modulação: recuperando a informação bruta, exibindo o resultado logo após ter recuperado a parte real do sinal, podemos deduzir que é um ASK / OOK modulação. De fato, observamos que a frequência é invariante, entretanto, o sinal tem apenas duas amplitudes: uma nula e uma fixa. O resto do código nos permite recuperar o envelope do sinal recebido, facilitando a leitura para conhecer o trame. Uma vez exibida, podemos determinar a modulação da banda base: esta é uma codificação Manchester (veja a foto em anexo). Também podemos deduzir a taxa de transmissão (símbolos por segundo). Todas essas informações sendo coletadas, podemos conhecer o quadro de dados. No meu caso, os bytes encontrados são: 249, 39, 75, 178, 45, 200 e repetidos várias vezes, para garantir que o comando seja bem recebido. Felizmente, o código não está rolando, o quadro de dados é sempre o mesmo.

Etapa 3: enviar os mesmos frames de dados

Envie os mesmos frames de dados
Envie os mesmos frames de dados
Envie os mesmos frames de dados
Envie os mesmos frames de dados
Envie os mesmos frames de dados
Envie os mesmos frames de dados

O Texas Instruments cc1101 é tão flexível que você ainda alcançará seu objetivo, mesmo que as configurações encontradas na etapa anterior sejam completamente diferentes das minhas. Na verdade, você verá na documentação, página 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) que permite realizar modulação NRZ, Manchester, FSK, ASK / OOK, para alcançar as frequências em torno de 433 MHz ou 868 MHz e muitas outras coisas. Aconselho você a ler a documentação para se familiarizar com este módulo.

Neste link você encontrará como exemplo o trabalho de Loboris referente à construção de funções a partir deste módulo:

github.com/loboris/ESP32_CC1101/tree/maste…

Vamos escrever nosso código para nosso esp32 com a cadeia de ferramentas esp-idf (veja os links da primeira etapa). Você pode adicionar os arquivos do link no subdiretório de componentes do seu projeto. Para configurar adequadamente nosso cc1101, precisaremos consertar seus registros. A Texas Instruments nos fornece um software que nos dá o valor dos registros de acordo com nossa configuração: SmartRF Studio.

Quanto a mim, indico ao software que desejo uma codificação Manchester, que a minha frequência portadora é de 868,22 MHz, que o meu tipo de modulação é ASK / OOK … deixo-vos inserir os vossos parâmetros. No caso em que sua codificação de banda base não estiver disponível, você pode considerar a codificação NRZ, aumentando adequadamente a taxa de transmissão e adaptando os dados.

Depois de definir seus valores, você tem várias opções quanto ao uso do módulo: você pode usar as funções que eu vinculei a você, ou o que fiz, apenas se inspire neste código, para configurar tudo de uma forma mais forma brutal (ver fotos em anexo), e só usamos o que precisamos.

Como o chip cc1101 se comunica por SPI, você encontrará no link do código de exemplo o arquivo de cabeçalho "spi_master_lobo.h", contendo funções mais fáceis de usar o SPI do que se você tivesse que usá-lo apenas com o conjunto de ferramentas. Acompanho vocês na foto o esquema da comunicação CC1101 no SPI, foto tirada da página 30 da ficha CC1101. Os quatro fios apresentados são: CS (Chip Select, ou SS: Slave Select, ou aqui CSn), CLK (ou SCLK, o Clock, fornecido pelo mestre), MISO (ou SO, Master In Slave Out) e MOSI (ou SI, Master Out Slave In). Em nosso caso, o mestre é o ESP32 e o escravo é o CC1101. As comunicações começam quando o pino CS está baixo, em geral.

Não se esqueça de habilitar nas opções do compilador do menuconfig as exceções C ++ para compilar.

Etapa 4: Conecte-se ao sistema

Conecte-se ao sistema
Conecte-se ao sistema
Conecte-se ao sistema
Conecte-se ao sistema
Conecte-se ao sistema
Conecte-se ao sistema

Se seu código funcionar, você fez o essencial. Nesta parte, vamos nos concentrar em como criar um aplicativo de telefone conectado ao sistema. A solução mais interessante é conectar por bluetooth, pois permite a utilização de um protocolo de baixa potência: Bluetooth Low Energy (BLE). O perfil da hierarquia é mostrado no desenho anexo: vamos ler e escrever o comando em uma Característica de um Serviço. E, claro, nosso esp32 e nosso smartphone estão equipados com bluetooth.

Esta etapa é dividida em duas partes: a parte esp32 e a parte do aplicativo. A foto anexa mostra e explica as principais partes dos códigos.

Você pode gerar seus UUIDs seguindo este link:

www.uuidgenerator.net/

Estes são os identificadores que fornecerão acesso aos serviços e recursos de nosso perfil BLE.

Sobre o código esp32 BLE, Kolban fez um ótimo trabalho tornando todas essas funções C ++ de alto nível compatíveis:

github.com/nkolban/esp32-snippets/tree/mas…

Você pode colocar esses arquivos no subdiretório de componentes. Caso contrário, você precisará de mais tempo para entender como usar o BLE com a cadeia de ferramentas esp-idf.

Em resumo do que você verá no código, criamos um Servidor, um Serviço e uma Característica, com os UUIDs associados, e adicionamos uma classe de retorno de chamada redefinida, com um método associado na gravação: quando recebemos o "O" personagem, enviamos um comando de escrita para o cc1101.

Claro, não se esqueça de habilitar o Bluetooth na configuração do componente do Menuconfig.

Sobre a parte do aplicativo, usaremos o Framework Ionic. Você pode encontrar mais informações sobre isso no link apresentado na primeira etapa, e para obter mais detalhes sobre como usar BLE com Ionic:

ionicframework.com/docs/native/ble/

E exemplos, escritos por don:

github.com/don/ionic-ble-examples/tree/mas…

Você pode editar, por exemplo, o exemplo "Conectar". Nós digitalizamos dispositivos em uma primeira página e alcançamos uma segunda página se selecionarmos nosso dispositivo. Em seguida, acessamos uma interface onde você pode adicionar um botão com o método apresentado na foto: envia nosso comando "O" com os UUIDs apropriados. Você também pode adicionar no construtor da primeira página o método "enable", pedindo para ativar o bluetooth no início do aplicativo.

Eu recomendo fortemente que você explore o site da Ionic e descubra todos os componentes (botões, alertas, caixas de seleção …) para aprimorar seu aplicativo:

ionicframework.com/docs/components/#overvi…

Etapa 5: otimizar o consumo de energia

Otimize o consumo de energia
Otimize o consumo de energia
Otimize o consumo de energia
Otimize o consumo de energia

Começamos a trabalhar com baixo consumo, então vamos trabalhar.

O conjunto de ferramentas esp-idf nos permite usar uma GUI de configuração, o menuconfig: muitos parâmetros podem diminuir o consumo de esp32. Em primeiro lugar, como não precisamos de Wifi, podemos desabilitá-lo na configuração do componente. Na mesma pasta, em FreeRTOS, você pode selecionar "Executar FreeRTOS apenas no primeiro núcleo. Em seguida, no ESP-específico, você pode diminuir a frequência da CPU para 80 MHz. Todas as funcionalidades ainda funcionam nesta velocidade de clock. Finalmente, você pode marque "Habilitar Coprocessador Ultra Low Power (ULP). Essa configuração faz com que o consumo de corrente vá de cerca de cem mA a cerca de trinta mA. Isso ainda é muito …

ESP32 pode lidar com o sono profundo. Apenas o núcleo de baixa energia está ligado e aguarda um despertar.

Veja este link abaixo para mais detalhes:

esp-idf.readthedocs.io/en/latest/api-refere…

Infelizmente, na última versão disponível da cadeia de ferramentas esp-idf (3.0), os únicos acordes disponíveis são por temporizadores e por interrupções de GPIOs. Felizmente, o Espressif nos promete BLE acordar na próxima versão (3.1).

Você também pode colocar o CC1101 em modo de espera, enviando no SPI o comando adequado para desligar o dispositivo (consulte a ficha técnica do cc1101, o comando SPWD, página 51). Para colocar o dispositivo em modo de espera ou para acordá-lo, você pode colocar baixo e depois alto o pino Chip Select dos pinos SPI (mais informações na ficha técnica).

Essas últimas configurações devem ser capazes de fazer o consumo do sistema passar abaixo dos mili-amperes …

Por fim, para fazer com que o sistema dure o máximo possível sem recarregar, ou mesmo chegar a um mês de autonomia, escolha a bateria de 3,7 V com o máximo de miliamperes por hora. Medindo o consumo de energia do seu sistema, com o display de um gerador ou amperímetro conectado em série antes do pólo + do seu sistema, você pode estimar o tempo que o seu sistema vai durar!

Recomendado: