Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Support Inhaus / LabBETA Skript zum signieren.

Lösung
So, das Script sollte nun eigentlich fertig sein!
Code:
./test --help
 Verwendung:
  ./test <Modell> <Typ> [Buildnummer]

 Beispiele:
  ./test 7530 inhaus         → lädt Inhaus-Version für 7530
  ./test 7590 labor 122809   → lädt Labor-Version für 7590 mit Build 122809

 Unterstützte Modelle:
  - 7530
  - 7590
  - 7590AX

 Typen:
  - inhaus       → wird zu Inhaus im Namen, Downloadpfad inhaus
  - labor        → wird zu LabBETA im Namen, Downloadpfad labor

 Optional:
  - Dritte Angabe (Build) kann weggelassen werden, dann wird Standard-Build 121784 verwendet.
Und es ist soweit eigentlich ein rundum sorglos Script. Bis halt auf den Fehler in dem einen Script von Peter. Und ich halt auf mein System OpenSSL 3 habe. Kann ich auch nicht das alte...
@SaMMyMaster

Code:
root@homeserver:/opt/Fritzbox-Image# wget -q -O var.tar https://download.avm.de/fritzbox/fritzbox-7530/deutschland/fritz.os/FRITZ.Box_7530-08.02.image
root@homeserver:/opt/Fritzbox-Image# ./sig.sh
Found TI checksum (0x5801ED1C) at the end of the image.
Filesystem on filesystem.image is xz compressed (4:0)
Parallel unsquashfs: Using 4 processors
15828 inodes (17014 blocks) to write


created 15039 files
created 880 directories
created 789 symlinks
created 0 devices
created 0 fifos
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
--2025-08-01 11:11:12--  https://instinto.mooo.com:1974/osprey/avm_firmware_public_key9
Resolving instinto.mooo.com (instinto.mooo.com)... 82.223.55.182
Connecting to instinto.mooo.com (instinto.mooo.com)|82.223.55.182|:1974... connected.
HTTP request sent, awaiting response... 200 OK
Length: 266 [application/octet-stream]
Saving to: ‘squashfs-root/etc/avm_firmware_public_key9’

      avm_fi   0%       0  --.-KB/savm_firmware 100%     266  --.-KB/s    in 0s     

2025-08-01 11:11:12 (51.2 MB/s) - ‘squashfs-root/etc/avm_firmware_public_key9’ saved [266/266]

avm_firmware_public_key1
avm_firmware_public_key2
avm_firmware_public_key3
avm_firmware_public_key9
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on filesystem.image, block size 65536.

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
        compressed data, compressed metadata, compressed fragments, no xattrs
        duplicates are removed
Filesystem size 31208.91 Kbytes (30.48 Mbytes)
        19.36% of uncompressed filesystem size (161207.27 Kbytes)
Inode table size 115932 bytes (113.21 Kbytes)
        21.01% of uncompressed inode table size (551765 bytes)
Directory table size 150476 bytes (146.95 Kbytes)
        34.53% of uncompressed directory table size (435796 bytes)
Number of duplicate files found 10120
Number of inodes 16714
Number of files 15044
Number of fragments 561
Number of symbolic links  790
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 880
Number of ids (unique uids + gids) 1
Number of uids 1
        root (0)
Number of gids 1
        root (0)
drwxr-xr-x root/root         0 2025-08-01 11:11 ./var/
-rwxr-xr-x root/root     17046 2024-12-20 16:46 ./var/install
-rw-r--r-- root/root        14 2024-12-20 16:46 ./var/install-features
-rwxrwxrwx root/root    698944 2024-12-20 16:46 ./var/sblupdate
-rw-r--r-- root/root        35 2024-12-20 16:46 ./var/version
-rw-r--r-- root/root      2807 2024-12-20 16:46 ./var/info.txt
drwxr-xr-x root/root         0 2025-08-01 11:11 ./var/tmp/
-rw-r--r-- root/root  31961088 2025-08-01 11:11 ./var/tmp/filesystem.image
-rw-r--r-- root/root   3319816 2024-12-20 16:46 ./var/tmp/kernel.image
-rwxrwxrwx root/root    633348 2024-12-20 16:46 ./var/tzupdate
-rw-r--r-- root/root       408 2024-12-20 16:46 ./var/content
-rwxrwxrwx root/root   3159620 2024-12-20 16:46 ./var/urladerupdate

yf_sign, version 1.0.1

Copyright (C) 2016-2021 P. Haemmerlein (peterpawn@yourfritz.de)

Licensed to you according to GPLv2 or a later version, with some additions.
Please refer to the usage screen for detailed license terms.

