lordradez23/Password-Strength-Analyzer
GitHub: lordradez23/Password-Strength-Analyzer
一款基于终端的专业密码安全评估工具,集成 zxcvbn 强度评分、熵值计算和 HIBP 泄露检测,提供全面的风险分析和改进建议。
Stars: 0 | Forks: 0
```
____ _
/ __ \____ ______________ __(_)___ ___ _____
/ /_/ / __ `/ ___/ ___/ | /| / / / ___/ / _ \/ ___/
/ ____/ /_/ (__ |__ )| |/ |/ / / / / __/ /
/_/ \__,_/____/____/ |__/|__/_/_/ \___/_/
___ __
/ | ____ ____ _/ /_ ______ ___ _____
/ /| | / __ \/ __ `/ / / / /_ / / _ \/ ___/
/ ___ |/ / / / /_/ / / /_/ / / /_/ __/ /
/_/ |_/_/ /_/\__,_/_/\__, / /___/\___/_/
/____/
```
# 密码强度分析器
一款专业、合乎道德的基于终端的密码安全评估工具,提供全面的分析,且不存储、记录或允许密码被滥用。
## 道德使用声明
**本工具仅供合法的安全评估使用**
此密码分析器旨在帮助个人和组织评估密码强度,用于教育和防御性安全目的。使用本工具即表示您同意:
- [YES] 仅对您拥有或明确获得测试权限的密码使用
- [YES] 用于安全意识和密码策略执行
- [YES] 用于网络安全培训的教育目的
**切勿使用本工具:**
- [NO] 测试您不拥有的密码
- [NO] 尝试未经授权访问系统
- [NO] 破解或暴力破解密码
- [NO] 为恶意目的存储或记录密码
**使用本软件即表示您对自己的行为承担全部责任。作者不对滥用行为承担任何责任。**
## 功能
### 综合分析
- **zxcvbn 集成**:行业标准的强度评分 (0-4)
- **熵计算**:香农熵和密钥空间分析
- **自定义启发式规则**:超越标准库的模式检测
- 重复字符
- 键盘模式 (qwerty, 12345)
- 常见替换 (@ 代替 a, 3 代替 e)
- 连续字符
- 字符多样性分析
### 泄露检测
- **Have I Been Pwned API**:检查密码是否出现在已知数据泄露中
- **k-Anonymity 隐私**:仅将部分哈希(5 个字符)发送到 API
- **离线可用**:可在无网络环境下工作(跳过泄露检查)
### 风险评分
- 综合所有分析来源的统一风险评估
- 清晰的风险等级:CRITICAL(严重)、WEAK(弱)、FAIR(一般)、GOOD(好)、EXCELLENT(极好)
- 可操作的改进建议
### 安全与隐私
- [SAFE] 密码绝不存储到磁盘或日志
- [SAFE] 隐藏终端输入(无回显)
- [SAFE] 分析后立即清理内存
- [SAFE] 用于泄露检查的 k-anonymity
- [SAFE] 无暴力破解或破解功能
### 专业输出
- 使用 Rich 库的精美终端 UI
- 颜色编码的风险指示器
- 详细的指标表格
- 清晰的改进建议
## 需求
- **Python**:3.8 或更高版本
- **互联网**:可选(仅用于泄露检查)
- **操作系统**:Windows, macOS, Linux
## 安装
### 1. 克隆或下载
```
cd "Password Strength AnalyzerCracker"
```
### 2. 安装依赖
```
pip install -r requirements.txt
```
**依赖项:**
- `zxcvbn` - 密码强度估算
- `rich` - 终端格式化
- `requests` - 用于泄露 API 的 HTTP 请求
## 用法
### 基本用法
```
python password_analyzer.py
```
该工具将:
1. 提示输入密码(隐藏输入)
2. 询问是否要检查泄露
3. 全面分析密码
4. 显示结果和建议
### API 用法(新)
该工具现在包含一个 FastAPI 包装器,用于编程访问。
1. **启动 API 服务器:**
```
python app.py
```
2. **端点:**
- `POST /analyze`:发送 JSON 主体 `{"password": "yourpassword", "check_breach": true}`
- `GET /health`:健康检查端点
3. **示例请求 (cURL):**
```
curl -X POST "http://localhost:8000/analyze" -H "Content-Type: application/json" -d "{\"password\": \"TestPassword123!\"}"
```
### 示例输出
```
Password Security Assessment
┌─────────────────────────┬──────────────────────────────┐
│ Metric │ Result │
├─────────────────────────┼──────────────────────────────┤
│ Overall Risk Level │ GOOD (75.0/100) │
│ Strength Score (zxcvbn) │ 3/4 - Strong │
│ Entropy │ 52.8 bits │
│ Est. Crack Time │ 3 years │
│ Breach Check (HIBP) │ [PASS] Not Found │
└─────────────────────────┴──────────────────────────────┘
```
## 项目结构(技术说明)
为了支持新的 FastAPI 功能和整体项目组织,目录结构如下:
```
.
├── app.py # FastAPI wrapper (API)
├── requirements.txt # Python dependencies (updated with fastapi, uvicorn)
├── README.md # Documentation
├── .gitignore # Git exclusions
├── password_analyzer.py # Main CLI application logic
├── password_analyzer.spec # PyInstaller spec
├── quick_test.py # Test script
├── test_analyzer.py # Comprehensive tests for CLI
└── test_api.py # API-specific tests [NEW]
```
## 测试示例
### 弱密码
```
# 输入: password123
# 预期: CRITICAL/WEAK,发现于泄露中,低熵
```
### 强密码
```
# 输入: Tr0ub4dor&3
# 预期: FAIR/GOOD,检测到某些模式
```
### 极好密码
```
# 输入: correct-horse-battery-staple
# 预期: EXCELLENT,高熵,passphrase 格式
```
## 打包(可选)
使用 PyInstaller 创建独立的可执行文件:
### 安装 PyInstaller
```
pip install pyinstaller
```
### 构建可执行文件
```
pyinstaller --onefile --name password-analyzer password_analyzer.py
```
可执行文件将位于 `dist/` 目录中。
## 工作原理
### 1. 安全输入
- 使用 `getpass` 模块进行隐藏终端输入
- 绝不在屏幕上回显密码
### 2. 多源分析
- **zxcvbn**:检测常见模式、字典单词、序列
- **熵**:基于字符集计算理论强度
- **启发式**:用于额外模式检测的自定义规则
- **泄露检查**:针对 HIBP 数据库的 k-anonymity API 检查
### 3. 风险评分
- 综合所有分析来源
- 严重加权泄露暴露(如果已泄露则自动评为 CRITICAL)
- 生成可操作的建议
### 4. 内存安全
- 分析后立即从内存中清除密码
- 无文件 I/O,无日志,无持久化
## 隐私与安全
### 什么内容会发送到外部服务?
- **泄露检查**:仅 SHA-1 哈希的前 5 个字符
- **绝不发送**:完整密码、完整哈希或任何身份识别信息
### 存储了什么?
- **无**:不写入文件,不创建日志,无数据库
### 此工具能破解密码吗?
- **不能**:此工具仅进行分析。它没有暴力破解、字典攻击或破解功能。
## 威胁模型
### 在范围内
- 为合法用户进行密码强度评估
- 密码安全的教育演示
- 安全策略合规性检查
### 不在范围内
- 密码破解或暴力破解
- 未经授权的访问尝试
- 密码存储或管理
## 限制
1. **非密码管理器**:请使用 Bitwarden, 1Password 等专用工具
2. **非 100% 准确**:强度估算具有概率性
3. **无保证**:即使“强”密码也可能被泄露
4. **内存限制**:Python 不保证内存擦除
5. **离线模式**:泄露检查需要互联网连接
## 教育用途
此工具非常适合:
- **网络安全培训**:演示密码安全概念
- **安全意识**:帮助用户了解密码风险
- **策略执行**:验证密码策略
- **研究**:研究密码模式和人类行为
## 贡献
欢迎改进!重点领域:
- 额外的启发式模式
- 更好的熵计算
- 更全面的建议
- 更多语言支持
## 许可证
**MIT 许可证**
特此免费授予任何获得本软件副本的人仅用于合法安全评估目的使用的许可。
**无担保**:本软件按“原样”提供,不提供任何形式的担保。使用风险自负。
## 致谢
- **zxcvbn**:Dropbox 的密码强度估算器
- **Have I Been Pwned**:Troy Hunt 的泄露通知服务
- **Rich**:Will McGugan 的终端格式化库
## 支持
如有问题或疑问:
1. 仔细阅读本 README
2. 查看代码(文档齐全)
3. 使用示例密码进行测试
4. 确保正确安装了依赖项
**请记住:强密码只是安全的一部分。请务必使用:**
- [OK] 每个服务使用唯一密码
- [OK] 密码管理器
- [OK] 双重认证 (2FA)
- [OK] 定期轮换关键账户的密码
**保持安全!**
标签:CLI, CodeQL, Python, Shannon熵, WiFi技术, zxcvbn, 启发式检测, 安全评估工具, 密码学, 密码安全, 密码审计, 密码强度分析, 密码策略, 手动系统调用, 无后门, 模式识别, 渗透测试辅助, 漏洞挖掘, 熵计算, 白帽工具, 网络安全, 逆向工具, 防御性安全, 隐私保护