passcheck 1.0.0
Утилита для проверки стойкости паролей
Requires Python: >=3.7

# 🔐 PassCheck — Проверка стойкости паролей

[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**PassCheck** — это мощная утилита командной строки для комплексной проверки стойкости паролей. Она помогает выявить слабые, скомпрометированные и предсказуемые пароли, которые могут стать целью злоумышленников.

---

## 🎯 Зачем нужен PassCheck?

В эпоху всё возрастающего числа кибератак, использование слабых паролей остаётся одной из главных причин взломов. Даже "сложный" пароль может быть уже скомпрометирован. **PassCheck** решает эту проблему, предоставляя:

- 🔍 **Проверку по реальным утечкам** (через HaveIBeenPwned API)
- 📚 **Проверку по популярным словарям** (например, rockyou.txt)
- 🔐 **Анализ криптографической стойкости** (энтропия, паттерны)
- ⏱ **Оценку времени подбора** пароля
- 📊 **Подробные рекомендации** по улучшению пароля
- 📁 **Пакетную проверку** множества паролей
- 📤 **Экспорт результатов** в JSON

---

## 🚀 Установка

### Требования:
- Python 3.7 или выше

### Установка зависимостей:
```bash
pip install requests zxcvbn-python colorama
```

### Запуск:
```bash
python passcheck.py --help
```

---

## 📖 Использование

### 🔹 Проверка одного пароля:
```bash
python passcheck.py --password "MyP@ssw0rd123"
```

### 🔹 Проверка с использованием словаря:
```bash
python passcheck.py --password "qwerty123" --dict rockyou.txt
```

### 🔹 Чтение пароля из stdin:
```bash
echo "MySecretPass" | python passcheck.py
```

### 🔹 Пакетная проверка из файла:
```bash
python passcheck.py --file passwords.txt --dict rockyou.txt --json report.json
```

### 🔹 Экспорт результатов в JSON:
```bash
python passcheck.py --password "StrongPass123" --json result.json
```

---

## 📋 Пример вывода

```
🔍 Анализируем пароль: **********

==================================================
 🛑 Проверка по утечкам 
==================================================
❌ Пароль найден в 123456 утечках!
   🔥 Срочно смените его!

==================================================
 📚 Проверка по словарю 
==================================================
❌ Пароль найден в словаре!

==================================================
 🔐 Анализ сложности 
==================================================
🔐 Уровень: Слабый (1/4)
🔮 Время подбора (оффлайн): ~5 минут

⚠️ Предупреждение:
   Этот пароль похож на часто используемые комбинации.

💡 Рекомендации:
   • Добавьте больше символов.
   • Избегайте предсказуемых замен.

==================================================
✅ Анализ завершён
==================================================
```

---

## 🛠 Основные возможности

| Функция | Описание |
|--------|----------|
| **Проверка утечек** | Через безопасный API HaveIBeenPwned (k-Anonymity) |
| **Проверка по словарю** | Поддержка любых текстовых словарей |
| **Анализ энтропии** | Оценка криптографической стойкости |
| **Время подбора** | Реалистичная оценка времени взлома |
| **Пакетная обработка** | Проверка множества паролей из файла |
| **Экспорт в JSON** | Для интеграции с другими системами |
| **Цветной вывод** | Удобное визуальное представление |
| **Поддержка stdin** | Для автоматизации и скриптов |

---

## 📁 Формат файлов

### passwords.txt
```
MyPassword123
qwerty123
Summer2024!
...
```

### report.json (пример)
```json
{
  "password": "********",
  "length": 12,
  "leaks": 123456,
  "in_dictionary": true,
  "score": 1,
  "crack_time": "5 минут",
  "warning": "Этот пароль похож на часто используемые комбинации",
  "suggestions": [
    "Добавьте больше символов",
    "Избегайте предсказуемых замен"
  ]
}
```

---

## 📚 Рекомендуемые словари

- **rockyou.txt** — самый популярный словарь (~14 млн паролей)
- **linkedin.txt** — пароли из утечки LinkedIn
- **elitehacker.txt** — словарь для продвинутых атак

Скачать можно с репозиториев по кибербезопасности или через торренты (в образовательных целях).

---

## 🔒 Безопасность

- **Пароли не передаются полностью** — используется k-Anonymity от HIBP
- **Локальная обработка** — ваши пароли не покидают ваш компьютер
- **Нет логирования** — утилита не сохраняет пароли в логи

---

## 🎯 Для кого этот инструмент?

- **Системные администраторы** — для аудита паролей сотрудников
- **Пентестеры** — для оценки стойкости учетных данных
- **SOC-аналитики** — для анализа инцидентов
- **Разработчики** — для проверки тестовых паролей
- **Обычные пользователи** — для повышения цифровой гигиены

---

## 🧪 Примеры использования в реальных сценариях

### 🔍 Аудит паролей в организации:
```bash
python passcheck.py --file employee_passwords.txt --dict rockyou.txt --json audit_report.json
```

### 🛡️ Интеграция в CI/CD:
```bash
# Проверка тестовых учетных данных
python passcheck.py --file test_passwords.txt --json ci_report.json
if [ $(grep -c "score.*[0-2]" ci_report.json) -gt 0 ]; then exit 1; fi
```

### 🤖 Автоматизация в скриптах:
```bash
#!/bin/bash
for user in $(cat users.txt); do
    password=$(get_password_for_user $user)
    echo "$password" | python passcheck.py
done
```

---

## 📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).

---

## 🙏 Благодарности

- [HaveIBeenPwned](https://haveibeenpwned.com/) — за предоставление API
- [zxcvbn-python](https://github.com/dwolfhub/zxcvbn-python) — за библиотеку анализа паролей
- Сообществу кибербезопасности за вдохновение

---

## 📧 Обратная связь

Если у вас есть предложения по улучшению или вы нашли баг — создайте issue на GitHub!

---

## 🔐 Делайте свои пароли сильнее с PassCheck!