Found version: OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024) ... OK
Check dgst command ... OK
Check rsa command ... OK
Verify digest algorithm md5 is supported ... OK
Checking input file format ... OK
Too much end of archive markers read from input file: blocks expected=2, blocks present=20.
Input data will be truncated after last archive member.
Enter your password for the signing key (/root/.yf_signimage/image_signing.key):
Checking password for the private key file ... OK
Signing the image hash (md5) with RSA key from /root/.yf_signimage/image_signing.key ... OK
Copying signed image to STDOUT ... OK
drwxr-xr-x root/root         0 2025-08-01 11:11 ./var/
-rwxr-xr-x root/root     17046 2024-12-20 16:46 ./var/install
-rw-r--r-- root/root        14 2024-12-20 16:46 ./var/install-features
-rwxrwxrwx root/root    698944 2024-12-20 16:46 ./var/sblupdate
-rw-r--r-- root/root        35 2024-12-20 16:46 ./var/version
-rw-r--r-- root/root      2807 2024-12-20 16:46 ./var/info.txt
drwxr-xr-x root/root         0 2025-08-01 11:11 ./var/tmp/
-rw-r--r-- root/root  31961088 2025-08-01 11:11 ./var/tmp/filesystem.image
-rw-r--r-- root/root   3319816 2024-12-20 16:46 ./var/tmp/kernel.image
-rwxrwxrwx root/root    633348 2024-12-20 16:46 ./var/tzupdate
-rw-r--r-- root/root       408 2024-12-20 16:46 ./var/content
-rwxrwxrwx root/root   3159620 2024-12-20 16:46 ./var/urladerupdate
-rwxr-xr-x root/root       128 2025-08-01 11:11 ./var/signature
root@homeserver:/opt/Fritzbox-Image#
ü
 
Das es bei dir läuft ist mir klar. Da du alles ja hast. Es geht darum das ich versucht habe ein rundum sorglos Script zuschreiben, das alles macht. So das der User sich dann selber ein Image erstellen kann. Aber wenn die hälfte fehlt. Bringt das ja nichts. Weil alleine, wenn man sein eigenen Key drin hat, kann man deine nicht mehr nutzen.

Da du ja deine .yf_signimage nicht dabei packst.

Und wenn man seine eigenen benutzen will fehlt mir halt der teil wie ich die Keys erstelle. Ich will mich doch jetzt nicht erst noch da einlesen. Wie und was ich genau machen soll das er mir das mit pw erstellt.


Ein Script das alles dann macht! Ohne wenn und aber ;-)
 
Wenn du die Fehlermeldung richtig liest, siehst du das irgendwas mit deinem Passwort nicht stimmt und nicht das es an fehlenden Dateien liegt.
Ein Script das alles dann macht! Ohne wenn und aber ;-)
Das erste sollte ein in-memory.image sein und die anderen können dann signiert werden. Auch brauchst du nur 1x ein Schlüsselpaar erzeugen und nicht bei jedem Image, sonst müsstest du jedes Image als in-memory erstellen. Den git vom PeterPawn reicht auch 1x zu clonen und nicht bei jedem Image. Deshalb hab ich eigentlich mit meinem Script zum signieren alles was nötig ist. Wenn ich ein in-memory.image möchte nehme ich das
 
So, das Script sollte nun eigentlich fertig sein!
Code:
./test --help
 Verwendung:
  ./test <Modell> <Typ> [Buildnummer]

 Beispiele:
  ./test 7530 inhaus         → lädt Inhaus-Version für 7530
  ./test 7590 labor 122809   → lädt Labor-Version für 7590 mit Build 122809

 Unterstützte Modelle:
  - 7530
  - 7590
  - 7590AX

 Typen:
  - inhaus       → wird zu Inhaus im Namen, Downloadpfad inhaus
  - labor        → wird zu LabBETA im Namen, Downloadpfad labor

 Optional:
  - Dritte Angabe (Build) kann weggelassen werden, dann wird Standard-Build 121784 verwendet.
Und es ist soweit eigentlich ein rundum sorglos Script. Bis halt auf den Fehler in dem einen Script von Peter. Und ich halt auf mein System OpenSSL 3 habe. Kann ich auch nicht das alte Script nutzen um ein Test hier zu machen.
Das einzige was man im script noch ändern muss ist das hier
Code:
VERSION="08.10"
RELEASECYCLE="Smart24P2"

Code:
./test 7590AX labor 123150
Found TI checksum (0x51D97E1A) at the end of the image.
Filesystem on filesystem.image is xz compressed (4:0)
Parallel unsquashfs: Using 20 processors
14151 inodes (15858 blocks) to write


created 13311 files
created 919 directories
created 840 symlinks
created 0 devices
created 0 fifos
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
--2025-08-02 08:31:15--  https://instinto.mooo.com:1974/osprey/avm_firmware_public_key9
Auflösen des Hostnamens instinto.mooo.com (instinto.mooo.com)… 82.223.55.182
Verbindungsaufbau zu instinto.mooo.com (instinto.mooo.com)|82.223.55.182|:1974 … verbunden.
WARNUNG: Das Zertifikat von instinto.mooo.com kann nicht geprüft werden, ausgestellt von »CN=R10,O=Let's Encrypt,C=US«:.
  Die Autorität des Ausstellers des Zertifikates kann lokal nicht geprüft werden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 266 [application/octet-stream]
