-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·143 lines (127 loc) · 5.11 KB
/
setup.sh
File metadata and controls
executable file
·143 lines (127 loc) · 5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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 "========================================================"