App
Pepo Bóveda
Gestor de contraseñas para Android que no tiene permiso de internet. Si no puede hablar con la red, no puede mandar tus contraseñas a ningún sitio.
- v0.78-beta
- 3 sept 2026
- Gratis, sin cuentas
Descargas
- PepoBoveda-0.78-beta.apk5,2 MBAndroid 10 o posterior5,2 MB
SHA-256 eb97a84f1d7a44c887497e72099d987c6e32e01f2f65030c851e082657e6bcc5
No te pido que confíes en mí: abre el APK con cualquier inspector de apps (App Manager, por ejemplo) y mira los permisos. Son tres, y ninguno es INTERNET:
USE_BIOMETRIC, para abrir con la huella.VIBRATE, para las vibraciones al tocar.CAMERA, para leer el QR de un 2FA, y solo si pulsas escanear.
Cómo guarda las contraseñas
La contraseña maestra no se guarda en ninguna parte. Pasa por Argon2id (64 MiB, 3 iteraciones) para sacar una clave, y con ella se cifra la bóveda entera con AES-256-GCM. La huella no sustituye a la contraseña: envuelve la clave maestra con una clave del Keystore de Android.
Qué trae
Generador de contraseñas, autenticador de 2FA (TOTP) con lector de QR, autorrelleno, passkeys, exportar e importar cifrado y bloqueo automático cuando no la usas.
Está en beta. Al instalar el APK, Android pide permiso para instalar apps de orígenes desconocidos.
Novedades
v0.78-beta3 sept 2026la última+
Cuarta beta. Esta no nace de un aviso de un movil, sino de una auditoria que mando un lector, @crackanimad0r, en el PR #1. Su codigo no entro tal cual (rompia las passkeys y se cargaba las contrasenas guardadas al actualizar), pero varios de sus diagnosticos eran correctos y estan arreglados aqui. El PR #2 cuenta punto por punto que entro y que se quedo fuera.
La app pesa 5,4 MB en vez de 46,2 MB:
- El release salia sin minificar desde siempre. Ahora pasa por R8: fuera todo el codigo que no se usa (casi todo eran iconos de Compose que nunca se pintan) y las 245 clases de la app quedan renombradas.
- Cuatro reglas y ninguna de mas: argon2kt entero, porque la parte nativa busca las clases por su nombre exacto; los serializadores de los modelos; y los numeros de linea, con el nombre del fichero sustituido para no regalar la estructura.
Bloqueo y estado, que es lo serio:
- La boveda es una sola para todo el proceso y la tocaban a la vez la pantalla, el autorrelleno y las passkeys sin coordinarse. Dos guardados simultaneos podian perder uno o dejar el .bvda a medias. Ahora hay un candado sobre el cambio de estado y la escritura.
- El Argon2 se queda FUERA de ese candado a proposito. Tarda mas de un segundo, y dentro habria congelado la pantalla mientras se importa una copia.
- Como sacarlo abre su propia ventana, al desbloquear se comprueba si alguien abrio la boveda mientras se derivaba la clave. Si es asi no se pisa nada: sin esa comprobacion, desbloquear desde el autorrelleno podia revertir una entrada que acabaras de guardar en la app.
- El estado que ve la pantalla se publica dentro del candado. Antes, con mala suerte, se podia anunciar la lista de entradas de una boveda que ya se habia cerrado sola.
Intentos fallidos:
- El contador vivia en memoria, asi que cerrar la app desde recientes devolvia los cinco intentos gratis. Quien prueba claves a mano en un movil ajeno hace justo eso. Ahora vive en disco y se escribe de forma sincrona: matar el proceso ya no lo borra.
- Sigue sin ser el freno de verdad. El freno de verdad es Argon2 sobre el archivo cifrado, y contra quien se lleve el .bvda no sirve porque puede probar fuera de la app. Esto solo encarece probar a mano sobre el movil desbloqueado.
Passkeys:
- Al firmar una asercion se comprueba que la peticion traiga sitio y reto. El camino de crear ya lo hacia; el de firmar no, y firmaba lo que llegara.
Diagnostico:
- Los mensajes de error ya no llevan rutas del sistema. No son un secreto, pero dicen el usuario, si hay perfil de trabajo y a veces el nombre del movil, y ese informe se pega tal cual en los issues.
Repo:
- Las claves sueltas en PEM y PKCS#8 al .gitignore, junto a los .jks que ya estaban.
AVISO IMPORTANTE, leedlo antes de instalar:
Esta es la primera version que pasa por R8. Que compile no garantiza que no haya roto nada en tiempo de ejecucion, y lo tipico que se rompe con R8 es justo Compose y las passkeys. Yo la he probado, pero si vienes de la 0.77 y te importan tus contrasenas, exporta una copia antes de actualizar.
Si algo falla, mandame Ajustes > Auditame. Sin claves, sin contrasenas, sin contenido de ningun QR.
v0.77-beta1 sept 2026+
Tercera beta. Nace de un aviso real: en un Redmi 6 con DotOS no iban ni la camara del escaner ni la huella. No tengo ese movil, asi que en vez de un parche para el, esta version hace que ninguna de las dos cosas pueda fallar en silencio en ningun movil.
Camara:
- La previsualizacion pasa a TextureView: con FLAG_SECURE activo, SurfaceView salia negro en muchos Xiaomi/MediaTek.
- Cadena de motores: CameraX y, si falla, un motor compatible con la API antigua de camara, la que funciona hasta en los HAL mas viejos. Se puede forzar desde Ajustes.
- Leer el QR desde una imagen o captura de pantalla, sin permiso de camara.
- Permiso denegado para siempre: te lleva a la ficha de la app y al volver arranca sola.
- Ningun fallo se traga: cada uno se explica en pantalla y queda apuntado.
Huella:
- Dos modos. Fuerte (Clase 3 atada al Keystore, el de siempre) y compatible (huella Clase 2 o PIN del movil, comprobados por Android), que se ofrece con aviso solo cuando la Clase 3 no existe o el Keystore la rechaza aunque la huella sea correcta.
- Los errores se explican uno a uno; la huella no reconocida vibra; cancelar no deja mensaje; la disponibilidad se vuelve a preguntar al volver a la app.
- Un solo flujo para desbloqueo, Ajustes, bienvenida, autofill y passkeys.
Diagnostico:
- Ajustes > Auditame: lo que Android dice de la huella y de la camara de ese movil y los ultimos pasos de la app con ellas, con botones de copiar y compartir. Sin claves, sin contrasenas, sin contenido de ningun QR. Si algo te falla, mandame eso.
SHA-256 del APK: 4A5F09B8E99579B6A7623E0CF637E818F7C58009CFCD47CE77315BC57F186DCB
Comprueba el hash antes de instalar: certutil -hashfile PepoBoveda-0.77-beta.apk SHA256
v0.75-beta21 ago 2026+
Segunda beta. Lo que cambia respecto a la 0.7-beta:
- Passkeys: el registro ya funciona en el navegador. Fallaba por publicKeyAlgorithm y por firmar con el origen de app en peticiones web.
- La huella se pide sola al abrir la hoja de passkey, sin pasar por la app.
- El escaner abre la camara solo, y "escribir el codigo a mano" ya lleva al modo manual.
- Portada: los codigos 2FA se ven en la lista y las entradas van agrupadas por tipo.
- El anillo de la cuenta atras se vacia continuo y el numero de segundos se lee.
- Fuera el interruptor de "modo grabacion": FLAG_SECURE queda siempre activo, la app no se puede grabar ni capturar.
- Tras la huella, la app te ofrece activarse como gestor de contrasenas del sistema.
SHA-256 del APK: 743BD2AA9ECB3EF3BF498935942B8C6915C6BCF35AB229C1EA97426EF09E681A
Comprueba el hash antes de instalar: certutil -hashfile PepoBoveda-0.75-beta.apk SHA256
v0.7-beta20 ago 2026+
Gestor de contraseñas para Android. Sin internet, sin cuentas, sin nube.
Beta: probada en mi móvil, no en cientos. Si la usas en serio, ten copia.
- AES-256-GCM + Argon2id (64 MiB, 3 iter, 4 hilos)
- Cero permiso de INTERNET, míralo en el manifest
- 2FA (TOTP) con escáner QR, generador, autorrellenado, passkeys
- Biometría, bloqueo por inactividad, freno tras fallos fallidos
- Android 10+
Verifica el APK antes de instalarlo:
SHA-256 APK 8e1945771bd80d78e5ce09db9de4d77e72ced9deb8b110f9a0456cf82a4d77a1
SHA-256 del certificado de firma ec5f27c979575cbf6ce1286af711868165c131f56318a13742db45d1c7172c28
certutil -hashfile PepoBoveda-0.7-beta.apk SHA256
Si no coincide, no lo instales. Android dirá "app no verificada": normal fuera de Play, para eso está el hash.
Código completo en el repo, compílalo tú mismo.