Wird in »squashfs-root/etc/avm_firmware_public_key9« gespeichert.

avm_firmware_public_key9                                      100%[=================================================================================================================================================>]     266  --.-KB/s    in 0s    

2025-08-02 08:31:16 (87,2 MB/s) - »squashfs-root/etc/avm_firmware_public_key9« gespeichert [266/266]

Parallel mksquashfs: Using 20 processors
Creating 4.0 filesystem on filesystem.image, block size 65536.

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
    compressed data, compressed metadata, compressed fragments, no xattrs
    duplicates are removed
Filesystem size 35504.37 Kbytes (34.67 Mbytes)
    18.51% of uncompressed filesystem size (191779.99 Kbytes)
Inode table size 108376 bytes (105.84 Kbytes)
    21.57% of uncompressed inode table size (502532 bytes)
Directory table size 141762 bytes (138.44 Kbytes)
    35.78% of uncompressed directory table size (396225 bytes)
Number of duplicate files found 8893
Number of inodes 15076
Number of files 13316
Number of fragments 559
Number of symbolic links  841
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 919
Number of ids (unique uids + gids) 1
Number of uids 1
    root (0)
Number of gids 1
    root (0)
drwxr-xr-x MeinName/MeinName       0 2025-08-02 08:31 ./var/
-rw-r--r-- MeinName/MeinName      42 2025-07-26 02:22 ./var/version
-rw-r--r-- MeinName/MeinName      14 2025-07-26 02:22 ./var/install-features
drwxr-xr-x MeinName/MeinName       0 2025-08-02 08:31 ./var/tmp/
-rw-r--r-- MeinName/MeinName 36360192 2025-08-02 08:31 ./var/tmp/filesystem.image
-rwxr-xr-x MeinName/MeinName  6518536 2025-07-26 02:22 ./var/tmp/kernel.image
-rw-r--r-- MeinName/MeinName     2807 2025-07-26 02:22 ./var/info.txt
-rw-r--r-- MeinName/MeinName      407 2025-07-26 02:22 ./var/content
-rwxr-xr-x MeinName/MeinName    15785 2025-07-26 02:22 ./var/install

yf_sign, Version 1.0.1

Copyright (C) 2016-2021 P. Haemmerlein (peterpawn@yourfritz.de)

Lizenziert nach den Bestimmungen der GPLv2 oder einer höheren Version, mit ein paar Zusätzen.
Einzelheiten sind dem Hilfe-Bildschirm (in englischer Sprache) zu entnehmen.

Gefundene Version: OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025) ... OK
Prüfe Verfügbarkeit des dgst-Kommandos ... OK
Prüfe Verfügbarkeit des rsa-Kommandos ... OK
Prüfe, ob der Digest-Algorithmus md5 unterstützt ist ... OK
Prüfung des Formats der Image-Datei ... OK
Zu viele leere Blöcke am Ende der Image-Datei: erwartet=2, gefunden=3.
Die überflüssigen Blöcke werden vor dem Signieren abgeschnitten.
Zweimaliges Wiederholen des ersten Eintrags als Füllblock ...  OK
Signieren des Hash-Wertes (md5) über den Inhalt der Image-Datei mit dem RSA-Schlüssel von /home/MeinName/.yf_signimage/image_signing.key ...No environment variable KEYPASSWORD
Error getting password
 FEHLER
tar: Das sieht nicht wie ein „tar“-Archiv aus.
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
✅ Firmware-Modifikation abgeschlossen: FRITZ.Box_7590_AX-08.10-123150-LabBETA_signed.image
Code:
./test 7590AX inhaus 123148
Found TI checksum (0x48E4CB7B) at the end of the image.
Filesystem on filesystem.image is xz compressed (4:0)
Parallel unsquashfs: Using 20 processors
14171 inodes (15907 blocks) to write


created 13331 files
created 926 directories
created 840 symlinks
created 0 devices
created 0 fifos
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
--2025-08-02 08:33:47--  https://instinto.mooo.com:1974/osprey/avm_firmware_public_key9
Auflösen des Hostnamens instinto.mooo.com (instinto.mooo.com)… 82.223.55.182
Verbindungsaufbau zu instinto.mooo.com (instinto.mooo.com)|82.223.55.182|:1974 … verbunden.
WARNUNG: Das Zertifikat von instinto.mooo.com kann nicht geprüft werden, ausgestellt von »CN=R10,O=Let's Encrypt,C=US«:.
  Die Autorität des Ausstellers des Zertifikates kann lokal nicht geprüft werden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 266 [application/octet-stream]
Wird in »squashfs-root/etc/avm_firmware_public_key9« gespeichert.

avm_firmware_public_key9                                      100%[=================================================================================================================================================>]     266  --.-KB/s    in 0s    

