lshaf/unigeek

GitHub: lshaf/unigeek

一款基于 ESP32 的手持多工具固件,集成网络与无线渗透、BadUSB 及游戏化交互功能。

Stars: 13 | Forks: 4

# UniGeek 固件 多工具固件,适用于基于 ESP32 的手持设备。使用 PlatformIO + Arduino 框架 + TFT_eSPI 构建。 ## 支持的设备 | 设备 | 键盘 | 扬声器 | USB HID | SD 卡 | 关机 | |------|------|--------|---------|-------|------| | M5StickC Plus 1.1 | — | 蜂鸣器 | — | — | 是 | | M5StickC Plus 2 | — | — | — | — | 是 | | LilyGO T-Lora Pager | TCA8418 | I2S | 是 | 是 | 是 | | M5Stack Cardputer | GPIO 矩阵 | I2S | 是 | 是 | — | | M5Stack Cardputer ADV | TCA8418 | I2S + ES8311 | 是 | 是 | — | | LilyGO T-Display 16MB | 2 个按钮 | — | — | — | — | | DIY Smoochie | — | — | — | — | — | ## 功能特性 ### WiFi - **网络** — 连接到 WiFi 网络并访问网络工具 - **信息** — 查看连接详情(IP、网关、DNS、MAC、信号强度) - **WiFi 二维码** — 生成已连接网络的二维码以分享凭据 - **世界时钟** — 通过 NTP 同步多时区的当前时间 - **IP 扫描器** — 扫描本地网络中的活跃设备 - **端口扫描器** — 扫描目标 IP 地址的开放端口 - **Web 文件管理器** — 通过浏览器在 WiFi 上管理设备文件([详情](knowledge/web-file-manager.md)) - **下载** — 直接从 GitHub 下载文件到设备存储 - **Web 文件管理器** — HTML/CSS/JS 浏览器界面进行文件管理(自动检查更新) - **固件示例文件** — 门户模板(Google、Facebook、WiFi 登录)、DuckyScript 载荷(hello world、反向 shell、WiFi 密码抓取、rickroll、禁用 Defender)、二维码样本、DNS 欺骗配置、rockyou_mini 密码词表 - **红外文件** — 按类别浏览并下载红外遥控文件(电视、空调、风扇、投影仪等),从 [Flipper-IRDB](https://github.com/lshaf/Flipper-IRDB) 保存到 `/unigeek/ir/downloads/` - **BadUSB 脚本** — 按操作系统和类别浏览并下载 DuckyScript 载荷,保存到 `/unigeek/keyboard/duckyscript/` - **MITM 攻击** — DHCP 耗尽、Deauth 爆发、伪造 DHCP、DNS 欺骗、Web 文件管理器的中间人攻击([详情](knowledge/network-mitm.md)) - **CCTV 嗅探器** — 发现网络摄像头、识别品牌、测试凭据并流式传输实时视频([详情](knowledge/cctv-toolkit.md)) - **Wigle** — 上传 wardrive 日志、查看用户统计信息并管理 Wigle API 令牌([详情](knowledge/gps-wardriving.md)) - **接入点** — 创建自定义 WiFi 热点,可选 DNS 欺骗、认证门户、Web 文件管理器和 WiFi 二维码以便轻松分享([详情](knowledge/access-point.md)) - **邪恶双子** — 克隆目标 AP 的 SSID 并附带认证门户;可选 Deauth 和实时密码验证([详情](knowledge/evil-twin.md)) - **Karma 认证** — 检测附近的探测请求,并以虚假开放 AP 提供钓鱼门户来捕获凭据([详情](knowledge/karma-attack.md)) - **Karma EAPOL** — 检测附近的探测请求并通过配对的 Karma Support 设备部署伪造的 WPA2 AP;捕获 M1+M2 EAPOL 握手以供离线破解,捕获后自动推进([详情](knowledge/karma-attack.md)) - **Karma Support** — 第二设备的配套屏幕;通过 ESP-NOW 接收部署命令,并代表攻击设备托管伪造的 WPA2 AP([详情](knowledge/karma-attack.md)) - **WiFi 分析器** — 扫描并显示附近网络的信号强度和信道信息 - **数据包监控** — 按信道可视化 WiFi 流量 - **WiFi 信号干扰器** — 断开客户端与目标网络的连接 - **Deauther 检测器** — 监控附近的 Deauth 攻击 - **Beacon 泛洪** — 用虚假 SSID 淹没区域 - **CIW Zeroclick** — 广播带有注入载荷的 SSID,以测试附近设备如何处理不受信任的网络名称 - **ESPNOW 聊天** — 通过 ESP-NOW 进行点对点文本聊天(无需路由器) - **EAPOL 捕获** — 捕获附近网络的 WPA2 握手并保存到存储;可配置发现驻留时间、攻击驻留时间、信道跳频和最大 Deauth 尝试次数([详情](knowledge/eapol.md)) - **EAPOL 暴力破解** — 从捕获的握手离线破解 WPA2 密码;支持文件夹导航以选择 PCAP 和词表;内置 110 个密码测试词表([详情](knowledge/eapol.md)) ### 蓝牙 - **BLE 分析器** — 扫描附近的 BLE 设备,显示名称、地址和信号强度 - **BLE 信标泛洪** — 广播 iBeacon 广告包,随机化接近 UUID、major/minor 值并伪造 MAC 地址 - **BLE 设备泛洪** — 针对附近设备的目标 BLE 广告泛洪,触发配对/通知弹出 - **Android** — 使用公共 Fast Pair 设备注册表中的随机模型 ID 进行 Google Fast Pair 泛洪;触发“发现新设备”弹出 - **iOS** — Apple Continuity 泛洪,循环使用 SourApple(接近动作 `0x0F`)和 AppleJuice(AirPods 接近 `0x07` / 设置 `0x04`)载荷;触发 iPhone 和 iPad 的弹出通知 - **Samsung** — 使用 Samsung 制造商数据和随机手表模型 ID 进行 Samsung Galaxy Watch 配对弹出泛洪 - **BLE 检测器** — 被动 BLE 扫描器,可检测 Flipper Zero 设备、信用卡读卡器、Apple AirTags/FindMy 追踪器、BitChat 应用用户和 BLE 泛洪攻击([详情](knowledge/ble-detector.md)) - **WhisperPair** — 测试 Google Fast Pair 设备是否存在 CVE-2025-36911;执行 ECDH 密钥交换并伪造 KBP 握手以检测未经授权的配对漏洞([详情](knowledge/whisperpair.md)) ### 键盘(HID) - **BLE 键盘** — 作为无线蓝牙 HID 键盘(所有设备) - **USB 键盘** — 作为有线 USB HID 键盘(仅 ESP32-S3 设备) - **键盘中继** — 实时将物理按键直接转发到连接的宿主(仅键盘设备) - **Ducky 脚本** — 从存储运行脚本文件以自动化按键([详情](knowledge/ducky-script.md)) ### 工具 - **I2C 检测器** — 扫描 I2C 总线并列出所有响应设备地址 - **二维码** — 从输入或文件加载的文本生成并显示二维码;支持 WiFi 二维码格式 - **条形码** — 从输入或文件加载的文本生成并显示 Code 128 条形码 - **文件管理器** — 浏览、重命名、复制、剪切、粘贴和删除存储中的文件和文件夹;目录优先按字母排序;点击文件查看内容;长按 1 秒打开上下文菜单 - **成就系统** — 按领域查看所有成就;显示等级(青铜/白银/黄金/铂金)、描述和解锁状态;长按已解锁成就可将其设为你的代理头衔 ### 游戏 - **HEX 解码器** — 使用十六进制字符(0–9、A–F)的 Wordle 风格游戏 - 猜测一个 4 位十六进制代码,次数尽可能少 - 颜色反馈:绿色 = 位置正确,橙色 = 位置错误,红色 = 不在代码中 - 4 个难度等级:简单(14 次尝试,3 分钟)、中等(7 次尝试,90 秒)、困难(无限次,3 分钟)、极限(无限次,90 秒) - 按回合数和耗时排名前 5 高分 - 键盘设备直接输入;非键盘设备使用上/下键循环字符并使用 `<` 擦除选项 - **Flappy Bird** — 经典横向卷轴游戏随机管道和计分 - **Wordle** — 经典英文和印度尼西亚语单词猜测游戏 - 最多 10 次尝试猜测一个 5 字母单词 - 颜色反馈:绿色 = 位置正确,橙色 = 位置错误,红色 = 不在单词中 - 3 个难度等级:简单(10 次尝试,颜色 + 字母提示)、中等(7 次尝试,颜色)、困难(7 次尝试,无颜色) - 在通用(精选)或完整词库之间选择 - 提供英文(EN)和印度尼西亚语(ID)版本 - 按回合数和耗时排名前 5 高分 - **Memory Sequence** — 类似 Simon Says 的记忆游戏;重复不断增长的指令序列 - 4 个难度等级:简单、中等、困难、极限 - 按难度记录高分;极限模式获胜可获得额外成就和新纪录 - 达到 5 次极限胜利可解锁极限大师成就 - **数字猜谜** — 经典的高/低数字猜测游戏 - 4 个难度等级:简单(1–99,无限制)、中等(1–999,无限制)、困难(1–9999,无限制)、极限(1–9999,10 次尝试) - 按猜测次数和耗时排名前 5 高分 - 幸运猜测、存活极限和一次猜中可获得额外成就 ### 模块 - **NFC (MFRC522)** — MIFARE Classic 卡读取器和密钥恢复工具([详情](knowledge/nfc-mifare.md)) - **扫描 UID** — 检测并显示卡 UID 和类型 - **认证** — 使用常见默认密钥测试所有扇区 - **已发现密钥** — 查看每个扇区恢复的所有密钥 - **转储内存** — 使用发现的密钥读取并显示卡的全部数据 - **字典攻击** — 从自定义字典文件尝试额外密钥 - **静态嵌套攻击** — 使用已知密钥恢复使用静态 nonce 的卡密钥 - **黑暗侧攻击** — 在未知密钥时恢复第一个密钥 - **GPS** — 支持 GPS 模块的定位功能,适用于所有开发板(通过外部 GPS,[详情](knowledge/gps-wardriving.md)) - **实时视图** — 实时显示卫星数量、坐标、海拔、速度和航向 - **扫描模式** — 选择 WiFi + BLE(默认)、仅 WiFi 或仅 BLE 用于定位 - **定位模式** — 驾驶(默认,主动 WiFi 扫描)或步行(被动混杂嗅探) - **定位记录** — 以 Wigle CSV 格式记录附近的 WiFi 和 BLE 设备及其 GPS 坐标 - **Wigle 集成** — 连接 WiFi、上传定位记录、查看用户统计信息、管理 API 令牌 - **红外遥控** — 红外收发器,用于捕获、回放和管理红外信号([详情](knowledge/ir-remote.md)) - **TX/RX 引脚** — 可配置的 GPIO 引脚,用于红外发射器和接收器(按设备保存) - **接收** — 捕获红外信号,自动检测协议(NEC、三星、索尼、RC5、RC6、Kaseikyo、Pioneer、RCA 等),去重过滤并显示信号详情 - **发送** — 从存储浏览并加载红外遥控文件(`/unigeek/ir/`),点击发送,长按执行操作(回放、重命名、删除),保存更改回文件 - **TV-B-Gone** — 从 WORLD_IR_CODES 数据库发送关机码(271 个),选择北美或欧洲地区,显示进度并支持取消 - 兼容 Flipper Zero 和 Bruce 红外文件格式 — 通过 **WiFi > 网络 > 下载 > 红外文件** 下载红外遥控 - **Sub-GHz (CC1101)** — Sub-GHz 射频信号捕获、回放和干扰,使用 CC1101 收发器([详情](knowledge/sub-ghz.md)) - **检测频率** — 在 ~40 个已知频率(300–928 MHz)范围内扫描频谱;实时柱状图显示每个信道的 RSSI,并高亮最强信号 — 不改变频率设置 - **频率** — 手动设置工作频率(预设:300、315、345、390、433.92、434、868、915 MHz;自定义 280–928 MHz) - **接收** — 在配置频率上使用 RcSwitch 解码(普林斯顿/固定码)和 RAW 回退模式捕获射频信号;去重过滤;回放、保存或删除每次捕获 - **发送** — 从存储浏览并发送 `.sub` 信号文件(`/unigeek/rf/`),点击发送,长按执行操作(发送、重命名、删除) - **干扰器** — 在配置频率上发射连续噪声以干扰 Sub-GHz 接收器 - 兼容 Flipper Zero 和 Bruce `.sub` 文件格式 - 在 M5StickC 上:CC1101 SPI(GPIO 32/33)与 GPS UART 共享 — 固件会自动管理切换 - **引脚设置** — 配置所有外部模块的 GPIO 引脚(GPS TX/RX/波特率、外部 I2C SDA/SCL、CC1101 CS/GDO0);也可在模块菜单和设置中访问 ### 角色屏幕 全屏配置文件可从主菜单访问。显示: - **代理** — 设备名称和当前等级(新手 → 黑客 → 专家 → 精英 → 传奇),基于总经验值 - **代理头衔** — 通过长按“成就”中解锁的成就设置的称号;显示为 `[等级] 标题`(例如 `[NOVICE] WiFi First`);默认为 `[等级] 无标题` - **EXP** — 总经验值,带有通往下一等级的进度条 - **HP** — 电池百分比;充电时显示 `+CHG` - **大脑** — 空闲堆内存占总堆内存的百分比 - **成就** — 已解锁成就总数(占所有可用成就) - 各领域(WiFi、攻击、蓝牙、键盘、NFC、红外、射频、GPS)的进度条显示该领域完成度 ### 设置 - 设备名称 - 自动关闭显示和显示关闭超时 - 自动关机和关机超时 - 亮度 - 音量(支持硬件音量控制的开发板) - 导航声音开关 - 主题颜色 - Web 文件管理器密码 - 引脚配置(GPS TX/RX/波特率、外部 I2C SDA/SCL、CC1101 CS/GDO0)— 也可在模块菜单中访问 - 导航模式 — 默认或编码器(仅 M5StickC Plus) ## 构建 安装 [PlatformIO](https://platformio.org/),然后运行: ``` # Build pio run -e m5stickcplus_11 pio run -e m5stickcplus_2 pio run -e t_lora_pager pio run -e m5_cardputer pio run -e m5_cardputer_adv pio run -e t_display pio run -e diy_smoochie # Flash pio run -e m5stickcplus_11 -t upload pio run -e m5stickcplus_2 -t upload pio run -e t_lora_pager -t upload pio run -e m5_cardputer -t upload pio run -e m5_cardputer_adv -t upload pio run -e t_display -t upload pio run -e diy_smoochie -t upload # Serial monitor pio device monitor ``` ## 导航 导航方式因设备而异: | 操作 | M5StickC(默认) | M5StickC(编码器) | Cardputer / T-Lora Pager | |------|------------------|--------------------|--------------------------| | 上 | AXP 按钮 | 逆时针旋转 | `;` 键 | | 下 | BTN_B | 顺时针旋转 | `.` 键 | | 选择 | BTN_A | 编码器按压 | `Enter` 键 | | 返回 | — | BTN_A(短按) | `Backspace` 键 | | 左 | — | AXP 按钮 | `,` 键 | | 右 | — | BTN_B | `/` 键 | 在 M5StickC 上,长按 BTN_A 3 秒可将导航模式重置为默认。 ## 存储 文件存储在 `/unigeek/` 目录下,介质可为 SD 卡或 LittleFS(备用): ``` /unigeek/config device configuration /unigeek/keyboard/duckyscript/ Ducky Script files (.ds) /unigeek/wifi/eapol/ WPA2 handshake captures (.pcap) /unigeek/wifi/captives/ Captured credentials from Evil Twin / Karma / Rogue DNS /unigeek/qrcode/ QR code content files /unigeek/barcode/ Barcode content files /unigeek/gps/wardriver/ Wardrive CSV log files (Wigle format) /unigeek/wigle_token Wigle API token /unigeek/utility/passwords/ Password wordlists for EAPOL brute force /unigeek/utility/cctv/ CCTV Sniffer target IP lists /unigeek/nfc/dictionaries/ MIFARE Classic key dictionary files /unigeek/rf/ Sub-GHz signal files (.sub) /unigeek/web/file_manager/ Web file manager HTML files /unigeek/web/portals/ Portal templates for AP, Evil Twin, Karma (HTML/CSS/JS) ``` SD 卡可用时优先使用;LittleFS 始终作为备用存在。 示例文件可通过 **WiFi > 网络 > 下载 > 固件示例文件** 直接下载到设备(需要 WiFi 连接)。 ## 项目结构 ``` firmware/ ├── boards/ board-specific hardware implementations │ ├── m5stickplus_11/ │ ├── t_lora_pager/ │ ├── m5_cardputer/ │ └── m5_cardputer_adv/ └── src/ ├── core/ interfaces and shared drivers (IStorage, ISpeaker, etc.) ├── screens/ all UI screens organized by category │ ├── wifi/ │ ├── ble/ │ ├── keyboard/ │ ├── module/ NFC (MFRC522), GPS │ ├── utility/ │ ├── game/ │ └── setting/ ├── ui/ templates, components, and action overlays └── utils/ keyboard HID, DuckyScript, nfc/ (attacks, crypto), gps/ (GPSModule, WigleUtil) ``` ## 待办事项 - LoRa - nr24lf - 实现热成像相机 - 将键盘切换为 HID 模式,模式将分为 USB 和 BLE,而 BLE 和 USB 仅支持键盘、鼠标和模拟鼠标,USB 额外增加一个选项:大容量存储。
标签:Arduino, BadUSB, DuckyScript, ESP32, IP扫描, LilyGO, M5Stack, M5StickC, NTP时钟, PlatformIO, SD卡, SEO, TFT_eSPI, UML, USB HID, Web文件管理, WiFi二维码, WiFi工具, 云存储安全, 关键词优化, 固件, 固件样本, 多设备支持, 威胁情报, 开发者工具, 开源固件, 手持设备, 数据统计, 电源控制, 端口扫描, 红外文件, 网络扫描