{"id":756,"date":"2017-02-10T20:01:17","date_gmt":"2017-02-10T19:01:17","guid":{"rendered":"https:\/\/www.livediesel.de\/?p=756"},"modified":"2017-02-14T09:17:08","modified_gmt":"2017-02-14T08:17:08","slug":"analyse-aldi-ueberwachungskamera-maginon-ipc-25-hdc","status":"publish","type":"post","link":"https:\/\/www.livediesel.de\/?p=756","title":{"rendered":"Analyse: Aldi \u00dcberwachungskamera Maginon IPC-25 HDC"},"content":{"rendered":"<p>Nachdem ich mir nun eine zweite Kamera dieser Art an geschafft habe, wollte ich nun doch etwas tiefer ein steigen. Eine Analyse bez\u00fcglich Sicherheitsl\u00fccken habe ich nicht vor, mir geht es haupts\u00e4chlich darum die Hardware zu analysieren und ggf. die Software zu verbessern oder aus zu tauschen.<\/p>\n<p>Hier erst mal eine Liste mit den gesammelten Daten:<\/p>\n<ul>\n<li>Typ: Maginon IPC-25 HDC<\/li>\n<li>Betriebssystem: BusyBox Linux<\/li>\n<li>Bootloader: U-Boot<\/li>\n<li>Hersteller der Software: supra Foto-Elektronik-Vertriebs-GmbH<\/li>\n<li>Link zum GPL Source: <a href=\"http:\/\/gpl.supra-elektronik.com\/\">http:\/\/gpl.supra-elektronik.com\/<\/a><\/li>\n<li>CPU: <a href=\"https:\/\/wikidevi.com\/wiki\/Ralink_RT5350\">Ralink RT5350F<\/a><\/li>\n<li>Flash: Winbond W25Q64BV (64MBit, 8MByte)<\/li>\n<li>RAM: 32 Mbyte<\/li>\n<li>Kamera Modul\n<ul>\n<li>Hersteller: Unbekannt<\/li>\n<li>Typ: NIF380VX-EMI-V6<\/li>\n<li>Anschluss: USB<\/li>\n<li>USB Treiber Baustein: AIT8433 (Alpha Imaging Technology Corp.)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 25%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-756 gallery-columns-4 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20161004_093315.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20161004_093315-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175446.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175446-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175552.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175552-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175634.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175634-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175714.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_175714-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204654.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204654-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204724.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204724-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204753.jpg'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/IMG_20170207_204753-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n\n<p>Beim hochladen der Bilder ist mir aufgefallen, das wohl der Pufferkondensator f\u00fcr das PoE zu kein dimensioniert wurde bei der Planung. Aktuell ist ein 100V 100nF auf der R\u00fcckseite eingel\u00f6tet, w\u00e4hrend der Aufdruck auf der Vorderseite ist.<\/p>\n<p>Anschluss der einer Seriellen Console an das Board \u00fcber einen 3,3V Serial Adapter.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-759\" src=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/pinout-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/pinout-300x225.jpg 300w, https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/pinout.jpg 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><a href=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/Boot.txt\" target=\"_blank\">Dump vom Boot Prozess<\/a><\/p>\n<p><a href=\"https:\/\/www.livediesel.de\/wp-content\/uploads\/2017\/02\/UBoot.txt\" target=\"_blank\">Dump vom Bootloader<\/a><\/p>\n<p>Der Bootloader ist soweit ich das beurteilen kann der Standard U-Boot aus dem Ralink SDK in der Version 1.1.3.<\/p>\n<p>Die Console gibt auch erst mal nichts spektakul\u00e4res her.<\/p>\n<h3>Analyse Kameramodul<\/h3>\n<p>Mein erster versuch die Kamera per USB an einen Rechner an zu schlie\u00dfen und zu sehen was es alles so aus spuckt ist leider gescheitert. Die Kamera bleibt stumm und wird auch nicht im System angezeigt.<\/p>\n<p>Nachdem ich den Boot Prozess unterbrochen habe, ist mir dabei etwas aufgefallen: Auch hier wurde pl\u00f6tzlich kein USB Kamera Modul angezeigt.<\/p>\n<p>Den Boot Prozess kann man besten unterbrechen wenn man den &#8222;daemon&#8220; Prozess direkt nach dem Starten killt, denn sonnst wird der Watchdog an geschmissen und wenn man den &#8222;daemon&#8220; killt startet auch der Prozessor nach kurzer Zeit neu. Am besten direkt nach dem die BusyBox Version angezeigt wird.<\/p>\n<p>Die Subprozesse kann man in der Datei &#8222;\/system\/init\/ipcam.sh&#8220; auskommentieren, so muss man nicht st\u00e4ndig irgendwas killen.<\/p>\n<p>Der Connector zur Kamera hat noch ein paar zus\u00e4tzliche Pins: LEDCTRL, LCR, RST<\/p>\n<p>Teilweise erschlie\u00dft sich ja die Funktion. Also habe ich nochmal in das Bootlog geschaut, es taucht die folgende Log Zeile auf:<\/p>\n<pre>RT5350\/HD\/h264\/8433\/vienc.c, line\u00a0 413, H264SetIRCutMode\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : waiting ait 8433 init over<\/pre>\n<p>Kurz danach wird dann auch die Kamera per USB initialisiert. Da wird wohl mit den Pins gespielt um den AIT 8433 zu beleben.<\/p>\n<p>Zum testen habe ich einfach mal den RST Pin auf 5V gelegt und siehe da, die Kamera meldet sich. Habe sie dann nochmal an den PC angeschlossen und sie wird sauber als Kamera installiert.<\/p>\n<p>Die Frage ist nun wie bekomme ich den RST Pin auf high.<\/p>\n<p>&nbsp;<\/p>\n<p>Nach <strong>mehreren<\/strong> Stunden testen habe ich heraus gefunden, dass der Kerneltreiber manipuliert wurde. Beim \u00f6ffnen des GPIO Devices meldet sich der Kernel immer mit &#8222;ralink gpio release by zqh&#8220; und &#8222;clr gpio&#8220;. Dem Anschein nach werden alle GPIOs beim schlie\u00dfen des Filedescriptors auf null gesetzt. Sehr toll! Super! Was f\u00fcr ein Freak denkt sich so etwas aus? Ich kann mir momentan kein Szenario vorstellen wo ich das ben\u00f6tigen k\u00f6nnte, selbst wenn der Prozess abst\u00fctzt, warum soll ich denn das Kamera Modul oder die IR LEDs ausschalten? Was f\u00fcr ein quatsch.<\/p>\n<p>Ich k\u00f6nnt stundenlang so weiter machen, aber genug davon.<\/p>\n<p>Nun gut, hier nochmal die Pinbelegung des Kamera Moduls:<\/p>\n<ul>\n<li>5V &#8211; VCC<\/li>\n<li>5V &#8211; VCC<\/li>\n<li>DM &#8211; USB Daten Minus<\/li>\n<li>DP &#8211; USB Daten Plus<\/li>\n<li>GND &#8211; Ground<\/li>\n<li>LEDCTRL &#8211; High wenn IR Filter aktiv<\/li>\n<li>GND &#8211; Ground<\/li>\n<li>LCR &#8211; IR LED Control<\/li>\n<li>RST &#8211; Modul Reset<\/li>\n<\/ul>\n<p>Nun was interessantes, der uvcvideo Treiber meldet unter anderem das Video Format &#8222;MJPEG 1280&#215;720 (30.0 fps)&#8220;, daher verstehe ich nicht, warum 720p nur \u00fcber das Depricated Flash in H.264 auf der Kameraseite geht.<\/p>\n<p>Einige Tests mit den GPIOs ergab folgendes Ergebnis:<\/p>\n<ul>\n<li>GPIO 0 &#8211; Taste am Netzwerkkabel<\/li>\n<li>GPIO 11 &#8211; (LCR) IR LED einschalten (geht nur wenn der IR Filter inaktiv ist)<\/li>\n<li>GPIO 12 &#8211; (RST) Kamera Reset Pin<\/li>\n<li>GPIO 13 &#8211; Gelbe LED am Netzwerkkabel<\/li>\n<li>GPIO 14 &#8211; (LEDCTRL) IR Filter<\/li>\n<\/ul>\n<h3>Netzwerk<\/h3>\n<p>W\u00e4hrend der ganzen Testerei mit den GPIOs musste ich nat\u00fcrlich immer wieder Dateien per TFTP kopieren, das ging nat\u00fcrlich nur mit Netzwerk. Da ich mit mehreren Versuchen das Netzwerk in Gang zu bekommen kl\u00e4glich gescheitert bin, musste ich immer der &#8222;daemon&#8220; Prozess starten um Netzwerken zu k\u00f6nnen. Das hatte leider immer den Nachteil, dass das GPIO Device immer belegt wurde, also jedes mal neu starten.<\/p>\n<p>Ich habe es dann doch irgendwann geschafft das Netzwerk starten zu k\u00f6nnen, habe daf\u00fcr nochmal das Bootlog angeschaut. Da tauchen dann Kommandozeilen auf die den Internen Switch konfigurieren. Tats\u00e4chlich ist das im Script \/usr\/sbin\/network.sh alles hinterlegt, also zack das Script ausgef\u00fchrt und den udhcpc gestartet.<\/p>\n<h3>Video<\/h3>\n<p>Nachdem ja die Kamera auch 1280&#215;720 per MJPEG kann, habe ich diese Aufl\u00f6sung in das uvc_stream Programm eingepatchd und erfolgreich getestet.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Der Grundstein ist soweit gelegt, ich denke damit kann man eine eigene Firmware f\u00fcr die Kamera bauen. Und wie es weiter geht seht ihr wenn das Licht an geht, nein quatsch. Ich denke das ich nur ein kleines Script schreiben werde, was den uvc_stream Prozess startet, das Netzwerk Konfiguriert und die GPIOs ein schaltet. Ich bin nicht so der Typ f\u00fcr Aufw\u00e4ndige GUIs und Config Kram, aber vielleicht hilft es jemanden oder jemand Forkt das Ralink SDK f\u00fcr die Kamera, dann kann ich mich gerne daran beteiligen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich mir nun eine zweite Kamera dieser Art an geschafft habe, wollte ich nun doch etwas tiefer ein steigen. Eine Analyse bez\u00fcglich Sicherheitsl\u00fccken habe ich nicht vor, mir geht es haupts\u00e4chlich darum die Hardware zu analysieren und ggf. die Software zu verbessern oder aus zu tauschen. Hier erst mal eine Liste mit den gesammelten [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[78,79,80,77],"class_list":["post-756","post","type-post","status-publish","format-standard","hentry","category-mikrocontroller","tag-ipc","tag-ipc-25","tag-ipc-25-hdc","tag-maginon"],"_links":{"self":[{"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/posts\/756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=756"}],"version-history":[{"count":19,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/posts\/756\/revisions"}],"predecessor-version":[{"id":787,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=\/wp\/v2\/posts\/756\/revisions\/787"}],"wp:attachment":[{"href":"https:\/\/www.livediesel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.livediesel.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}