Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sjcam — Reverse-Engineering-Forschung und Custom-Firmware für Allwinner-V3-basierte IoT-Kameras, einschließlich Firmware-Parsern, einem AVIOCTRL-Client und einem Proof of Concept für CVE-2026-52656 zum OTA-Firmware-Austausch ohne Authentifizierung. | Kitploit
Tools/GitHubGitHub/keowu/sjcam
Embedded-System-SicherheitIoT-SicherheitSchwachstellenanalyseExploitationReverse EngineeringPenetrationstestsHardware-SicherheitPapers & ForschungLernen & BildungFirmware-Analyse
GitHubkeowu/sjcam

sjcam

8111vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Reverse-Engineering-Forschung und Custom-Firmware für Allwinner-V3-basierte IoT-Kameras, einschließlich Firmware-Parsern, einem AVIOCTRL-Client und einem Proof of Concept für CVE-2026-52656 zum OTA-Firmware-Austausch ohne Authentifizierung.

Repository anzeigenWebseite

Lelouch: SJCAM-SJ4000-Firmware-Forschung und Custom-Firmware

CI

Lelouch-Projektbanner

Auf Portugiesisch (Brasilien) wechseln

Reverse-Engineering-Notizen, Firmware-Werkzeuge, Proof-of-Concept-Code und eine Custom-Firmware-Schnittstelle für die Allwinner-V3-Version der SJCAM SJ4000 Air.

Forschungsartikel

Dieses Repository enthält den Code und die Artefakte, die während der Forschung entstanden sind. Der vollständige Artikel erläutert die Untersuchung vom ersten Firmware-Dump bis zur Lelouch-Custom-Firmware.

Den vollständigen Forschungsartikel auf Englisch lesen) oder auf Portugiesisch.

Über das Projekt

Diese Arbeit begann mit einer einfachen Frage: Wie viel Kontrolle kann ich über eine günstige Action-Kamera erlangen, ohne Dokumentation, Quellcode oder Herstellerunterstützung?

Es stellte sich heraus, dass die Kamera einen Allwinner-V3-SoC und ein stark modifiziertes Android-4.4-System verwendet. Ihre Hauptanwendung sdv kommuniziert über Binder mit proprietären Kamera- und Anzeigediensten, rendert die Oberfläche mit MiniGUI, stellt einen HTTP-Server für Firmware-Updates bereit und kommuniziert über ein proprietäres Protokoll mit der Anwendung SJCAM Zone.

Das Repository dokumentiert den Weg von der Firmware-Extraktion bis zu einem funktionierenden Ersatz für sdv. Es enthält Werkzeuge für die während der Forschung angetroffenen Firmware-Formate, IDA-Datenbanken für die rekonstruierten Binärdateien, einen AVIOCTRL-Client, den Quellcode der Lelouch-Custom-Firmware und den Proof of Concept zu CVE-2026-52656.

Der Code zielt auf das untersuchte Allwinner-V3-Board mit einem ST7789V-Display-Controller und einem GC4653-Bildsensor. Ältere SJ4000-Geräte auf Basis des Novatek NT9665X sind nur als Teil der früheren Forschung enthalten und verwenden ein anderes Firmware-Format. Produktnamen allein reichen nicht aus, um Kompatibilität herzustellen.

Lelouch

Lelouch ist eine Ersatzoberfläche für das ursprüngliche sdv-Programm der Kamera. Es wurde gegen die proprietären Bibliotheken entwickelt, die aus der Firmware gewonnen wurden, und verwendet dieselben internen Schnittstellen wie die ursprüngliche Anwendung.

Die aktuelle Implementierung umfasst:

  • Kameravorschau über die rekonstruierten HerbCamera- und CedarDisplay-Schnittstellen
  • Eine MiniGUI-Oberfläche, die für das 320x240-Display der Kamera und die physischen Tasten entwickelt wurde
  • Steuerung des Wi-Fi-Hotspots über die Allwinner-Hardwareabstraktionsschicht
  • Wi-Fi-Stationsmodus mithilfe eines eigenen ARMv7-Builds von wpa_supplicant
  • Ein kleiner Textbrowser mit einer geräteeigenen Tastatur
  • Bewegungserkennung an Vorschaubildern und experimenteller Gesichtserkennungscode mit Haar-Kaskade
  • Batterie-, Zeit-, Kamera-, Netzwerk- und Debug-Statusansichten
  • Binder-Initialisierung und Kommunikation mit den bereits in der Firmware vorhandenen Diensten

