Files
ewoooc/scripts/tools/generate_password_hash.py
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 01:21:13 +08:00

103 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
密碼雜湊生成工具
使用方法:
1. 直接執行python generate_password_hash.py
2. 輸入新密碼至少8字元包含英文和數字
3. 將生成的雜湊值複製到 .env 檔案的 LOGIN_PASSWORD 欄位
注意:執行後請立即刪除或清空終端機歷史記錄,避免明文密碼外洩
"""
from werkzeug.security import generate_password_hash
import sys
import getpass
def validate_password_strength(password):
"""
驗證密碼強度
要求:
- 至少 8 個字元
- 包含英文字母
- 包含數字
"""
if len(password) < 8:
return False, "密碼長度至少需要 8 個字元"
has_letter = any(c.isalpha() for c in password)
has_digit = any(c.isdigit() for c in password)
if not has_letter:
return False, "密碼必須包含英文字母"
if not has_digit:
return False, "密碼必須包含數字"
return True, None
def main():
print("=" * 60)
print("🔐 MOMO 監控系統 - 密碼雜湊生成工具")
print("=" * 60)
print()
print("密碼要求:")
print(" • 至少 8 個字元")
print(" • 包含英文字母(大小寫皆可)")
print(" • 包含數字")
print(" • 建議使用符號增加強度(如 !@#$%^&*")
print()
try:
# 使用 getpass 隱藏輸入(不會在終端顯示)
password = getpass.getpass("請輸入新密碼: ")
if not password:
print("\n❌ 密碼不能為空")
sys.exit(1)
# 驗證密碼強度
is_valid, error_message = validate_password_strength(password)
if not is_valid:
print(f"\n{error_message}")
sys.exit(1)
# 再次確認密碼
password_confirm = getpass.getpass("請再次輸入密碼: ")
if password != password_confirm:
print("\n❌ 兩次輸入的密碼不一致")
sys.exit(1)
# 生成雜湊
password_hash = generate_password_hash(password, method='pbkdf2:sha256', salt_length=16)
print("\n" + "=" * 60)
print("✅ 密碼雜湊生成成功!")
print("=" * 60)
print()
print("請將以下內容複製到 .env 檔案中:")
print()
print(f"LOGIN_PASSWORD={password_hash}")
print()
print("⚠️ 安全提醒:")
print(" 1. 請立即將上述雜湊值複製到 .env 檔案")
print(" 2. 重新啟動 app.py 使新密碼生效")
print(" 3. 清空終端機歷史記錄history -c")
print(" 4. 不要將 .env 檔案提交到 Git")
print(" 5. 定期更換密碼(建議每 90 天)")
print()
print("=" * 60)
except KeyboardInterrupt:
print("\n\n⚠️ 操作已取消")
sys.exit(0)
except Exception as e:
print(f"\n❌ 發生錯誤: {e}")
sys.exit(1)
if __name__ == "__main__":
main()