2025-08-02 08:33:47 (381 MB/s) - »squashfs-root/etc/avm_firmware_public_key9« gespeichert [266/266]

Parallel mksquashfs: Using 20 processors
Creating 4.0 filesystem on filesystem.image, block size 65536.

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
    compressed data, compressed metadata, compressed fragments, no xattrs
    duplicates are removed
Filesystem size 35775.98 Kbytes (34.94 Mbytes)
    18.44% of uncompressed filesystem size (193964.94 Kbytes)
Inode table size 108744 bytes (106.20 Kbytes)
    21.60% of uncompressed inode table size (503527 bytes)
Directory table size 141918 bytes (138.59 Kbytes)
    35.77% of uncompressed directory table size (396761 bytes)
Number of duplicate files found 8901
Number of inodes 15103
Number of files 13336
Number of fragments 561
Number of symbolic links  841
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 926
Number of ids (unique uids + gids) 1
Number of uids 1
    root (0)
Number of gids 1
    root (0)
drwxr-xr-x MeinName/MeinName       0 2025-08-02 08:33 ./var/
-rw-r--r-- MeinName/MeinName      42 2025-07-26 02:22 ./var/version
-rw-r--r-- MeinName/MeinName      14 2025-07-26 02:22 ./var/install-features
drwxr-xr-x MeinName/MeinName       0 2025-08-02 08:33 ./var/tmp/
-rw-r--r-- MeinName/MeinName 36634624 2025-08-02 08:33 ./var/tmp/filesystem.image
-rwxr-xr-x MeinName/MeinName  6517768 2025-07-26 02:22 ./var/tmp/kernel.image
-rw-r--r-- MeinName/MeinName     2807 2025-07-26 02:22 ./var/info.txt
-rw-r--r-- MeinName/MeinName      406 2025-07-26 02:22 ./var/content
-rwxr-xr-x MeinName/MeinName    15785 2025-07-26 02:22 ./var/install

yf_sign, Version 1.0.1

Copyright (C) 2016-2021 P. Haemmerlein (peterpawn@yourfritz.de)

Lizenziert nach den Bestimmungen der GPLv2 oder einer höheren Version, mit ein paar Zusätzen.
Einzelheiten sind dem Hilfe-Bildschirm (in englischer Sprache) zu entnehmen.

Gefundene Version: OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025) ... OK
Prüfe Verfügbarkeit des dgst-Kommandos ... OK
Prüfe Verfügbarkeit des rsa-Kommandos ... OK
Prüfe, ob der Digest-Algorithmus md5 unterstützt ist ... OK
Prüfung des Formats der Image-Datei ... OK
Zu viele leere Blöcke am Ende der Image-Datei: erwartet=2, gefunden=8.
Die überflüssigen Blöcke werden vor dem Signieren abgeschnitten.
Signieren des Hash-Wertes (md5) über den Inhalt der Image-Datei mit dem RSA-Schlüssel von /home/MeinName/.yf_signimage/image_signing.key ...No environment variable KEYPASSWORD
Error getting password
 FEHLER
tar: Das sieht nicht wie ein „tar“-Archiv aus.
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
✅ Firmware-Modifikation abgeschlossen: FRITZ.Box_7590_AX-08.10-123148-Inhaus_signed.image
 
Zuletzt bearbeitet:
@Osprey vielleicht solltest du mal einen Web-Dienst basteln, der das automatisch durchführt :D
Das hat mir ehrlich keine Ruhe gelassen und mit Hilfe der KI läuft es schonmal für die 7530 Firmware bei mir Zuhause.
Größte Herausfoderung war das Passwort im Signierungsscript vom PeterPawn ohne Eingabe im Terminal einzutragen.
  • Es wird der Downloadlink von AVM kopiert und im Webserver eingefügt
  • Nach ca. 30 sec. kann das signierte modfs Image runtergeladen werden

Du musst angemeldet sein, um Medien zu sehen.
 
So, mit der Passwortübergabe anyf_genkey, Version 1.0.1 kann man nun auch selber seine eigenen Sachen erstellen. Somit wird der Fehler aus Peters Script erst mal übergangen.

Code:
/modfs_image 7530 inhaus 123158
 Kein Signatur-Schlüssel vorhanden – wird generiert ...

yf_genkey, Version 1.0.1

Copyright (C) 2016-2022 P. Haemmerlein (peterpawn@yourfritz.de)

Lizenziert nach den Bestimmungen der GPLv2 oder einer höheren Version, mit ein paar Zusätzen.
Einzelheiten sind dem Hilfe-Bildschirm (in englischer Sprache) zu entnehmen.