Lelouch ist keine vollständige Distribution und keine generische Firmware für jedes als SJ4000 verkaufte Produkt. Es hängt von den Bibliotheken, dem Kernel, den Diensten, dem Partitionslayout, dem Display-Controller, dem Bildsensor und der Board-Konfiguration ab, die in dem untersuchten Allwinner-V3-Gerät verwendet werden.

Repository-Struktur

Einige Verzeichnisse enthalten Material von Dritten oder proprietäres Material, das vom Gerät stammt. Ihre Bereitstellung dient der Interoperabilität und Sicherheitsforschung und macht diese Komponenten nicht zu Open Source.

Lelouch erstellen

Der Build wurde unter x86-64-Linux getestet. Du benötigst Python 3, GNU Make, Git, eine C/C++-Build-Umgebung und Netzwerkzugriff für den anfänglichen Download der Toolchain.

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

prepare_build.py lädt ein auf API-Level 14 festgelegtes Android-Sysroot und den ARM-Cross-Compiler arm-linux-androideabi-4.6 in Lelouch/android_compilers/ herunter. Anschließend baut es das modifizierte statische wpa_supplicant und führt make aus. Die heruntergeladenen Compiler-Dateien und erzeugten Binärdateien werden von Git ignoriert.

Die resultierenden Dateien sind:

root@kitploit:~
Lelouch/Lelouch
Lelouch/wpa_supplicant

Um nach Änderungen an den C++-Quellen neu zu bauen:

root@kitploit:~
cd Lelouch
make clean
make

Das erzeugte Lelouch-Binary soll /bin/sdv im extrahierten Root-Dateisystem ersetzen. Der Wi-Fi-Stationsmodus erwartet das gebaute wpa_supplicant ebenfalls unter /mnt/extsd/sta/wpa_supplicant auf der SD-Karte der Kamera.

Der experimentelle Gesichtserkennungscode sucht nach der erzeugten Kaskadendatei unter:

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

Das Repository enthält eine vorab erzeugte Kaskade und den Konverter, der zu ihrer Erstellung verwendet wurde:

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

Das vollständige Verfahren zum Extrahieren, Ersetzen des Root-Dateisystems, Neupacken und Flashen mit LiveSuit ist im Forschungsartikel dokumentiert, der oben auf dieser Seite verlinkt ist.

Firmware-Werkzeuge

Alle Parser-Einstiegspunkte sind Python-3-Skripte mit integrierter --help-Ausgabe und ohne Python-Abhängigkeiten von Drittanbietern.

Allwinner IMAGEWTY

Liest das äußere LiveSuit-Firmware-Image, extrahiert dessen Dateien und erstellt aus einem extrahierten Verzeichnis ein Image neu.

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

Untersucht, extrahiert und packt den full_img.fex-Container neu, der sich im IMAGEWTY-Image befindet.

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

Der Packer verwendet die Originaldatei als Vorlage, damit das ursprüngliche Layout und die Metadaten erhalten bleiben können, während Partitionen ersetzt werden.

Novatek BCL1

Dekomprimiert den BCL1-Container, der von älteren Novatek-basierten SJ4000-Firmwares verwendet wird, und kann das Ergebnis nach eingebetteten Assets und Firmware-Abschnitten durchsuchen.

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

AVIOCTRL-Client

ウタ.py implementiert das proprietäre TCP-Protokoll, das von der mobilen Anwendung verwendet wird, um die Kamera über Port 6666 zu steuern. Es behandelt die Login-Sequenz der Kamera, Keepalive-Nachrichten, IOCTRL-Frames, Dateiübertragung und Videostream-Anfragen ausschließlich mit der Python-Standardbibliothek.

Verbinde deinen Computer mit dem Wi-Fi-Netzwerk der Kamera und führe Folgendes aus:

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

Das Standardziel ist 192.168.100.1:6666. Bei Bedarf kann eine andere Adresse angegeben werden:

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

Der interaktive Client kann den Batteriestand und die Konfiguration auslesen, die SD-Karte untersuchen, Fotos aufnehmen, Aufnahmen starten oder stoppen, Dateien auflisten, hochladen, herunterladen oder löschen, Miniaturen anfordern, Wi-Fi konfigurieren, den Videostream anfordern und manuelle IOCTRL-Befehle senden.

Das Formatieren der SD-Karte, das Löschen von Dateien, das Ändern der Wi-Fi-Einstellungen und das Durchführen eines Factory-Resets verändern die Kamera. Verwende diese Befehle nur bei Hardware und Daten, die dir gehören.

