Los otros días al entrar en la página del BROU e intentar transferir a otro banco me encuentro con el error:

Esto, que me indica que debo crear una nueva llave digital (como le llama el BROU a un TOTP), me hace desempolvar un post previo, Obtener token OTP del BROU.
En ese post, por un tema de desconocer la licencia del archivo aes-ctr-min.js
no incluí el código.
Esto me lleva a tener que volver a descargar el apk para obtenerlo, cosa
bastante incómoda.
El problema que encontré (aparte del que me generó el banco) es que el sitio https://apkdownload.com que usé previamente ya no existe.
Probando con los buscadores no tuve suerte pero encontré una aplicación similar en el sitio APKPure: https://apkpure.com/vu-br-token/com.brou.vusecurity.
Si bien no es la misma aplicación, en las capturas se parece, por lo que decidí investigar el contenido para ver si allí se encontraba el archivo esperado.
Luego de abrir el archivo con Apktool encontré que este tiene un archivo
aes.js pero también me di cuenta que en el post anterior no incluí un checksum
del archivo, mal yo.
Lo que esta vez hice distinto fué descargar varias versiones del apk, para ver
que diferencias tenían entre ellos y en la versión 3.4.1 encuentro en el
archivo assets/www/js/aes/utf8.js el encabezado:
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Utf8 class: encode / decode between multi-byte Unicode characters and UTF-8 multiple */
/* single-byte character encoding (c) Chris Veness 2002-2010 */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Este es el único archivo con encabezado, pero bueno, una pista…
Buscando sobre Chris Veness pude encontrar estos dos posts:
- AES Advanced Encryption Standard
- Recreating Chris Veness’ AES256 CTR decryption with CryptoJS for fun and profit
Utilizando principalmente el segundo link creé un script (en python) que permite realizar los pasos de obtener la semilla cifrada del banco y luego descifrarla localmente: brou-token.
Y bueno, luego de todo el trabajo anterior y cuando voy a intengar generar el cupon … veo que no puedo generar el cupón de asociación (primer paso descripto en el post original).
Ya molesto, buscando en la página del banco encuentro: https://www.brou.com.uy/personas/servicios/internet/llave-digital:
La Llave Digital es un mecanismo de seguridad que permite autorizar transacciones de eBROU desde un único celular validado.
O sea, ahora el banco pasó de usar un token OTP a una aplicación android que recibe notificaciones del banco cuando se realizan las transacciones y hay que validarlas usando la aplicación (la cual invoca una api rest del banco…).
Aprovecho a indicar mi extrema molestia, ya que pierdo opciones porque paso de poder generar un TOTP en cualquier sistema con el programa que quiera a tener que usar una aplicación android/ios desde un celular con uno de los sistemas operativos anteriores.
Y bueno, si bien perdí el tiempo porque no pude registrar un TOTP, me quedo contento porque pude dar con la forma en que se descifraba la semilla que me había quedado pendiente del post anterior.