Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sjcam — 基于全志V3的物联网摄像头的逆向工程研究和定制固件,包括固件解析器、AVIOCTRL客户端以及针对未认证OTA固件替换的CVE-2026-52656概念验证。 | Kitploit
工具/GitHubGitHub/keowu/sjcam
嵌入式系统安全物联网安全漏洞分析漏洞利用逆向工程渗透测试硬件安全论文与研究学习与教育固件分析
GitHubkeowu/sjcam

sjcam

基于全志V3的物联网摄像头的逆向工程研究和定制固件,包括固件解析器、AVIOCTRL客户端以及针对未认证OTA固件替换的CVE-2026-52656概念验证。

811个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库网站

Lelouch: SJCAM SJ4000 固件研究与自定义固件

CI

Lelouch 项目横幅

Trocar para Português (Brasil)

针对 SJCAM SJ4000 Air 的 Allwinner V3 版本的逆向工程笔记、固件工具、概念验证代码以及自定义固件界面。

研究文章

本仓库包含研究过程中产生的代码和成果。完整文章阐述了从首次固件转储到 Lelouch 自定义固件的整个调查过程。

阅读完整的研究文章(英文) 或 葡萄牙语版。

关于项目

这项工作始于一个简单的问题:在没有文档、源代码或供应商支持的情况下,我能对一台廉价运动相机获得多少控制权?

结果发现该相机使用了 Allwinner V3 SoC 和一个经过深度修改的 Android 4.4 系统。其主应用程序 sdv 通过 Binder 与专有的相机和显示服务通信,使用 MiniGUI 渲染界面,提供用于固件更新的 HTTP 服务器,并通过专有协议与 SJCAM Zone 应用程序通信。

本仓库记录了从固件提取到 sdv 替代方案的全过程。它包括研究过程中遇到的固件格式的工具、逆向二进制文件的 IDA 数据库、一个 AVIOCTRL 客户端、Lelouch 自定义固件源码,以及与 CVE-2026-52656 相关的概念验证。

代码针对所研究的 Allwinner V3 主板,配备 ST7789V 显示控制器和 GC4653 图像传感器。基于 Novatek NT9665X 的旧款 SJ4000 单元仅作为早期研究的一部分包含在内,并使用不同的固件格式。仅凭产品名称不足以确定兼容性。

Lelouch

Lelouch 是相机原始 sdv 可执行文件的替代界面。它基于从固件中恢复的专有库构建,并使用与原始应用程序相同的内部接口。

当前实现包括:

  • 通过逆向的 HerbCamera 和 CedarDisplay 接口实现相机预览
  • 为相机 320x240 显示屏和物理按钮设计的 MiniGUI 界面
  • 通过 Allwinner 硬件抽象层控制 Wi-Fi 热点
  • 使用自定义 ARMv7 构建的 wpa_supplicant 实现 Wi-Fi 站模式
  • 一个小型文本浏览器,带有设备键盘
  • 预览帧上的运动检测以及实验性的 Haar 级联人脸检测代码
  • 电池、时间、相机、网络和调试状态视图
  • Binder 初始化以及与固件中已有服务的通信

Lelouch 不是一个完整的发行版,也不是适用于所有以 SJ4000 名义销售的产品通用固件。它依赖于所研究的 Allwinner V3 单元所使用的库、内核、服务、分区布局、显示控制器、图像传感器和主板配置。

仓库布局

某些目录包含从设备恢复的第三方或专有材料。它们的提供是为了互操作性和安全研究目的,并不表示这些组件是开源的。

构建 Lelouch

构建已在 x86-64 Linux 上测试通过。您需要 Python 3、GNU Make、Git、C/C++ 构建环境以及用于初始工具链下载的网络访问权限。

root@kitploit:~
git clone https://github.com/keowu/sjcam.git
cd sjcam/Lelouch
python3 prepare_build.py

prepare_build.py 将固定版本的 Android API 14 sysroot 和 ARM arm-linux-androideabi-4.6 交叉编译器下载到 Lelouch/android_compilers/ 中。然后构建修改后的静态 wpa_supplicant 并运行 make。下载的编译器文件和生成的二进制文件会被 Git 忽略。

生成的文件为:

root@kitploit:~
Lelouch/Lelouch
Lelouch/wpa_supplicant

更改 C++ 源码后重新构建:

root@kitploit:~
cd Lelouch
make clean
make

生成的 Lelouch 二进制文件用于替换提取的根文件系统中的 /bin/sdv。Wi-Fi 站模式还期望构建的 wpa_supplicant 位于相机 SD 卡的 /mnt/extsd/sta/wpa_supplicant。

实验性的人脸检测代码会在此路径查找生成的级联文件:

root@kitploit:~
/mnt/extsd/frontalface.casc

仓库包含一个预先生成的级联文件以及用于创建它的转换器:

root@kitploit:~
cd Lelouch/gen_cascade
python3 gen_cascade.py haarcascade_frontalface_alt2.xml frontalface.casc

完整的提取、根文件系统替换、重新打包以及 LiveSuit 烧录步骤,在页面顶部的链接研究文章中均有说明。

固件工具

所有解析器入口点均为 Python 3 脚本,内置 --help 输出,且不依赖任何第三方 Python 包。

Allwinner IMAGEWTY

读取外层的 LiveSuit 固件镜像,提取其文件,并从提取的目录重新构建镜像。