Gefundene Version: OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025) ... OK
Prüfe Verfügbarkeit des genrsa-Kommandos ... OK
Prüfe Verfügbarkeit des rsa-Kommandos ... OK
Generieren eines RSA-Keys (1024 Bits Schlüssellänge) in /home/MeinName/.yf_signimage/image_signing.key ... OK
Extrahiere den öffentlichen Schlüssel aus /home/MeinName/.yf_signimage/image_signing.key nach /home/MeinName/.yf_signimage/image_signing.pem ... OK
Extrahiere den öffentlichen Schlüssel (im AVM-Format) aus /home/MeinName/.yf_signimage/image_signing.pem nach /home/MeinName/.yf_signimage/image_signing.asc ... OK

Die Datei /home/MeinName/.yf_signimage/image_signing.asc muss in ein Firmware-Image als /etc/avm_firmware_public_key9 kopiert werden, wenn später mit dem soeben generierten Schlüssel signierte Firmware-Images über die AVM-Komponenten installiert werden soll.
Found TI checksum (0x2B90C49D) at the end of the image.
Filesystem on filesystem.image is xz compressed (4:0)
Parallel unsquashfs: Using 20 processors
14218 inodes (15635 blocks) to write


created 13382 files
created 917 directories
created 836 symlinks
created 0 devices
created 0 fifos
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
--2025-08-03 22:57:40--  https://instinto.mooo.com:1974/osprey/avm_firmware_public_key9
Auflösen des Hostnamens instinto.mooo.com (instinto.mooo.com)… 82.223.55.182
Verbindungsaufbau zu instinto.mooo.com (instinto.mooo.com)|82.223.55.182|:1974 … verbunden.
WARNUNG: Das Zertifikat von instinto.mooo.com kann nicht geprüft werden, ausgestellt von »CN=R10,O=Let's Encrypt,C=US«:.
  Die Autorität des Ausstellers des Zertifikates kann lokal nicht geprüft werden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 266 [application/octet-stream]
Wird in »squashfs-root/etc/avm_firmware_public_key9« gespeichert.

avm_firmware_public_key9                                      100%[=================================================================================================================================================>]     266  --.-KB/s    in 0s    

2025-08-03 22:57:40 (358 MB/s) - »squashfs-root/etc/avm_firmware_public_key9« gespeichert [266/266]

Parallel mksquashfs: Using 20 processors
Creating 4.0 filesystem on filesystem.image, block size 65536.

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
    compressed data, compressed metadata, compressed fragments, no xattrs
    duplicates are removed
Filesystem size 33760.81 Kbytes (32.97 Mbytes)
    19.56% of uncompressed filesystem size (172557.52 Kbytes)
Inode table size 108068 bytes (105.54 Kbytes)
    21.47% of uncompressed inode table size (503325 bytes)
Directory table size 142746 bytes (139.40 Kbytes)
    35.84% of uncompressed directory table size (398251 bytes)
Number of duplicate files found 8943
Number of inodes 15141
Number of files 13387
Number of fragments 539
Number of symbolic links  837
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 917
Number of ids (unique uids + gids) 1
Number of uids 1
    root (0)
Number of gids 1
    root (0)
drwxr-xr-x MeinName/MeinName       0 2025-08-03 22:57 ./var/
-rw-r--r-- MeinName/MeinName      42 2025-07-26 02:22 ./var/version
-rwxrwxr-x MeinName/MeinName  633340 2025-07-26 02:22 ./var/tzupdate
-rw-r--r-- MeinName/MeinName      14 2025-07-26 02:22 ./var/install-features
drwxr-xr-x MeinName/MeinName       0 2025-08-03 22:57 ./var/tmp/
-rw-r--r-- MeinName/MeinName 34574336 2025-08-03 22:57 ./var/tmp/filesystem.image
-rw-r--r-- MeinName/MeinName  3310600 2025-07-26 02:22 ./var/tmp/kernel.image
-rw-r--r-- MeinName/MeinName     2807 2025-07-26 02:22 ./var/info.txt
-rwxrwxr-x MeinName/MeinName  3159620 2025-07-26 02:22 ./var/urladerupdate
-rwxrwxr-x MeinName/MeinName   698944 2025-07-26 02:22 ./var/sblupdate
-rw-r--r-- MeinName/MeinName      403 2025-07-26 02:22 ./var/content
-rwxr-xr-x MeinName/MeinName    16782 2025-07-26 02:22 ./var/install

yf_sign, Version 1.0.1

Copyright (C) 2016-2021 P. Haemmerlein (peterpawn@yourfritz.de)

Lizenziert nach den Bestimmungen der GPLv2 oder einer höheren Version, mit ein paar Zusätzen.
Einzelheiten sind dem Hilfe-Bildschirm (in englischer Sprache) zu entnehmen.

