Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
flipper-template — Modello di sviluppo Zig per Flipper Zero con pipeline di build automatica, integrazione SDK e cross-compilazione per ARM Cortex-M4. Supporta i protocolli Sub-GHz, NFC, RFID e Infrared. | Kitploit
Strumenti/GitHubGitHub/nishantjoshi00/flipper-template
Sicurezza Sistemi EmbeddedSicurezza IoTScripting e AutomazioneSicurezza MobileSicurezza HardwareUtilità e FrameworkApprendimento e FormazioneAnalisi del Firmware

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
nishantjoshi00/flipper-template

flipper-template

Modello di sviluppo Zig per Flipper Zero con pipeline di build automatica, integrazione SDK e cross-compilazione per ARM Cortex-M4. Supporta i protocolli Sub-GHz, NFC, RFID e Infrared.

Vedi Repository
1343194 mesi faRevisionato da Kitploit

Template Zig per Flipper Zero

Un template moderno e pronto per la produzione per lo sviluppo di applicazioni Flipper Zero utilizzando il linguaggio di programmazione Zig. Questo progetto fornisce un sistema di compilazione ottimizzato che integra Zig con l'SDK di Flipper Zero, consentendo agli sviluppatori di scrivere applicazioni type-safe e memory-safe per la piattaforma Flipper Zero.

Panoramica

Questo template colma il divario tra il potente sistema di compilazione di Zig e le caratteristiche del linguaggio con il kit di sviluppo firmware di Flipper Zero. Gestisce la complessa integrazione tra la cross-compilazione ARM Cortex-M4 di Zig e l'SDK Flipper, fornendo un punto di partenza pulito per applicazioni personalizzate.

Caratteristiche principali

  • Supporto nativo a Zig: Scrivi applicazioni Flipper interamente in Zig, sfruttando le garanzie di sicurezza in fase di compilazione e l'interoperabilità con C
  • Pipeline di compilazione automatizzata: Integrazione senza soluzione di continuità con ufbt (strumento di compilazione non ufficiale) per il confezionamento dei file FAP
  • Sviluppo multipiattaforma: Funziona su macOS, Linux e altre piattaforme supportate da Zig
  • Integrazione SDK: Percorsi di inclusione e flag del compilatore preconfigurati per l'SDK Flipper completo (target F7)
  • Configurazione interattiva: Script di inizializzazione guidato per personalizzare i metadati dell'app
  • Avvio rapido: Comandi integrati per compilare, impacchettare e distribuire sui dispositivi Flipper

Architettura

Il template utilizza un processo di compilazione a due stadi:

  1. Fase di compilazione Zig: Compila il codice sorgente Zig in file oggetto ARM Cortex-M4 (app.o)

    • Target: architettura thumb con modello CPU cortex-m4
    • ABI: eabihf (Interfaccia Binaria per Applicazioni Embedded, Hard Float)
    • Ottimizzazione: ReleaseSmall per dimensione binaria minima
  2. Fase di impacchettamento UFBT: Collega i file oggetto con l'SDK e li impacchetta nel formato .fap

    • Gestito dalla toolchain ufficiale di Flipper
    • Produce pacchetti applicativi distribuibili

Prerequisiti

