keras / poc_convert.py
testamentaria's picture
Upload 7 files
617110b verified
Raw
History Blame Contribute Delete
1.54 kB
"""
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: <python-del-venv> poc_convert.py <ruta.h5>
"""
import sys
import traceback
if len(sys.argv) != 2:
print("Uso: poc_convert.py <ruta.h5>")
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.")