核心内容摘要
QWEN-AUDIO惊艳演示:实时声波矩阵与音频频谱同步可视化效果
#BadgeLife Off-By-One Conference 2024 | STAR Labs引言如约而至我们在活动结束大约一个月后发布了Off-By-One徽章的固件和本文以便感兴趣的参与者有机会探索它。
如果您想了解更多关于徽章设计过程的信息请告诉我们。
我们很高兴在首届Off-By-One Conference 2024上推出Octopus Badge。
该徽章是会议的亮点之一因为它包含了以硬件为核心的CTF挑战。
在本文中我们将探讨徽章的构思和设计过程并讨论解决这些挑战所需的概念。
硬件设计徽章的图案由Sarah Tan设计图案是一个有着可爱咕噜眼的章鱼。
经过集思广益讨论各种设计后我们决定为眼睛配备两个独立的圆形显示器。
以下是早期原型的一张草图将概念转化为电路设计该徽章围绕一个ESP32-S3主处理器构建该处理器驱动一对GC9A01 OLED显示器。
用户可以使用按钮和方向摇杆与徽章进行交互。
此外一个小的协处理器ATmega328P通过I2C协议进行通信。
电子设计是在KiCad中创建的以下是3D渲染图。
徽章有三种颜色变体用于区分不同的人群例如参与者、工作人员和志愿者。
最初的计划是包含一个可充电的LiPo电池以支持整个会议期间的使用。
然而由于供应链困难我们选择了AAA电池。
希望我们能在明年的徽章中加入LiPo电池。
最后这就是实际徽章的样子硬件CTF挑战与任何会议徽章一样我们的徽章也包含CTF挑战。
在本节中我将解释这些挑战背后的灵感以及预期的解决方案。
特别地嵌入式系统与功能齐全的计算机有很大不同它最初是为资源受限的应用而设计的。
例如ESP32-S3处理器没有内存管理单元MMU。
这意味着嵌入式工程师编写代码的方式与软件工程师非常不同。
我们的目标是让参与者接触到硬件黑客技术而不仅仅是在便携式硬件设备中提供软件挑战。
在此过程中我们也学会了如何改进我们的电子徽章。
USB字符串描述符第一步是确定它是何种设备。
因此欢迎标志隐藏在USB字符串描述符中。
USB描述符将告诉我们设备的来源例如供应商和产品标识符并且您的PC也用它来确定要加载哪些驱动程序。
在Linux中您可以使用dmesg打印内核调试消息。
也可以在Windows中查看设备管理器。
$dmesg-w[
3
488872]usb3-
2: New USB device found,idVendor303a,idProduct4001,bcdDevice
00[
3
488883]usb3-
2: New USB device strings:Mfr1,Product2,SerialNumber3[
3
488887]usb3-
2: Product:#BadgeLife[
3
488889]usb3-
2: Manufacturer: STAR LABS SG[
3
488892]usb3-
2: SerialNumber:{Welcome_To_OffByOne_2024}或者您也可以使用lsusb打印出连接到PC的所有设备。
$ lsusb -vd 303a: iManufacturer1STAR LABS SG iProduct2#BadgeLifeiSerial3{Welcome_To_OffByOne_2024}
C语言编译的内部库下一个标志隐藏在一个名为flaglib的库中。
这可以通过MicroPython REPL显示所有模块来看到。
help(modules)[...]flaglib[...]importflaglibdir(flaglib)[__class__,__name__,__dict__,getflag]最简单的方法是编写一个脚本通过暴力破解逐个字符地提取。
flaglib.getflag()flaglib.getflag({____________________________}){??_????????_??????_??????????flaglib.getflag({my_compiled_python_library}){my_compiled_python_library}然而了解到这是一个C语言编译的内部库与固件捆绑在一起这意味着如果转储出闪存内容就可以检索到其内容。
特别是在低成本系统中加密资源消耗大通过转储固件或闪存我们可能会发现以明文形式保存的密码或密钥。
尝试转储固件时首先要确定设备类型。
从电路板上的标签我们看到它是一个ESP32-S3-WROOM-1-N4。
我们可以搜索数据手册发现它有4MiB的闪存。
可以使用esptool.py包从ESP32-S3转储固件。
按住BOOT按钮并按下RESET按钮使其进入引导加载程序模式。
运行以下命令将完整内容保存到文件中$ esptool.py --baud115200--port /dev/serial/by-id/usb-** read_flash 0x0 0x400000 fw-backup-4M.bin然后通常会对比转储出的IoT设备固件进行简单的静态分析。
$ strings fw-backup-4M_black.bin|strings|grep dssds article-item">