# Integrantes do grupo

| Nome            | Matrícula       |
|------------------|-----------------|
| Gabriel Pessoa Zaranza     | 190107243          |
| Lucas Medeiros Rosa     | 170039803          |
| Nicolas Roberto de Queiroz     | 200042360          |


# Flipper Zero

O **Flipper Zero** é um dispositivo portátil e multifuncional desenvolvido para profissionais de segurança e entusiastas da eletrônica, ideal para testes e exploração de sistemas de comunicação e segurança. Com suporte a tecnologias como RFID, NFC, infravermelho, Sub-GHz, Bluetooth e GPIO, ele permite interagir e manipular diversos tipos de dispositivos, desde cartões de acesso a sistemas de controle remoto. Focado no segmento de segurança cibernética e pesquisa de vulnerabilidades, o Flipper Zero é uma ferramenta essencial para aprendizado, experimentação prática e análise de falhas em dispositivos e redes.
- ![](images/flipperzero.png)
## Listagem de características

1. **Unidade de Processamento:**
    - **Tipo de Unidade:** Microcontrolador (MCU)
    - **Modelo:** STM32WB55RG
    - **Fabricante:** STMicroelectronics
    - **Arquitetura**:
        - **Application Processor** (Processador de Aplicação): ARM Cortex-M4, arquitetura de 32 bits.
        - **Radio Processor** (Processador de Rádio): ARM Cortex-M0+, arquitetura de 32 bits.
    - **Frequência de Clock**:
        - **Application Processor (ARM Cortex-M4)**: 64 MHz.
            - Esse processador principal é responsável por executar as tarefas de aplicação, proporcionando bom desempenho para tarefas de controle e processamento de dados.
        - **Radio Processor (ARM Cortex-M0+)**: 32 MHz.
            - Esse processador secundário é projetado para realizar operações de rádio e comunicação, mantendo baixo consumo de energia para tarefas de comunicação sem fio.
    - **Capacidades de Comunicação Sem Fio (Rádio)**:
        - **Bluetooth Low Energy (BLE)**: Compatível com Bluetooth LE 5.4, adequado para comunicações de baixa energia e alto desempenho.
        - **802.15.4**: Suporta redes de baixa energia, como Zigbee, muito usadas em redes de sensores e dispositivos IoT.
        - **Modos Proprietários**: Capaz de suportar protocolos de rádio personalizados, permitindo flexibilidade para aplicações específicas.
    - **Referência**:  [Microcontroller unit reference](https://docs.flipper.net/development/hardware/tech-specs)

2. **Memória**:
    - **Flash**: 1024 KB (1 MB), que é memória não-volátil usada para armazenar o firmware e dados essenciais do sistema. Esta memória é compartilhada entre o processador de aplicação e o processador de rádio.
    - **SRAM**: 256 KB, memória volátil que armazena dados temporários durante a execução das operações. Essa 
    memória também é compartilhada entre os dois processadores, garantindo desempenho adequado para as tarefas.
    - **EEPROM:** não possui;
    - **Referência**:  [Microcontroller unit reference](https://docs.flipper.net/development/hardware/tech-specs)

3. **Sistema Operacional**:
    - **FreeRTOS**: É um sistema operacional em tempo real que gerencia tarefas essenciais, especialmente aquelas que exigem precisão e respostas rápidas, como captura e replicação de sinais de comunicação. Ele permite que o dispositivo execute várias tarefas simultaneamente com eficiência energética, priorizando processos críticos e otimizando o uso de recursos. O FreeRTOS também é modular, facilitando a integração de novas funcionalidades e garantindo o controle direto dos componentes de hardware do Flipper Zero.
    - **Referência**:  [Flipper_Zero Wikipedia](https://pt.wikipedia.org/wiki/Flipper_Zero)

4. **Sensores e Atuadores**:
    - **Sensores**:
        - Receptor Infravermelho: Permite ao Flipper Zero receber sinais infravermelhos de controles remotos e outros dispositivos IR.
        - Leitor RFID: Sensor capar de ler e armazenar informações RFID como tags, cartões e pulseiras.
        - Leitor NFC: Esse sensor dá ao Flipper Zero a capacidade de ler os dados em dispositivos NFC, como cartões de crédito.
            - Transceiver: [ST25R3916](https://www.st.com/en/nfc/st25r3916.html)
            - Frequência: 13,56 MHz
        - Receptor Sub-1 GHz: Receptor de ondar de rádio em frequência entre 300-928 MHz.
            - Transceiver: [CC1101](https://www.ti.com/product/CC1101)
        - iButton 1-Wire: Interface capaz de ler e escrever dados em dispositivos iButton
    - **Atuadores**:
        - Transmissor Infravermelho: Envia sinais infravermelhos para controlar dispositivos como TVs e aparelhos de ar-condicionado.
        - Emulador RFID: Emula cartões RFID na frequência de 125 kHz.
        - Emulador NFC: Emula tags e dispositivos NFC.
        - Transmissor Sub-1 GHz: Transmite sinais em frequências sub-1 GHz para emulação ou controle de dispositivos sem fio.
        - Tela LCD: Display monocromático de 1,4 polegadas para exibição de informações e interações com o usuário.
        - Buzzer: Fornece feedback sonoro para alertas e notificações.
        - Motor de vibração: Fornece feedback tátil para o usuário.
    - **Conexão com a MCU/MPU**:
        - Saídas GPIO: Controla dispositivos externos conectados através dos pinos de Entrada/Saída de Propósito Geral.
        - Bluetooth LE 5.4: Possibilita a conexão com outros dispositivos IoT.
    - **Referência**: [Flipper Zero tech specs](https://docs.flipper.net/development/hardware/tech-specs)

5. **Interfaces de Comunicação com fio**:
    - O **Flipper Zero** pode ser utilizado como um conversor de USB para UART/SPI/I2C.
    - **SPI**:
        - Utilizada pelo MicroSD e pelo display LCD.
        - Acessível nos pinos 2 (SPI1.MOSI), 3 (SPI1.MISO), 4 (SPI1.CS), 5 (SPI1.SCK), 6 (SPI1.CS).
    - **UART**:
        - Possui dois pinos da GPIO exclusivos para essa interface, pino 13 (Transmit) e pino 14 (Receive).
    - **I2C**:
        - Utilizada pelo módulo NFC;
        - Acessível nos pinos 2 (I2C3.SCL), 6(I2C3.SMBA), 15 (I2C3.SDA), 16 (I2C3.SCL)
    - **Referência**: [Flipper Zero tech specs](https://docs.flipper.net/development/hardware/tech-specs)
6. **Interfaces de Comunicação sem fio**:
    - **Bluetooth LE 5.4**:
        - Modelo Low Energy (LE) para maior eficiência energética;
        - Utilizada para a interação com computadores, celulares e dispositivos IoT;
        - Potência de transmissão: +4 dBm;
        - Sensibilidade de recepção: -96 dBm;
        - Taxa de transmissão: 2 Mbps.
    
    - **NFC**:
        - Transceiver: STMicroelectronics modelo [ST25R3916](https://www.st.com/en/nfc/st25r3916.html);
        - Frequência: 13,56 MHz;
        - Cartões suportados:
            - ISO-14443A/B;
            - NXP MIFARE Classic®, Ultralight®, DESFire®, etc.;
            - FeliCa™;
            - HID iClass (Picopass);
            - NFC Forum protocols.
     - **Referência**: [Flipper Zero tech specs](https://docs.flipper.net/development/hardware/tech-specs)

7. **Unidades de Entrada/Saída (I/O)**:
    - **GPIO**:
        - O **Flipper Zero** possui 18 pinos, sendo de fonte de energia ou I/O para módulos externos;
        - Em relação à fornecimento de energia, o pino 1 fornece +5 Volts e o pino 9 fornece +3.3 Volts, ambos com a corrente máxima de 1.2 A;
        - Os pinos 8, 11 e 18 são reservados para o ground;
        - Os demais pinos são utilizados como I/O para conectar módulos externos aos pinos I/O do microcontrolador [STM32WB55](https://www.st.com/resource/en/datasheet/stm32wb55rg.pdf) do Flipper Zero;
        - ![Pinos GPIO do Flipper Zero](images/gpio_pins.png)
        - **Referência**: [Flipper Zero GPIO specs](https://docs.flipper.net/gpio-and-modules)

8. **Fonte de Energia e Sistema de Alimentação**:
    - **Tipo**:
        - O Flipper Zero utiliza uma bateria Li-Po (Lithium Polymer), com capacidade de 2100 mAh, ideal para dispositivos portáteis devido à densidade energética e durabilidade.
    - **Gerenciamento de Energia (PMIC)**:
        - O dispositivo possui um sistema integrado para controle eficiente de energia, regulando o fornecimento para os componentes e otimizando o consumo, garantindo maior duração da bateria (até 28 dias em stand-by). 
        
        - Power-On Reset POR: Garante a inicialização segura quando o dispositivo é energizado.
        
        - Brown-Out Reset BOR: Detecta quedas de tensão abaixo do limite seguro e reinicia    automaticamente o sistema.

        - Voltage Scaling (Dois Modos):
            - Modo 1 (Performance): Fornece potência máxima para executar tarefas de alto desempenho.
            - Modo 2 (Low Power): Reduz o consumo de energia ao mínimo, ideal para modos stand-by ou tarefas leves.
    - **Backup de Energia**:
        - Não possui uma bateria dedicada para backup de longo prazo.
    - **Circuitos de Reset**:
        - Independent Watchdog (IWDG): Reinicia o sistema automaticamente caso o firmware trave ou deixe de responder.
        - Window Watchdog (WWDG): Monitora o tempo de execução de tarefas críticas, garantindo que não ultrapassem limites predefinidos.
        - Reset Manual, o dispositivo possui um botão de reset físico integrado à placa para recuperação manual em situações de travamento
    - **Supervisores de Energia**:
        Sistemas de monitoramento verificam a voltagem da bateria e ativam o reset automático caso ocorram quedas críticas, evitando falhas operacionais.
    - **Power Supply (Fonte de Alimentação)**:
        - Opera com uma faixa de alimentação de 1,71V a 3,6V.
        Possui modos de economia de energia, como Sleep e Stop, para reduzir o consumo em aplicações portáteis como o Flipper Zero.
        
    - **Referência**: [Flipper Zero tech specs](https://docs.flipper.net/development/hardware/tech-specs), [Microprocessors STM32WB55](https://www.st.com/en/microcontrollers-microprocessors/stm32wb55rg.html) e [Flipper Zero Power](https://docs.flipper.net/basics/power)

9. **Firmware e Atualizações**:

    - **Firmware**:
        - Utiliza um firmware baseado em FreeRTOS (um sistema operacional em tempo real) para gerenciar a execução de tarefas e a comunicação com os diversos módulos e sensores (Bluetooth, NFC, RFID, Sub-GHz, etc.). O firmware é desenvolvido de forma open-source, permitindo que a comunidade contribua com melhorias e personalizações.
    - **Atualizações Over-the-Air (OTA)**:
        - O Flipper Zero suporta atualizações OTA via Bluetooth LE, utilizando o aplicativo qFlipper em Windows, macOS, ou Linux.
        - O processo permite atualizar o firmware remotamente, garantindo novos recursos, correções de bugs e melhorias de segurança sem necessidade de conexão física.

    - **Referência**: [Flipper Zero Firmware](https://github.com/flipperdevices/flipperzero-firmware)

10. **Unidade de Proteção e Segurança**:

    - **Criptografia**:
        - O STM32WB55RG do Flipper Zero possui suporte a hardware de criptografia integrado, como o 256-bit AES/PKA e True Random Number Generator (TRNG).
    - **Hardware Security Module (HSM)**:
        - O microcontrolador inclui recursos dedicados para o armazenamento seguro de chaves de criptografia e credenciais, protegendo-as contra acesso não autorizado ou ataques físicos.
    - **Outras Características de Segurança**:
        - O U2F é um padrão de autenticação que adiciona segurança ao login. O Flipper Zero atua como uma chave física USB, usada junto com a senha para validar acessos, protegendo contra phishing e roubo de credenciais.
        - Controle de Acesso e Proteções contra Invasões: O STM32WB55RG, usado no Flipper Zero, suporta proteção de setores de memória (PCROP) para restringir operações de leitura e escrita, além de criptografia AES-256 e gerenciamento seguro de chaves. Esses recursos são úteis para controlar acesso e proteger contra manipulações não autorizadas.
        - TLS e Comunicação Segura: O suporte para criptografia AES e geradores de números aleatórios verdadeiros (TRNG) possibilita comunicações seguras via Bluetooth e durante atualizações OTA, fornecendo uma base robusta para o uso de protocolos como TLS​.
        - Hardware para Segurança: Recursos como o Public Key Accelerator (PKA) e gerenciamento seguro de firmware com autenticação (SFI) reforçam a integridade do sistema contra ataques físicos e digitais, garantindo que apenas firmware autenticado seja carregado no dispositivo.
        

    - **Referência**: 
    [Microprocessors STM32WB Series](https://www.st.com/en/microcontrollers-microprocessors/stm32wb-series.html),
    [Microprocessors STM32WB55](https://www.st.com/en/microcontrollers-microprocessors/stm32wb55rg.html),
    [Microprocessors STM32WB Rev](https://www.st.com/content/dam/AME/2020/ces-2020/presentations/CES-2020-Ind-Demo-14-STM32WL_STM32WB_Rev0.7.pdf) e 
    [Flipper Zero U2F](https://docs.flipper.net/u2f)

11. **Armazenamento Externo**:
    - **Tipo**: MicroSD card;
    - **Capacidade máxima**: até 256 GB;
    - **Capacidade recomendada**: 2-32 GB;
    - **Tipo de interface**: SPI;
    - **Velocidade de escrita/leitura**: até 5 Mbps;

    - **Referência**: [Flipper Zero GPIO specs](https://docs.flipper.net/gpio-and-modules)

12. **Interface com o Usuário (UI)**:
    - **Tela**:
        - **Tipo**: Monochrome LCD;
        - **Resolução**: 128x64 pixels;
        - **Controlador**: ST7567;
        - **Interface**: SPI;
        - **Tamanho em Diagonal** 1.4“;

    - **Botões e conectores**:
        - Led de status;
        - 5 botões direcionais;
        - 1 botão de voltar;
        - Uma entrada tipo USB-C;
        - Lanyard loop;
        - Entrada para cartão MicroSD;
        - Pinos GPIO;
        - Transceptor de infravermelho;
        - Pinos de contato com mola;

    - **Referência**: [Flipper Zero GPIO specs](https://docs.flipper.net/gpio-and-modules)

    - ![Tela do Flipper Zero](images/display.webp)
    - ![Botões e conectores](images/buttons_and_connectors.webp)

## Artigos acadêmicos relacionados

### [HcM-FreeRTOS: Hardware-centric FreeRTOS for ARM Multicore](https://repositorium.sdum.uminho.pt/bitstream/1822/81649/4/HcM-FreeRTOS_Hardware-centric_FreeRTOS_for_ARM_multicore.pdf)

O trabalho aborda o desenvolvimento do HcM-FreeRTOS, uma versão multicore e centrada em hardware do FreeRTOS para 
a arquitetura ARM Cortex-A9, que propõe soluções para os desafios enfrentados por sistemas operacionais de 
tempo real (RTOSes) em sistemas embarcados multicore.

Em sistemas multicore, RTOSes enfrentam dois problemas críticos:
* **Inversão de prioridade entre threads e interrupções**: Threads gerenciadas pelo software (kernel) e interrupções 
  controladas pelo hardware têm espaços de prioridade separados, o que pode levar a atrasos imprevisíveis na execução de tarefas críticas.
* **Sincronização em software**: O acesso concorrente a recursos compartilhados do kernel exige pontos de
  sincronização em software, introduzindo indeterminismo e overhead no sistema.

Esses problemas comprometem o desempenho, a previsibilidade e a eficiência, fatores cruciais para sistemas
embarcados de tempo real, como automação industrial, IoT e veículos autônomos. O HcM-FreeRTOS explora o ARM Generic Interrupt Controller (GIC) para delegar serviços críticos do kernel,
como agendamento e sincronização, ao hardware. Isso resulta em:

* **Unificação do espaço de prioridade**: Threads e interrupções são gerenciadas sob a mesma hierarquia de prioridade.
* **Eliminação de pontos de sincronização em software**: O GIC gerencia recursos compartilhados, reduzindo o overhead e garantindo maior determinismo.

### [Performance Evaluation of Attribute-Based Encryption in Automotive Embedded Platform for Secure Software Over-The-Air Update](https://www.mdpi.com/1424-8220/21/2/515)

Este artigo explora a aplicação de criptografia baseada em atributos (ABE) para melhorar a segurança de atualizações
Over-the-air (OTA) em plataformas automotivas, tema que ganha destaque à medida que veículos modernos se tornam
mais conectados e dependentes de sistemas de software. As atualizações OTA são essenciais para corrigir
vulnerabilidades, introduzir novas funcionalidades e manter o desempenho ideal dos veículos, mas, ao
mesmo tempo, aumentam os desafios relacionados à segurança dos dados.

Esses desafios estão relacionados à:

* **Exposição à interceptação e manipulação de dados**: Gateways automotivos conectados à internet são mais vulneráveis a
ataques, permitindo que adversários capturem ou modifiquem atualizações.
* **Falta de confidencialidade em dados em repouso**: Mesmo com canais seguros, dados armazenados em servidores ou gateways
podem ser acessados por terceiros não confiáveis.

Ao decorrer do artigo conclui-se que a utilização de uma criptografia baseada em atributos contribui para o aumento da
confidencialidade dos arquivos de atualização sem comprometer de maneira significativa o desempenho.

### [Design and Implementation of an Atrial Fibrillation Detection Algorithm on the ARM Cortex-M4 Microcontroller](https://www.mdpi.com/1424-8220/23/17/7521)

O artigo citado apresenta o desenvolvimento de um algoritmo para a detecção de fibrilação atrial implementado em um 
microcontrolador ARM Cortex-M4. A fibrilação atrial é uma condição cardíaca comumente associada a um aumento 
significativo no risco de acidente vascular cerebral e insuficiência cardíaca. A detecção precoce e precisa dessa 
condição é crucial para a intervenção médica oportuna e a melhoria dos resultados dos pacientes.

O estudo detalha a concepção de um algoritmo eficiente para identificar episódios de fibrilação em sinais de 
eletrocardiograma. A implementação no microcontrolador ARM Cortex-M4 visa equilibrar precisão na detecção com baixo 
consumo de energia, tornando-o adequado para dispositivos médicos portáteis e sistemas de monitoramento contínuo.
Os resultados demonstram que o algoritmo alcança alta precisão na detecção de fibrilação, mantendo a eficiência energética
necessária para aplicações em sistemas embarcados.

A relevância deste trabalho para sistemas embarcados é significativa, pois aborda a integração de algoritmos
complexos de processamento de sinais em hardware com recursos limitados, sem comprometer o desempenho ou a precisão.
Isso é particularmente importante em dispositivos médicos portáteis, onde a eficiência energética e a
confiabilidade são cruciais. A abordagem apresentada pode ser aplicada a uma variedade de sistemas embarcados que
requerem processamento de sinais em tempo real, destacando a importância de soluções de software otimizadas para
hardware específico. 

## Produtos Relacionados


### [Placas de desenvolvimento ESP32](https://www.espressif.com/en/products/socs/esp32)

Placas baseadas no microcontrolador ESP32, com conectividade Wi-Fi e Bluetooth integradas, amplamente usadas em projetos de automação e comunicação. Assim como o Flipper Zero, possuem interfaces GPIO, SPI, I2C e UART, além de conectividade sem fio.

### [OpenBCI Cyton Board](https://shop.openbci.com/products/cyton-biosensing-board-8-channel?srsltid=AfmBOoogzyLj7_6x2dxeDtCWxQ5prkjVssbIHEXEqcHDbJw67rctxbaA)
Uma placa de aquisição de sinais biológicos (EEG, EMG, EKG) com suporte a processamento em tempo real, usada em pesquisas neurocientíficas. Possuem um microcontrolador (PIC32MX250F128B), semelhante ao usado pelo Flipper Zero, além de interfaces GPIO e módulo RFID.

### [Nest Thermostat](https://justlv.medium.com/nest-thermostat-e-teardown-and-on-making-beautiful-devices-for-the-home-ae6ada01bb26)

Termostato inteligente que utiliza sensores e conectividade Wi-Fi para gerenciar a temperatura ambiente automaticamente. Utilizam o microcontrolador STMicroelectronics STM32L431VCI6, semelhante ao usado no Flipper Zero, para gerenciar todos os sensores presentes no produto.

### [Raspberry Pi Pico](https://www.raspberrypi.com/products/raspberry-pi-pico/)

A Raspberry Pi Pico é uma placa de desenvolvimento compacta que utiliza o microcontrolador RP2040, projetado para aplicações embarcadas e de baixo consumo de energia. Assim como o Flipper Zero, ela é equipada com interfaces como GPIO, SPI, I2C e UART, permitindo a integração com diversos sensores e dispositivos. O RP2040, com seu design otimizado e arquitetura de alto desempenho, garante a capacidade de controlar múltiplos periféricos de forma eficiente, sendo ideal para projetos de automação, IoT e prototipagem.


### [GoodFET](https://goodfet.sourceforge.net/)

O GoodFET é uma ferramenta de hardware open-source projetada para depuração de microcontroladores e análise de interfaces de comunicação. Ele utiliza microcontroladores embarcados, como os da família Texas Instruments MSP430, que compartilham características de baixo consumo de energia e alta eficiência, semelhantes às do STM32 usado no Flipper Zero. Essa arquitetura permite que o GoodFET controle e analise protocolos de comunicação com precisão, sendo amplamente utilizado para engenharia reversa, desenvolvimento de firmware e experimentação em sistemas embarcados.

## Referências Bibliográficas


1. Flipper Devices. [Flipper Zero Tech Specs](https://docs.flipper.net/development/hardware/tech-specs). Acessado em 24/11/2024.
2. STMicroelectronics. [STM32WB Series Microcontrollers](https://www.st.com/en/microcontrollers-microprocessors/stm32wb-series.html). Acessado em 27/11/2024.
3. STMicroelectronics. [STM32WB55RG Datasheet](https://www.st.com/resource/en/datasheet/stm32wb55rg.pdf). Acessado em 25/11/2024.
4. Wikipedia. [Flipper Zero](https://pt.wikipedia.org/wiki/Flipper_Zero). Acessado em 30/11/2024.
5. Texas Instruments. [CC1101 RF Transceiver Datasheet](https://www.ti.com/product/CC1101). Acessado em 24/11/2024.
6. STMicroelectronics. [ST25R3916 NFC Transceiver Datasheet](https://www.st.com/en/nfc/st25r3916.html). Acessado em 26/11/2024.
7. Flipper Devices. [GPIO and Modules Documentation](https://docs.flipper.net/gpio-and-modules). Acessado em 28/11/2024.
8. GitHub. [Flipper Zero Firmware Repository](https://github.com/flipperdevices/flipperzero-firmware). Acessado em 27/11/2024.
9. Repositório de Investigação. [HcM-FreeRTOS: Hardware-centric FreeRTOS for ARM Multicore](https://repositorium.sdum.uminho.pt/bitstream/1822/81649/4/HcM-FreeRTOS_Hardware-centric_FreeRTOS_for_ARM_multicore.pdf). Acessado em 25/11/2024.
10. MDPI. [Performance Evaluation of Attribute-Based Encryption in Automotive Embedded Platform for Secure Software Over-The-Air Update](https://www.mdpi.com/1424-8220/21/2/515). Acessado em 29/11/2024.
11. MDPI. [Design and Implementation of an Atrial Fibrillation Detection Algorithm on the ARM Cortex-M4 Microcontroller](https://www.mdpi.com/1424-8220/23/17/7521). Acessado em 24/11/2024.
12. Espressif. [ESP32 Product Page](https://www.espressif.com/en/products/socs/esp32). Acessado em 01/12/2024.
13. OpenBCI. [Cyton Biosensing Board](https://shop.openbci.com/products/cyton-biosensing-board-8-channel?srsltid=AfmBOoogzyLj7_6x2dxeDtCWxQ5prkjVssbIHEXEqcHDbJw67rctxbaA). Acessado em 30/11/2024.
14. Raspberry Pi Foundation. [Raspberry Pi Pico](https://www.raspberrypi.com/products/raspberry-pi-pico/). Acessado em 26/11/2024.
15. SourceForge. [GoodFET Debugger](https://goodfet.sourceforge.net/). Acessado em 27/11/2024.
