immortalwrt/tools/firmware-utils/src
Bjørn Mork 48cad07a55 firmware-utils: zytrx: Add util for ZyXEL specific header
The ZyXEL NR7101 prepend an additional header to U-Boot images. This
header use the TRX magic 0x30524448 (HDR0), but is incompatible with
TRX images.

This code is reverse-engineered based on matching 32 bit numbers
found in the header with lengths and different checksum
calculations of the vendor images found on the device.  The result
was matched against the validation output produced by the
bootloader to name the associated header fields.

Example bootloader validation output:

 Zyxel TRX Image 1 --> Found!  Header Checksum OK
 ============ZyXEL header information==================
         chipId             : MT7621A
         boardId            : NR7101
         modelId            : 07 01 00 01
         kernel_len         : (14177560)
         kernelChksum       : (0x8DD31F69)
         swVersionInt       : 1.00(ABUV.0)D1
         swVersionExt       : 1.00(ABUV.0)D1

 Zyxel TRX Image 2 --> Found!  Header Checksum OK
 ============ZyXEL header information==================
         chipId             : MT7621A
         boardId            : NR7101
         modelId            : 07 01 00 01
         kernel_len         : (14176660)
         kernelChksum       : (0x951A7637)
         swVersionInt       : 1.00(ABUV.0)D0
         swVersionExt       : 1.00(ABUV.0)D0

 =================================================
 Check image validation:
 Image1 Header Magic Number --> OK
 Image2 Header Magic Number --> OK
 Image1 Header Checksum --> OK
 Image2 Header Checksum --> OK
 Image1 Data Checksum --> OK
 Image2 Data Checksum --> OK
 Image1 Stable Flag --> Stable
 Image1 Try Counter --> 0
 Image1: OK
 Image2: OK

The coverage and algorithm for the kernelChksum field is unknown.
This field is not validated by the bootloader or the OEM firmware
upgrade tool. It is therefore set to a static value for now.

The swVersion fields contain free form string values.  The OEM firmware
use ZyXEL structured version numbers as shown above.  The strings are
not interpreted or validated on boot, so they can be repurposed for
anything we want the bootloader to display to the user.  But the OEM
web GUI fails to flash images with freeform strings.

