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
./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.
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 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 dasEin Script das alles dann macht! Ohne wenn und aber ;-)
ip-phone-forum.de/threads/wie-funktioniert-eigentlich-das-signieren-der-avm-firmware.286213/page-5#post-2603503
./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.
VERSION="08.10"
RELEASECYCLE="Smart24P2"
./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
./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
Das hat mir ehrlich keine Ruhe gelassen und mit Hilfe der KI läuft es schonmal für die 7530 Firmware bei mir Zuhause.@Osprey vielleicht solltest du mal einen Web-Dienst basteln, der das automatisch durchführt![]()
yf_genkey, Version 1.0.1
kann man nun auch selber seine eigenen Sachen erstellen. Somit wird der Fehler aus Peters Script erst mal übergangen./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
#!/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"
./modfs_image 7530 inhaus 123158
# -------------------------------
# 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
# -------------------------------
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
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.wie du überhaupt auf die Idee kommst, das mit PowerShell machen zu wollen?
Damit ist in meinem Fall alles gesagtist ausschließlich unter Linux möglich, dieses sollte eigentlich jedem klar sein, der sich ernsthaft mit dem Thema beschäftigt.
Fakt ist: Ohne Linux (nativ, VM oder zumindest WSL) geht hier gar nichts. Weder das Entpacken noch das Modifizieren oder das Signieren des Images.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das Digital Eliteboard ist ein kostenloses Forum und ist auf Spenden angewiesen, um sich auch in Zukunft selbst zu finanzieren. Wenn auch du mit dem Digital Eliteboard zufrieden bist, würden wir uns über jede Unterstützung freuen.
Hier kannst du uns unterstützen SPENDEN