Зашифрованная история (Хранилище): автоматически шифрует сохраненные пароли с помощью AES-128 (Fernet).
Безопасное хранение в хранилище: выделенное хранилище управляет криптографическими ключами через .env (рекомендуется) или устаревший .vault.key со строгими правами доступа 0600
Архитектура с нулевой утечкой: 🛡️ Исходный код и журналы заблокированы для доступа из браузера в режиме PWA; конфиденциальные вводы маскируются в режиме CLI для анализа энтропии.
Экспорт с редактированием: экспорт истории с приоритетом безопасности, по умолчанию пароли автоматически редактируются
Интерфейс без отступов: чистый, профессиональный вывод с выравниванием по левому краю для всех режимов
Умный Leetspeak: вероятностная замена для более естественных, читаемых паролей
Надёжная проверка: интерактивные запросы со значениями по умолчанию и рекурсивная обработка ошибок
Защитный фронтенд PWA: 🛡️ Встроенные проверки безопасности для ресурсов CDN для предотвращения сбоев инициализации.
Глобальные модификаторы: режимы --easy-read и --easy-say
Параноидальный режим: опциональный ручной сбор энтропии через джиттер времени нажатия клавиш для максимальной безопасности.
Установка
root@kitploit:~
# Clone the repository
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# Install dependencies (colorama, cryptography, pyperclip, etc.)
pip install -r requirements.txt
Быстрый старт
root@kitploit:~
# Generate a 20-character random password
python main.py random -l 20
# Generate a 4-word passphrase
python main.py phrase -w 4 --capitalize
# Generate a leetspeak passphrase
python main.py leet -w 3 -s _
# Generate with entropy analysis
python main.py --show-entropy random -l 16
# Launch interactive mode
python main.py --interactive
# Use a preset profile (Strong)
python main.py --preset strong --show-entropy
Примеры использования
Случайные пароли
root@kitploit:~
# Basic 16-character password
python main.py random
# 24-character, letters only
python main.py random -l 24 --no-symbols --no-digits
# Easy to read (no 0/O, 1/l/I)
python main.py --easy-read random -l 20
# With minimum requirements
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# Balanced mode (mostly letters, fewer symbols)
python main.py random -l 24 --balanced
# JWT secret for HS256
python main.py jwt --bits 256
# Base64 API key
python main.py base64 -b 32 --url-safe
# UUID token (v4 Random)
python main.py uuid --upper
# UUID v7 (Time-based, sortable)
python main.py uuid --ver 7
# Or shortcut
python main.py uuid --v7
# Short UUID (Base58 encoded, ~22 chars)
python main.py uuid --short
# Generate a v7 UUID using the shortcut
python main.py u --v7
# Generate 10 short v4 UUIDs
python main.py uuid --v4 --short -n 10
# NATO Phonetic Conversion
python main.py phonetic --text "PassForge"
# Output: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
Безопасность и ведение журнала
root@kitploit:~
# Analyze an existing password
python main.py analyze "p@ssword123"
# Log to history
python main.py --log random -l 16
# View last 10 history entries (default)
python main.py history
# View all history entries (decrypted on the fly)
python main.py history --all
# View history with redacted passwords
python main.py history --redact
# Export history (Redacted by default)
python main.py history --export backup.json
# Export history (Plaintext - requires caution)
python main.py history --export secrets.csv --no-redact
# JSON output for scripts
python main.py --json jwt --bits 256
Справочник команд
Флаг
Описание
--preset
Использовать предопределённый профиль безопасности (strong, memorable, dev, pin, web, wifi, key)
-i, --interactive
Запустить режим интерактивного меню
--paranoid
Включить параноидальный режим (ручной сбор энтропии)
--json
Вывод в формате JSON
--show-entropy
Отобразить анализ энтропии (включён по умолчанию в пусковых файлах)
--check-strength
Выполнить анализ шаблонов zxcvbn
-c, --clipboard
Скопировать результат в буфер обмена
--confirm-copy
Запрашивать подтверждение перед копированием в буфер обмена
--clipboard-timeout
Автоматически очищать буфер обмена через N секунд (по умолчанию: 30)
--log
Сохранить пароль в историю (зашифровано AES-128)
--no-color
Отключить цветной вывод
--easy-read
Исключить неоднозначные символы (0/O, 1/l/I)
--easy-say
Только произносимые символы (без символов)
Опции, специфичные для генераторов
Случайный (random, r)
Флаг
По умолчанию
Описание
-l, --length
16
Длина пароля (4-1024)
--no-uppercase
-
Исключить заглавные буквы
--no-lowercase
-
Исключить строчные буквы
--no-digits
-
Исключить цифры
--no-symbols
-
Исключить символы
--include
-
Дополнительные символы для включения
--exclude
-
Символы для исключения
--no-repeats
-
Без повторяющихся символов
--min-upper
0
Минимум заглавных букв
--min-lower
0
Минимум строчных букв
--min-digits
0
Минимум цифр
--min-symbols
0
Минимум символов
--balanced
-
Сбалансированное соотношение (60/20/20)
-n, --count
1
Количество генерируемых
Парольная фраза (phrase, p)
Флаг
По умолчанию
Описание
-w, --words
4
Количество слов (2-64)
-s, --separator
-
Разделитель слов
--capitalize
-
Каждое слово с заглавной буквы
--uppercase
-
Все слова в верхнем регистре
--alternate
-
Чередование регистра (аЛьТерНаТиВа)
--wordlist
-
Путь к пользовательскому списку слов
-n, --count
1
Количество генерируемых
Leetspeak (leet, l)
Флаг
По умолчанию
Описание
-w, --words
3
Количество слов (2-64)
-s, --separator
-
Разделитель слов ( - _ . , )
-n, --count
1
Количество генерируемых
PIN (pin)
Флаг
По умолчанию
Описание
-l, --length
6
Длина PIN (4-64)
-n, --count
1
Количество генерируемых
Произносимый (pronounce, pr)
Флаг
По умолчанию
Описание
-l, --length
12
Длина пароля (4-128)
-n, --count
1
Количество генерируемых
UUID (uuid)
Флаг
По умолчанию
Описание
--ver
4
Версия UUID (1, 4, 7)
--short
-
Короткий формат (Base58)
--upper
-
Вывод в верхнем регистре (только hex)
-n, --count
1
Количество генерируемых
Base64 (base64, b64)
Флаг
По умолчанию
Описание
-b, --bytes
32
Количество случайных байтов
--url-safe
-
Использовать безопасные для URL символы
JWT Secret (jwt)
Флаг
По умолчанию
Описание
--bits
256
Разрядность (256, 384, 512)
--hex
-
Вывод в виде шестнадцатеричной строки
WiFi Key (wifi)
Флаг
По умолчанию
Описание
-l, --length
24
Длина ключа (8-63, по умолчанию: 24)
--simple
-
Только буквы и цифры (без символов)
Лицензионный ключ (license)
Флаг
По умолчанию
Описание
--segments
4
Количество сегментов (2-64)
--segment-length
4
Символов на сегмент (2-32)
Коды восстановления (recovery)
Флаг
По умолчанию
Описание
-n, --count
10
Количество кодов (5-20, по умолчанию: 10)
-l, --length
10
Длина кода (цифры или слова, по умолчанию: 10/3)
--words
-
Использовать коды на основе слов
OTP Secret (otp)
Флаг
По умолчанию
Описание
--digits
6
Длина кода (6 или 8)
--period
30
Период времени в секундах
--qr
-
Показать QR-код в терминале
Шаблон (pattern)
Флаг
По умолчанию
Описание
--grid
3
Размер сетки (например, 3x3)
Фонетический (phonetic, ph)
Флаг
По умолчанию
Описание
--text
-
Текст для преобразования в алфавит NATO
-l, --length
8
Длина случайной последовательности (4-64)
История (history)
Флаг
По умолчанию
Описание
--last
10
Показать последние N записей (1-100, по умолчанию: 10)
--all, -a
-
Показать все записи истории (отменяет --last)
--search
-
Фильтровать историю по ключевому слову
--redact
-
Редактировать пароли в выводе терминала
--export
-
Экспорт истории в файл (JSON/CSV)
--no-redact
-
Не редактировать пароли при экспорте (Осторожно!)
--clear
-
Очистить все записи истории
Руководство по энтропии
PassForge предоставляет всесторонний Отчёт по энтропии, включая размер исходного пула символов, биты Шеннона и оценку времени полного перебора.
Энтропия (бит)
Стойкость
Сценарий использования
< 28
Очень слабая
Никогда не использовать
28-36
Слабая
Только для низкой безопасности
36-60
Приемлемая
Стандартные аккаунты
60-80
Сильная
Конфиденциальные данные
80-128
Очень сильная
Высокозащищенные системы
> 128
Отличная
Критическая инфраструктура
Примечание: Подробное объяснение каждого типа генератора см. в LITERATURE.md.
Все доступные параметры см. в passforge.example.json.
Сборка автономного исполняемого файла
PassForge можно скомпилировать в единый автономный исполняемый файл с помощью PyInstaller.
Windows
root@kitploit:~
# Using the build script
passforge_build.bat
# Or manually
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
root@kitploit:~
# Using the build script
chmod +x passforge_build.sh
./passforge_build.sh
# Or manually
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Исполняемый файл будет создан в папке dist/ (~7 МБ, без внешних зависимостей).
🌐 PassForge Web (PWA-дополнение)
PassForge теперь включает современный, адаптивный веб-интерфейс (PWA), который предоставляет визуальный способ создания и управления паролями, сохраняя полную совместимость с CLI-версией.
Ключевые возможности
Боковая панель: удобная навигация между всеми типами генераторов.
Визуальные ползунки: настройка длины и количества слов с помощью интерактивных ползунков.
Поддержка QR: мгновенная генерация QR-кодов для передачи паролей или OTP-секретов.
Тёмная/светлая тема: премиальная эстетика с автоматическим переключением в зависимости от системных настроек.
Установка: поддержка установки PWA на Windows, Linux и мобильных устройствах.
Общая история: использует тот же зашифрованный файл журнала, что и CLI.
Запуск PWA
Для запуска веб-интерфейса выполните скрипт запуска для вашей ОС:
Windows: passforge_pwa.bat
Linux/macOS: passforge_pwa.sh
[!IMPORTANT]
Усиление безопасности (v34+): PWA теперь использует обработчик SecureStaticFiles, который явно блокирует доступ браузера к исходным файлам Python, журналам и криптографическим ключам. Доступ к истории защищён внутренним рукопожатием API-ключа. Логика фронтенда также включает защитные обёртки для внешних ресурсов CDN, чтобы обеспечить работоспособность даже при заблокированном CDN.
[!TIP]
Доступность сборки: Файлы PWA включены в дистрибутивы Исходный код и ZIP/Tarball. PWA не встроен в однофайловый двоичный файл .exe.
Запускающий скрипт автоматически установит необходимые зависимости (fastapi, uvicorn), запустит локальный сервер по адресу http://127.0.0.1:8093 и откроет браузер.