root@kitploit:~
python3 "Reversing Scripts/AllWinner IMAGEWTY - ROM Parser/main.py" info firmware.img
python3 "Reversing Scripts/AllWinner IMAGEWTY - ROM Parser/main.py" extract firmware.img -o image_dump
python3 "Reversing Scripts/AllWinner IMAGEWTY - ROM Parser/main.py" repack image_dump rebuilt.img

Allwinner eGON

检查、提取并重新打包在 IMAGEWTY 镜像中找到的 full_img.fex 容器。

root@kitploit:~
python3 "Reversing Scripts/AllWinner EGON - Firmware Parser/main.py" info full_img.fex
python3 "Reversing Scripts/AllWinner EGON - Firmware Parser/main.py" extract full_img.fex -o egon_dump
python3 "Reversing Scripts/AllWinner EGON - Firmware Parser/main.py" pack egon_dump \
  --original full_img.fex \
  -o rebuilt_full_img.fex

打包器使用原始文件作为模板,以便在替换分区时保留原始布局和元数据。

Novatek BCL1

解压旧版基于 Novatek 的 SJ4000 固件使用的 BCL1 容器,并可扫描结果以查找嵌入的资源和固件段。

root@kitploit:~
python3 "Reversing Scripts/Novatek もな BCL1 - Firmware Parser/main.py" \
  "Firmwares Files/OLD_SJCAM_Novatek_NT9665X/SJCAM001.bin" \
  -o firmCode.bin \
  --extract

AVIOCTRL 客户端

ウタ.py 实现了移动应用程序用于控制相机的专有 TCP 协议(端口 6666)。它仅使用 Python 标准库处理相机的登录序列、保活消息、IOCTRL 帧、文件传输和视频流请求。

将电脑连接到相机的 Wi-Fi 网络并运行:

root@kitploit:~
python3 "AVIOCTRL Script/ウタ.py"

默认目标为 192.168.100.1:6666。必要时可提供其他地址:

root@kitploit:~
python3 "AVIOCTRL Script/ウタ.py" --host 192.168.100.1 --port 6666 --debug

该交互式客户端可以读取电池和配置信息、检查 SD 卡、拍照、开始或停止录像、列出、上传、下载或删除文件、请求缩略图、配置 Wi-Fi、请求视频流,以及发送手动 IOCTRL 命令。

格式化 SD 卡、删除文件、更改 Wi-Fi 设置以及恢复出厂设置会修改相机。请仅对属于您自己的硬件和数据使用这些命令。

CVE-2026-52656

被研究的固件在相机热点激活时暴露了一个未经验证的 HTTP 端点。它接受任意文件上传,并直接将其写入 SD 卡,而无需验证客户端或上传内容。这使得完全固件替换成为可能,因为攻击者可以上传一个名为 full_img.fex 的自定义 eGON 镜像;相机会将该文件名识别为 OTA 包,并通过其正常的更新流程安装攻击者控制的固件,如同官方更新一样。

成功利用后,上传的固件将完全控制设备上运行的软件。随附的概念验证通过演示说明了这一点:在恶意 OTA 镜像安装后,它将原始应用程序替换为一个自定义的 MiniGUI/AudioTrack 负载,该负载使用原始 RGB565 帧和 PCM 音频播放 Bad Apple!! 视频。

POC/ 目录包含:

  • run_exploit.sh,用于将攻击者控制的 full_img.fex 上传到相机
  • full_img.fex,精心构造的 eGON 固件镜像,可被相机的 OTA 更新机制接受
  • バイバイ/,用于演示更新后任意代码执行的 MiniGUI 和 AudioTrack Bad Apple!! 负载
  • extract_rgb_pcm_from_mp4/,用于将演示视频转换为原始 RGB565 和 PCM 数据的辅助工具

媒体转换辅助工具需要 ffmpeg。生成的 video.rgb 和 audio.pcm 文件期望位于相机 SD 卡的根目录,以供演示负载使用。

该概念验证本质上是破坏性的。格式错误或不兼容的镜像可能永久性地损坏相机。请勿在您不拥有的设备上运行,或没有完整恢复路径的情况下运行。

研究范围

该项目旨在为逆向工程、互操作性、教育以及安全研究而创建,基于作者合法获取的硬件。SJCAM、Allwinner、Novatek、Android 及其组件的名称属于其各自所有者。

本仓库包含原始源代码,以及来自第三方产品的固件样本、逆向工程数据库、头文件和共享库。对于第三方材料不授予任何许可。在研究环境之外重新分发或使用这些文件前,请审查其来源和适用法律。

目前没有仓库范围内的开源许可。wpa_supplicant 源码保留了其自身的上游许可,位于 Lelouch/modified_lelouch_wpa_supplicant_source/COPYING。

下载工具
路径内容
Lelouch/自定义固件界面、构建环境、恢复的头文件、专有共享库以及修改后的 wpa_supplicant 源码
Reversing Scripts/Allwinner IMAGEWTY、Allwinner eGON 和 Novatek BCL1 固件的解析和重新打包器
AVIOCTRL Script/ウタ.pySJCAM Zone 使用的专有 TCP 协议的交互式客户端
Bin Files/研究过程中分析的主要可执行文件和共享库的 IDA 数据库
Firmwares Files/开发过程中使用的 Allwinner 和 Novatek 固件样本
POC/CVE-2026-52656 概念验证、精心构造的 eGON 镜像以及帧缓冲/音频演示负载