X

Romper el password de una macro VBA de Microstation

Visual Basic for Applications es una serie de librerías que Microsoft puso a disposición, un tanto a la antigua pero muy potentes sobre todo en versiones de Office antes de 2010.  Si bien continúa existiendo, muchos desarrollos ahora se hacen en .NET y otros entornos; aun así, para desarollos basados en marcros, VBA es una solución bastante práctica y en el caso de Microstation, bastante sencilla.  Al menos recuerdo haber hablado de esto mostrando el mapa acotado y algo con XFM.

Estos son algunos de los problemas que me han llegado en esta mañana, mientras corría en la rotonda de la Virgen, en un hogar tropical:

Auxilio: Cuando ejecuto la VBA, me aparece el mensaje:

«Licensing information for this component not found. You do not have sufficient rights with this license to use this functionality in the development environment.»

Hay diversas formas de solventar este problema, entre ellos, instalar un paquete de prerequisitos de microstation tal como los que salieron para XM.  El problema aquí está que, posiblemente al estar usando una versión de Windows 8 o Windows 10, muchas librerías a la antigua no funcionan y seguramente esta VBA fue construida antes de 2010.

Una salida práctica: Instalar Visual Basic 2010 Express, esto no cargará mucho la computadora y agregará los controles OCX que posiblmente un usuario experimentado desde el debugger podría detectar e ingresar desde la consola de comandos.

Una ruta probable de descargar Visual Basic Express es esta.

En caso que se esté queriendo ejecutar desde Microstation Connect Edition, es casi seguro que a la aplicación hay que hacerle un ajuste pues algunas rutas de librerías cambiaron.

Para ejecutar una marcro VBA de Microstation, en el caso de V8i y anteriores se hace con Utilities / Marcro / Project Manager.  En el caso de Microstation Connect hay que elegir la pestaña Utilities del Ribbon.

Como pueden ver, la macro se ejecuta pero si queremos tocar el código nos mostrará la ventana de protección.

¿Es posible romper el password que tiene una VBA?

La funcionalidad de protección mediante password de Visual Basic for Applications busca generar control y seguridad a los desarrollos, por lo que no debería ser correcto preguntar por estas cosas en una web.  Sin embargo, suponiendo que la solución es porque se nos olvidó la clave o que al técnico desarrollador le dio el chikungunya y colgó el mouse, aquí va una solución práctica usando un editor hexadecimal.

VBA es adoptada por las empresas desarrolladoras, así que el acrónimo usado dentro del código para indicar cuando se coloca el password cambia de una apliación a otra.  Por ejemplo, para quitar la clave de una macro VBA de Excel normalmente el acrónimo es DBP=»password», para Access la clave es DPX=»password».  Si encontramos esa cadena, y le cambiamos a algo como DBR en lugar de DBP, o DPR en lugar de DPX, al guardarse, el comando de protección de clave ya no estará bien escrito y la vba se abrirá sin protección.

Esto, usando Hex Editor, en la opción Edit / Search, se escribe la cadena que buscamos, por ejemplo BDP, con la opción Text string y manteniendo activo Case sensitive, tal como se muestra en la imagen siguiente.

Usando un editor Hexadecimal (Hex Editor), es probable abrir la macro de extensión .mvba de microstation y hacer ese cambio siguiendo estos pasos:

1. Descargar XVI32

Este se puede bajar de esta dirección; en mi caso estoy bajando la versión 2.55, baja comprimida en zip, hay que descomprimirla y ejecutar el archivo xvi32.exe.

2. Abrir la aplicación mvba.

Es recomendable, antes de abrir la VBA hacer una copia.  Vean que por protegida que esté, aquí se le pueden ver las tripas.  Bueno, pues lo único que queda es buscar ese acrónimo, una vez encontrado se cambia una de las tres letras por una X, y se guarda. Con esto, la VBA ya está desprotegida.

Al cerrar la aplicación preguntará si guardan los cambios, hay que indicar que sí.

Una vez que se ha guardado, vean que al abrir la VBA ya no solicita clave, por lo que es probable asignarle una nueva.  Si el usuario que había olvidado la clave todavía está trabajando en la empresa, hay que ir a darle unos coscorrones en la cabeza o por lo menos obligarlo a pagar las cervezas del viernes; si murió con el chikungunya, hacemos otro minuto de silencio.

Encontrar el acrónimo para VBA de Microstation (mvba), pareciera ser el siguiente acertijo.  No es el mismo para Excel o Access pero con un esfuerzo de sentido común y paciencia lo podrás encontrar.

Para el ahorro que significa no poder saber el password, te daremos la cadena acrónimo a cambio de una colaboración simbólica.  Por supuesto, siempre hay un culpable o un ganador, a ese hay que cobrárselo XD.  Para eso hay que comprar la descarga con tarjeta de crédito o Paypal.

geofumadas: Editor de Geofumadas
Related Post