====== GoPro Linux ====== ===== Get Root ===== Ziel ist es eine Shell (per Telnet) zu erhalten. - [[http://www.altiforce.net/support/|H4 Firmware Patcher]] herunterladen - auf SD Karte speichern - .jar ausfuehren: java -jar *.jar - Jetzt liegt auf der SD-Karte ein Verzeichniss "UPDATE" und eine update.zip, welche beim Einlegen der Karte in die Kamera installiert werden. - Nach dem Update fuehr die Kamera Busybox-Shell-Kommandos aus der Datei "override.sh" aus. - override.sh: #!/bin/sh #Copy busybox as telnetd to /tmp cp /tmp/fuse_d/busybox /tmp/telnetd #make it executable chmod 777 /tmp/telnetd #start telnet /tmp/telnetd #There is a firewall (which is nice), so we have to open the right port iptables -D INPUT -j DROP iptables -A INPUT -p tcp -m tcp --dport 23 -j ACCEPT iptables -A INPUT -j DROP exit 0 - {{:it:linux:busybox.zip|busybox.zip}} noch entpacken und auf die SD-Karte legen - Kamera ausschalten und Akku entnehmen - SD-Karte einstecken - Akku entstecken - Kamera anschalten - Per Wlan mit Kamera verbinden (AD-hoc!) - telnet 10.5.5.9 User: root - Fertig. ==== Mit ssh ==== Anstatt telnet kann man auch ssh verwenden. Hierzu einfach anstatt der busybox die {{:it:linux:dropbear.zip|dropbear.zip}} auf der SD-Karte entpacken und folgende override.sh verwenden:#!/bin/sh #Copy dropbear to /tmp cp /tmp/fuse_d/dropbear /tmp/dropbear #make it executable chmod 777 /tmp/dropbear #start dropbear and allow logins without passwords /tmp/dropbear -B #There is a firewall (which is nice), so we have to open the right port iptables -D INPUT -j DROP iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -j DROP exit 0 ===== Hook in der modifizierten Firmware ===== Wie sieht der Aufruf der override.sh genau aus?\\ Der Hook ist im init-System versteckt und zwar in /etc/init.d/S99wobmat und sieht folgendermassen aus: #!/bin/sh if [ -f /tmp/fuse_d/update/hd4_update.txt ] then exit fi if [ -f /tmp/fuse_d/safemode.txt ] then exit fi if [ -f /tmp/fuse_d/override.sh ] then /bin/sh /tmp/fuse_d/override.sh if [ $? -eq 1 ] then echo "Override script demands shutdown" exit fi fi if [ -f /tmp/fuse_b/override.sh ] then /bin/sh /tmp/fuse_b/override.sh if [ $? -eq 1 ] then echo "Override script demands shutdown" exit fi fi echo "Hello" sh /root/srtda.sh ===== Dateisystem entpacken ===== unzip UPDATE.zip git clone https://github.com/evilwombat/ubi_reader.git git clone https://github.com/evilwombat/gopro-fw-tools.git cd gopro-fw-tools make cd .. gopro-fw-tools/fwunpacker camera_firmware.bin ubi_reader/extract_images.py section_4 mv ubi_reader/output/section_4 section_4_img ubi_reader/extract_files.py section_4_img/img*linux.ubifs mv ubi_reader/output/img-* . Der Inhalt des Dateisystems befindet sich im Verzeichniss "img-*". ===== Buildroot ===== buildroot-2015.11.1 * Buildroot config: {{:it:linux:buildroot_config.zip|}} * Busybox config: {{:it:linux:busybox_config.zip|}} * wpa_supplicant config: {{:it:linux:wpa_supplicant_config.zip|}} ====== Links ====== * [[http://www.ambarella.com/uploads/docs/A9-product-brief.pdf]] * [[https://github.com/evilwombat]] * [[https://raw.githubusercontent.com/evilwombat/gopro-usb-tools/master/README.md|USB Bootstrap Mode]] * [[https://raw.githubusercontent.com/KonradIT/overridehack/master/README.md|Info ueber H4 firmware Patcher]] * [[http://www.altiforce.net/support/|H4 Firmware Patcher]] * [[https://github.com/KonradIT | GoPro Befehle]]