Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
apm — Локальный менеджер паролей для всех | Kitploit
Инструменты/GitHubGitHub/aaravmaloo/apm
Взлом паролейИнструменты шифрования/дешифрованияКриптографияБезопасность облачных средDevSecOpsКонфиденциальностьУтилиты и фреймворкиОбнаружение СекретовУправление идентификацией и доступом (IAM)Аутентификация
GitHub
2923711 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
aaravmaloo/apm

apm

Локальный менеджер паролей для всех

РепозиторийСайт
<div align="center">

# APM

**Лучший локальный менеджер паролей для всех.**

[![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 — это быстрый CLI-менеджер паролей с нулевым разглашением, написанный на Go и Rust. Он хранит **более 25 структурированных типов секретов** в одном зашифрованном хранилище — от паролей и TOTP-кодов до SSH-ключей, медицинских записей, фотографий и бинарных файлов. Из этого репозитория поставляются два бинарника: `pm` для личного использования и `pm-team` для общих организационных хранилищ.

---

### Почему APM?

- **Быстрый и простой в освоении** — не нужно запоминать команды или флаги. APM сам запросит всё необходимое. Для опытных пользователей, которым нужна максимальная скорость, также доступны флаги CLI.
- **Нулевое разглашение** — ваш мастер-пароль никогда не сохраняется. Три отдельных 32-байтовых ключа выводятся с помощью Argon2id. Никто, кроме вас, не может расшифровать ваше хранилище.
- **Двойное шифрование** — выберите AES-256-GCM или XChaCha20-Poly1305. Двухуровневая целостность через HMAC-SHA256 поверх аутентификации AEAD.
- **Портативность** — один файл хранилища, один бинарник. Берите хранилище куда угодно.
- **Опциональное облако** — синхронизация с Google Drive, GitHub или Dropbox. Полностью по желанию; для использования APM аккаунт не требуется.
- **Готовность к ИИ** — нативный MCP-сервер с токенами с ограниченной областью действия, чтобы Claude, Cursor или любой совместимый с MCP агент мог безопасно обращаться к вашему хранилищу.
- **Готовность к командной работе** — полный RBAC, отделы, рабочие процессы согласования и общие хранилища в `pm-team`.

---

### Быстрый старт

```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
```

**Командная версия:**
```sh
cd team
go build -o pm-team .
```

### Типы секретов

APM поддерживает **25 структурированных типов секретов** с проверяемыми полями и логикой отображения, специфичной для каждого типа:

| # | Тип | # | Тип |
|---|------|---|------|
| 1 | Пароль | 14 | Реестр Docker |
| 2 | TOTP | 15 | Секрет CI/CD |
| 3 | Государственный ID | 16 | Защищённая заметка |
| 4 | Медицинская запись | 17 | Коды восстановления |
| 5 | Данные о поездке | 18 | Сертификат |
| 6 | Контакт | 19 | Банковские данные |
| 7 | Wi-Fi | 20 | Документ |
| 8 | API-ключ | 21 | Лицензия на ПО |
| 9 | Токен | 22 | Юридический договор |
| 10 | SSH-ключ | 23 | Фото |
| 11 | Конфигурация SSH | 24 | Аудио |
| 12 | Облачные учётные данные | 25 | Видео |
| 13 | Kubernetes | | |

---

### Возможности

**Безопасность**
- Zero-knowledge вывод ключа Argon2id — мастер-пароль никогда не сохраняется
- Двойные AEAD-шифры: AES-256-GCM и XChaCha20-Poly1305
- Двухуровневая проверка целостности HMAC-SHA256
- Четыре настраиваемых профиля безопасности: `standard`, `hardened`, `paranoid`, `legacy`
- Watchtower (`pm watchtower`): оценка безопасности от 0 до 100 с выявлением слабых, повторно используемых, старых, скомпрометированных (по желанию, k-анонимно) и раскрытых паролей, истекающих элементов, отсутствующей двухфакторной аутентификации и passkey, рискованных ключей и проверок настройки, а также оценки доверия для каждого элемента и обзор активности
- Неверные пароли добавляют растущую задержку (но никогда не постоянную блокировку), общую для CLI, приложения и расширения
- Журнал аудита с защитой от подделки, хранящийся вне хранилища

**Хранилище**
- Единый зашифрованный файл хранилища — переносимый на любое устройство
- Пространства для логического разделения (как папки)
- Нечёткий поиск с интерактивным браузером и навигацией с клавиатуры
- Инспектор метаданных: дата создания, последний доступ, количество обращений, оценка доверия

**TOTP**
- Живые таймеры обратного отсчёта в интерактивном списке
- Постоянный пользовательский порядок
- Прямое копирование: `pm totp github`
- Интеграция с демоном автозаполнения для автоматической подстановки кодов 2FA

**Облачная синхронизация**
- Google Drive (OAuth2 PKCE), GitHub (PAT), Dropbox (OAuth2 PKCE)
- Сквозное шифрование — провайдеры никогда не видят открытый текст
- `.apmignore` для фильтрации записей по провайдеру
- Разрешение конфликтов: перезаписать, оставить локальную версию или отменить
- Фоновая автосинхронизация

**Сессии**
- Явная разблокировка/блокировка с настраиваемым сроком действия и тайм-аутом бездействия
- Делегированные эфемерные сессии для автоматизации и доступа AI-агентов

**Сервер MCP**
- Нативный сервер Model Context Protocol
- Токены разрешений с ограниченной областью: `read`, `secrets`, `write`, `admin`
- Операции записи ожидают вашего одобрения в настольном приложении; ассистенты не могут одобрять собственные изменения
- Работает с Claude Desktop, Cursor, Windsurf и любым клиентом MCP



**Восстановление**
| Фактор | Команда |
|--------|---------|
| Email OTP | `pm auth email` |
| Ключ восстановления | `pm auth recover` |
| Кворумные доли (Shamir) | `pm auth quorum-setup` |
| Passkey WebAuthn | `pm auth passkey register` |
| Одноразовые коды восстановления | `pm auth codes generate` |

**Импорт / Экспорт**

| Формат | Импорт | Экспорт |
|--------|--------|--------|
| JSON | `pm import json` | `pm export json` |
| CSV | `pm import csv` | `pm export csv` |
| TXT | `pm import txt` | `pm export txt` |

**Механизм политик**
```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 с несколькими ролями
- Отделы с изолированными доменами шифрования
- Рабочие процессы утверждения для конфиденциальных записей
- Общие хранилища для совместного использования учётных данных несколькими пользователями

---

### Расширение для браузера

Расширение APM для браузера заполняет логины, предлагает одноразовые коды на сайтах, к которым они относятся, сохраняет новые логины, а также создаёт и использует ключи доступа (passkeys). Оно никогда не видит ваш мастер-пароль или закрытый ключ passkey. Оно взаимодействует с небольшим мостом, который APM запускает на вашей собственной машине по адресу `127.0.0.1:41417` (задайте `APM_BRIDGE_PORT`, чтобы использовать другой порт).

**Три способа доступа к хранилищу**

- С настольным приложением: мост работает, пока приложение открыто. Запросы на сопряжение и разблокировки из браузера отображаются в приложении.
- Только с CLI, связанный режим (рекомендуется): выполните `pm extension link` один раз. Это регистрирует `pm` как хост нативного обмена сообщениями в каждом браузере на базе Chromium (Chrome, Edge, Brave, Arc, Vivaldi, Chromium), и с этого момента браузер сам запускает `pm`, когда приложение закрыто.
- Только с CLI, из терминала: выполните `pm extension serve` и оставьте его открытым. Он предоставляет тот же API, что и настольное приложение, и показывает каждый запрос на разблокировку, блокировку и сопряжение по мере их возникновения.

```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` выводит строку, когда хранилище разблокировано или заблокировано. Нажмите Ctrl+C, чтобы остановить его; ключ хранилища удаляется из памяти. Если порт занят, команда завершается и сообщает, что приложение APM, возможно, уже обслуживает расширение.

**Сопряжение браузера**

1. В расширении выберите Connect. Расширение показывает 6-символьный код, например `K7M-2QX`.
2. Убедитесь, что APM показывает тот же код: настольное приложение открывает диалог, а `pm extension link` или `pm extension serve` запрашивает подтверждение в терминале, например `Connect Chrome on macOS? Code K7M-2QX [y/N]`.
3. Подтвердите. Расширение получает свой токен и считается сопряжённым.

Запрос истекает через 2 минуты, и одновременно может ожидать только один. `pm extension serve` отклоняет запросы самостоятельно, когда он запущен не в терминале. Чтобы сопрячь вручную, выполните `pm extension token --show` и вставьте токен в поле ручного сопряжения расширения.

**Команды**

| Команда | Что она делает |
|---------|--------------|
| `pm extension link [--browser chrome,edge] [--no-wait]` | Разрешить браузеру запускать `pm` для расширения, когда настольное приложение закрыто |
| `pm extension unlink` | Запретить браузерам запускать `pm`. Сопряжение сохраняется |
| `pm extension status [--port N]` | Показать, какие браузеры связаны, что сейчас обслуживает расширение, состояние блокировки хранилища и количество элементов, а также отпечаток токена |
| `pm extension serve [--port N] [--locked] [--idle 15m]` | Обслуживать расширение из этого терминала до нажатия Ctrl+C |
| `pm extension token [--show]` | Вывести токен сопряжения, скрытый, если не указан `--show` |
| `pm extension rotate` | Заменить токен сопряжения. Каждый сопряжённый браузер должен сопрячься заново. Запущенный мост подхватит новый токен при следующем запросе |
| `pm totp link <entry> <domain>` | Связать одноразовый код с сайтом, чтобы расширение предлагало его там |
| `pm totp unlink <entry> [domain]` | Удалить привязки одноразового кода к сайтам |

`pm get` показывает passkeys, которые есть у логина, и связанный с ним одноразовый код, а `pm totp` показывает связанный сайт для каждого кода.

**Как мост сохраняет приватность**

- Он слушает только `127.0.0.1` и отвечает только на запросы, адресованные `127.0.0.1` или `localhost`, что блокирует DNS rebinding.
- Он отклоняет любой запрос, чей `Origin` является веб-страницей. CORS-заголовки получают только источники `chrome-extension://`, `moz-extension://` и `safari-web-extension://`.
- Каждый вызов, кроме сопряжения, требует токен сопряжения, хранящийся в `bridge_token` в каталоге конфигурации APM и сравниваемый за постоянное время.
- Вызовы списка и деталей никогда не включают секретные значения. Расширение запрашивает одно поле за раз, когда вы показываете или заполняете, и APM фиксирует этот доступ.
- Passkeys создаются и подписываются внутри APM. Расширение отправляет origin сайта и хеш клиентских данных, а APM проверяет, что сайт может использовать эту relying party, прежде чем подписать.

**Несколько сайтов на один логин**

Логин хранит свой основной адрес в `website`, а остальные — в `urls`, отображаемые как "Other websites" в настольном приложении. Расширение предлагает логин на странице, соответствующей любому из них. По умолчанию совпадением считается один и тот же регистрируемый домен, поэтому `accounts.google.com` и `mail.google.com` оба соответствуют `google.com`.

- Из всплывающего окна вы можете добавить текущий сайт к логину, добавить или удалить сайты, а также сохранить новый логин с несколькими сайтами.
- Если вы заполняете логин на сайте, для которого он не сохранён, расширение сначала спрашивает. Выберите "Fill and remember", чтобы заполнить его и добавить этот сайт к логину.
- `pm totp link <entry> <domain>` делает то же самое для одноразового кода.

**Логотипы сайтов**

Настольное приложение и расширение показывают собственный логотип каждого логина вместо его первой буквы. APM загружает логотип сам, с самого сайта, и никогда не обращается к стороннему сервису favicon, который узнал бы о каждом сайте в вашем хранилище.

- Что: хост первого сайта, связанного с логином (одноразовый код использует связанный с ним сайт), в нижнем регистре и без `www.` или порта. `localhost`, IP-адреса, `.local`, `.internal` и имена без точки никогда не запрашиваются.
- Как: APM загружает `https://<host>/` (не более 512 КиБ), выбирает лучшую иконку, объявленную на странице (`apple-touch-icon`, затем самый большой PNG, затем SVG), и при неудаче переходит к `https://<host>/favicon.ico`. Только HTTPS, не более 3 перенаправлений, 6 секунд на сайт, изображения до 256 КиБ, без cookies. Адреса, разрешающиеся в диапазоны loopback, частные, link-local или CGNAT, отклоняются. Запросы идут напрямую к сайту, а не через системный прокси.
- Когда: только пока хранилище разблокировано и запущено настольное приложение или `pm extension serve`, не более 4 сайтов одновременно. Неудачный сайт повторяется через 3 дня; логотип обновляется через 30 дней.
- Где: `icons/` в вашем каталоге конфигурации APM (`~/Library/Application Support/apm/icons` на macOS, `~/.config/apm/icons` на Linux, `%AppData%\apm\icons` на Windows). Каждый файл назван по SHA-256 его хоста, и хранится не более 2000 файлов. Кэш не зашифрован: каждый `.json`-файл рядом с изображением содержит имя его хоста, поэтому любой, кто может прочитать ваш каталог конфигурации, увидит, для каких сайтов есть логотипы.
- Что узнаёт сайт: ваш IP-адрес и то, что APM запросил его иконку (user agent — `APM/<version> (+icon)`). Ничего о вашей учётной записи.
- Как отключить: в настольном приложении откройте Settings, Appearance, отключите «Show website icons» (настройка хранилища `siteIcons`, которую также учитывает `pm extension serve`) и выберите «Clear icon cache», чтобы удалить кэш. Установите `APM_ICONS_OFFLINE=1`, чтобы остановить любые запросы из процесса, например в тестах или CI. Кэшированные логотипы по-прежнему отображаются, пока вы их не очистите.

---

### Профили безопасности

| Профиль | Память Argon2 | Итерации | Параллелизм | Сценарий использования |
|---------|--------------|------------|-------------|----------|
| `standard` | 64 МБ | 3 | 2 | Большинство машин |
| `hardened` | 256 МБ | 5 | 4 | Рабочие станции (≥8 ГБ ОЗУ) |
| `paranoid` | 512 МБ | 6 | 4 | Серверы (≥16 ГБ ОЗУ) |
| `legacy` | PBKDF2 | 600 000 | 1 | Обратная совместимость |

APM автоматически определяет количество ядер CPU и объём ОЗУ, чтобы рекомендовать оптимальный профиль во время `pm setup`.


### Статус разработки и история
(Эта заметка от владельца)
По состоянию на 30 марта 2026 года я работаю над GUI для APM. Изначально это было CLI-приложение. Вопрос #38 подробно всё объясняет. В целом я хочу, чтобы APM охватил ещё более широкую аудиторию. Я буду держать GUI отдельно в репозитории apm-gui или создам организацию и перенесу туда оба репозитория.

Я начал APM как по-настоящему личный проект. Всё началось в случайный вечер, когда я захотел создать собственный менеджер паролей. Мне надоел zoho password, так как я использовал его для TOTP. Он был невероятно медленным в работе, а для своих токенов я использовал текстовые файлы, что небезопасно.

На данный момент я НЕ планирую забрасывать/закрывать проект. Он останется работоспособным надолго. Я стараюсь делать его лучше каждый день и использую его каждый день. Иногда репозиторий может быть неактивен — это когда я тестирую и экспериментирую с приложением.

---

### Структура релизов

| Уровень | Стабильный? | Безопасен для хранилища? | Назначение |
|------|---------|-------------|---------|
| Canary | ❌ | ❌ | Самый ранний предпросмотр функций — может повредить хранилища |
| Alpha | ❌ | ✅ | Нестабильные функции, целостность хранилища сохраняется |
| Beta | ✅ | ✅ | Полностью протестированные функции, осторожное развёртывание |
| Stable | ✅ | ✅ | Готовые к эксплуатации релизы |

> Всегда создавайте резервную копию хранилища перед тем, как пробовать релизы Canary.
P.S. Для некоторых релизов некоторые уровни могут не выпускаться в зависимости от того, насколько быстро и просто их можно выпустить, не создавая лишних уровней.
---

# Использование ИИ
Разработка APM и поддержка всего набора — непростая задача, которую не сделать за один раз. Поэтому мы используем **25%** кода, сгенерированного ИИ (в основном изменения UI и некритичные и не связанные с криптографией изменения). Однако в APM у нас есть некоторые правила использования ИИ; они перечислены ниже.
- ИИ используется только для разработки небольших функций и функций, которые не затрагивают хранилище
- К изменениям, сделанным ИИ, нужно относиться с осторожностью и тщательно их проверять
- Изменения, сделанные ИИ, должны быть тщательно протестированы
Эти правила гарантируют, что мы используем ИИ ответственно и делаем APM лучше для всех!


### Документация

Полная документация на **[aaravmaloo.github.io/apm](https://aaravmaloo.github.io/apm)**

- [Установка](https://aaravmaloo.github.io/apm/getting-started/installation/)
- [Первые шаги](https://aaravmaloo.github.io/apm/getting-started/first-steps/)
- [Справочник по CLI](https://aaravmaloo.github.io/apm/reference/cli/)
- [Архитектура](https://aaravmaloo.github.io/apm/concepts/architecture/)
- [Шифрование](https://aaravmaloo.github.io/apm/concepts/encryption/)
- [Team Edition](https://aaravmaloo.github.io/apm/guides/team-edition/)
- [Интеграция с MCP](https://aaravmaloo.github.io/apm/guides/mcp-integration/)
- [Участие в разработке](https://aaravmaloo.github.io/apm/contributing/)

---

### Участие в разработке

Мы приветствуем вклад в проект. См. [CONTRIBUTING.md](https://aaravmaloo.github.io/apm/contributing/) для получения рекомендаций.

---

### Лицензия

[GPL-3.0 License](https://github.com/aaravmaloo/apm/blob/master/LICENSE) © Aarav Maloo
Скачать инструмент