From 3ba9e027e3b007452e53abba959e9ebb8c0b8b21 Mon Sep 17 00:00:00 2001 From: elseif Date: Sat, 18 Jan 2025 10:46:54 +0800 Subject: [PATCH] Update patch.py Signed-off-by: elseif --- patch.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/patch.py b/patch.py index 6eb870d..fad35b3 100644 --- a/patch.py +++ b/patch.py @@ -84,14 +84,23 @@ def patch_initrd_xz(initrd_xz:bytes,key_dict:dict,ljust=True): if old_public_key in new_initrd: print(f'initrd public key patched {old_public_key[:16].hex().upper()}...') new_initrd = new_initrd.replace(old_public_key,new_public_key) - new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}] ) + preset = 6 + new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": preset }] ) + while len(new_initrd_xz) > len(initrd_xz): + print(f'preset:{preset}') + print(f'new initrd xz size:{len(new_initrd_xz)}') + print(f'old initrd xz size:{len(initrd_xz)}') + preset += 1 + new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": preset }] ) + if len(new_initrd_xz) > len(initrd_xz): + new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9 ,"mf": lzma.MF_BT2}] ) if ljust: - assert len(new_initrd_xz) <= len(initrd_xz),'new initrd xz size is too big' + print(f'preset:{preset}') print(f'new initrd xz size:{len(new_initrd_xz)}') print(f'old initrd xz size:{len(initrd_xz)}') print(f'ljust size:{len(initrd_xz)-len(new_initrd_xz)}') + assert len(new_initrd_xz) <= len(initrd_xz),'new initrd xz size is too big' new_initrd_xz = new_initrd_xz.ljust(len(initrd_xz),b'\0') - return new_initrd_xz def find_7zXZ_data(data:bytes): offset1 = 0