CVE-2026-52656

Die untersuchte Firmware stellt bei aktivem Kamera-Hotspot einen nicht authentifizierten HTTP-Endpunkt bereit. Dieser akzeptiert beliebige Datei-Uploads und schreibt sie direkt auf die SD-Karte, ohne den Client oder den hochgeladenen Inhalt zu validieren. Dies ermöglicht einen vollständigen Firmware-Austausch, da ein Angreifer ein benutzerdefiniertes eGON-Image mit dem Namen full_img.fex hochladen kann; die Kamera erkennt diesen Dateinamen als OTA-Paket und installiert die vom Angreifer kontrollierte Firmware über ihren normalen Update-Ablauf, als wäre es ein offizielles Update.

Eine erfolgreiche Ausnutzung verschafft der hochgeladenen Firmware die vollständige Kontrolle über die auf dem Gerät laufende Software. Der enthaltene Proof of Concept demonstriert dies, indem er die ursprüngliche Anwendung durch eine benutzerdefinierte MiniGUI/AudioTrack-Payload ersetzt, die nach der Installation des schädlichen OTA-Images das Bad Apple!!-Video mit rohen RGB565-Frames und PCM-Audio abspielt.

Das Verzeichnis POC/ enthält:

  • run_exploit.sh, das die vom Angreifer kontrollierte Datei full_img.fex auf die Kamera hochlädt
  • full_img.fex, das manipulierte eGON-Firmware-Image, das vom OTA-Update-Mechanismus der Kamera akzeptiert wird
  • バイバイ/, die MiniGUI- und AudioTrack-Payload Bad Apple!!, die verwendet wird, um die Ausführung beliebigen Codes nach dem Update zu demonstrieren
  • extract_rgb_pcm_from_mp4/, ein Hilfsprogramm zum Konvertieren des Demonstrationsvideos in rohe RGB565- und PCM-Daten

Das Medienkonvertierungs-Hilfsprogramm erfordert ffmpeg. Die erzeugten Dateien video.rgb und audio.pcm werden von der Demonstrations-Payload im Wurzelverzeichnis der SD-Karte der Kamera erwartet.

Der Proof of Concept ist von Natur aus zerstörerisch. Ein fehlerhaftes oder inkompatibles Image kann die Kamera dauerhaft unbrauchbar machen. Führe ihn nicht gegen Geräte aus, die dir nicht gehören, oder ohne einen vollständigen Wiederherstellungspfad.

Forschungsumfang

Das Projekt wurde für Reverse Engineering, Interoperabilität, Bildung und Sicherheitsforschung an Hardware erstellt, die der Autor legal erworben hat. SJCAM, Allwinner, Novatek, Android und die Namen ihrer Komponenten gehören ihren jeweiligen Eigentümern.

Das Repository enthält originären Quellcode sowie Firmware-Beispiele, Reverse-Engineering-Datenbanken, Header und Shared Libraries, die aus Produkten von Dritten stammen. Für Material von Dritten wird keine Lizenz gewährt. Prüfe die Herkunft und das anwendbare Recht, bevor du diese Dateien außerhalb einer Forschungsumgebung weiterverteilst oder verwendest.

Derzeit gibt es keine repositoryweite Open-Source-Lizenz. Der wpa_supplicant-Quellcode behält seine eigene Upstream-Lizenz in Lelouch/modified_lelouch_wpa_supplicant_source/COPYING.

Tool herunterladen
PfadInhalt
Lelouch/Custom-Firmware-Schnittstelle, Build-Umgebung, wiederhergestellte Header, proprietäre Shared Libraries und modifizierter wpa_supplicant-Quellcode
Reversing Scripts/Parser und Repacker für Allwinner-IMAGEWTY-, Allwinner-eGON- und Novatek-BCL1-Firmware
AVIOCTRL Script/ウタ.pyInteraktiver Client für das proprietäre TCP-Protokoll, das von SJCAM Zone verwendet wird
Bin Files/IDA-Datenbanken für die wichtigsten ausführbaren Dateien und Shared Libraries, die während der Forschung analysiert wurden
Firmwares Files/Allwinner- und Novatek-Firmware-Beispiele, die während der Entwicklung verwendet wurden
POC/CVE-2026-52656-Proof-of-Concept, manipuliertes eGON-Image und die Demo-Payload für Framebuffer/Audio