Gefundene Version: OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025) ... OK
Prüfe Verfügbarkeit des dgst-Kommandos ... OK
Prüfe Verfügbarkeit des rsa-Kommandos ... OK
Prüfe, ob der Digest-Algorithmus md5 unterstützt ist ... OK
Prüfung des Formats der Image-Datei ... OK
Zu viele leere Blöcke am Ende der Image-Datei: erwartet=2, gefunden=16.
Die überflüssigen Blöcke werden vor dem Signieren abgeschnitten.
Prüfen des Kennworts für den privaten Schlüssel ... OK
Signieren des Hash-Wertes (md5) über den Inhalt der Image-Datei mit dem RSA-Schlüssel von /home/MeinName/.yf_signimage/image_signing.key ... OK
Ausgabe der signierten Image-Datei ... OK
drwxr-xr-x MeinName/MeinName       0 2025-08-03 22:57 ./var/
-rw-r--r-- MeinName/MeinName      42 2025-07-26 02:22 ./var/version
-rwxrwxr-x MeinName/MeinName  633340 2025-07-26 02:22 ./var/tzupdate
-rw-r--r-- MeinName/MeinName      14 2025-07-26 02:22 ./var/install-features
drwxr-xr-x MeinName/MeinName       0 2025-08-03 22:57 ./var/tmp/
-rw-r--r-- MeinName/MeinName 34574336 2025-08-03 22:57 ./var/tmp/filesystem.image
-rw-r--r-- MeinName/MeinName  3310600 2025-07-26 02:22 ./var/tmp/kernel.image
-rw-r--r-- MeinName/MeinName     2807 2025-07-26 02:22 ./var/info.txt
-rwxrwxr-x MeinName/MeinName  3159620 2025-07-26 02:22 ./var/urladerupdate
-rwxrwxr-x MeinName/MeinName   698944 2025-07-26 02:22 ./var/sblupdate
-rw-r--r-- MeinName/MeinName      403 2025-07-26 02:22 ./var/content
-rwxr-xr-x MeinName/MeinName    16782 2025-07-26 02:22 ./var/install
-rwxr-xr-x MeinName/MeinName      128 2025-08-03 22:57 ./var/signature
✅ Firmware-Modifikation abgeschlossen: FRITZ.Box_7530-08.10-123158-Inhaus_signed.image

Da @Osprey inzwischen an einer eigenen Lösung arbeitet, wird das Skript vermutlich nicht mehr benötigt.
Falls dennoch Interesse besteht und der ursprüngliche Autor der enthaltenen Komponenten nichts dagegen hat. Da ich im Wesentlichen nur alles zusammengeführt habe und etwas Feintuning betrieben habe. Würde ich euch das Script zur Verfügung stellen. Aber wie gesagt @Osprey muss damit einverstanden sein.
 
Zuletzt bearbeitet:
Code:
#!/bin/bash
# -------------------------------
#  KONFIGURATION START
# -------------------------------
VERSION="08.10"
RELEASECYCLE="Smart24P2"

SIGN_PASSWORD="freetz"
AVM_URL="http://download.avm.de"
KEY_URL="https://instinto.mooo.com:1974/osprey/"

# -------------------------------
#  KONFIGURATION ENDE
# -------------------------------
SCRIPTNAME="${0##*/}"

BUILD_INPUT="${3}"
BUILD="${BUILD_INPUT:-121784}"

GREEN="\033[0;32m"
RED="\033[0;31m"
YELLOW="\033[0;33m"
NC="\033[0m" # No Color

set -euo pipefail

# -------------------------------
#  Hilfe-Funktion
# -------------------------------
show_help() {
    cat <<EOF
 Verwendung:
  ./$SCRIPTNAME <Modell> <Typ> [Buildnummer]

 Beispiele:
  ./$SCRIPTNAME 7530 inhaus         → lädt Inhaus-Version für 7530
  ./$SCRIPTNAME 7590 labor 122809   → lädt Labor-Version für 7590 mit Build 122809

 Unterstützte Modelle:
  - 7530
  - 7590
  - 7590AX

 Typen:
  - inhaus       → wird zu Inhaus im Namen, Downloadpfad inhaus
  - labor        → wird zu LabBETA im Namen, Downloadpfad labor

 Optional:
  - Dritte Angabe (Build) kann weggelassen werden, dann wird Standard-Build ${BUILD:-121784} verwendet.
EOF
}

# -------------------------------
#  PARAMETER-PARSING
# -------------------------------

# Hilfe anzeigen
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
    show_help
    exit 0
fi

# -------------------------------
#  PARAMETER-PARSING
# -------------------------------
MODEL_INPUT="$1"   # unverändert, Groß-/Kleinschreibung bleibt
TYP_INPUT="${2,,}"  # z.B. labor
case "$TYP_INPUT" in
    inhaus)
        URL_TYP="inhaus"
        TYP="Inhaus"
        ;;
    labor)
        URL_TYP="labor"
        TYP="LabBETA"
        ;;
    *)
        URL_TYP="$TYP_INPUT"
        TYP="$2"  # so bleibt z.B. "Final" oder "Experimental" erhalten
        ;;
esac

if [[ -z "$1" || -z "$2" ]]; then
    echo -e "❌ ${RED}Fehler: Modell oder Typ fehlt.${NC} Für Hilfe: ./${SCRIPTNAME} --help"
    exit 1
