Reconstrucción de los checksums de archivos IBM i SAVF

Fuentes: Reconstructing IBM i save-file checksums

El artículo técnico detalla el proceso de ingeniería inversa para reconstruir los mecanismos de verificación de integridad de los archivos de guardado (SAVF) de IBM i. El autor analiza cómo se calculan los checksums deterministas en estos archivos, que utilizan un esquema de 512 bytes por registro con un colgante de 16 bytes y un checksum global final. Mediante la decompilación del lector público jSAVF y la reimplementación de los algoritmos en Python, se logra reproducir exactamente los valores almacenados en archivos de prueba generados por IBM.

El análisis revela que la estructura física del archivo incluye colgantes de secuencia y checksums por registro, mientras que el flujo lógico es una secuencia continua de 512 bytes. El autor demuestra que modificar bytes en el flujo lógico requiere actualizar únicamente el checksum global y el colgante final, sin alterar los checksums individuales de los registros. Además, se identifica la tabla de constantes y los datos de código interno (LIC) que IBM utiliza para estos cálculos. El trabajo permite la reparación selectiva de archivos corruptos y la eliminación de objetos completos, validando la coherencia interna del contenedor. Se aclara que estos checksums no autentican la fuente ni previenen la modificación maliciosa, ya que son recomputables; para ello, IBM i emplea mecanismos de firma separados y validación de objetos internos.