Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pyFlipper — Flipper Zero Python CLI ラッパー | Kitploit
ツール/GitHubGitHub/wh00hw/pyflipper
BluetoothセキュリティIoTセキュリティRFID/NFCツールワイヤレスセキュリティハードウェアハッキングペネトレーションテストユーティリティとフレームワークハードウェアとIoTセキュリティレッドチーミング
GitHubwh00hw/pyflipper

pyFlipper

Flipper Zero Python CLI ラッパー

43849212ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

PyFlipper

Flipper Zero Python CLI ラッパー

記事

  • レストランをハックする方法

機能と特徴:

  • Flipper シリアル CLI ラッパー
  • Websocket クライアントインターフェース
  • プレーン TCP インターフェース

新機能(ファームウェア 1.x 互換性)

このリリースでは、ラッパーを現在の Flipper Zero CLI に合わせて更新しました (実機で検証済み、ファームウェア unlshd-089e):

  • 新しい info モジュール: flipper.info.device_info() / power_info() / power_debug_info()(最新の info device / info power コマンドに対応)。
  • power info → info power: flipper.power.info() は引き続き動作し、内部で info power を読み取るようになりました。flipper.power.otg_on()/otg_off() を追加。
  • date: flipper.date.datetime() を使用。現在の出力形式に対応するためパース処理を修正。
  • ストレージ: サイズが KB と KiB の両方でパースされるようになり、read() は 複数行のファイル内容をすべて返し、exFAT やラベルなしカードも正しくパースされます(#21 を修正)。
  • 赤外線: プロトコルリストはファームウェアから動的に読み込まれるため、NECext、 Kaseikyo、RCA、Pioneer などが自動的にサポートされます(#15 を修正)。 新しい flipper.ir.protocols() メソッド。
  • debug → sysctl debug、subghz tx/rx に必須の device 引数が追加され、 bt hci_info は変更なし。
  • NFC を全面的に書き換え:現在の対話型サブシェル(scan、dump、 emulate、field、apdu、raw、mfu)に対応し、UID ごとの Mifare Classic キーキャッシュ ヘルパー(import_nfc_keys、write_key_cache)を追加。
  • 統一シリアルレイヤー(シリアル / websocket / TCP):現在のシェルに対応した ANSI エスケープ処理と、 ハードウェア不要のテストスイートを実装。
  • 標準ファームウェアから削除(カスタムファームウェアでまだ提供されている場合は保持): ps(→ top)、music_player、nfc detect。

セットアップ手順:

$ pip install pyflipper

テスト済み環境:

  • Python 3.8.10 on Linux 5.4.0 x86_64
  • Python 3.9.10 on Windows 10
  • Python 3.10.5 on Android 12 (Termux + OTGSerial2WebSocket ルート不要)
  • Python 3.12 on Linux (ファームウェア unlshd-089e)

使用法 / 例

接続

from pyflipper import PyFlipper

# ローカルシリアルポート
flipper = PyFlipper(com="/dev/ttyACM0")

# または

# リモート serial2websocket サーバー
flipper = PyFlipper(ws="ws://192.168.1.5:1337")

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

電源

# 情報(現在のファームウェアでは内部で `info power` を読み取ります)
info = flipper.power.info()

# 電源オフ
flipper.power.off()

# 再起動
flipper.power.reboot()

# DFU モードで再起動
flipper.power.reboot2dfu()

# GPIO ヘッダーの 5V OTG ピンを切り替え
flipper.power.otg_on()
flipper.power.otg_off()

アップデート / バックアップ

# .fuf ファイルからアップデートをインストール
flipper.update.install(fuf_file="/ext/update.fuf")

# Flipper を .tar ファイルにバックアップ
flipper.update.backup(dest_tar_file="/ext/backup.tar")

# バックアップ .tar ファイルから Flipper を復元
flipper.update.restore(bak_tar_file="/ext/backup.tar")

ローダー

# インストール済みアプリの一覧
apps = flipper.loader.list()

# アプリを起動
flipper.loader.open(app_name="Clock")

Flipper 情報

# フリッパーの日付を取得(datetime オブジェクト)
date = flipper.date.datetime()

# フリッパーのタイムスタンプを取得
timestamp = flipper.date.timestamp()

# デバイス情報辞書を取得(現在のファームウェア `info device`、ドット区切りのキー)
device_info = flipper.info.device_info()

# 電源情報辞書を取得(現在のファームウェア `info power`)
power_info = flipper.info.power_info()

# 拡張電源 / ゲージデバッグ情報
power_debug = flipper.info.power_debug_info()

# レガシー `device_info` コマンド(アンダースコア区切りのキー、引き続きサポート)
legacy_info = flipper.device_info.info()

# ヒープ情報辞書を取得
heap = flipper.free.info()

# 空きブロックの文字列を取得
free_blocks = flipper.free.blocks()

# Bluetooth 情報を取得
bt_info = flipper.bt.info()

ファームウェア互換性。 このライブラリは現在の Flipper Zero CLI をターゲットとしています (ファームウェア 1.x、Unleashed unlshd-089e で検証済み)。いくつかの古いコマンドは 公式ファームウェアから削除されたため、利用できなくなりました: ps(対話型の top に置き換え)、music_player、nfc detect (NFC は対話型サブシェルになりました)。power info は info power に移動、 debug は sysctl debug に移動、storage はサイズを KiB で報告するようになりました。 これらはすべて、上記のラッパーで透過的に処理されます。

ストレージ

ファイルシステム情報

# ストレージファイルシステム情報を取得
ext_info = flipper.storage.info(fs="/ext")

エクスプローラー

# ストレージ /ext の辞書を取得
ext_list = flipper.storage.list(path="/ext")

# ストレージ /ext のツリー辞書を取得
ext_tree = flipper.storage.tree(path="/ext")

# ファイル情報を取得
file_info = flipper.storage.stat(file="/ext/foo/bar.txt")

# ディレクトリを作成
flipper.storage.mkdir(new_dir="/ext/foo")

ファイル

# ファイルを読み込む
plain_text = flipper.storage.read(file="/ext/foo/bar.txt")

# ファイルを削除
flipper.storage.remove(file="/ext/foo/bar.txt")

# ファイルをコピー
flipper.storage.copy(src="/ext/foo/source.txt", dest="/ext/bar/destination.txt")

# ファイル名を変更
flipper.storage.rename(file="/ext/foo/bar.txt", new_file="/ext/foo/rab.txt")

# MD5 ハッシュを計算
md5_hash = flipper.storage.md5(file="/ext/foo/bar.txt")

# ファイルを一度に書き込み
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)

# リスナーを使用してファイルを書き込み
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)

