使用JS开发Flipper Zero应用

Flipper Zero 是一个比较有意思的电子宠物,最近发现它支持使用 JS 语言开发 APP,简单写篇文章记录一下

固件

我的 Flipper Zero 固件是 unleashed-firmware[1],在它的 GitHub Release 页面,打开 Install via Web 页面,使用 USB 将 Flipper Zero 与电脑连接,即可刷入该固件。

使用JS开发Flipper Zero应用

GitHub Release页面

使用JS开发Flipper Zero应用

在Web侧刷入固件

JS 应用

源代码结构

拉取 unleashed-firmware 固件源代码后,在 applications/system/js_app 目录下,可以发现如下所示的目录结构,其中 Scripts 目录是 JS APP 源代码,modules 目录是提供给 JS APP 调用的 SDK 的底层实现。Flipper Zero 使用的 JS 解释引擎是 MJS[3],这个解释引擎是专门为嵌入式场景设计的,实现了 JS ES6 标准的子集。

使用JS开发Flipper Zero应用

目录结构

JS SDK

以 badusb_demo.js 为例,它的部分代码如下所示,它依赖于 badusb, notification, flipper, dialog 等 SDK 模块,这些模块的实现在 modules 目录下的 js_badusb.c,js_notification.c 等文件中。目前好像没有文档统计提供了哪些 JS SDK,只能自己看这些文件确定。从文件列表来看提供的 SDK 接口还是非常全面的。

let badusb = require("badusb");
let notify = require("notification");
let flipper = require("flipper");
let dialog = require("dialog");

上传 JS 应用

把 Flipper Zero 的 SD 卡取下,插入读卡器,把 JS 应用上传进入 apps/Scripts 目录即可

使用JS开发Flipper Zero应用

上传JS应用

启动 JS 应用

进入桌面,在 Apps -> Scripts 下,找到上传的 JS 应用文件即可执行。

使用JS开发Flipper Zero应用

BadUSB 简单扩展

简单写了个 JS 应用,首先按下 WIN+R ,然后输入 chrome,再按 ENTER 键,打开 CHROME 浏览器,然后在地址框输入 www.baidu.com,按 ENTER 跳转到该地址。

let badusb = require("badusb");
let notify = require("notification");
let dialog = require("dialog");

badusb.setup({ vid0xAAAApid0xBBBBmfr_name"Flipper"prod_name"Zero" });
dialog.message("BadUSB DEMO For Windows""Press OK to start");

if (badusb.isConnected()) {
    notify.blink("green""short");
    print("USB is connected");

    delay(1000);
    badusb.press("GUI""r");
    delay(1000);
    badusb.println("chrome");
    badusb.press("ENTER");

    delay(1000);

    badusb.println("www.baidu.com");

    badusb.press("ENTER");

    notify.success();
else {
    print("USB not connected");
    notify.error();
}

// Optional, but allows to interchange with usbdisk
badusb.quit();

参考文献

[1]https://github.com/DarkFlippers/unleashed-firmware 

[2]https://github.com/DarkFlippers/unleashed-firmware/releases/tag/unlshd-072 

[3]https://github.com/cesanta/mjs


原文始发于微信公众号(网络空间威胁观察):使用JS开发Flipper Zero应用

版权声明:admin 发表于 2024年3月28日 下午5:49。
转载请注明:使用JS开发Flipper Zero应用 | CTF导航

相关文章