#!/usr/bin/env python3
import re

def process_hex_groups_v2():
    # ==========================================
    # 请在这里填入要处理的十六进制字符串
    INPUT_HEX_STRING = "88AC8ED288ADAEF268CEC7F2084FECF2490C8FD249A6ADF229C6CCF2A90CE9F2082403A9284F8ED228EAA6F2480DCAF26805E7F2A98D8ED289C8A8F2E905CEF2292FEBF2082404A988498ED248E9AAF268E9CAF22888ECF2A9C88ED269E6AEF2494BCEF2E989EEF2082405A948ED89D2484BAFF2A88CC9F2E808EAF2496F8ED2A96DADF269ECCCF2C96DECF2082406A9E8EC8DD2480AADF2088BC6F2888CEAF2692586D2298DAEF269AAC9F2492AE7F2082407A9482D87D2A80DA6F2E8E5C9F2E86EEEF2094986D2A9EAADF2C9C8C6F2A96AE6F2082408A9488689D2086FA8F2E829CAF2E82AEAF2892886D229A8A9F2E92CC9F2494BEDF2082409A928688DD248A9ACF248C9CEF2C888EAF2498E8ED2C90DA7F2C9ACC9F2292AE6F208240AA9E80686D22866A8F2684DCCF2288CE9F289CA8AD22949ADF249AAC9F2898DEAF208240BA9E80E87D268CDA9F208CBCEF2C829E8F2E92588D229A7AAF2298CCEF2E92DEDF208240CA988A88DD2288DA6F288CAC8F2E8C8E6F2A94D8ED2098FAAF26949CBF2092EE9F208240DA9688C8AD228C9ADF2C80ECAF2A808EEF2696D89D24926A8F2E926CAF2690EEEF208240EA928A688D28866AEF268CDC8F26809E7F249AD8DD2296FAEF229EFC6F2A94EEAF208240FA908AD89D2282CABF20889CEF2088AEAF2694E88D2C90EAFF2090AC6F249CFEDF2082410A968868DD2086DA9F24868C6F2E86AE5F209898AD2290EAEF2C9ADCCF2A9ECEEF2082411A908EB8AD20849ADF26888C8F2C88CE9F2E9C689D2494CACF2292FC7F22946EDF2082412A9484C8FD2A8A6A8F26809CAF2480BEBF2E98A89D2A90EADF2092BC9F2C94EEAF2082413A9286688D2A88EA6F2882ECDF248AEEEF2E94D8ED2E90EABF24909CFF2A90DEBF2082414A9280C8AD22806A9F2284ACBF2E8CDEDF2298F8ED2A968A8F2C9A9CAF2E9A5EAF2082415A9E8498FD208CAA6F2E8C8C9F28889ECF2290E86D2A9CCA8F289A8C8F28946ECF2082416A9088686D2E84AADF2086EC6F228C7E6F2A9A686D229E6A8F22927C7F2292BEDF2082417A9C8088AD248C6ADF2280EC9F2C84AE9F2A9E689D2A929AAF2A9A7C7F289E7E5F2082418A9"
    # ==========================================
    
    # ==========================================
    # 请在这里填入用于替换的十六进制字符串
    REPLACEMENT_HEX_STRING = ""
    # ==========================================
    
    if not INPUT_HEX_STRING:
        print("错误: 请先填写 INPUT_HEX_STRING")
        return
    
    if not REPLACEMENT_HEX_STRING:
        print("错误: 请先填写 REPLACEMENT_HEX_STRING")
        return
    
    # 清理输入字符串
    clean_hex = re.sub(r'\s+', '', INPUT_HEX_STRING)
    replacement_hex = re.sub(r'\s+', '', REPLACEMENT_HEX_STRING)
    
    print(f"原始长度: {len(clean_hex)} 字符")
    print(f"替换字符串长度: {len(replacement_hex)} 字符")
    print("-" * 80)
    
    # 检查长度是否为72的倍数
    if len(clean_hex) % 72 != 0:
        print(f"警告: 长度 {len(clean_hex)} 不是72的倍数")
    
    # 按72个字符为一部分处理
    result = ""
    replacement_index = 0
    part_count = 0
    
    for i in range(0, len(clean_hex), 72):
        part = clean_hex[i:i+72]
        part_count += 1
        
        if len(part) == 72:
            print(f"\n部分 {part_count}:")
            
            # 分解：单元1(32字) + 单元2(32字) + 替换段(8字)
            unit1 = part[0:32]
            unit2 = part[32:64]
            replace_section = part[64:72]
            
            print(f"  单元1: {unit1}")
            print(f"  单元2: {unit2}")
            print(f"  原替换段: {replace_section}")
            
            # 处理单元1和单元2：每组首对+1
            processed_unit1 = process_unit_by_groups(unit1)
            processed_unit2 = process_unit_by_groups(unit2)
            
            print(f"  处理后的单元1: {processed_unit1}")
            print(f"  处理后的单元2: {processed_unit2}")
            
            # 处理替换段
            if replacement_index < len(replacement_hex):
                extract_start = replacement_index + 64
                extract_end = extract_start + 8
                
                if extract_end <= len(replacement_hex):
                    new_replace_section = replacement_hex[extract_start:extract_end]
                    print(f"  新替换段: {new_replace_section} (从位置{extract_start}提取)")
                else:
                    new_replace_section = replace_section
                    print(f"  替换字符串不够，保持原样: {new_replace_section}")
                
                replacement_index += 72
            else:
                new_replace_section = replace_section
                print(f"  替换字符串已用完，保持原样: {new_replace_section}")
            
            # 组合结果
            processed_part = processed_unit1 + processed_unit2 + new_replace_section
            result += processed_part
            print(f"  处理后的部分: {processed_part}")
            
        else:
            print(f"\n不完整部分 {part_count}: {part} (保持原样)")
            result += part
    
    print("-" * 80)
    print(f"处理结果长度: {len(result)} 字符")
    print(f"总共处理了 {part_count} 个部分")
    
    print("\n" + "=" * 80)
    print("最终处理结果:")
    print("=" * 80)
    print(result)
    print("=" * 80)
    
    return result

def process_unit_by_groups(unit):
    """处理一个单位内的4组（每组8字符，首对+1）"""
    result = ""
    
    for i in range(0, len(unit), 8):
        group = unit[i:i+8]
        
        if len(group) == 8:
            first_pair = group[0:2]
            rest = group[2:8]
            
            try:
                first_val = int(first_pair, 16)
                new_first_val = (first_val + 1) % 256
                new_first_pair = f"{new_first_val:02X}"
                new_group = new_first_pair + rest
                result += new_group
            except ValueError:
                result += group
        else:
            result += group
    
    return result

if __name__ == "__main__":
    process_hex_groups_v2() 