惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
有赞技术团队
有赞技术团队
博客园 - 司徒正美
量子位
N
News and Events Feed by Topic
T
Threatpost
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
人人都是产品经理
人人都是产品经理
T
Tenable Blog
IT之家
IT之家
雷峰网
雷峰网
腾讯CDC
博客园 - 聂微东
V
Visual Studio Blog
S
SegmentFault 最新的问题
Scott Helme
Scott Helme
Spread Privacy
Spread Privacy
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
N
Netflix TechBlog - Medium
J
Java Code Geeks
宝玉的分享
宝玉的分享
F
Full Disclosure
WordPress大学
WordPress大学
A
Arctic Wolf
小众软件
小众软件
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
NISL@THU
NISL@THU
AI
AI
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
破解 OctoStudio
种瓜 · 2023-10-28 · via 夜行人

OctoStudio 改变了年轻人使用手机和平板电脑的方式,使他们能够随时随地创作自己的故事和游戏。孩子们可以拍照和录制声音,用编码块将它们变为现实,并将他们的项目发送给朋友和家人。

OctoStudio 由 MIT Media Lab 终身幼儿园研究小组开发;这个小组还创建了 Scratch: 世界上最流行的儿童编程语言。 OctoStudio 完全免费,没有任何广告。

创始团队在新闻稿里提到他们的初衷:

在世界各地,越来越多的儿童和青少年可以使用移动设备,但许多人花费大把时间被动观看视频和社交媒体。相比之下,OctoStudio 邀请年轻人使用手机和平板电脑创造性地表达自己,并在此过程中学习计算和解决问题的技能。

“我们设计 OctoStudio 的目的是为年轻人提供随时随地创建项目的机会” 负责 OctoStudio 项目的研究科学家 Natalie Rusk 说道 “让他们有机会发展自己的兴趣、表达自己的想法并与他人分享。”

就我而言,OctoStudio 是迄今为止第一个让我愿意在手机里编程的应用。OctoStudio 使得在手机上编程变得简单而充满乐趣。它充分利用了手机的特点,又通过出色地设计,让用户得以轻松愉快地使用这些功能。

OctoStudio 让我觉得 “哇 这就是使用手机编程的方式!"。而不是 “我没有电脑,只好暂时迁就手机这个笨拙的替代品”,大多数手机上的编程产品都是后者。

破解它 !

Information wants to be free – wiki

OctoStudio 如此有趣,以至于我们迫不及待把玩它的各种功能,想突破它的极限。

黑客们有这样一种怪癖,当他们对一个系统着迷,而这个系统又不开放时,黑客们首先想到的是: 破解它。通过破解给予系统自由,好像解救一个被束缚的人。这是他们表达敬意的一种方式,黑客从不花时间去破解三流系统,甚至连脚本小子都不屑这样做,不然就会被其他人瞧不起。

思路

破解之前,需要观察和把玩目标系统,寻找切入点。

在 OctoStudio 的 ... 分类里,有这样两块积木:

  • beam to phones (给手机发送信号)
  • wait for beam (等待信号)

使用这两块积木,可以让不同手机上的 OctoStudio 互相发送消息。

如果你之前使用过 micro:bit, 它有点像 micro:bit radio

如果我们能够弄懂这两块积木是如何工作的(很容易猜到是基于蓝牙), 我们就能够让其他系统(诸如Python、MicroBlocks)与之通信,互相发消息, 做到这点,就能极大扩展 OctoStudio 的能力: Python、MicroBlocks 生态的所有的软硬件都能够被 OctoStudio 指挥调度,而 OctoStudio 接管的所有手机功能,也能够被 Python、MicroBlocks 使用!

先玩起来吧 !

提醒: 本文基于桥接器的方法比较旧, 更推荐 MicroBlocks ❤️ OctoStudio: 将手机用作 MicroBlocks 的传感器与执行器

尽管我迫不及待想与你分享我是如何与 OctoStudio 斗智斗勇, 在这个过程中 ChatGPT 又如何慷慨地为我承担脏活累活…

但是,有些读者只是想知道 “具体怎么做”, 而不想要听我絮叨一个黑客的英雄之旅。

先玩起来吧!感兴趣的读者可以阅读之后的破解过程,对技术细节没兴趣的读者,读完这部分,就不用往下读啦!

让我们一起来实现视频中的案例:

在这个案例中,摇晃手机将切换风扇的开关(如果没有风扇,可以控制其他的开关,诸如开关 MicroBlocks 中的用户 LED )。

这个案例包含 3 个方面的工作:

  1. 在 OctoStudio 中编程 (目前仅支持 iPhone 和 iPad)
  2. 在 MicroBlocks 中编程
  3. 运行桥接器(它是通用的,无需编程)

1. 在 OctoStudio 中编程

