Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pyFlipper — Wrapper Python CLI pour Flipper Zero | Kitploit
Outils/GitHubGitHub/wh00hw/pyflipper
Sécurité BluetoothSécurité IoTOutils RFID/NFCSécurité Sans FilHacking MatérielTests d'IntrusionUtilitaires et FrameworksSécurité Matériel et IoTRed Teaming
GitHubwh00hw/pyflipper

pyFlipper

Wrapper Python CLI pour Flipper Zero

4384922il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

PyFlipper

Wrapper Python CLI pour Flipper Zero

Articles

  • Comment pirater un restaurant

Fonctionnalités et caractéristiques

  • Wrapper CLI série pour Flipper
  • Interface client WebSocket
  • Interface TCP simple

Nouveautés (compatibilité firmware 1.x)

Cette version met le wrapper en conformité avec le CLI actuel du Flipper Zero (validé sur du matériel réel, firmware unlshd-089e) :

  • Nouveau module info : flipper.info.device_info() / power_info() / power_debug_info() (les commandes modernes info device / info power).
  • power info → info power : flipper.power.info() continue de fonctionner et lit désormais info power en interne. Ajout de flipper.power.otg_on()/otg_off().
  • date : utilisez flipper.date.datetime() ; l'analyse a été corrigée pour le format de sortie actuel.
  • Stockage : les tailles sont analysées en KB et KiB, read() renvoie désormais le contenu complet du fichier multiligne, et les cartes exFAT / sans étiquette sont correctement analysées (corrige #21).
  • Infrarouge : la liste des protocoles est lue en direct depuis le firmware, donc NECext, Kaseikyo, RCA, Pioneer, … sont supportés automatiquement (corrige #15). Nouveau flipper.ir.protocols().
  • debug → sysctl debug, subghz tx/rx a obtenu l'argument device obligatoire, bt hci_info inchangé.
  • NFC réécrit pour le sous-shell interactif actuel (scan, dump, emulate, field, apdu, raw, mfu) avec des aides de cache de clés Mifare Classic par UID (import_nfc_keys, write_key_cache).
  • Couche série unifiée (série / websocket / TCP) avec gestion des séquences d'échappement ANSI pour le shell actuel, plus une suite de tests sans matériel.
  • Supprimé du firmware stock (conservé pour les firmwares personnalisés qui les incluent encore) : ps (→ top), music_player, nfc detect.

Instructions d'installation

$ pip install pyflipper

Testé sur

  • Python 3.8.10 sur Linux 5.4.0 x86_64
  • Python 3.9.10 sur Windows 10
  • Python 3.10.5 sur Android 12 (Termux + OTGSerial2WebSocket AUCUN ROOT REQUIS)
  • Python 3.12 sur Linux (firmware unlshd-089e)

Utilisation/Exemples

Connexion

from pyflipper import PyFlipper

# Port série local
flipper = PyFlipper(com="/dev/ttyACM0")

# OU

# Serveur distant serial2websocket
flipper = PyFlipper(ws="ws://192.168.1.5:1337")

# TCP
flipper = PyFlipper(tcp='192.168.89.222:22170')

Alimentation

# Info (sur le firmware actuel, cela lit `info power` en interne)
info = flipper.power.info()

# Extinction
flipper.power.off()

# Redémarrage
flipper.power.reboot()

# Redémarrage en mode DFU
flipper.power.reboot2dfu()

# Basculer la broche OTG 5V sur l'en-tête GPIO
flipper.power.otg_on()
flipper.power.otg_off()

Mise à jour/Sauvegarde

# Installer une mise à jour à partir du fichier .fuf
flipper.update.install(fuf_file="/ext/update.fuf")

# Sauvegarder le Flipper dans un fichier .tar
flipper.update.backup(dest_tar_file="/ext/backup.tar")

# Restaurer le Flipper à partir d'un fichier .tar de sauvegarde
flipper.update.restore(bak_tar_file="/ext/backup.tar")

Chargeur

# Lister les applications installées
apps = flipper.loader.list()

# Ouvrir une application
flipper.loader.open(app_name="Clock")

Informations Flipper

# Obtenir la date du Flipper (objet datetime)
date = flipper.date.datetime()

# Obtenir le timestamp du Flipper
timestamp = flipper.date.timestamp()

# Obtenir le dictionnaire d'informations sur le périphérique (firmware actuel `info device`, clés séparées par des points)
device_info = flipper.info.device_info()

# Obtenir le dictionnaire d'informations sur l'alimentation (firmware actuel `info power`)
power_info = flipper.info.power_info()

# Informations de débogage étendues sur l'alimentation/la jauge
power_debug = flipper.info.power_debug_info()

# Commande `device_info` héritée (clés séparées par des underscores, toujours supportée)
legacy_info = flipper.device_info.info()

# Obtenir le dictionnaire d'informations sur le tas
heap = flipper.free.info()

# Obtenir la chaîne free_blocks
free_blocks = flipper.free.blocks()

# Obtenir les informations Bluetooth
bt_info = flipper.bt.info()

Compatibilité du firmware. Cette bibliothèque cible désormais le CLI actuel du Flipper Zero (firmware 1.x, vérifié avec Unleashed unlshd-089e). Quelques commandes héritées ont été supprimées du firmware officiel et ne sont donc plus disponibles : ps (remplacé par le top interactif), music_player et nfc detect (NFC est maintenant un sous-shell interactif). power info a été déplacé vers info power, debug vers sysctl debug, et storage signale désormais les tailles en KiB — tout est géré de manière transparente par les wrappers ci-dessus.

Stockage

Informations du système de fichiers

# Obtenir les informations du système de fichiers de stockage
ext_info = flipper.storage.info(fs="/ext")

Explorateur

# Obtenir le dictionnaire du stockage /ext
ext_list = flipper.storage.list(path="/ext")

# Obtenir le dictionnaire de l'arborescence du stockage /ext
ext_tree = flipper.storage.tree(path="/ext")

# Obtenir les informations d'un fichier
file_info = flipper.storage.stat(file="/ext/foo/bar.txt")

# Créer un répertoire
flipper.storage.mkdir(new_dir="/ext/foo")

Fichiers

# Lire un fichier
plain_text = flipper.storage.read(file="/ext/foo/bar.txt")

# Supprimer un fichier
flipper.storage.remove(file="/ext/foo/bar.txt")

# Copier un fichier
flipper.storage.copy(src="/ext/foo/source.txt", dest="/ext/bar/destination.txt")

# Renommer un fichier
flipper.storage.rename(file="/ext/foo/bar.txt", new_file="/ext/foo/rab.txt")

# Hash MD5 d'un fichier
md5_hash = flipper.storage.md5(file="/ext/foo/bar.txt")

# Écrire un fichier en un seul bloc
file = "/ext/bar.txt"

text = """There are many variations of passages of Lorem Ipsum available, 
but the majority have suffered alteration in some form, by injected humour, 
or randomised words which don't look even slightly believable. 
If you are going to use a passage of Lorem Ipsum, 
you need to be sure there isn't anything embarrassing hidden in the middle of text. 
"""

flipper.storage.write.file(path=file, text=text)

# Écrire un fichier en utilisant un écouteur
file = "/ext/foo.txt"

text_one = """There are many variations of passages of Lorem Ipsum available, 
but the majority have suffered alteration in some form, by injected humour, 
or randomised words which don't look even slightly believable. 
If you are going to use a passage of Lorem Ipsum, 
you need to be sure there isn't anything embarrassing hidden in the middle of text. 
"""

flipper.storage.write.start(file)

time.sleep(2)

flipper.storage.write.send(text_one)

text_two = """All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as 
necessary, making this the first true generator on the Internet.
 It uses a dictionary of over 200 Latin words, combined with a handful of 
 model sentence structures, to generate Lorem Ipsum which looks reasonable. 
The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
"""
flipper.storage.write.send(text_two)

time.sleep(3)

# N'oubliez pas d'arrêter
flipper.storage.write.stop()

LED/Rétroéclairage

# Allumer une LED générique (r,b,g,bl)
flipper.led.set(led='r', value=255)

# Éteindre la LED bleue
flipper.led.blue(value=0)

# Définir la valeur de la LED verte
flipper.led.green(value=175)
Télécharger l’outil