[Info] modfs - SquashFS-Image (AVM-Firmware) ändern für NAND-basierte FRITZ!Boxen

Ich verstehe es wirklich nicht mehr ... ich habe jetzt bei mir das "modfs"-Skript mal geändert:
Code:
diff --git a/modfs b/modfs
index ae252ae..8225211 100755
--- a/modfs
+++ b/modfs
@@ -2611,12 +2611,21 @@ scriptpath="${scriptfile%/*}"
 scriptname="${scriptfile##*/}"
 # switch to our own version of Busybox
 bb="$(bindir)/busybox"
+[ -f /var/tmp/empty/busybox ] && rm /var/tmp/empty/busybox
+echo "<<<<<<<<<<<<<<<<<< $MODFS_RUN_SHELL >>>>>>>>>>>>>>>>>>>"
+$bb ls -la /var/tmp/empty
+echo "<<<<<<<<<<<<<<<<<< $MODFS_RUN_SHELL >>>>>>>>>>>>>>>>>>>"
+$bb ls -la /bin
 shl="$bb sh"
+echo "<<<<<<<<<<<<<<<<<< $MODFS_RUN_SHELL >>>>>>>>>>>>>>>>>>>"
 if [ x"$MODFS_RUN_SHELL" != x"1" ]; then
        mkdir -p /var/run/modfs
        ln -s $bb /var/run/modfs/sh
        oldpath="$PATH"
        export PATH=$(bindir)
+       ! $bb [ -d /var/tmp/empty ] && $bb mkdir /var/tmp/empty
+       $bb cp /bin/busybox /bin/showshringbuf /var/tmp/empty
+       $bb mount -o bind /var/tmp/empty /bin
        export MODFS_RUN_SHELL=1
        export SHELL=/var/run/modfs/sh
        echo "respawn script with custom BusyBox shell, SHLVL=$SHLVL" 1>&2
@@ -2626,6 +2635,7 @@ if [ x"$MODFS_RUN_SHELL" != x"1" ]; then
        echo "$shl $0 $*" 1>&2
        $shl $0 $*
        rc=$?
+       $bb umount /bin
        export PATH="$oldpath"
        rm -r /var/run/modfs 2>/dev/null
        exit $rc
Damit wird innerhalb der zusätzlichen Shell-Instanz das Verzeichnis "/bin" mit einer beschreibbaren Version ersetzt und dort dann sogar die BusyBox gelöscht, wenn auf die aus dem "modfs"-Paket umgeschaltet wurde. Selbst damit funktioniert bei mir das Prüfen der Signatur einwandfrei (da kann also kein Rückgriff mehr auf die Version in /bin erfolgen und das "mktemp" muß aus der aktiven BusyBox stammen) - ich begreife einfach nicht, was da schiefgehen soll. Allerdings fehlt hier dann irgendwann später eben "/bin/testvalue" und es gibt einen Absturz, aber über die Signaturprüfung kommt er locker hinweg.

Ich komme wohl doch nicht umhin, eine eigene Version mit der AVM-BusyBox zu bauen und damit selbst zu testen ... danke für die bisher investierte Mühe, aber das "indirekte Testen" funktioniert auch nicht so richtig.

- - - Aktualisiert - - -

@Micha0815:
Danke für den Test (und das Ergebnis) ... dann geht es vielleicht nur bei Pokemon20021 schief und ich kann mir weitere Tests sparen.
 
Mache mal bitte ein "grep self bin/VR9/busybox" (das sollte eine Zeile "/proc/self/exe" enthalten)

Code:
grep self bin/VR9/busybox
/proc/self/fd/0
non-root must run services as himself
/proc/self/exe
SMART self-test

- - - Aktualisiert - - -

wiederhole mal bitte den Test mit "strace" ... da sollte jetzt ein "execve("/proc/self/exe")" auftauchen für das "mktemp"

Code:
strace -ff -v -x -y -s 256 -o /var/tmp/strace.out bin/VR9/busybox sh
::mktemp -d
/tmp/tmp.DsGCac
:: CTRL-D


- - - Aktualisiert - - -


