PyFlipper:一款功能强大的Flipper Zero命令行接口封装器
2022-10-13 19:7:52 Author: FreeBuf(查看原文) 阅读量:17 收藏

 关于PyFlipper 

PyFlipper是一款功能强大的Flipper Zero命令行接口封装器,该工具基于纯Python开发,因此具备良好的跨平台特性。

 Flipper Zero介绍 

Flipper Zero是一种类似于Tamagotchi的小工具,Flipper Zero是开源的并可自定义的,您可以插入其他硬件以获取更多帮助。您可以通过蓝牙将其连接到手机或其他设备,也可以插入MicroSD卡以扩展存储并添加自己的插件。Flipper Zero还具有GPIO和USB端口,可将其连接到其他硬件。

尽管体积小巧,外观简洁,但Flipper Zero实际上配备了多种用于黑客的工具。您有用于模拟遥控器的无线电,RFID阅读器,红外收发器,甚至是GPIO引脚。所有这些尺寸都适合您的口袋,而且设计不会引起太多关注。

 功能介绍 

1、提供Flipper串口命令行接口封装器;

2、提供Websocket客户端界面;

 工具下载 

该工具基于Python 3开发,因此广大研究人员首先需要在本地设备上安装并配置好Python 3环境。接下来,使用下列命令将该项目源码克隆至本地,并完成工具的虚拟环境配置:

$ git clone https://github.com/wh00hw/pyFlipper.git$ cd pyFlipper$ python3 -m venv venv$ source venv/bin/activate

(向右滑动,查看更多)

然后使用项目提供的requirements.txt文件安装该工具所需的依赖组件:

$ pip install -r requirements.txt

 测试平台 

当前版本的PyFlipper已在下列平台和Python版本环境中进行过测试:

1、Python v3.8.10 + Linux 5.1.0 x86_64

2、Python 3.9.10 + Windows 10

3、Python 3.10.5 + Android 12 (Termux + OTGSerial2WebSocket,无需ROOT)

 工具使用 

连接

from pyflipper import PyFlipper#本地串口号flipper = PyFlipper(com="/dev/ttyACM0")#或者#远程serial2websocket服务器flipper = PyFlipper(ws="ws://192.168.1.5:1337")

(向右滑动,查看更多)

电源

#电源信息info = flipper.power.info()#关机flipper.power.off()#重启flipper.power.reboot()#重启进入DFU模式flipper.power.reboot2dfu()

更新/备份

#从.fuf文件安装更新flipper.update.install(fuf_file="/ext/update.fuf")#将Flipper备份至.tar文件flipper.update.backup(dest_tar_file="/ext/backup.tar")#从.tar备份文件恢复Flipperflipper.update.restore(bak_tar_file="/ext/backup.tar")

(向右滑动,查看更多)

加载器

#查看已安装程序列表apps = flipper.loader.list()#打开Appflipper.loader.open(app_name="Clock")

Flipper信息

#获取Flipper日期date = flipper.date.date()#获取Flipper时间戳timestamp = flipper.date.timestamp()#获取进程列表ps = flipper.ps.list()#获取设备信息device_info = flipper.device_info.info()#获取堆信息heap = flipper.free.info()#获取free_blocks字符串free_blocks = flipper.free.blocks()#获取蓝牙信息bt_info = flipper.bt.info()

存储

文件系统信息

#获取文件系统存储信息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(file, 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 asnecessary, 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()#关闭LEDflipper.led.off()

震动

#开启或关闭震动功能flipper.vibro.set(True)#打开震动flipper.vibro.on()#关闭震动flipper.vibro.off()

音乐播放器

#播放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

#检测NFCnfc_detected = flipper.nfc.detect()#模拟NFCflipper.nfc.emulate()

RFID

#读取RFIDrfid = flipper.rfid.read()

 许可证协议 

本项目的开发与发布遵循MIT开源许可证协议。

 项目地址 

PyFlipperhttps://github.com/wh00hw/pyFlipper

参考资料:

https://medium.com/@nic_whr/how-to-hack-a-restaurant-5d394be105a9

https://play.google.com/store/apps/details?id=com.wh00hw.serial2websocket

精彩推荐


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651199119&idx=4&sn=2ff32d6100b7260372e07dcc2a9db548&chksm=bd1d84048a6a0d12c4a7084cf659cd7fc83aaa3dbdea37bff8d9de42d7ce203a1ef9d52a70ce#rd
如有侵权请联系:admin#unsafe.sh