En algunos huecos libres que he tenido estos días le he dedicado algo más de tiempo y tengo malas noticias.
Hay dos detalles en los que no me había fijado:
1. La contraseña tipo 4 no sólo usa sha256, sino que ese churro encriptado además depende del token y este va cambiando de cada vez, lo que impide que lo pudiéramos tener precalculado para un usuario y contraseña concreto. La solución sería implementar sha256 en un script en RouterOS (no parece imposible dado que alguien lo ha conseguido con md5, pero sería una auténtica tortura).
2. El obstáculo definitivo. Independiente del tipo de contraseña que haya que usar, la llamada
/api/webserver/SesTokInfo
que se usa en los modelos más antiguos (y como primer paso en los modernos) retorna los tokens en un xml como datos de respuesta de la petición http, lo que permite obtenerlos sin problema, pero
/api/user/login
los retorna en la cabecera de la respuesta http, y /tool/fetch no la expone, lo que ya es irresoluble.
Con lo que, hoy por hoy, una solución directa parece imposible.
Habría la posibilidad de conseguirlo indirectamente, usando una máquina que estuviera siempre disponible en la red local (p.ej. una Raspberry PI o un NAS que permita hospedar un servidor web) e implementar ahí un servicio web (o un servidor TCP) con su propio api y que hiciera de intermediario. Tanto se podría hacer todo a través de ahí, o sólo lo mínimo que no se pudiera hacer de otra forma, como el login, y el resto hacerlo directamente contra el Huawei.
Ni que decir tiene que esta opción desesperada requeriría un cierto esfuerzo, a parte de la infraestructura.