Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
apm — Un gestor de contraseñas local para todos | Kitploit
Herramientas/GitHubGitHub/aaravmaloo/apm
Descifrado de ContraseñasHerramientas de Cifrado/DescifradoCriptografíaSeguridad en la NubeDevSecOpsPrivacidadUtilidades y FrameworksDetección de SecretosGestión de Identidad y Acceso (IAM)Autenticación
GitHub
29233hace 3 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
aaravmaloo/apm

apm

Un gestor de contraseñas local para todos

Ver RepositorioSitio web
<div align="center">

# APM

**Un mejor gestor de contraseñas local para todos.**

[![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?style=flat&logo=go&logoColor=white)](https://golang.org)
[![License](https://img.shields.io/github/license/aaravmaloo/apm?style=flat)](LICENSE)
[![Docs](https://img.shields.io/badge/docs-aaravmaloo.github.io/apm-blue?style=flat)](https://aaravmaloo.github.io/apm)

[![CI](https://img.shields.io/github/actions/workflow/status/aaravmaloo/apm/ci.yml?branch=master&label=CI&style=flat)](https://github.com/aaravmaloo/apm/actions/workflows/ci.yml)
[![Latest Release](https://img.shields.io/github/v/release/aaravmaloo/apm?style=flat)](https://github.com/aaravmaloo/apm/releases/latest)
[![Stars](https://img.shields.io/github/stars/aaravmaloo/apm?style=flat)](https://github.com/aaravmaloo/apm/stargazers)
[![Issues](https://img.shields.io/github/issues/aaravmaloo/apm?style=flat)](https://github.com/aaravmaloo/apm/issues)

</div>
APM es un gestor de contraseñas CLI rápido y de conocimiento cero escrito en Go y Rust. Almacena **más de 25 tipos de secretos estructurados** en una única bóveda cifrada: desde contraseñas y códigos TOTP hasta claves SSH, registros médicos, fotos y archivos binarios. Este repositorio produce dos binarios: `pm` para uso personal y `pm-team` para bóvedas organizativas compartidas.

---

### ¿Por qué APM?

- **Rápido y fácil de aprender** — sin memorizar comandos ni flags. APM te solicita lo que necesita. También hay flags de CLI disponibles para usuarios avanzados que quieren la máxima velocidad.
- **Conocimiento cero** — tu contraseña maestra nunca se almacena. Se derivan tres claves separadas de 32 bytes usando Argon2id. Nadie más que tú puede descifrar tu bóveda.
- **Cifrado dual** — elige AES-256-GCM o XChaCha20-Poly1305. Integridad de doble capa mediante HMAC-SHA256 sobre la autenticación AEAD.
- **Portátil** — un archivo de bóveda, un binario. Lleva tu bóveda a cualquier parte.
- **Nube opcional** — sincroniza con Google Drive, GitHub o Dropbox. Totalmente opcional; no se requiere cuenta para usar APM.
- **Listo para IA** — servidor MCP nativo con tokens de alcance limitado para que Claude, Cursor o cualquier agente compatible con MCP pueda acceder a tu bóveda de forma segura.
- **Listo para equipos** — RBAC completo, departamentos, flujos de aprobación y bóvedas compartidas en `pm-team`.

---

### Inicio rápido

```sh
go build -o pm .
pm setup       # initialize vault and choose security profile
pm unlock      # start a session
pm add         # add a secret (interactive)
pm get github  # fuzzy search and retrieve
pm lock        # end session
```

**Edición de equipo:**
```sh
cd team
go build -o pm-team .
```

---

### Tipos de secretos

APM admite **25 tipos de secretos estructurados** con campos validados y lógica de visualización específica por tipo:

| # | Tipo | # | Tipo |
|---|------|---|------|
| 1 | Contraseña | 14 | Registro de Docker |
| 2 | TOTP | 15 | Secreto de CI/CD |
| 3 | Identificación gubernamental | 16 | Nota segura |
| 4 | Historial médico | 17 | Códigos de recuperación |
| 5 | Información de viaje | 18 | Certificado |
| 6 | Contacto | 19 | Banca |
| 7 | Wi-Fi | 20 | Documento |
| 8 | Clave de API | 21 | Licencia de software |
| 9 | Token | 22 | Contrato legal |
| 10 | Clave SSH | 23 | Foto |
| 11 | Configuración SSH | 24 | Audio |
| 12 | Credenciales de la nube | 25 | Vídeo |
| 13 | Kubernetes | | |

---

### Características

**Seguridad**
- Derivación de claves Argon2id de conocimiento cero — la contraseña maestra nunca se almacena
- Cifrados AEAD duales: AES-256-GCM y XChaCha20-Poly1305
- Verificación de integridad de doble capa HMAC-SHA256
- Cuatro perfiles de seguridad ajustables: `standard`, `hardened`, `paranoid`, `legacy`
- Watchtower (`pm watchtower`): una puntuación de seguridad de 0 a 100 con contraseñas débiles, reutilizadas, antiguas, filtradas (opcional, k-anónimo) y expuestas, elementos que caducan, falta de doble factor y passkeys, claves riesgosas y comprobaciones de configuración, además de puntuaciones de confianza por elemento y una revisión de actividad
- Las contraseñas incorrectas añaden una espera creciente (nunca un bloqueo permanente), compartida por la CLI, la aplicación y la extensión
- Registro de auditoría a prueba de manipulaciones almacenado fuera de la bóveda

**Bóveda**
- Un único archivo de bóveda cifrado — portátil entre cualquier dispositivo
- Espacios para compartimentación lógica (como carpetas)
- Búsqueda difusa con navegador interactivo y navegación por teclado
- Inspector de metadatos: fecha de creación, último acceso, recuento de accesos, puntuación de confianza

**TOTP**
- Temporizadores de cuenta atrás en vivo en una lista interactiva
- Orden personalizado persistente
- Copia directa: `pm totp github`
- Integración con el demonio de autocompletado para inyectar automáticamente códigos 2FA

**Sincronización en la nube**
- Google Drive (OAuth2 PKCE), GitHub (PAT), Dropbox (OAuth2 PKCE)
- Cifrado de extremo a extremo — los proveedores nunca ven el texto plano
- `.apmignore` para filtrar entradas por proveedor
- Resolución de conflictos: sobrescribir, mantener local o cancelar
- Sincronización automática en segundo plano

**Sesiones**
- Desbloqueo/bloqueo explícito con caducidad configurable y tiempo de inactividad
- Sesiones efímeras delegadas para automatización y acceso de agentes de IA

**Servidor MCP**
- Servidor nativo del Model Context Protocol
- Tokens de permisos con alcance: `read`, `secrets`, `write`, `admin`
- Las operaciones de escritura esperan tu aprobación en la aplicación de escritorio; los asistentes no pueden aprobar sus propios cambios
- Funciona con Claude Desktop, Cursor, Windsurf y cualquier cliente MCP



**Recuperación**
| Factor | Comando |
|--------|---------|
| OTP por correo electrónico | `pm auth email` |
| Clave de recuperación | `pm auth recover` |
| Acciones de quórum (Shamir) | `pm auth quorum-setup` |
| Passkey WebAuthn | `pm auth passkey register` |
| Códigos de recuperación de un solo uso | `pm auth codes generate` |

**Importar / Exportar**

| Formato | Importar | Exportar |
|--------|--------|--------|
| JSON | `pm import json` | `pm export json` |
| CSV | `pm import csv` | `pm export csv` |
| TXT | `pm import txt` | `pm export txt` |

**Motor de políticas**
```yaml
name: corporate-standard
password_policy:
  min_length: 14
  require_uppercase: true
  require_numbers: true
  require_symbols: true
rotation_policy:
  rotate_every_days: 90
  notify_before_days: 14
```
```sh
pm policy load ./policies/
```

**Team Edition (`pm-team`)**
- RBAC con múltiples roles
- Departamentos con dominios de cifrado aislados
- Flujos de aprobación para entradas sensibles
- Cajas fuertes compartidas para el uso compartido de credenciales entre varios usuarios

---

### Extensión de navegador

La extensión de navegador de APM rellena inicios de sesión, ofrece códigos de un solo uso en los sitios a los que pertenecen, guarda nuevos inicios de sesión y crea y usa passkeys. Nunca ve tu contraseña maestra ni la clave privada de una passkey. Se comunica con un pequeño puente que APM sirve en tu propia máquina en `127.0.0.1:41417` (configura `APM_BRIDGE_PORT` para usar otro puerto).

**Tres formas de acceder a la caja fuerte**

- Con la aplicación de escritorio: el puente se ejecuta mientras la aplicación está abierta. Las solicitudes de emparejamiento y los desbloqueos del navegador aparecen en la aplicación.
- Solo con la CLI, vinculada (recomendado): ejecuta `pm extension link` una vez. Registra `pm` como host de mensajería nativa con cada navegador Chromium (Chrome, Edge, Brave, Arc, Vivaldi, Chromium), y a partir de entonces el navegador inicia `pm` por su cuenta siempre que la aplicación esté cerrada.
- Solo con la CLI, desde una terminal: ejecuta `pm extension serve` y déjalo abierto. Sirve la misma API que sirve la aplicación de escritorio y muestra cada solicitud de desbloqueo, bloqueo y emparejamiento a medida que ocurre.

```sh
pm extension link               # once per computer; confirm the code the extension shows
pm extension serve              # unlocks with your CLI session, or asks for the master password
pm extension serve --locked     # starts locked; unlock from the extension
pm extension serve --idle 5m    # locks after 5 minutes without browser activity (default 15m, 0 turns it off)
```

`pm extension serve` imprime una línea cuando la bóveda está desbloqueada o bloqueada. Pulsa Ctrl+C para detenerlo; la clave de la bóveda se elimina de la memoria. Si el puerto está ocupado, se cierra e indica que la aplicación APM puede estar ya sirviendo la extensión.

**Emparejar un navegador**

1. En la extensión, elige Connect. La extensión muestra un código de 6 caracteres, por ejemplo `K7M-2QX`.
2. Comprueba que APM muestra el mismo código: la aplicación de escritorio abre un diálogo, y `pm extension link` o `pm extension serve` pregunta en la terminal, por ejemplo `Connect Chrome on macOS? Code K7M-2QX [y/N]`.
3. Apruébalo. La extensión recibe su token y queda emparejada.

Una solicitud caduca a los 2 minutos, y solo una puede esperar a la vez. `pm extension serve` deniega las solicitudes por sí mismo cuando no se ejecuta en una terminal. Para emparejar manualmente en su lugar, ejecuta `pm extension token --show` y pega el token en el campo de emparejamiento manual de la extensión.

**Comandos**

| Comando | Qué hace |
|---------|--------------|
| `pm extension link [--browser chrome,edge] [--no-wait]` | Permite que el navegador inicie `pm` para la extensión cuando la aplicación de escritorio está cerrada |
| `pm extension unlink` | Impide que los navegadores inicien `pm`. El emparejamiento se conserva |
| `pm extension status [--port N]` | Muestra qué navegadores están vinculados, qué está sirviendo la extensión en este momento, el estado de bloqueo y el número de elementos de la bóveda, y la huella del token |
| `pm extension serve [--port N] [--locked] [--idle 15m]` | Sirve la extensión desde esta terminal hasta Ctrl+C |
| `pm extension token [--show]` | Imprime el token de emparejamiento, enmascarado a menos que se indique `--show` |
| `pm extension rotate` | Reemplaza el token de emparejamiento. Cada navegador emparejado debe emparejarse de nuevo. Un puente en ejecución adopta el nuevo token en su siguiente solicitud |
| `pm totp link <entry> <domain>` | Vincula un código de un solo uso a un sitio para que la extensión lo ofrezca allí |
| `pm totp unlink <entry> [domain]` | Elimina los vínculos de sitio de un código de un solo uso |

`pm get` muestra las passkeys que tiene un inicio de sesión y el código de un solo uso vinculado a él, y `pm totp` muestra el sitio vinculado de cada código.

**Cómo el puente se mantiene privado**

- Solo escucha en `127.0.0.1` y solo responde a solicitudes dirigidas a `127.0.0.1` o `localhost`, lo que bloquea el DNS rebinding.
- Rechaza cualquier solicitud cuyo `Origin` sea una página web. Solo los orígenes `chrome-extension://`, `moz-extension://` y `safari-web-extension://` reciben cabeceras CORS.
- Toda llamada excepto el emparejamiento necesita el token de emparejamiento, almacenado en `bridge_token` en tu directorio de configuración de APM y comparado en tiempo constante.
- Las llamadas de listado y detalle nunca incluyen valores secretos. La extensión solicita un campo a la vez cuando revelas o rellenas, y APM registra ese acceso.
- Las passkeys se crean y firman dentro de APM. La extensión envía el origen del sitio y un hash de los datos del cliente, y APM comprueba que el sitio pueda usar ese relying party antes de firmar.

**Varios sitios web por inicio de sesión**

Un inicio de sesión guarda su dirección principal en `website` y las demás en `urls`, mostradas como "Other websites" en la aplicación de escritorio. La extensión ofrece el inicio de sesión en una página que coincida con cualquiera de ellas. Por defecto, una coincidencia es el mismo dominio registrable, por lo que `accounts.google.com` y `mail.google.com` coinciden ambos con `google.com`.

- Desde la ventana emergente puedes añadir el sitio en el que estás a un inicio de sesión, añadir o eliminar sitios web, y guardar un nuevo inicio de sesión con más de un sitio web.
- Si rellenas un inicio de sesión en un sitio para el que no está guardado, la extensión pregunta primero. Elige "Fill and remember" para rellenarlo y añadir ese sitio al inicio de sesión.
- `pm totp link <entry> <domain>` hace lo mismo para un código de un solo uso.

**Logotipos de sitios web**

La aplicación de escritorio y la extensión muestran el logotipo propio de cada inicio de sesión en lugar de su primera letra. APM obtiene el logotipo por sí mismo, desde el propio sitio, y nunca recurre a un servicio de favicons de terceros, que conocería todos los sitios de tu bóveda.

- Qué: el host del primer sitio web del inicio de sesión (un código de un solo uso utiliza su sitio vinculado), en minúsculas y sin `www.` ni puerto. `localhost`, direcciones IP, `.local`, `.internal` y nombres sin punto nunca se consultan.
- Cómo: APM carga `https://<host>/` (como máximo 512 KiB), elige el mejor icono que declare la página (`apple-touch-icon`, luego el PNG más grande, luego SVG) y recurre a `https://<host>/favicon.ico`. Solo HTTPS, como máximo 3 redirecciones, 6 segundos por sitio, imágenes de hasta 256 KiB, sin cookies. Se rechazan las direcciones que resuelven a rangos de loopback, privados, link-local o CGNAT. Las solicitudes van directamente al sitio, no a través de un proxy del sistema.
- Cuándo: solo mientras la bóveda está desbloqueada y la aplicación de escritorio o `pm extension serve` está en ejecución, como máximo 4 sitios a la vez. Un sitio fallido se reintenta después de 3 días; un logo se actualiza después de 30 días.
- Dónde: `icons/` en tu directorio de configuración de APM (`~/Library/Application Support/apm/icons` en macOS, `~/.config/apm/icons` en Linux, `%AppData%\apm\icons` en Windows). Cada archivo se nombra con el SHA-256 de su host, y se conservan como máximo 2000. La caché no está cifrada: cada archivo `.json` junto a una imagen indica su host, por lo que cualquiera que pueda leer tu directorio de configuración puede ver qué sitios tienen logos.
- Qué aprende el sitio: tu dirección IP y que APM solicitó su icono (el user agent es `APM/<version> (+icon)`). Nada sobre tu cuenta.
- Cómo desactivarlo: en la aplicación de escritorio, Ajustes, Apariencia, desactiva "Show website icons" (la configuración de la bóveda `siteIcons`, que `pm extension serve` también respeta), y elige "Clear icon cache" para eliminar la caché. Establece `APM_ICONS_OFFLINE=1` para detener toda consulta desde un proceso, por ejemplo en pruebas o CI. Los logos en caché se siguen mostrando hasta que los borres.

---

### Perfiles de seguridad

| Perfil | Memoria Argon2 | Iteraciones | Paralelismo | Caso de uso |
|---------|--------------|------------|-------------|----------|
| `standard` | 64 MB | 3 | 2 | La mayoría de las máquinas |
| `hardened` | 256 MB | 5 | 4 | Estaciones de trabajo (≥8 GB de RAM) |
| `paranoid` | 512 MB | 6 | 4 | Servidores (≥16 GB de RAM) |
| `legacy` | PBKDF2 | 600,000 | 1 | Compatibilidad con versiones anteriores |

APM detecta automáticamente los núcleos de tu CPU y la RAM para recomendar el perfil óptimo durante `pm setup`.


### Estado de desarrollo e historial
(Esta nota es del propietario)
A partir del 30 de marzo de 2026, estoy trabajando actualmente en la GUI de APM. Al principio comenzó como una aplicación CLI. El issue #38 explica todo en detalle. En general, quiero que APM llegue a 
una demografía aún mayor. Mantendré la GUI separada en un repositorio apm-gui o crearé una organización y moveré ambos repositorios allí. 

Comencé APM como un proyecto verdaderamente personal. Empezó una noche cualquiera, cuando quise crear mi propio gestor de contraseñas. Estaba harto de zoho password, ya que lo usaba para TOTPs. Era increíblemente lento para funcionar, y usaba archivos de texto plano para mis tokens, lo cual no es seguro. 

A partir de ahora, NO planeo abandonar/retirar el proyecto. Seguirá siendo funcional durante mucho tiempo. Intento mejorarlo cada día y usarlo cada día. A veces, el repositorio puede estar inactivo, y es cuando pruebo y experimento con la aplicación.

---

### Estructura de lanzamientos

| Nivel | ¿Estable? | ¿Bóveda segura? | Propósito |
|------|---------|-------------|---------|
| Canary | ❌ | ❌ | Vista previa más temprana de funciones — puede corromper bóvedas |
| Alpha | ❌ | ✅ | Funciones inestables, integridad de la bóveda preservada |
| Beta | ✅ | ✅ | Funciones totalmente probadas, despliegue cuidadoso |
| Stable | ✅ | ✅ | Lanzamientos listos para producción |

> Haz siempre una copia de seguridad de tu bóveda antes de probar lanzamientos Canary.
P.D. Para algunos lanzamientos, puede que no se publiquen algunos niveles dependiendo de lo rápido y fácil que sea publicarlos sin crear más niveles de los necesarios.
---

# Uso de IA
Desarrollar APM y mantener toda la suite no es fácil de hacer de una sola vez. Por ello, utilizamos un **25%** de código generado por IA (principalmente cambios de UI y cambios no críticos y no criptográficos). Sin embargo, en APM tenemos algunas políticas para el uso de IA; se enumeran a continuación.
- La IA solo se utiliza para desarrollar funcionalidades pequeñas y funcionalidades que no interfieran con la bóveda
- Las ediciones de IA deben tratarse con cuidado y revisarse minuciosamente
- Las ediciones de IA deben probarse a fondo
¡Estas políticas garantizan que usemos la IA de forma responsable y que hagamos de APM algo mejor para todos!


### Documentación

Documentación completa en **[aaravmaloo.github.io/apm](https://aaravmaloo.github.io/apm)**

- [Instalación](https://aaravmaloo.github.io/apm/getting-started/installation/)
- [Primeros pasos](https://aaravmaloo.github.io/apm/getting-started/first-steps/)
- [Referencia de la CLI](https://aaravmaloo.github.io/apm/reference/cli/)
- [Arquitectura](https://aaravmaloo.github.io/apm/concepts/architecture/)
- [Cifrado](https://aaravmaloo.github.io/apm/concepts/encryption/)
- [Edición para equipos](https://aaravmaloo.github.io/apm/guides/team-edition/)
- [Integración con MCP](https://aaravmaloo.github.io/apm/guides/mcp-integration/)
- [Contribuir](https://aaravmaloo.github.io/apm/contributing/)

---

### Contribuir

Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](https://aaravmaloo.github.io/apm/contributing/) para conocer las directrices.

---

### Licencia

[Licencia GPL-3.0](https://github.com/aaravmaloo/apm/blob/master/LICENSE) © Aarav Maloo
Descargar herramienta