使用 OctoStudio 编写了一个程序: 当手机摇晃时,发送 “爱心”(heart) 信号。

国外的 MicroBlocks 用户可能会阅读这篇文章, 以下分别提供程序的中文和英文版本:

你可以自己编写这个程序,也可以点击下载 到 OctoStudio。

2. 在 MicroBlocks 中编程

需要一块支持 wifi 功能的板子, 我使用的是 ESP32, 但是任何支持 wifi 功能的板子都行(m5stack, pico w…)

程序等待接收 wifi Radio 信号,当收到 OctoStudio 发出的 “爱心” 信号时,切换风扇的开关。

OctoStudio 发出的信号(蓝牙信号)如何转化为 MicroBlocks 的 wifi Radio 信号? 下边的第 3 部分会讲到。

以下是 MicroBlocsks 程序的中文和英文版本:

3. 运行桥接器

前边提到:

OctoStudio 发出的信号(蓝牙信号)如何转化为 MicroBlocks 的 wifi Radio 信号

我们制作了一个 OctoStudio-MicroBlocks bridge, 这个桥接器是一个 Python 库,它会把 OctoStudio 发出的信号转为 MicroBlocks Wifi Radio 信号。

以下是运行运行桥接器的步骤:

  1. 确保你的电脑开启蓝牙
    • Windows 需要 Windows10 或者 Windows11
  2. 确保你的电脑上装有 Python (Python 3.10 或者更高版本)
  3. 使用 Python 安装桥接器库(octostudio) : python -m pip install octostudio
    • MacOS 系统对权限的管理非常严格, 确保 Python (terminal) 可以访问到蓝牙。
  4. 在命令行中运行桥接器: octostudio-microblocks-bridge

桥接器是通用的,不需要对它编程,只需运行起来即可。

局域网里只需要有一台电脑(诸如树莓派)运行了桥接器,它就能够转发给局域网里的所有 MicroBlocks 设备!

现在可以开始玩啦, 修改 OctoStudio 和 MicroBlocks 中的积木,去探索你的奇思妙想吧。

提醒:

  1. octostudio 是普通的 Python 库,也可以将其用于 Python 与 OctoStudio 的通信,具体使用方式参考项目页面

分析与破解 OctoStudio

以下部分记录破解的过程。

目前只做到了解码 OctoStudio 往外发出的消息

还做不到往 OctoStudio 里发送消息,但这方面已经取得了不错的进展,我会在这里会分享目前掌握的一些信息。

以下是我分析 BLE 信号, 使用的一些工具,感兴趣的读者可以使用它们自行探索:

OctoStudio 往外发出的消息

对应 OctoStudio 的 beam to phones (给手机发送信号) 积木。

要解码 beam to phones 往外发出的信号,我们需要找到工具来接收这个信号,然后观察它的模式。通过与 ChatGPT 交流,我们知道它很可能基于 BLE(低功耗蓝牙) 广播。于是我打算采用 bleak 来观察 BLE 蓝牙信号。

具体的实现参考这段脚本

往 OctoStudio 里发送消息

对应 OctoStudio 的 wait for beam (等待信号) 积木。

基本的想法是,模仿 OctoStudio 往外发出的消息。既然不同手机上的 OctoStudio 能够发送蓝牙消息,我们伪装成其中的一台设备发送消息就好了。

目前这部分我直接实现在了 MicroBlocks 中(暂未在桥接器里实现,在微控制器中实现比在电脑上实现简单很多。如果你想与 OctoStudio 进行双向通信,参考MicroBlocks ❤️ OctoStudio

最小原理演示参考beam-to-phone.ino

兼容性问题

如果你遇到兼容性问题,无法使用,欢迎提 issue

以下是我的测试环境, 供调试时参考:

  • iPhone X(iOS 16.1) 运行 OctoStudio (1.0.1)
  • Android 10(MI 8) 运行 OctoStudio (1.0.0)
  • MacOS(MacBook Air M1, 2020, MacOS 13.4.1)
    • Python 3.10.10
    • Python 依赖库:
      • bleak==0.21.1
  • Windows 11
    • Python 3.11.6
      • bleak==0.21.1

更多

OctoStudio & Python

安装依赖:

pip install octostudio

1
2
3
4
5
6
7
8
from octostudio import OctoStudio

def on_message(shape_id):
    print(shape_id)

octo = OctoStudio()
octo.on_message = on_message
octo.start()

OctoStudio & Scratch

安装依赖:

pip install paho-mqtt octostudio

在命令行里,运行桥接器: octostudio-scratch-bridge

打开示例项目

OctoStudio & Snap!

安装依赖:

pip install paho-mqtt octostudio

在命令行里,运行桥接器: octostudio-snap-bridge

打开示例项目

参考