Code:
# cat /var/tmp/strace.out.18030
setpgid(0, 18030)                       = 0
ioctl(10</dev/tty>, 0x80047476, 0x7fefa45c) = 0
rt_sigaction(SIGTSTP, {SIG_DFL, ~[RT_65 RT_66 RT_71 RT_72 RT_73 RT_74 RT_75 RT_80 RT_81 RT_83 RT_84 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 0}, NULL, 16) = 0
rt_sigaction(SIGTTOU, {SIG_DFL, ~[RT_65 RT_66 RT_71 RT_72 RT_73 RT_74 RT_75 RT_80 RT_81 RT_83 RT_84 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 0}, NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL, ~[RT_65 RT_66 RT_71 RT_72 RT_73 RT_74 RT_75 RT_80 RT_81 RT_83 RT_84 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 0}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[RT_65 RT_66 RT_71 RT_72 RT_73 RT_74 RT_75 RT_80 RT_81 RT_83 RT_84 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 0}, NULL, 16) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, ~[RT_65 RT_66 RT_71 RT_72 RT_73 RT_74 RT_75 RT_80 RT_81 RT_83 RT_84 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 0}, NULL, 16) = 0
execve("/proc/self/exe", ["mktemp", "-d"], ["DISABLE_WLAN=0", "ANNEX_TEST=0", "CONFIG_WLAN_RADIOSENSOR=y", "CONFIG_WLAN=y", "CONFIG_USB_STORAGE_USERS=n", "CONFIG_TIMERCONTROL=y", "CONFIG_FON_HD=y", "CONFIG_BETA_RELEASE=1", "CONFIG_WLAN_TXPOWER=y", "CONFIG_VPN_CERTSRV=n", "CONFIG_UTF8_FULL=y", "CONFIG_USB_HOST_AVM=n", "CONFIG_PERL=n", "CONFIG_LTE=n", "CONFIG_LFS=y", "CONFIG_I2C=n", "CONFIG_FON_IPPHONE=y", "CONFIG_EWETEL_SMARTMETER=n", "CONFIG_AB_COUNT=2", "CONFIG_WLAN_OPENWIFI=n", "CONFIG_UDEV=y", "CONFIG_T38=y", "CONFIG_ONLINEHELP_URL=https://help.avm.de/fritzbox.php?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_NFS_CLI=n", "CONFIG_JFFS2=n", "CONFIG_CAPI_NT=y", "CONFIG_ATA_NOPASSTHROUGH=n", "USER=root", "LTE_LIFETEST=0", "CONFIG_USB_TETHERING=y", "CONFIG_STOREUSRCFG=y", "CONFIG_NFS=n", "CONFIG_LED_EVENTS=y", "CONFIG_KIDS_CONTENT=n", "CONFIG_CODECS_IN_PCMROUTER=y", "STATUS_TEST=0", "USB_HOST_TEST=0", "CONFIG_YAFFS2=y", "CONFIG_WLAN_ATH_NM_MAGPIE=n", "CONFIG_UBIK2=n", "CONFIG_SQLITE=y", "CONFIG_NEUERUL=y", "CONFIG_CAPI_XILINX=y", "prevlevel=N", "TFTP_SERVER=192.168.178.20", "CONFIG_WEBGUI_PASS=n", "CONFIG_FONGUI2=y", "CONFIG_DSL_UR8=n", "CONFIG_CONFIGD=y", "CONFIG_CHRONY=y", "SHLVL=5", "OLDPWD=/var/media/ftp/USB-Disk-01/download", "DSL_ECHO_TEST=0", "CONFIG_WLAN_WDS_NO_SLAVE=n", "CONFIG_USB=n", "CONFIG_TAM_ONRAM=n", "CONFIG_SQLITE_VIDEO=y", "CONFIG_GPS=n", "CONFIG_FTP=y", "CONFIG_FONQUALITY=y", "HOME=/", "WLAN_TEST=0", "GCOV_PREFIX=/var/gcov", "OEM=avm", "CONFIG_VDSL=y", "CONFIG_PRODUKT_NAME=FRITZ!Box 7490", "CONFIG_NCURSES=n", "CONFIG_MULTI_COUNTRY=n", "CONFIG_ENVIRONMENT_PATH=/proc/sys/urlader", "CONFIG_USB_HOST_TI=n", "CONFIG_DECT_NO_EMISSION=y", "CONFIG_DECT_AUDIOD=y", "ethaddr=C8:0E:14:12:34:56", "DSLMODE=0", "CONFIG_SWAP=n", "CONFIG_PROV_DEFAULT=n", "CONFIG_NTFS=y", "CONFIG_LED_NO_DSL_LED=y", "CONFIG_HOME_AUTO=y", "CONFIG_AVMIPC_REMOTE_IP=", "CONFIG_ASSIST=y", "CONFIG_MANUAL_URL=https://assets.avm.de/manual/?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_SUBVERSION=-41222", "CONFIG_VERSION=06.69", "CONFIG_USB_STORAGE=y", "CONFIG_USB_INTERNAL_HUB=n", "CONFIG_DIAGNOSE_LEVEL=0", "CONFIG_CAPI_POTS=y", "HWRevision_ATA=1", "runlevel=S", "PS1=::", "CONFIG_WEBSRV=y", "CONFIG_USB_XHCI=y", "CONFIG_SAMBA=y", "WLAN_CAL=0", "CONFIG_BUILDNUMBER=41222", "CONFIG_RELEASE=2", "CONFIG_DECT_MONI_EX=y", "CONFIG_BLUETOOTH_CTP=n", "Language_is_default=yes", "CONFIG_ROMSIZE=0-sflash_size=1MB-nand_size=512MB", "CONFIG_SERVICEPORTAL_URL=https://www.avm.de/fritzbox-service-portal.php?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_PRODUKT=Fritz_Box_HW185", "CONFIG_FLASH_DOUBLE=y", "CONFIG_FIRMWARE_URL=https://www.avm.de/fritzbox-firmware-update.php?hardware=185&oem=avm&language=de&country=049", "CONFIG_DECT_FW_ULE=n", "HWRevision=185", "HWRevision_BitFileCount=", "ANNEX=B", "CONFIG_XILINX=y", "CONFIG_VERSION_MAJOR=113", "CONFIG_TR064=y", "CONFIG_NO_EXTENDED_CODECS=n", "CONFIG_MAILD=y", "CONFIG_BUTTON=y", "CONFIG_ACCESSORY_URL=https://www.avm.de/fritzbox_apps.php?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_WLAN_ATH_NM_COMBO=n", "CONFIG_ONLINEHELP=y", "CONFIG_NQOS=y", "CONFIG_MEDIASRV_MOUNT=n", "CONFIG_FIBER=n", "CONFIG_DOCSIS_PCD_NO_REBOOT=n", "CONFIG_CXX=n", "CONFIG_BOXLOWRESSOURCES=n", "Country_is_default=yes", "Recover_was_here=", "CONFIG_VPN=y", "CONFIG_USB_PRINT_SERV=y", "CONFIG_GDB=n", "sflash_size=1024KB", "CONFIG_UPNP=y", "CONFIG_ETH_COUNT=4", "POTSCALL=0", "CONFIG_WEBDAV=y", "CONFIG_USB_LTE=n", "CONFIG_CAPI=y", "TERM=vt102", "CONFIG_LABOR_ID_NAME=BETA", "CONFIG_WLAN_STANDALONE_MODE=n", "CONFIG_WLAN_GUEST=y", "CONFIG_TR069=y", "CONFIG_MAILER=n", "CONFIG_DSL_2DP=y", "CONFIG_WLAN_WEATHER_CAC=n", "CONFIG_USB_GSM=y", "CONFIG_PLUGINV2=n", "CONFIG_PLC_DETECTION=y", "CONFIG_ONLINEPB=y", "CONFIG_FAXSEND=y", "CONFIG_DECT_HOME_HANFUN=y", "CONFIG_CDROM_FALLBACK=n", "nor_size=0MB", "CONFIG_WLAN_WDS=n", "CONFIG_USB_GSM_VOICE=y", "CONFIG_FHEM=n", "CONFIG_DECT=y", "PATH=/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161205/bin/VR9", "CONFIG_WLAN_1130TNET=n", "CONFIG_TELEKOM_KOFFER=n", "CONFIG_RAMDISK=n", "CONFIG_NAND=y", "CONFIG_MTD_MAILSEND=y", "CONFIG_INSTALL_TYPE=mips34_512MB_xilinx_vdsl_dect446_4geth_2ab_isdn_nt_te_pots_2usb_host_wlan11n_27490", "CONFIG_FAXSUPPORT=y", "CONFIG_DSL_BONDING=n", "CONFIG_DECT_PICTURED=y", "CONFIG_CAPI_UBIK=n", "enable_ata=1", "CONFIG_WLAN_MADWIFI=y", "CONFIG_WLAN_ATH_NM_PCI=n", "CONFIG_SRTP=n", "CONFIG_QOS_METER=y", "CONFIG_MULTI_LANGUAGE=n", "CONFIG_IGD=y", "CONFIG_HOME_AUTO_NET=y", "CONFIG_DECT_HOME=y", "CONFIG_CONFIGSPACE_ONNAND=y", "CONFIG_WLAN_WMM=y", "CONFIG_UNIQUE_PASSWD=n", "CONFIG_PLUGINV2_WEBCM_INTERPRETER=n", "CONFIG_OEM_DEFAULT=avm", "CONFIG_MEDIASRV=y", "CONFIG_FAX2MAIL=y", "CONFIG_EXT2=y", "CONFIG_DECT_ONOFF=n", "CONFIG_DECT_14446=y", "nand_size=512MB", "CAPISERV_TEST=0", "CONFIG_MYFRITZ=y", "CONFIG_HOMEI2C=n", "CONFIG_EXT3=y", "CONFIG_ERR_FEEDBACK=y", "CONFIG_BOX_FEEDBACK=y", "CONFIG_BASIS=y", "CONFIG_AUDIO=n", "CONFIG_ATA=y", "CONFIG_WLAN_1350TNET=n", "CONFIG_VOIP_ENUM=n", "CONFIG_VLYNQ=n", "CONFIG_URLADER_UPDATE=n", "CONFIG_SQLITE_BILDER=y", "CONFIG_IPV6=y", "CONFIG_ECO=y", "CONFIG_DSL_MULTI_ANNEX=n", "CONFIG_USB_HOST_INTERNAL=n", "CONFIG_STRACE=y", "CONFIG_LOGD=n", "CONFIG_INETD=y", "CONFIG_DOCSIS_MODEM=n", "SHELL=/bin/sh", "CONFIG_WLAN_IPTV=y", "CONFIG_WLAN_EACS=y", "CONFIG_VOL_COUNTER=y", "CONFIG_UTF8=y", "CONFIG_USB_WLAN_AUTH=y", "CONFIG_SPEEDSTEP=n", "CONFIG_REMOTE_HTTPS=y", "CONFIG_NOTELNETD=n", "CONFIG_MEDIACLI=y", "CONFIG_HOSTNAME=fritz.box", "CONFIG_GFAST=n", "CONFIG_GDB_FULL=n", "CONFIG_CDROM=n", "CONFIG_USB_STORAGE_SPINDOWN=y", "CONFIG_USB_HOST=y", "CONFIG_PLUGINV2_TAM=n", "CONFIG_LIB_MATH=y", "CONFIG_ECO_SYSSTAT=y", "CONFIG_DOCSIS_CLI=n", "CONFIG_AUTOUPDATE=y", "CONFIG_MAILER2=y", "CONFIG_DOCSIS=n", "CONFIG_AURA=y", "ETC_CONFIG_PATH=/etc/init.d/rc.init", "CONFIG_WLAN_TCOM_PRIO=n", "CONFIG_PLUGINV2_WLAN=n", "Language=de", "CONFIG_UPDATEFEATURE_URL=https://www.avm.de/fritzbox_firmware-features.php?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_WLAN_WDS2=y", "CONFIG_WLAN_HOTSPOT=y", "CONFIG_WEBCM_INTERPRETER=y", "CONFIG_SESSIONID=y", "CONFIG_MTD_RSS=y", "CONFIG_KIDS=y", "CONFIG_DECT2=y", "CONFIG_CAPI_TE=y", "CONFIG_NEWSLETTER_URL=https://www.avm.de/newsletter?hardware=185&oem=avm&language=de&country=049&version=113.06.69&subversion=41222", "CONFIG_BUILDTYPE=1001", "CONFIG_WLAN_WPS=y", "CONFIG_WEBUSB=y", "CONFIG_SOCAT=n", "CONFIG_LABOR_DSL=n", "CONFIG_DECT_MONI=y", "CONFIG_ANNEX=B", "PWD=/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740", "CONFIG_PLC=n", "CONFIG_MINI=n", "CONFIG_LINEARTV=n", "CONFIG_DSL_VENDORID=", "Country=049", "CONFIG_WLAN_GREEN=y", "CONFIG_VLYNQ0=0", "CONFIG_TAM_MODE=1", "CONFIG_ETH_GBIT=y", "GCOV_PREFIX_STRIP=1", "TZ=CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "CONFIG_WLAN_SAVEMEM=n", "CONFIG_WLAN_BRCM=n", "CONFIG_VLYNQ1=0", "CONFIG_PPA=y", "CONFIG_MTD_MAIL=y", "CONFIG_GDB_SERVER=n", "CONFIG_FONBOOK2=y", "CONFIG_CAPI_MIPS=n", "FINALIZE=0", "OEM_DEFAULT_INDEX=", "CONFIG_WLAN_ATH_NM_USB=n", "CONFIG_WLAN_ATH_NM_OFFLOAD=y", "CONFIG_TAM=y", "CONFIG_SPEECH_FEEDBACK=y", "CONFIG_SDK=n", "CONFIG_NFS_SRV=n", "CONFIG_NAS=y", "CONFIG_MORPHSTICK=n", "CONFIG_LUA=y", "CONFIG_LLTD=n", "CONFIG_BLUETOOTH=n", "CONFIG_ATA_FULL=n", "CONFIG_RAMSIZE=256", "CONFIG_LIBZ=y", "CONFIG_IPTV_4THOME=y", "CONFIG_FON=y", "CONFIG_DSL=y", "CONFIG_DECT_CATIQ20=n", "HWSubRevision=5"]) = 0
brk(0)                                  = 0x527000
brk(0x527460)                           = 0x527460
set_thread_area(0x52e440)               = 0
ioctl(0</dev/pts/0>, TIOCNXCL, {c_iflags=0x100, c_oflags=0x1805, c_cflags=0xbf, c_lflags=0xb3b, c_line=0, c_cc="\x03\x1c\x08\x15\x01\x00\x00\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x04\x00\x00\x00\x00\x00\x00"}) = 0
ioctl(1</dev/pts/0>, TIOCNXCL, {c_iflags=0x100, c_oflags=0x1805, c_cflags=0xbf, c_lflags=0xb3b, c_line=0, c_cc="\x03\x1c\x08\x15\x01\x00\x00\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x04\x00\x00\x00\x00\x00\x00"}) = 0
getuid()                                = 0
brk(0x528460)                           = 0x528460
brk(0x529000)                           = 0x529000
open("/dev/urandom", O_RDONLY)          = 3
read(3</dev/urandom>, "\xd7\x50\xda\x1c\x3e\x7e", 6) = 6
close(3</dev/urandom>)                  = 0
mkdir("/tmp/tmp.DsGCac", 0700)          = 0
write(1</dev/pts/0>, "/tmp/tmp.DsGCac\n", 16) = 16
exit_group(0)                           = ?
+++ exited with 0 +++
 
Zuletzt bearbeitet:
Und dann funktioniert die Signatur-Prüfung immer noch nicht? Das kann ja jetzt nicht mehr am "mktemp" liegen.
 
Da ich mich mit der Console und den Berechtigungen nicht so auskenne, mache ich dies mit Totalcommander (FTP) unter W10 und der dortigen Bash. Dabei setze ich alles in VR9 185 und darüber auf "777" und mache auch ein neues dir unter var/media/ftp auf.
@Pokemon ... das noexec Prob auf den Sticks hast Du noch in Erinnerung? -nur falls relevant-
LG
 
Und dann funktioniert die Signatur-Prüfung immer noch nicht? Das kann ja jetzt nicht mehr am "mktemp" liegen.

Code:
# MODFS_DEBUG_SHELL=1 ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
./modfs: line 2632: mkdir: not found
./modfs: line 2632: ln: not found
respawn script with custom BusyBox shell, SHLVL=5
/var/media/ftp/SanDisk-UltraFit-01/download/modfs-0.3.5-240920161740/bin/185/busybox sh ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
Using debug mode with a 64 KB buffer
Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.69-41222

Die Angabe einer Datei nach dem 'update'-Parameter unterbindet jede Versionprüfung.
Somit ist jeder selbst dafür zuständig, die Kompatibilität der vorhandenen Einstellungen
mit dem verwendeten System sicherzustellen, speziell wenn ein Downgrade ausgeführt wurde
oder ggf. die 'Werkseinstellungen' wiederherzustellen.

Die angegebene Datei '/var/media/ftp/SanDisk-UltraFit-01/download/modfs-0.3.5-240920161740/FRITZ.Box_7490_Labor.113.06.69-41222.image' wird als Quelle für die Aktualisierung genutzt.
[COLOR=#ee82ee]Überprüfen der Signatur der geladenen Datei ... übersprungen[/COLOR]
Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Entpacken des root-Dateisystems für die Modifikationen ... OK

Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.
 
Kurzer Test der busybox v1.24.2 (2016-09-24 17:17:47 CEST)
Code:
deepbase # echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin
deepbase # ./busybox env -i PATH= ./busybox ash
/var/tmp # echo $PATH

/var/tmp # mktemp
/tmp/tmp.C31AH9

:rock: Top
 
Zuletzt bearbeitet:
Da klappt ja schon etwas beim "respawn" nicht, wenn gleich am Beginn "mkdir" und "ln" nicht gefunden werden.

Vielleicht braucht die Box mal einen Neustart? Das sollten ja jetzt die Kommandos aus dem Zweig "if [ x"$MODFS_RUN_SHELL" != x"1" ]; then" sein und wenn die am Beginn nicht funktionieren, dann stimmt es ja schon hier nicht.

EDIT: Ich habe den Verdacht, Du hast da noch eine Instanz von "busybox sh" zusätzlich laufen von einem der vorhergehenden Tests ... normal wäre SHLVL=4 direkt aus der Telnet-Session.
 
Sorry, hab gerade gesehen, dass ich noch in modfs-busybox Umgebung war
muß neu testen

- - - Aktualisiert - - -

Code:
# MODFS_DEBUG_SHELL=1 ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
respawn script with custom BusyBox shell, SHLVL=4
/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/bin/185/busybox sh ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
Using debug mode with a 64 KB buffer
Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.69-41222

Die Angabe einer Datei nach dem 'update'-Parameter unterbindet jede Versionprüfung.
Somit ist jeder selbst dafür zuständig, die Kompatibilität der vorhandenen Einstellungen
mit dem verwendeten System sicherzustellen, speziell wenn ein Downgrade ausgeführt wurde
oder ggf. die 'Werkseinstellungen' wiederherzustellen.

Die angegebene Datei '/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/FRITZ.Box_7490_Labor.113.06.69-41222.image' wird als Quelle für die Aktualisierung genutzt.
[COLOR=#ff0000]Überprüfen der Signatur der geladenen Datei ... Fehler
[/COLOR]#

- - - Aktualisiert - - -

Code:
# cat /var/tmp/modfs_debug_scripts.log
SNIP 
[COLOR=#ff0000]+ mktemp -d
mktemp: applet not found
[/COLOR]+ eval n=;[ -z $n ] || rmdir $n
+ n=
+ [ -z ]
[COLOR=#ff0000] + mktemp -d
mktemp: applet not found
+ tmp=
[/COLOR]+ [ 1 -eq 127 ]

- - - Aktualisiert - - -

Code:
# showshringbuf modfs
2016-09-24 19:44:37.107 - modfs: starting modfs script version 0.3.5-240920161205
2016-09-24 19:44:37.125 - modfs: script=./modfs
2016-09-24 19:44:37.145 - modfs: using language de
2016-09-24 19:44:37.164 - modfs: PATH=/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/bin/185
2016-09-24 19:44:37.181 - modfs: SHELL=/var/run/modfs/sh
2016-09-24 19:44:37.198 - modfs: SHLVL=5
2016-09-24 19:44:37.227 - modfs: BusyBox: BusyBox v1.24.2 (2016-04-02 23:18:36 CEST) multi-call binary.
2016-09-24 19:44:37.252 - modfs: using temporary file list from /var/tmp/19285_filelist_1474739077
2016-09-24 19:44:37.270 - modfs: cleanup trap set
2016-09-24 19:44:37.287 - modfs: invoked with: update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:44:37.307 - modfs: noversioncheck=1, update_file_provided=1
2016-09-24 19:44:37.325 - modfs: firmware_update_file=./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:44:37.352 - check_prerequisites: starting checks
2016-09-24 19:44:37.401 - progress: mode=1, msg=Ermitteln der Hardware-Version ...
2016-09-24 19:44:37.426 - check_prerequisites: hwrev=185
2016-09-24 19:44:37.474 - progress: mode=3, msg= OK
2016-09-24 19:44:37.524 - progress: mode=1, msg=Prüfen, ob die Hardware-Version unterstützt wird ...
2016-09-24 19:44:37.544 - check_prerequisites: supported hardware revision
2016-09-24 19:44:37.594 - progress: mode=3, msg= OK
2016-09-24 19:44:37.643 - progress: mode=1, msg=Suchen der Einstellung zur Umschaltung auf das alternative System ...
2016-09-24 19:44:37.668 - check_prerequisites: system switch value is 0
2016-09-24 19:44:37.717 - progress: mode=3, msg= OK
2016-09-24 19:44:37.767 - progress: mode=1, msg=Prüfen der aktuell zu startenden Systemversion ...
2016-09-24 19:44:37.868 - progress: mode=3, msg= OK
2016-09-24 19:44:37.916 - progress: mode=1, msg=Suchen der aktuellen Kernel-Partition ...
2016-09-24 19:44:37.941 - check_prerequisites: kernel device is /dev/mtdblock0
2016-09-24 19:44:37.989 - progress: mode=3, msg= OK
2016-09-24 19:44:38.038 - progress: mode=1, msg=Suchen der alternativen Kernel-Partition ...
2016-09-24 19:44:38.063 - check_prerequisites: alternative kernel device is /dev/mtdblock2
2016-09-24 19:44:38.112 - progress: mode=3, msg= OK
2016-09-24 19:44:38.160 - progress: mode=1, msg=Vergleich der Systeme in den Kernel-Partitionen ...
2016-09-24 19:44:38.208 - progress: mode=3, msg= übersprungen
2016-09-24 19:44:38.257 - progress: mode=1, msg=Suchen der aktuellen Dateisystem-Partition ...
2016-09-24 19:44:38.282 - check_prerequisites: filesystem device is /dev/mtdblock1
2016-09-24 19:44:38.330 - progress: mode=3, msg= OK
2016-09-24 19:44:38.379 - progress: mode=1, msg=Suchen der alternativen Dateisystem-Partition ...
2016-09-24 19:44:38.404 - check_prerequisites: alternative filesystem device is /dev/mtdblock3
2016-09-24 19:44:38.453 - progress: mode=3, msg= OK
2016-09-24 19:44:38.502 - progress: mode=1, msg=Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ...
2016-09-24 19:44:38.527 - check_free_tmpfs: wanted=25165824, needed=10485760
2016-09-24 19:44:38.553 - check_free_tmpfs: exiting, rc=0
2016-09-24 19:44:38.602 - progress: mode=3, msg= OK
2016-09-24 19:44:38.653 - progress: mode=1, msg=Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ...
2016-09-24 19:44:38.676 - find_free_storage_space: needed=140509184, accept=
2016-09-24 19:44:38.789 - get_nand_mountpoint: location=/var/media/ftp
2016-09-24 19:44:38.816 - check_free_nand: size=140509184, nand=/var/media/ftp, free=74772480
2016-09-24 19:44:38.850 - check_space: needed=140509184
2016-09-24 19:44:38.991 - get_possible_usb_mountpoints: on=/var/media/ftp/USB-Stick-01
2016-09-24 19:44:39.029 - get_possible_usb_mountpoints: count=1
2016-09-24 19:44:39.049 - check_space:  /var/media/ftp/USB-Stick-01:87279340K
2016-09-24 19:44:39.069 - find_free_storage_space:   /var/media/ftp/USB-Stick-01:87279340K
2016-09-24 19:44:39.087 - find_free_storage_space: exiting, rc=0
2016-09-24 19:44:39.140 - progress: mode=3, msg= OK
2016-09-24 19:44:39.158 - check_prerequisites: exiting, rc=0
2016-09-24 19:44:39.600 - modfs: source=file_update
2016-09-24 19:44:39.625 - modfs: firmware update file=./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:44:39.684 - progress: mode=3, msg=Die angegebene Datei '/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/FRITZ.Box_7490_Labor.113.06.69-41222.image' wird als Quelle für die Aktualisierung genutzt.
2016-09-24 19:44:39.706 - find_free_space: wanted=100M, order=tmpfs nand storage
2016-09-24 19:44:39.730 - check_free_tmpfs: wanted=104857600, needed=104857600
2016-09-24 19:44:39.756 - check_free_tmpfs: exiting, rc=0
2016-09-24 19:44:39.774 - find_free_space: tmpfs=/var/tmp
2016-09-24 19:44:39.792 - find_free_space: exiting, rc=0
2016-09-24 19:44:39.811 - get_working_directory: /var/tmp
2016-09-24 19:44:39.830 - modfs: working directory=/var/tmp
2016-09-24 19:44:39.859 - modfs: image directory=/var/tmp/1474739079
2016-09-24 19:44:39.877 - try_to_check_integrity: target=/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:44:39.927 - progress: mode=1, msg=Überprüfen der Signatur der geladenen Datei ...
[COLOR=#ff0000]2016-09-24 19:44:40.290 - progress: mode=3, msg= Fehler
2016-09-24 19:44:40.308 - try_to_check_integrity: integrity check failed, error code was 132
2016-09-24 19:44:40.326 - try_to_check_integrity: exiting, rc=205
[/COLOR]2016-09-24 19:44:40.344 - cleanup: running cleanup from file /var/tmp/19285_filelist_1474739077
2016-09-24 19:44:40.362 - /var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161205/bin/185/busybox rm -r /var/tmp/1474739079
#
 
Danke!
kaum macht man es richtig, geht es ;-)

Code:
# MODFS_DEBUG_SHELL=1 ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
respawn script with custom BusyBox shell, SHLVL=4
/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740/bin/185/busybox sh ./modfs update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
Using debug mode with a 64 KB buffer
Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.69-41222

Die Angabe einer Datei nach dem 'update'-Parameter unterbindet jede Versionprüfung.
Somit ist jeder selbst dafür zuständig, die Kompatibilität der vorhandenen Einstellungen
mit dem verwendeten System sicherzustellen, speziell wenn ein Downgrade ausgeführt wurde
oder ggf. die 'Werkseinstellungen' wiederherzustellen.

[COLOR=#0000ff]Die angegebene Datei '/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740/FRITZ.Box_7490_Labor.113.06.69-41222.image' wird als Quelle für die Aktualisierung genutzt.
Überprüfen der Signatur der geladenen Datei ... OK
[/COLOR]Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Entpacken des root-Dateisystems für die Modifikationen ... OK

Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.

Verzeichnis des root-Dateisystems : /var/media/ftp/USB-Disk-01/1474739899/squashfs-root


Die Modifikation 'own files' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'own files' mit folgender Beschreibung
Programme hinzufügen/ersetzen

- - - Aktualisiert - - -

Code:
# showshringbuf modfs
2016-09-24 19:58:12.126 - modfs: starting modfs script version 0.3.5-240920161740
2016-09-24 19:58:12.143 - modfs: script=./modfs
2016-09-24 19:58:12.163 - modfs: using language de
2016-09-24 19:58:12.182 - modfs: PATH=/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740/bin/185
2016-09-24 19:58:12.199 - modfs: SHELL=/var/run/modfs/sh
2016-09-24 19:58:12.217 - modfs: SHLVL=5
2016-09-24 19:58:12.249 - modfs: BusyBox: BusyBox v1.24.2 (2016-09-24 17:17:47 CEST) multi-call binary.
2016-09-24 19:58:12.275 - modfs: using temporary file list from /var/tmp/20420_filelist_1474739892
2016-09-24 19:58:12.293 - modfs: cleanup trap set
2016-09-24 19:58:12.310 - modfs: invoked with: update ./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:58:12.330 - modfs: noversioncheck=1, update_file_provided=1
2016-09-24 19:58:12.348 - modfs: firmware_update_file=./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:58:12.375 - check_prerequisites: starting checks
2016-09-24 19:58:12.425 - progress: mode=1, msg=Ermitteln der Hardware-Version ...
2016-09-24 19:58:12.449 - check_prerequisites: hwrev=185
2016-09-24 19:58:12.499 - progress: mode=3, msg= OK
2016-09-24 19:58:12.548 - progress: mode=1, msg=Prüfen, ob die Hardware-Version unterstützt wird ...
2016-09-24 19:58:12.569 - check_prerequisites: supported hardware revision
2016-09-24 19:58:12.618 - progress: mode=3, msg= OK
2016-09-24 19:58:12.669 - progress: mode=1, msg=Suchen der Einstellung zur Umschaltung auf das alternative System ...
2016-09-24 19:58:12.695 - check_prerequisites: system switch value is 0
2016-09-24 19:58:12.744 - progress: mode=3, msg= OK
2016-09-24 19:58:12.794 - progress: mode=1, msg=Prüfen der aktuell zu startenden Systemversion ...
2016-09-24 19:58:12.896 - progress: mode=3, msg= OK
2016-09-24 19:58:12.946 - progress: mode=1, msg=Suchen der aktuellen Kernel-Partition ...
2016-09-24 19:58:12.971 - check_prerequisites: kernel device is /dev/mtdblock0
2016-09-24 19:58:13.021 - progress: mode=3, msg= OK
2016-09-24 19:58:13.070 - progress: mode=1, msg=Suchen der alternativen Kernel-Partition ...
2016-09-24 19:58:13.096 - check_prerequisites: alternative kernel device is /dev/mtdblock2
2016-09-24 19:58:13.145 - progress: mode=3, msg= OK
2016-09-24 19:58:13.195 - progress: mode=1, msg=Vergleich der Systeme in den Kernel-Partitionen ...
2016-09-24 19:58:13.244 - progress: mode=3, msg= übersprungen
2016-09-24 19:58:13.294 - progress: mode=1, msg=Suchen der aktuellen Dateisystem-Partition ...
2016-09-24 19:58:13.319 - check_prerequisites: filesystem device is /dev/mtdblock1
2016-09-24 19:58:13.368 - progress: mode=3, msg= OK
2016-09-24 19:58:13.418 - progress: mode=1, msg=Suchen der alternativen Dateisystem-Partition ...
2016-09-24 19:58:13.443 - check_prerequisites: alternative filesystem device is /dev/mtdblock3
2016-09-24 19:58:13.492 - progress: mode=3, msg= OK
2016-09-24 19:58:13.542 - progress: mode=1, msg=Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ...
2016-09-24 19:58:13.567 - check_free_tmpfs: wanted=25165824, needed=10485760
2016-09-24 19:58:13.594 - check_free_tmpfs: exiting, rc=0
2016-09-24 19:58:13.643 - progress: mode=3, msg= OK
2016-09-24 19:58:13.693 - progress: mode=1, msg=Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ...
2016-09-24 19:58:13.717 - find_free_storage_space: needed=140509184, accept=
2016-09-24 19:58:13.833 - get_nand_mountpoint: location=/var/media/ftp
2016-09-24 19:58:13.861 - check_free_nand: size=140509184, nand=/var/media/ftp, free=74772480
2016-09-24 19:58:13.895 - check_space: needed=140509184
2016-09-24 19:58:14.039 - get_possible_usb_mountpoints: on=/var/media/ftp/USB-Disk-01
2016-09-24 19:58:14.079 - get_possible_usb_mountpoints: count=1
2016-09-24 19:58:14.098 - check_space:  /var/media/ftp/USB-Disk-01:87279340K
2016-09-24 19:58:14.120 - find_free_storage_space:   /var/media/ftp/USB-Disk-01:87279340K
2016-09-24 19:58:14.138 - find_free_storage_space: exiting, rc=0
2016-09-24 19:58:14.188 - progress: mode=3, msg= OK
2016-09-24 19:58:14.206 - check_prerequisites: exiting, rc=0
2016-09-24 19:58:14.597 - modfs: source=file_update
2016-09-24 19:58:14.622 - modfs: firmware update file=./FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:58:14.676 - progress: mode=3, msg=Die angegebene Datei '/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740/FRITZ.Box_7490_Labor.113.06.69-41222.image' wird als Quelle für die Aktualisierung genutzt.
2016-09-24 19:58:14.697 - find_free_space: wanted=100M, order=tmpfs nand storage
2016-09-24 19:58:14.722 - check_free_tmpfs: wanted=104857600, needed=104857600
2016-09-24 19:58:14.748 - check_free_tmpfs: exiting, rc=0
2016-09-24 19:58:14.768 - find_free_space: tmpfs=/var/tmp
2016-09-24 19:58:14.787 - find_free_space: exiting, rc=0
2016-09-24 19:58:14.806 - get_working_directory: /var/tmp
2016-09-24 19:58:14.826 - modfs: working directory=/var/tmp
2016-09-24 19:58:14.852 - modfs: image directory=/var/tmp/1474739894
2016-09-24 19:58:14.870 - try_to_check_integrity: target=/var/media/ftp/USB-Disk-01/download/modfs-0.3.5-240920161740/FRITZ.Box_7490_Labor.113.06.69-41222.image
2016-09-24 19:58:14.918 - progress: mode=1, msg=Überprüfen der Signatur der geladenen Datei ...
2016-09-24 19:58:17.391 - progress: mode=3, msg= OK
2016-09-24 19:58:17.409 - try_to_check_integrity: integrity check passed
2016-09-24 19:58:17.427 - try_to_check_integrity: exiting, rc=0

- - - Aktualisiert - - -

Code:
# cat /var/tmp/modfs_debug_scripts.log
SNIP
[COLOR=#0000ff]+ echo BusyBox v1.24.2 (2016-09-24 17:17:47 CEST) multi-call binary.[/COLOR]
+ echo PATH=/var/media/ftp/USB-Stick-01/download/modfs-0.3.5-240920161740/bin/185
SNIP
+ mktemp -d
+ eval n=/tmp/tmp.E9Ur7y;[ -z $n ] || rmdir $n
+ n=/tmp/tmp.E9Ur7y
+ [ -z /tmp/tmp.E9Ur7y ]
+ rmdir /tmp/tmp.E9Ur7y
[COLOR=#0000ff]+ mktemp -d
+ tmp=/tmp/tmp.1Fgczd[/COLOR]
+ [ 0 -eq 127 ]
+ trap rm -r "/tmp/tmp.1Fgczd" EXIT HUP INT
 
Ok, dann als Fazit das Problem, daß in Freetz die BusyBox-Konfiguration fix auf "/bin/busybox" für BUSYBOX_EXEC_PATH gesetzt wird und damit "BUSYBOX_PREFER_APPLETS" und "BUSYBOX_SH_STANDALONE" ausgehebelt werden, wenn man eine BusyBox benutzt, die nicht als "/bin/busybox" im Dateisystem existiert. Alles andere war praktisch nur Folgefehler an dieser Stelle, wobei die fehlende "openssl.cnf" auch noch als sinnvolle Lösung überbleibt.

Damit ist dann das Thema "Signaturprüfung" in "modfs" erst einmal durch und ich danke allen Testern für die Geduld und das Engagement. Es war etwas schwer zu finden - da dauert das schon mal etwas länger, so etwas einzugrenzen.

Jetzt geht es an das Einbinden der Online-Abfrage für Updates ... coming soon.

Das "Glattziehen" der Dateien in "modfs.tgz" mache ich gleich noch (da kann jetzt einiges wieder raus an Tests), dann ändert sich die Timestamp noch auf irgendetwas jenseits von heute, 21 Uhr.
 
Zuletzt bearbeitet:
Der Ball des "Dankes"

Damit ist dann das Thema "Signaturprüfung" in "modfs" erst einmal durch und ich danke allen Testern für die Geduld und das Engagement.
sei gerne zurückgespielt :D

Via PN erhalten
Code:
root@fritz:/var/mod/root# ./bin/VR9/check_signed_image /var/mod/root/modfs/7490_
06.69-rev41222_labor-freetz-devel-13934M.de_20160923-153606.image -b
Found OpenSSL 1.0.1t  3 May 2016
Check dgst command ... OK
Check rsautl command ... OK
Trying to determine the correct key now ...
Checking the public key from /etc/avm_firmware_public_key1 ... FAILED
Checking the public key from /etc/avm_firmware_public_key2 ... FAILED
Checking the public key from /etc/avm_firmware_public_key3 ... FAILED
Checking the public key from /etc/avm_firmware_public_key9 ... OK
Checking support for the used hash algorithm md5 ... OK
Verification succeeded. ...

was wohl auch geschmeidig aussieht.

Jetzt geht es an das Einbinden der Online-Abfrage für Updates ... coming soon.

Da bin ich persönlich darauf gespannt LOL. Gerade die "Inhouse-Abfrage", falls man den Link nicht kennt, wäre sehr vorteilhaft. Das Lamentieren in "Sonstige Firmware FB7490" würde dann recht schnell verstummen? falls jmd. unbedingt jedwede FW "mitnehmen" möchte. Brauchbare Labors kommen eh zumeist ein paar Tage später für jedermann zum Vorschein?
LG
 
Zuletzt bearbeitet:
Das "Glattziehen" der Dateien in "modfs.tgz" mache ich gleich noch (da kann jetzt einiges wieder raus an Tests), dann ändert sich die Timestamp noch auf irgendetwas jenseits von heute, 21 Uhr.

die neue modfs-0.3.5-240920162108 Version läuft sauber; Thanks @PeterPawn

Jetzt geht es an das Einbinden der Online-Abfrage für Updates ... coming soon.
freue mich wenn dieses Feature verfügbar ist.
 
Die eingebaute Update-Prüfung wird nur die öffentlichen Versionen berücksichtigen (wer die "Inhouse-Versionen" sucht, muß eben von Hand die Abfrage und den Download machen - das Skript (bzw. inzwischen zwei) sind ja verfügbar), denn die anderen Versionen haben einige Besonderheiten (beginnend beim ShellInABox-Zugang) und sind auch in meinen Augen nicht stabil genug, um sie jeweils sofort an "modfs" "zu verfüttern". Wer es unbedingt machen will, kann es ja weiterhin (s.o.), aber die automatische Prüfung wird sich auf offizielle Versionen beschränken.

Schon beim Versuch, die aktuelle Version bei installiertem Release bei AVM zu ermitteln (seitdem auf den Servern nicht mehr alle alten Versionen liegen, muß man ja nehmen, was man kriegt), mußte ich etwas tricksen ... im Moment wird die Hauptversionsnummer der angeblich auf der Box installierten Firmware um eins verringert in der Hoffnung, dann die letzte Release-Version als Antwort zu erhalten. Nur so konnte ich die Download-Möglichkeit für die aktuelle Version halbwegs sinnvoll beibehalten (damit kann ich ja endlich die FTP-Verzeichnisse aus den Konstanten löschen) und für die 7490 (von einer Labor-Version aus) funktioniert das auch soweit, daß ich die Angaben für die 113.06.60 kriege von AVM.

@Micha0815:
Das muß aber schon ein älteres "modfs"-Paket gewesen sein, wenn da noch OpenSSL in der Version 1.0.1t enthalten ist. Die neuen Pakete haben 1.0.2i an Bord.

Wenn da der Key mit dem Index "9" paßt, dann muß diese Prüfung auch von einem bereits modifizierten System aus erfolgen - bei AVM sind ja nur 0-2 in Benutzung und der 9 sollte bereits ein eigener Key des "Image-Produzenten" für das gerade laufende System sein. Wenn man dem soweit traut, ist alles in Ordnung und die Signaturprüfung erfüllt ihren Zweck, denn das Image sollte vom Inhaber des passenden privaten Schlüssels stammen.

EDIT: Ach Quatsch ... ich sehe gerade, daß das ja ein direkter Aufruf von "check_signed_image" war - da nimmt der natürlich das "openssl"-Binary, was zuerst im Suchpfad auftaucht und das ist gar nicht das aus dem "modfs"-Paket.
 
Schon beim Versuch, die aktuelle Version bei installiertem Release bei AVM zu ermitteln (seitdem auf den Servern nicht mehr alle alten Versionen liegen, muß man ja nehmen, was man kriegt), mußte ich etwas tricksen ... im Moment wird die Hauptversionsnummer der angeblich auf der Box installierten Firmware um eins verringert in der Hoffnung, dann die letzte Release-Version als Antwort zu erhalten. Nur so konnte ich die Download-Möglichkeit für die aktuelle Version halbwegs sinnvoll beibehalten (damit kann ich ja endlich die FTP-Verzeichnisse aus den Konstanten löschen) und für die 7490 (von einer Labor-Version aus) funktioniert das auch soweit, daß ich die Angaben für die 113.06.60 kriege von AVM.

https://raw.githubusercontent.com/PeterPawn/modfs/master/bin/VR9/check_update

Code:
mktmp()
{
    local name="$(mktemp $*)"
    if [ $? -eq 127 ]; then # mktemp is missing, emulation needed
        local dir tmp="$TMP"
        [ [COLOR=#0000ff]x[/COLOR]"$1" == "[COLOR=#0000ff]-d[/COLOR]" ] && dir=1 || dir=0
        [ [COLOR=#0000ff]x[/COLOR]"$1" == "[COLOR=#0000ff]-p[/COLOR]" ] && tmp="$2"
        [ x"$tmp" == x ] && tmp="/var/tmp"
        name="$tmp/$(date +%s)_$$"
        if [ $dir -eq 1 ]; then
            if [ -d "$name" ]; then
                name="$name_$(dd if=/dev/urandom bs=8 count=1 2>/dev/null | base64 | sed -e "s|[^A-Za-z0-9]*||g")"
            fi
            mkdir -p "$name" 2>/dev/null
        else
            touch $name 2>/dev/null
        fi
    fi
    echo "$name"
}

sollte der blau markierte Code nicht so aussehen ?
Code:
        [ [COLOR=#0000ff]x[/COLOR]"$1" == [COLOR=#0000ff]x-d[/COLOR] ] && dir=1 || dir=0
        [ [COLOR=#0000ff]x[/COLOR]"$1" == [COLOR=#0000ff]x-p[/COLOR] ] && tmp="$2"
oder
Code:
        [ "$1" == [COLOR=#0000ff]"-d[/COLOR]" ] && dir=1 || dir=0
        [ "$1" == [COLOR=#0000ff]"-p"[/COLOR] ] && tmp="$2"
übersehe ich hier etwas ?

- - - Aktualisiert - - -

Verbesserungsvorschlag für Zeile 25 https://github.com/PeterPawn/modfs/blob/master/bin/VR9/check_update#L25

Code:
# calling:                                                                                            #
#                                                                                                     #
# juis_check [-d|--debug]                                                                             #

ändern in:
Code:
# calling:                                                                                            #
#                                                                                                     #
[COLOR=#0000ff]# check_update [-d|--debug]                                                                           #
[/COLOR]
 
Zuletzt bearbeitet:
Nein, das stimmt - da fehlt das Zeichen, das gegen leere Parameter schützen soll ... fällt beim Test ohne "mktemp" dann auch auf, ist bei mir etwas schwieriger wg. der eigenen BusyBox. Unter "modfs"-Bedingungen gibt es dann ohnehin das passende "mktemp", daher fliegt in der "modfs"-Version die gesamte "mktmp"-Funktion noch raus. Aber für die andere Version (die steht unter "YourFritz/tools/juis_check") gilt der von Dir gefundene Fehler auch, da korrigiere ich den nachher noch.

Ich lasse gerade eine 06.60 nur mit dem Telnet-Mod bauen, damit ich den Download der aktuellen Version für die 06.60 ausführlich testen kann, dabei komme ich dann auch an der Stelle vorbei, wo nur die AVM-Busybox vorhanden ist.

Die Version war eigentlich auch noch nicht "reif", die hatte ich nur unmittelbar für den Beitrag eingecheckt, damit man sehen konnte, was ich mit dem "tricksen" meinte.
 
Code:
root@fritz:/var/mod/root# ./bin/VR9/check_signed_image /var/mod/root/modfs/7490_
06.69-rev41222_labor-freetz-devel-13934M.de_20160923-153606.image -b
Found OpenSSL 1.0.1t  3 May 2016
Check dgst command ... OK
Check rsautl command ... OK
Trying to determine the correct key now ...
Checking the public key from /etc/avm_firmware_public_key1 ... FAILED
Checking the public key from /etc/avm_firmware_public_key2 ... FAILED
Checking the public key from /etc/avm_firmware_public_key3 ... FAILED
Checking the public key from /etc/avm_firmware_public_key9 ... OK
Checking support for the used hash algorithm md5 ... OK
Verification succeeded. ...

Wenn da der Key mit dem Index "9" paßt, dann muß diese Prüfung auch von einem bereits modifizierten System aus erfolgen - bei AVM sind ja nur 0-2 in Benutzung und der 9 sollte bereits ein eigener Key des "Image-Produzenten" für das gerade laufende System sein. Wenn man dem soweit traut, ist alles in Ordnung und die Signaturprüfung erfüllt ihren Zweck, denn das Image sollte vom Inhaber des passenden privaten Schlüssels stammen.

Frage: könnte man das Image 7490_06.69-rev41222_labor-freetz-devel-13934M.de_20160923-153606.image (da es von der lokalen Installation als valide angesehen wird) nicht auch direkt über Web-IF einspielen ?
 
Das sollte funktionieren ... dafür gibt es das ja eigentlich in Freetz. Wenn erst einmal der öffentliche Schlüssel der "Erzeugers" in der aktuell laufenden Firmware vorhanden ist, funktioniert (bei Einhaltung der Parameter) auch die AVM-Prüfung für selbstsignierte Images.

- - - Aktualisiert - - -

So, neue Version 0.4.0 ist online.

Die Umstellung der Suche nach aktualisierten Versionen und die damit zusammenhängenden Änderungen ließen mich auf 0.4.0 gehen - einfach um es besser abzugrenzen.

Beim Aufruf von "modfs" ohne Parameter kann ja ein Download vom Hersteller für die aktuell verwendete Version stattfinden ... das klappt nicht für Labor-Versionen, aber für Release sollte es funktionieren (getestet mit 06.60, auf das nächste warten wir ja noch).

Beim Aufruf mit "update" als Parameter und ohne Dateinamen dahinter wird der AVM-Service befragt, ob es eine neuere Version gibt und der liefert dann auch gleich die richtige URL, ohne daß weiterhin die FTP-Verzeichnisse in "modfs" geführt werden müssen.

Allerdings klappt auch hier der Wechsel von einer Release-Version auf einen Labor-Zweig nicht - das dürfte beim Online-Update von AVM ähnlich sein.

Hat man allerdings erst einmal eine Labor-Version installiert, werden künftig auch weitere Labor-Versionen gefunden - sicherlich bis zum nächsten Release, wo man dann vermutlich die erste Labor-Version auch wieder manuell laden muß.

Zumindest hat sich damit die bisher bestehende Notwendigkeit, immer erst die ZIP-Datei von AVM zu laden (mit der x-ten Version des Recovery-Programms) und dann dort das Firmware-Image zu extrahieren, bevor man "modfs" benutzen kann, erst einmal erledigt.

Die "Inhouse-Versionen" werden absichtlich nicht berücksichtigt (s. irgendwo weiter oben) ... wer allerdings gerade eine solche installiert hat, kriegt natürlich von AVM auch die URLs für diese Versionen als "neu" angeboten und das gilt dann auch für die Update-Prüfung in "modfs". Will man den "Teufelskreis" der AVM-Prüfung in den verschiedenen Zweigen durchbrechen, muß man eben auch hier wieder direkt die Datei angeben, die man zuvor manuell geladen hat (ist bei AVM mit dem dateibasierten Update ja auch nicht anders).
 
die neue Version modfs-0.4.0-250920161556 läuft ohne Probleme;
besonders toll ist für mich die Online-Update-Funktion für Nutzer der Labor-Reihe,
da hier ZIP-Download entfällt.

Danke @PeterPawn.

Code:
# ./modfs update
respawn script with custom BusyBox shell, SHLVL=4
/var/media/ftp/USB-Disk-01/download/modfs-0.4.0-250920161556/bin/185/busybox sh ./modfs update
Using debug mode with a 64 KB buffer
Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: [COLOR=#0000ff]113.06.69-41137[/COLOR]

Die Auswahl des 'update'-Modus erfordert eine neuere Firmware-Version vom Hersteller.

Ermitteln der neuesten Version durch Abfrage beim Hersteller ... OK
Es wurde eine neuere Version ([COLOR=#0000ff]113.06.69-41222[/COLOR]) gefunden.
Download eines Firmware-Images für Version  vom Server des Herstellers ... OK
Überprüfen der Signatur der geladenen Datei ... OK
Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Löschen des geladenen Firmware-Images ... OK
Entpacken des root-Dateisystems für die Modifikationen ... \
 
Moin

Anmerkung/Anregung

Mit der korrigierten busybox ist bei den modfs Skripten dieses SHEBANG möglich: #!sh
...wenn also #!/bin/sh als Interpreter und PATH= (leer) ist, hagelt es wieder Fehlermeldungen...
Code:
# check_update
check_update: line 108: mktemp: not found
check_update: line 127: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 1: sed: not found
check_update: line 135: base64: not found
check_update: line 153: mktemp: not found
check_update: line 154: mktemp: not found
check_update: line 155: mktemp: not found
check_update: line 156: can't create : nonexistent directory

Ansonsten immer schön mit Interpreter aufrufen...
Code:
# sh check_update -c ; echo $?
NewVersion=109.06.30
DownloadURL=ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/firmware/deutsch/FRITZ.Box_Fon_WLAN_7360_SL.109.06.30.image
0
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.