fi

# Modell-Mapping
case "$MODEL_INPUT" in
    7530)
        MODEL="7530"
        MODEL_URL="7530"
        HWREVISION="236"
        ;;
    7590)
        MODEL="7590"
        MODEL_URL="7590"
        HWREVISION="226"
        ;;
    7590AX)
        MODEL="7590_AX"
        MODEL_URL="7590AX"
        HWREVISION="259"
        ;;
    *)
        echo -e "❌ ${RED}Unbekanntes Modell:${NC} $MODEL_INPUT"
        exit 1
        ;;
esac

FIRMWARE_NAME="FRITZ.Box_${MODEL}-${VERSION}-${BUILD}-${TYP}.image"

# Mapping für URL-Unterverzeichnis
case "$TYP" in
    Inhaus)    URL_TYP="inhaus" ;;
    LabBETA)   URL_TYP="labor"  ;;
    *)       URL_TYP=$(echo "$TYP" | tr '[:upper:]' '[:lower:]') ;;
esac

FIRMWARE_URL="${AVM_URL}/${URL_TYP}/${RELEASECYCLE}/${MODEL_URL}/${FIRMWARE_NAME}"

SQUASHFS_TOOL="YourFritz/bin/squashfs/$(uname -m)"
SIGN_SCRIPT="YourFritz/signimage/sign_image"

# -------------------------------
#  REPOSITORIES & MODSKRIPTE
# -------------------------------
if [ ! -d YourFritz ]; then
    echo -e "${GREEN} Cloning YourFritz repository...${NC}"
    git clone --quiet --recurse-submodules https://github.com/PeterPawn/YourFritz.git
fi

# HOME-Verzeichnis ermitteln
HOME_DIR="${HOME:-~}"

# Signing-Key-Verzeichnis prüfen
if [ ! -d "${HOME_DIR}/.yf_signimage" ]; then
    echo -e "${GREEN} Kein Signatur-Schlüssel vorhanden – wird generiert ...${NC}"
        mkdir -p "${HOME_DIR}/.yf_signimage"
        ( cd YourFritz/signimage && bash generate_signing_key )
#else
#    echo " Signatur-Schlüssel bereits vorhanden: ${HOME_DIR}/.yf_signimage"
fi

if [ ! -d modfs ]; then
    echo -e "${GREEN} Cloning modfs repository...${NC}"
    git clone --quiet -b beta --recurse-submodules https://github.com/PeterPawn/modfs.git
fi

# Alte Modskripte sichern
mv modfs/modscripts/ modfs/modscripts.org 2>/dev/null || true
mv modfs/contrib/modscripts modfs/contrib/modscripts.org 2>/dev/null || true
mkdir -p modfs/modscripts

# Nur benötigte Modskripte übernehmen
SCRIPTS=(
    "mod_enable_calllog"
    "mod_fixed_branding"
    "mod_telnet_enable"
    "mod_rc_tail_sh"
)
for script in "${SCRIPTS[@]}"; do
    cp "modfs/modscripts.org/$script" "modfs/modscripts/" 2>/dev/null || true
done

# -------------------------------
#  FIRMWARE HERUNTERLADEN & ENTPACKEN
# -------------------------------
wget -q -O var.tar "$FIRMWARE_URL"
tar -xf var.tar
rm var.tar

mv var/tmp/filesystem.image filesystem.image

# -------------------------------
#  IMAGE ENTPACKEN
# -------------------------------
"$SQUASHFS_TOOL/unsquashfs4-le" -no-progress filesystem.image
rm filesystem.image

# -------------------------------
#  MODIFIKATIONEN
# -------------------------------
cd modfs/
./run_modscripts ../squashfs-root
cd ..

#  Public Key hinzufügen
if [ ! -f squashfs-root/etc/avm_firmware_public_key9 ]; then
    echo -e "⬇️ ${GREEN} Lade Public Key herunter …${NC}"
    wget --no-check-certificate -q -P squashfs-root/etc "${KEY_URL}avm_firmware_public_key9"
else
    echo -e "${YELLOW} Public Key squashfs-root/etc/avm_firmware_public_key9 existiert, Download übersprungen.${NC}"
fi

# HWRevision anpassen
sed -i "s/\b\(export HWRevision\)\b.*/\1=${HWREVISION}/" squashfs-root/etc/init.d/rc.conf

# Überprüfung
if ! compgen -G "squashfs-root/etc/avm_firmware_public_key*" > /dev/null; then
    echo -e "⚠️ ${RED}Public Key nicht gefunden!${NC}"
fi

# -------------------------------
#  IMAGE NEU PACKEN & SIGNIEREN
# -------------------------------
"$SQUASHFS_TOOL/mksquashfs4-le" squashfs-root/ filesystem.image -all-root -no-progress
mv filesystem.image var/tmp/filesystem.image

# Alte Signatur entfernen
rm -f var/signature

