M5Stack ESP32 设备上的高科技恶作剧固件
徽标@unagironin
正如今年早些时候宣布的那样,M5Stick-NEMO 已被存档,不再积极开发。该项目超出了我所有的个人目标,很高兴看到社区聚集在一起,对这个项目感到兴奋,为它做出贡献,并从中获得灵感。
就我而言,该项目达到了 M5Stick 系列对于此类技巧和恶作剧的能力极限,而无需添加外部硬件,如 SD 卡、无线电调制解调器、更大的 LED、RFID 模块或其他东西。对于驱动这些外围设备来说,电池寿命也不是最佳的。许多功能请求都围绕着对这些外部设备的支持,我没有资源或时间来添加这些,但好消息是其他人已经继承了这种精神,老实说,提供了更好的功能。 CatHack 是一个前景广阔的项目。
这么久了,谢谢所有的鱼!
NEMO 启动了一个个人项目,以帮助我了解有关使用 Arduino IDE 进行 ESP32 开发的更多信息。我决定复制一些在技术社区中受到广泛关注的常见、流行的恶作剧,作为对自己的挑战,并更好地理解这些攻击。
NEMO得名于《海底总动员》中那条小而聪明、顽固的鱼。该项目与另一个与某些海洋生物相关的高科技产品形成鲜明对比。我确实想证明,只要有一个小型开发工具包和一些好奇心,就可以做很多事情。我并不妄想通过这个项目取代任何类似设备的功能。这只是为了好玩,也是我自己的教育。
调整 .github/workflow/compile.yml 以使用 DEAUTH 函数进行编译。
添加了对 StickC Plus 和 Plus2 上的 SONG 的支持
查看接入点详细信息时添加了“攻击菜单”
克隆门户(创建与目标具有相同 SSID 的邪恶门户)
解除身份验证攻击(向连接到此接入点的设备广播解除身份验证帧)
Deauth+Clone(创建具有相同 SSID 的邪恶门户并向该 AP 发送取消身份验证帧)
在设置中添加了使用 M5StickC 设备时安装/卸载 SDCard 的选项
如果不使用 CARDPUTER,则创建新文件来处理 SPI/SD
SDCARD现在正在开发M5StickC Plus2
想法?
TV B-Gone 端口(感谢 MrArm 的 HAKRWATCH)可关闭许多红外控制电视、投影仪和其他设备
AppleJuice iOS 蓝牙设备配对垃圾邮件
针对 SwiftPair (Windows) 和 Android 的蓝牙设备通知垃圾邮件
WiFi 垃圾邮件 - 有趣的 SSID、WiFi Rickrolling 以及每分钟创建数百个随机命名的 SSID 的随机模式
WiFi NEMO Portal - 尝试对电子邮件凭据进行社会工程的强制门户 - 将用户名和密码保存到 SD 卡(如果插入支持的读卡器)
WiFi SSID 扫描仪 - 显示附近的 2.4 GHz SSID、获取有关它们的信息,甚至在 NEMO Portal 中克隆 SSID
用户可调节的 24 小时数字时钟,由 M5 Stick RTC 支持,因此即使在深度睡眠和低电量模式下也能保持相对稳定的时间
支持 EEPROM 的旋转、亮度、自动调光和 NEMO Portal SSID 设置
设置菜单中的电池电量和积分
主要有以下三个控制:
主页 - 停止当前进程并让您从 NEMO 中的几乎任何位置返回到菜单
下一个 - 将光标移动到下一个菜单选项。在功能模式下,这通常会停止该过程并返回到上一个菜单。
选择 - 激活当前选择的菜单选项,并唤醒功能模式下变暗的屏幕
StickC 和 StickC-Plus
电源:长按电源键6秒关闭设备
主页:点击电源按钮(最靠近 USB 端口)
下一步:点击侧面按钮
选择:点击设备正面的 M5 按钮
卡片电脑
Home:点击 Esc/~/` 键或左箭头/, 键
下一个/上一个:点击向下箭头/。键和向上箭头/;导航键
选择:点击确定/回车键或右箭头/?钥匙
在 NEMO Portal 模式下,NEMO 激活名为“Nemo Free WiFi”的开放 WiFi 热点(可在 Portal.h 中配置),并激活 DNS、DHCP 和 Web 服务器。
NEMO Portal 提供一个虚假的登录页面,声称如果您登录即可提供互联网访问。
这是一种社会工程攻击,会记录在页面上输入的用户名和密码。
从 Wifi 扫描详细信息中,您可以从扫描列表克隆现有 SSID。退出 NEMO Portal 将清除 Evil Twin SSID
您可以通过从自己的设备连接到门户并浏览到 http://172.0.0.1/creds 来查看捕获的凭据
您可以通过从自己的设备连接到门户并浏览到 http://172.0.0.1/ssid 来设置自定义 SSID
如果您的设备支持 EEPROM 进行设置,您输入的自定义 SSID 将被保存为默认值,即使关机也是如此。
如果您的设备有 SD 卡读卡器,并且插入了 FAT 文件系统格式的卡,则用户名和密码将记录到 SD 卡上的 nemo-portal-creds.txt 中,供您稍后细读。
SD 卡支持仅在 M5Stack Cardputer 平台上默认启用。它可以在 M5Stick 设备上启用,但必须构建 SD 卡读卡器并将其连接到前面板排针。
NEMO Portal 仅适用于具有有效工作范围、教育或演示目的的专业活动。未经同意存储、出售或使用个人信息是违法的。 ?
这绝对是获取 NEMO 最简单的方法
M5Stick C Plus 快速入门包含适用于 Linux、MacOS 和 Windows 的 M5Burner 应用程序的链接。这是安装 UIFlow 和其他官方固件的官方工具。我在那里提供了 NEMO 的最新二进制文件。
启动 M5Burner
从左侧菜单中选择“StickC”(对于 Cardputer 则选择 StampS3)
使用应用程序顶部的搜索来查找“NEMO”。我的官方版本将由“4x0nn”上传并附有照片。
点击下载
单击刻录
按照 Espressif 入门指南安装 ESP-IDF 工具
打开 esp-idf CMD 工具(在 Windows 上) - 在 Mac 或 Linux 上,esp-idf.py 和 esptool.py 应位于系统路径中。
esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin
端口可以是 COM 端口,例如 Windows 上的 COM4、COM11。在 Mac 和 Linux 上,它通常位于 /dev 中,例如 /dev/ttyUSB0、/dev/ttyACM0 或 /dev/cu.usbserial-3
M5Nemo-VERSION.bin 应该是您从 GitHub Release 下载的版本 - 最好是最新的可用版本。
如果您想自定义 NEMO 或为项目做出贡献,您应该熟悉从源代码构建 NEMO。
安装 Arduino IDE。我在 Linux 和 Windows 上成功使用了 Arduino 1.8,在 Windows 上成功使用了 Arduino 2.2。
安装适用于 Arduino IDE 的 M5Stack 板:在文件 -> 首选项中,将此 URL 粘贴到“Boards Manager URLs”文本框中。如果已经存在 URL,请在 URL 之间使用逗号。 https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
如果 M5Stack -> M5Stick-C-Plus 未显示在“工具”->“板”下,则使用“工具”->“板”->“板管理器”并搜索 M5Stack。这将为大多数 M5Stack 板(包括 Stick C Plus)安装支持。
确保在板菜单中选择正确的设备型号(例如M5Stick-C、M5Stick-C-Plus 或M5Cardputer)。
安装必要的库。在 Sketch -> Include Library -> Library Manager 中,搜索并安装以下库及其所需的任何依赖项:
M5StickCPlus、M5StickC 或 M5Cardputer
红外遥控ESP8266
取消注释顶部附近适合您的平台的相应#define
行(STICK_C、STICK_C_PLUS 或 CARDPUTER)
切换分区方案。 Tools
-> Partition Scheme
-> No OTA (Large APP)
- 有时此选项被标记为Huge APP
配置
代码应该可以干净地编译,并可以在主分支或发布标签的开箱即用的 M5Stick C Plus 上运行。
仅取消注释一个适当的#define
选项,否则会发生编译器错误。
如果由于某种原因屏幕从级别 0 的非常暗跳到级别 1 的几乎完全明亮并且进一步的亮度级别不会影响任何内容,请将 pct_brightness 变量设置为 false。
编译并上传项目
安装 Arduino CLI
将 M5Stack 索引添加到 Arduino 核心
添加 M5Stack 库
# 安装 m5stack boardarduino-cli core install m5stack:esp32 --additional-urls https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json --log-level warn --verbose# 安装必需的库arduino-cli lib install M5Cardputer --log-level warn --verbose arduino-cli lib install IRRemoteESP8266 --log-level warn --verbose# 编译 sketcharduino-cli 编译 --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size= 3145728 ./m5stick-nemo.ino
这将根据分区草图创建多个二进制文件,您可以使用esptool
合并单个二进制文件
安装 esptool - pip install -U esptool
esptool.py --chip esp32s3 merge_bin --output Final.bin 0x0000 m5stick-nemo.ino.bootloader.bin 0x8000 m5stick-nemo.ino.partitions.bin 0x10000 m5stick-nemo.ino.bin
您现在可以使用esptool
刷新合并的二进制固件
esptool.exe write_flash -z 0 Final.bin
安装 Docker
运行./scripts/docker-build.sh
运行./scripts/flash.sh --device=
# 这将根据配置的平台构建包含所有必需库的映像,并将编译、输出和合并二进制文件# 默认情况下,这将为 en-us 语言环境中的 M5Cardputer 进行编译,./config/.env.M5Cardputer./脚本/docker-build.sh # 如果你想选择不同的构建配置,你可以将其作为参数传递。请参阅 ./configs/ 了解各种配置。/scripts/docker-build.sh ./config/.env.M5Cardputer# 二进制文件将输出到 ./buildls ./build# 这将刷新构建步骤的构建输出,它重用上一步中的容器映像。# 默认情况下,这将为 en-us 语言环境中的 M5Cardputer 进行编译,./config/.env.M5Cardputer./scripts/flash.sh --device=/dev/ttyusb0 # 如果您传递了不同的构建配置,请确保将其传递给 flash 脚本。/scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer
有几个功能可将调试信息输出到串行监视器。使用 Arduino IDE 或 M5Burner 中的串行监视器功能来收集此信息。它可能有有用的提示。提交错误报告时,包含串行监视器输出通常会有所帮助。
重置 EEPROM。在支持 EEPROM 设置的型号上,请使用设置菜单中的“清除设置”,或在开机时按住“下一步”按钮(StickC 型号上的侧键,Cardputer 上的 Tab 或向下箭头)。
TV-B-Gone 的红外 LED 可以通过智能手机摄像头观察到,发出淡紫色光束。如果它似乎一直亮着,或者在 TV-B-Gone 操作期间根本不闪烁,则说明有问题。报告错误。有一个已知问题,即使用蓝牙垃圾邮件或随机 WiFi 垃圾邮件后 TVBG 无法工作。
如果您怀疑 wifi 垃圾邮件不起作用,请尝试从多个不同设备查看 wifi 列表。有时,Linux 网络管理器可以看到智能手机看不到的网络。如果报告 WiFi 垃圾邮件问题,请附上此测试的结果。
自 2023 年夏季以来,苹果已经修补了很多蓝牙内容。如果测试 AppleJuice,请尝试一些 AppleTV 设备类型,因为苹果不会过滤掉该平台较弱的蓝牙信号,因此它们往往更可靠。
请通过 GitHub Issues 报告错误。这些比社交媒体帖子、M5Burner 条目等上的评论更容易跟踪。如果某些内容不起作用,请包括:
固件版本
你是如何安装的(M5Burner,自己编译,esptool.py)
硬件
具体来说哪些功能和选项不起作用
您如何确定它不起作用以及您进行了哪些测试。包括您测试的设备型号和操作系统,以及串行监视器的任何错误或相关输出(如果适用)。
如果您知道如何修复您发现的错误,欢迎 PR!
欢迎贡献。
请查看该项目的 GitHub 问题。那里有功能建议和错误报告,我很感激能解决这些问题的 PR。
提交 Pull Request 时,请针对开发分支。最简单的方法是分叉所有分支,或者简单地在您自己的分叉中创建一个“开发”分支,然后使用 GitHub 同步您的开发分支。
注意代码中某些硬件(如 LED 和 RTC)的定义和门控方式,并尝试遵循这些模式。另外,在将内容输出到内置显示器时,请使用 FGCOLOR、BGCOLOR、TEXT_SIZE* 和 DISP 别名的定义。
请随意将您的 github 添加到贡献者数组中,作为拉取请求的一部分。
我想要帮助的事情:
改进了菜单的本地化/翻译,而不仅仅是 NEMO Portal HTML。
可能需要一个新的 .h 文件
可在设置中进行配置并使用 eeprom 字节来保存设置
在实现中无偿地使用const
,以便本地化字符串仅存储在闪存中并直接从闪存中引用,而不是使用大量 SRAM。
红外线的
TV-B-Gone 的新“区域”充满了额外的 IR 代码,可以打开和关闭 RGB LED 灯带、空调、风扇、条形音箱等
一种在 NEMO 代码库中转换或使用翻转零 IR 代码的方法
找出一种方法来读取和显示缺少 AXP192 PMU 的 Cardputer 和 StickC-Plus2 型号上的电池电量。 Cardputer 工厂演示中的电池代码可能是一个不错的起点。
有针对性 仅针对特定接入点取消身份验证。取消身份验证垃圾邮件 PR 将被拒绝。
我可能不会合并的事情:
批量发送 Wi-Fi 取消身份验证垃圾邮件
蓝牙垃圾邮件可能会破坏健康和健身追踪器、智能手表等。