diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..dae056b --- /dev/null +++ b/setup.sh @@ -0,0 +1,143 @@ +#!/usr/bin/env bash +# setup.sh — 一键安装所有依赖 + 编译 + 初始配置 +# 幂等(可重复运行)。适用 macOS / Linux / Windows (Git Bash / WSL) +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +cd "$SCRIPT_DIR" + +echo "========================================================" +echo " WeChat Decrypt — 环境配置" +echo "========================================================" + +# ── 检测平台 ────────────────────────────────────────────────── +OS="$(uname -s | tr '[:upper:]' '[:lower:]')" +case "$OS" in + darwin) PLATFORM="macos" ;; + linux) PLATFORM="linux" ;; + mingw*|msys*|cygwin*) PLATFORM="windows" ;; + *) echo "未识别的平台: $OS"; exit 1 ;; +esac +echo "[平台] $PLATFORM" + +# ── Python / venv ──────────────────────────────────────────── +PYTHON="python3" +if command -v python3 &>/dev/null; then + PYTHON="python3" +elif command -v python &>/dev/null; then + PYTHON="python" +else + echo "[错误] 未找到 Python 3。请安装: https://python.org" + exit 1 +fi + +if [ ! -d .venv ]; then + echo "[venv] 创建虚拟环境..." + "$PYTHON" -m venv .venv +else + echo "[venv] 虚拟环境已存在" +fi + +# 激活 venv(跨平台兼容) +if [ "$PLATFORM" = "windows" ]; then + VENV_PY=".venv/Scripts/python.exe" +else + VENV_PY=".venv/bin/python3" +fi + +if [ ! -f "$VENV_PY" ]; then + echo "[错误] venv Python 未找到: $VENV_PY" + exit 1 +fi + +echo "[pip] 安装 Python 依赖..." +"$VENV_PY" -m pip install --upgrade pip -q +"$VENV_PY" -m pip install -r requirements.txt -q +echo "[pip] 完成" + +# ── macOS 特有 ──────────────────────────────────────────────── +if [ "$PLATFORM" = "macos" ]; then + echo "" + echo "[macOS] ---" + + # Xcode CLT + if ! xcode-select -p &>/dev/null; then + echo "[xcode] 安装 Command Line Tools..." + xcode-select --install || true + echo "[xcode] 安装完成后请重新运行 setup.sh" + exit 0 + else + echo "[xcode] ✓" + fi + + # whisper-cpp + if command -v brew &>/dev/null; then + if ! command -v whisper-cpp &>/dev/null; then + echo "[whisper-cpp] 通过 Homebrew 安装..." + brew install whisper-cpp + else + echo "[whisper-cpp] ✓ 已安装" + fi + else + echo "[brew] 未安装 Homebrew,跳过 whisper-cpp 自动安装" + echo " 手动安装: brew install whisper-cpp" + fi + + # 编译 C 扫描器 + if [ ! -f find_all_keys_macos ]; then + echo "[编译] find_all_keys_macos..." + cc -O2 -o find_all_keys_macos find_all_keys_macos.c -framework Foundation 2>/dev/null && \ + codesign -s - find_all_keys_macos 2>/dev/null && \ + echo "[编译] ✓" || echo "[编译] 跳过(c 源文件不存在?)" + else + echo "[编译] find_all_keys_macos 已存在(重新编译: make build)" + fi + + # 微信重签名提示 + echo "" + echo "[注意] 首次使用需要重签名微信:" + echo " killall WeChat" + echo " sudo codesign --force --deep --sign - /Applications/WeChat.app" +fi + +# ── Linux 特有 ──────────────────────────────────────────────── +if [ "$PLATFORM" = "linux" ]; then + echo "" + echo "[Linux] 需要 root 或 CAP_SYS_PTRACE 来扫描微信进程内存。" + echo " 运行密钥提取时使用: sudo python3 find_all_keys.py" +fi + +# ── config.json ─────────────────────────────────────────────── +if [ ! -f config.json ]; then + echo "" + echo "[config] 生成 config.json 模板..." + cat > config.json << 'CONFIG_EOF' +{ + "db_dir": "/path/to/your/wxid/db_storage", + "keys_file": "all_keys.json", + "decrypted_dir": "decrypted", + "wechat_process": "WeChat", + "__comment_db_dir": "各平台默认路径见 README.md" +} +CONFIG_EOF + echo "[config] 已生成,请编辑 config.json 中的 db_dir 路径" +else + echo "[config] 已存在(跳过)" +fi + +# ── 完成 ────────────────────────────────────────────────────── +echo "" +echo "========================================================" +echo " 配置完成!下一步:" +echo "" +echo " 1. 编辑 config.json 确认 db_dir 路径" +echo " 2. 提取密钥并解密:" +echo " macOS: sudo ./find_all_keys_macos && $VENV_PY decrypt_db.py" +echo " Linux: sudo $VENV_PY find_all_keys.py && $VENV_PY decrypt_db.py" +echo " Windows: python find_all_keys.py && python decrypt_db.py" +echo "" +echo " 3. 批量导出聊天记录:" +echo " $VENV_PY export_all_chats.py" +echo "" +echo " 或使用 Makefile: make decrypt / make all" +echo "========================================================" \ No newline at end of file