# Neue TAR-Datei erstellen
tar -cf var.tar ./var/
tar -tvf var.tar

# Signieren
bash "$SIGN_SCRIPT" var.tar "$SIGN_PASSWORD" > "${MODEL}.image"
wait
tar -tvf "${MODEL}.image"

# Umbenennen
SIGNED_IMAGE="FRITZ.Box_${MODEL}-${VERSION}-${BUILD}-${TYP}_signed.image"
mv "${MODEL}.image" "$SIGNED_IMAGE"
# -------------------------------
#  CLEANUP
# -------------------------------
rm -rf var var.tar squashfs-root

echo -e "✅ ${GREEN}Firmware-Modifikation abgeschlossen${NC}: $SIGNED_IMAGE"
Ihr könnt den folgenden Inhalt in eine Datei speichern. Der Name ist dabei frei wählbar. In meinem Fall heißt sie modfs_image.
Wenn ihr beispielsweise ein aktuelles Inhaus-Image für die FRITZ!Box 7530 erstellen möchtet, startet ihr das Skript einfach wie folgt:
Code:
 ./modfs_image 7530 inhaus 123158
  • Die Werte VERSION und RELEASECYCLE werdet ihr ggf. häufiger anpassen müssen – sie geben an, zu welchem Entwicklungsstand das Image gehört.
  • Das Feld SIGN_PASSWORD könnt ihr ebenfalls anpassen, falls ihr ein eigenes Signaturpasswort verwendet. Ich habe hier einfach testweise freetz eingetragen.
  • Die URLs (AVM_URL, KEY_URL) können in der Regel so bleiben.
  • 7530 für das Modell,
  • inhaus für den Firmware-Zweig (z. B. "inhaltlich neuer Entwicklungsstand"),
  • 123158 für die Buildnummer.
Diesen Abschnitt im Skript könnt ihr bei Bedarf anpassen:
Code:
# -------------------------------
#  KONFIGURATION START
# -------------------------------

VERSION="08.10"
RELEASECYCLE="Smart24P2"

SIGN_PASSWORD="freetz"

AVM_URL="http://download.avm.de"
KEY_URL="https://instinto.mooo.com:1974/osprey/"

# -------------------------------
#  KONFIGURATION ENDE
# -------------------------------
Hinweise:
  • Die Werte VERSION und RELEASECYCLE werdet ihr ggf. häufiger anpassen müssen – sie geben an, zu welchem Entwicklungsstand das Image gehört.
  • Das Feld SIGN_PASSWORD könnt ihr ebenfalls anpassen, falls ihr ein eigenes Signaturpasswort verwendet. Ich habe hier einfach testweise freetz eingetragen.
  • Die URLs (AVM_URL, KEY_URL) können in der Regel so bleiben.
Für die neue 7590 müsst ihr diesen Bereich z. B. anpassen, damit er zur aktuellen Firmware-Version und dem passenden Release-Zyklus passt.
 
Zuletzt bearbeitet:
Wenn ihr beispielsweise ein aktuelles Inhaus-Image für die FRITZ!Box 7530 erstellen möchtet, startet ihr das Skript einfach wie folgt:
./modfs_image 7530 inhaus 123158

OK, DAU-Frage: Wie starte ich das Script? (Über Powershell hat es schon mal nicht funktioniert...ich wurde dann gefragt, mit welcher Anwendung ich die Image-Datei öffnen will)

Du musst Regestriert sein, um das angehängte Bild zusehen.
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Das Erstellen oder Modifizieren von AVM-Firmware-Images ist ausschließlich unter Linux möglich, dieses sollte eigentlich jedem klar sein, der sich ernsthaft mit dem Thema beschäftigt.

Daher frage ich mich gerade ein wenig, wie du überhaupt auf die Idee kommst, das mit PowerShell machen zu wollen?
Wenn ich sowas unter Windows versucht hätte, dann eher noch mit der guten alten CMD, aber selbst das wäre aussichtslos. 😉


Fakt ist: Ohne Linux (nativ, VM oder zumindest WSL) geht hier gar nichts. Weder das Entpacken noch das Modifizieren oder das Signieren des Images.
 
wie du überhaupt auf die Idee kommst, das mit PowerShell machen zu wollen?
Weil man das in.memory Image auf die 7520 per PowerShell flasht. Und nachdem diese Anleitung^ über Powershell nicht ging, war mir klar, dass es über CMD auch nicht geht.

ist ausschließlich unter Linux möglich, dieses sollte eigentlich jedem klar sein, der sich ernsthaft mit dem Thema beschäftigt.
Damit ist in meinem Fall alles gesagt:).

Fakt ist: Ohne Linux (nativ, VM oder zumindest WSL) geht hier gar nichts. Weder das Entpacken noch das Modifizieren oder das Signieren des Images.
(y) Gut, dann ich ich damit vollkommen raus.
 
Zuletzt bearbeitet:
Zurück
Oben