Strumenti richiesti

  • Zig: Versione 0.15.1 o successiva (download)
  • UFBT: Strumento di compilazione Flipper non ufficiale (guida all'installazione)
  • Python 3: Necessario per eseguire i comandi ufbt
  • SDK Flipper Zero: Gestito automaticamente da ufbt (installato in ~/.ufbt)

Configurazione specifica per piattaforma

macOS

Il template è preconfigurato per macOS ARM64 con il percorso della toolchain ARM:

~/.ufbt/toolchain/arm64-darwin/arm-none-eabi/include

Se sei su una piattaforma diversa, potresti dover modificare il percorso arm_libc_include in build.zig:31 in base alla posizione della tua toolchain.

Installazione

  1. Installa UFBT:

    python3 -m pip install --upgrade ufbt
    ufbt update
    
  2. Clona o scarica questo template:

    git clone https://github.com/yourusername/flipper-template.git
    cd flipper-template
    
  3. Inizializza il tuo progetto:

    zig build init
    

    Questo script interattivo ti chiederà:

    • ID App (es., my_custom_app)
    • Nome visualizzato (mostrato nel menu Flipper)
    • Descrizione
    • Nome autore
    • URL repository GitHub

Utilizzo

Compilare l'applicazione

Compila il codice sorgente Zig in un file oggetto:

zig build

Questo crea zig-out/bin/app.o con tutto il codice applicativo compilato.

Creare un pacchetto FAP

Compila e impacchetta l'applicazione completa:

zig build fap

Questo esegue l'intera pipeline:

  1. Compila il codice Zig in file oggetto
  2. Invoca ufbt per il collegamento con l'SDK
  3. Genera il file .fap nella directory dist/

Distribuire su Flipper

Avvia l'applicazione direttamente su un Flipper Zero connesso:

zig build launch

Questo compila, impacchetta e trasferisce l'app via USB, quindi la avvia automaticamente.

Struttura del progetto

flipper-template/
├── application.fam       # Manifest dell'app Flipper (metadati, punti di ingresso)
├── build.zig            # Configurazione del sistema di compilazione Zig
├── build.zig.zon        # Manifest del pacchetto Zig
├── icon.png             # Icona dell'app (10x10px consigliati)
├── setup.sh             # Script di inizializzazione interattivo del progetto
├── src/
│   └── root.zig         # Codice sorgente principale dell'applicazione
└── zig-out/             # Artefatti di compilazione (generati)
    └── bin/
        └── app.o        # File oggetto compilato

File chiave

  • src/root.zig: Punto di ingresso contenente la funzione start() e la logica dell'applicazione
  • application.fam: Configurazione specifica per Flipper (ID app, categoria, dipendenze, dimensione dello stack)
  • build.zig: Definisce i target di compilazione, i percorsi SDK e i comandi di compilazione

Guida allo sviluppo

Struttura minima dell'applicazione

Il template include un esempio "Hello World" che dimostra le API core di Flipper:

// Import Flipper SDK functions
const flipper = @cImport({
    @cInclude("furi.h");
    @cInclude("gui/gui.h");
    @cInclude("gui/canvas.h");
    @cInclude("gui/view_port.h");
});

// Application entry point (must be named "start")
export fn start(_: ?*anyopaque) callconv(.{ .arm_aapcs = .{} }) i32 {
    // Initialize GUI viewport
    const gui = flipper.furi_record_open("gui");
    const view_port = flipper.view_port_alloc();

    // Set up callbacks and UI
    // ... (see src/root.zig for complete implementation)

    // Event loop
    _ = flipper.furi_thread_flags_wait(1, flipper.FuriFlagWaitAny, flipper.FuriWaitForever);

    return 0;
}

Integrazione SDK

Il sistema di compilazione configura automaticamente i percorsi di inclusione per:

  • SDK core: FURI (Flipper Universal Runtime Interface)
  • HAL: Livello di astrazione hardware per STM32WB55
  • Librerie standard: mbedTLS, nanopb, mlib
  • Librerie di protocollo: Sub-GHz, NFC, RFID, Infrared
  • API periferiche: GPIO, SPI, I2C, UART

Tutte le intestazioni sono disponibili tramite @cImport() nel codice Zig.

Note sulle convenzioni di chiamata

L'SDK Flipper utilizza le convenzioni di chiamata ARM AAPCS:

  • AAPCS: Chiamata di procedura ARM standard (es., punto di ingresso start())
  • AAPCS-VFP: Con supporto per numeri a virgola mobile/vettori (es., callback)

Assicurati che le funzioni esportate corrispondano alla convenzione di chiamata prevista:

export fn start(_: ?*anyopaque) callconv(.{ .arm_aapcs = .{} }) i32
export fn draw_callback(canvas: ?*Canvas, ctx: ?*anyopaque) callconv(.{ .arm_aapcs_vfp = .{} }) void

Gestione degli import SDK

Alcune intestazioni dell'SDK contengono costrutti che il traduttore C di Zig non può elaborare (es., unioni con tipi opachi in input/input.h). In questi casi, dichiara manualmente funzioni esterne:

extern fn view_port_input_callback_set(
    view_port: ?*flipper.ViewPort,
    callback: ?*const fn (?*anyopaque, ?*anyopaque) callconv(.{ .arm_aapcs_vfp = .{} }) void,
    context: ?*anyopaque
) callconv(.{ .arm_aapcs = .{} }) void;

Risoluzione dei problemi

Errori di compilazione

Problema: unable to find header 'furi.h'

  • Causa: SDK UFBT non installato o percorso ~/.ufbt errato
  • Soluzione: Esegui ufbt update per installare le intestazioni SDK

Problema: undefined reference to 'view_port_alloc'

  • Causa: File oggetto non collegato correttamente con SDK
  • Soluzione: Usa zig build fap invece di zig build per completare il collegamento

Problemi di distribuzione

Scarica lo strumento