# 忘れずに停止
flipper.storage.write.stop()

LED / バックライト

# 汎用 LED を設定(r, b, g, bl)
flipper.led.set(led='r', value=255)

# 青 LED をオフ
flipper.led.blue(value=0)

# 緑 LED の値を設定
flipper.led.green(value=175)

# バックライトをオン
flipper.led.backlight_on()

# バックライトをオフ
flipper.led.backlight_off()

# LED をすべてオフ
flipper.led.off()

バイブレーション

# バイブレーションを True または False に設定
flipper.vibro.set(True)

# バイブレーションをオン
flipper.vibro.on()

# バイブレーションをオフ
flipper.vibro.off()

GPIO

# GPIO モードを設定: 0 - 入力, 1 - 出力
flipper.gpio.mode(pin_name=PIN_NAME, value=1)

# GPIO ピンの値を設定: 0 - オフ, 1 - オン
flipper.gpio.set(pin_name=PIN_NAME, value=1)

# GPIO ピンの値を読み取り
flipper.gpio.read(pin_name=PIN_NAME)

MusicPlayer

⚠️ 公式ファームウェアから削除されました。 music_player CLI コマンドは標準ファームウェアから 削除されました(現在は別の .fap アプリです)。これらの呼び出しは、そのコマンドを 保持しているカスタムファームウェア(例:それを同梱する Unleashed / RogueMaster ビルド)では 引き続き動作します。標準ファームウェアでは「command not found」という応答が返ります。

# RTTTL 形式の曲を再生
rttl_song = "Littleroot Town - Pokemon:d=4,o=5,b=100:8c5,8f5,8g5,4a5,8p,8g5,8a5,8g5,8a5,8a#5,8p,4c6,8d6,8a5,8g5,8a5,8c#6,4d6,4e6,4d6,8a5,8g5,8f5,8e5,8f5,8a5,4d6,8d5,8e5,2f5,8c6,8a#5,8a#5,8a5,2f5,8d6,8a5,8a5,8g5,2f5,8p,8f5,8d5,8f5,8e5,4e5,8f5,8g5"

# ループ再生
flipper.music_player.play(rtttl_code=rttl_song)

# ループを停止
flipper.music_player.stop()

# 20秒間再生
flipper.music_player.play(rtttl_code=rttl_song, duration=20)

# ビープ音を鳴らす
flipper.music_player.beep()

# 5秒間ビープ音を鳴らす
flipper.music_player.beep(duration=5)

NFC

現在のファームウェアでは、NFC は対話型の サブシェル です(scanner、dump、 emulate、field、apdu、raw、mfu)。このラッパーはサブシェルに入り、1つのコマンドを実行して 即座に抜けるため、各メソッドは通常のブロッキング呼び出しになります。 detect() は scan() のエイリアスとして維持されています。

# タグの種類を検出 -> {'protocols': ['Mifare Classic'], 'raw': '...'} または None
tag = flipper.nfc.scan(timeout=5)

# NFC フィールドを数秒間オンにする
flipper.nfc.field(timeout=3)
ツールをダウンロード