The purpose of the other strings in the header is not known.  The
values appear to be static.  We assume they are fixed for now, until
we have other examples.  One of these strings is the platform name,
which is taken as an input parameter for support other members of
the device family.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-05-09 09:15:44 +02:00
..
add_header.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
addpattern.c tools/firmware-utils: use UTC for image timestamps 2020-08-07 09:48:33 +02:00
asustrx.c firmware-utils: fix -Wmaybe-uninitialized warnings 2021-04-09 10:46:15 +02:00
bcm4908asus.c firmware-utils: bcm4908asus: tool inserting Asus tail into BCM4908 image 2021-01-22 20:10:38 +01:00
bcm4908kernel.c firmware-utils: bcm4908kernel: name struct fields 2021-03-24 22:45:00 +01:00
bcm_tag.h
bcmalgo.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
bcmalgo.h tools: add Broadcom cable modem firmware image creator 2013-06-06 22:21:52 +00:00
buffalo-enc.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-lib.c firmware-utils/buffalo-enc: explicitly use signed char for checksum function 2015-10-12 13:11:20 +00:00
buffalo-lib.h firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-tag.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-tftp.c firmware-utils: fix compilation warnings. 2014-10-20 06:29:13 +00:00
csysimg.h
cyg_crc16.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
cyg_crc32.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
cyg_crc.h firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
dgfirmware.c firmware-utils/dgfirmare: fix possible resource leak 2020-01-14 17:48:50 +01:00
dgn3500sum.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
dns313-header.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
edimax_fw_header.c tools: edimax_fw_header: fix suspicious memset usage 2015-01-10 18:08:16 +00:00
encode_crc.c
fix-u-media-header.c
fw.h firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
hcsmakeimage.c firmware-utils/hcsmakeimage: fix possible memory leak and resource leaks 2020-07-08 16:07:05 +02:00
imagetag_cmdline.c brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
imagetag_cmdline.h brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
imagetag.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
imagetag.ggo brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
jcgimage.c firmware-utils: jcgimage: add support for 4MiB+ images 2019-05-31 10:30:03 +02:00
lxlfw.c firmware-utils: add lxlfw tool for generating Luxul firmwares 2020-02-07 09:31:22 +01:00
lzma2eva.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
makeamitbin.c
md5.c firmware-utils: replace md5 code with Alexander Peslyak's implementation 2016-11-28 07:52:31 +01:00
md5.h firmware-utils: replace md5 code with Alexander Peslyak's implementation 2016-11-28 07:52:31 +01:00
mkbrncmdline.c
mkbrnimg.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mkbuffaloimg.c ar71xx: add support for Buffalo BHR-4GRV2 2016-11-16 10:54:33 +01:00
mkcameofw.c firmware-utils/mkcameofw: allow to use combined kernel image 2013-05-08 17:11:08 +00:00
mkcasfw.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mkchkimg.c mkchkimg: use higher version code 2020-06-09 16:59:33 +02:00
mkcsysimg.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mkdapimg2.c firmware-utils: fix -Wmaybe-uninitialized warnings 2021-04-09 10:46:15 +02:00
mkdapimg.c firmware-utils: fix -Wmaybe-uninitialized warnings 2021-04-09 10:46:15 +02:00
mkdhpimg.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
mkdlinkfw-lib.c firmware-utils: mkdlinkfw: fix error handling 2019-01-13 18:31:10 +01:00
mkdlinkfw-lib.h firmware-utils: mkdlinkfw: cleanup code 2019-01-13 18:31:10 +01:00
mkdlinkfw.c firmware-utils: mkdlinkfw: add kernel image offset 2019-03-24 01:44:24 +01:00
mkdniimg.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
mkedimaximg.c firmware-utils: mkedimaximg: add "big-endianness mode" option 2018-09-10 09:29:39 +02:00
mkfwimage2.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
mkfwimage.c ath79: add support for Ubiquiti airCube AC 2020-12-22 19:11:50 +01:00
mkheader_gemtek.c firmware-utils: add Gemtek header tool 2014-04-22 08:08:39 +00:00
mkhilinkfw.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
mkmerakifw-old.c tools/firmware-utils: fix portability issue in mkmerakifw-old 2016-09-22 13:37:23 +02:00
mkmerakifw.c firmware-utils: Fix build failure in mkmerakifw.c FS#298 2016-11-26 22:39:27 +01:00
mkmylofw.c firmware-utils: mkmylofw: fix blocks padding 2021-04-13 14:00:49 +02:00
mkplanexfw.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
mkporayfw.c ramips: generate factory images for Nexx devices 2014-12-07 16:53:22 +00:00
mkrasimage.c mkrasimage: fix segmentation fault 2020-03-01 21:36:00 +01:00
mkrtn56uimg.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mksenaofw.c firmware-utils/mksenaofw: fix possible memory leak 2020-01-14 17:48:50 +01:00
mksercommfw.c firmware-utils: mksercommfw: overhaul image creation 2019-01-15 19:11:54 +01:00
mktitanimg.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
mktitanimg.h
mktplinkfw2.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
mktplinkfw-lib.c firmware-utils: mktplinkfw: fix JFFS2 EOF markers 2017-12-14 09:29:30 +01:00
mktplinkfw-lib.h tools/firmware-utils: mktplinkfw move build_fw() to lib 2017-10-06 08:28:41 +02:00
mktplinkfw.c ramips: add support for TP-Link RE200 v1 2019-12-31 13:23:55 +01:00
mkwrggimg.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mkwrgimg.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
mkzcfw.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
mkzynfw.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
motorola-bin.c
myloader.h ar71xx: Revert "added board support for compex wpj558" 2015-02-02 10:32:04 +00:00
nand_ecc.c treewide: replace nbd@openwrt.org with nbd@nbd.name 2016-06-07 08:58:42 +02:00
nec-enc.c firmware-utils: fix mistake and improve logic in nec-enc 2020-11-12 18:19:44 +01:00
osbridge-crc.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
oseama.c firmware-utils: oseama: support extracting entity 2016-06-15 10:54:16 +02:00
otrx.c tools: otrx: allow own magic 2021-03-15 16:57:34 +01:00
pc1crypt.c firmware-utils: fix few random warnings 2021-04-09 10:46:15 +02:00
ptgen.c firmware-utils/ptgen: remove unused variable assignment 2021-03-14 21:59:58 +00:00
seama.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
seama.h
sha1.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
sha1.h firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
sign_dlink_ru.c firmware: add tool for signing d-link ru router factory firmware images 2020-12-22 19:11:50 +01:00
spw303v.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
srec2bin.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
tplink-safeloader.c tplink-safeloader: fix product_name of TP-Link AD7200 2021-05-06 09:51:58 +02:00
trx2edips.c firmware-utils: fix unused variable warnings 2021-04-09 10:46:15 +02:00
trx2usr.c
trx.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
uimage_padhdr.c firmware-utils: uimage_padhdr: fix Coverity issue 2019-08-04 22:09:20 +02:00
utils.h firmware-utils: mkfwimage: fix memcpy and strncpy usage 2020-07-11 13:33:28 +02:00
wrt400n.c Revert "tools: wrt400n: fix making factory images with kernel bigger than 1MB" 2017-01-20 06:43:13 +01:00
xorimage.c firmware-utils: fix -Wpointer-sign warnings 2021-04-09 11:05:54 +02:00
zyimage.c firmware-utils: zyimage: drop POSIX SOURCE defines 2021-04-13 13:18:17 +02:00
zynos.h
zytrx.c firmware-utils: zytrx: Add util for ZyXEL specific header 2021-05-09 09:15:44 +02:00
zyxbcm.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00