Skip to content

Commit 7f91aa6

Browse files
committed
feat(微信数据提取): 添加微信数据提取功能
在Model类中新增`Extract微信`方法,用于从设备中提取微信数据。Controller类中新增对命令"15"的处理,调用该方法并显示提取结果。View类更新帮助信息,添加微信数据提取选项。此功能支持从/sdcard和/data/data路径提取数据,并处理设备连接状态和权限问题。
1 parent 6abe4f9 commit 7f91aa6

File tree

4 files changed

+68
-4
lines changed

4 files changed

+68
-4
lines changed

controller/controller.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void Controller::Run() {
7676
model.DumpCallLogs();
7777
view.ShowSuccess("通话记录已导出");
7878
}
79-
// 命令 2:让 Model 小管家去备份短信哟~
79+
// 命令 2:让 Model 小管家去备份短信oyer~
8080
else if (command == "2") {
8181
view.ShowMessage("正在导出短信...", view.BLUE);
8282
model.DumpSMS();
@@ -154,6 +154,9 @@ void Controller::Run() {
154154
}
155155

156156
else if (command == "15" || command == "dumpsys") {
157+
view.ShowMessage("正在提取微信数据...", view.BLUE);
158+
model.Extract微信();
159+
view.ShowSuccess("微信数据已导出");
157160
}
158161

159162
// 如果输入了不认识的命令,View 小助手会用红色字体提醒哟

model/model.cpp

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,4 +581,46 @@ bool ContainsAny(const std::string& line,
581581
}
582582
}
583583
return false;
584-
}
584+
}
585+
586+
void Model::Extract微信() {
587+
const std::string outputDir = "Datas/微信";
588+
fs::create_directories(outputDir);
589+
590+
std::cout << "📱 检查设备连接状态..." << std::endl;
591+
if (system("adb get-state > nul 2>&1") != 0) {
592+
std::cerr << "❌ 设备未连接。" << std::endl;
593+
return;
594+
}
595+
596+
std::cout << "📤 正在尝试提取 /sdcard 路径..." << std::endl;
597+
std::string pull_sdcard =
598+
"adb pull /sdcard/Android/data/com.tencent.mm/ \"" + outputDir +
599+
"/sdcard/\"";
600+
int result_sdcard = system(pull_sdcard.c_str());
601+
602+
if (result_sdcard == 0) {
603+
std::cout << "✅ 成功提取 /sdcard 目录。" << std::endl;
604+
return;
605+
}
606+
607+
std::cout << "⚠️ /sdcard 不可访问,尝试 /data/data 路径(需要 root)..."
608+
<< std::endl;
609+
std::string pull_data =
610+
"adb shell su -c 'cp -r /data/data/com.tencent.mm /sdcard/wechat_tmp "
611+
"&& chmod -R 777 /sdcard/wechat_tmp'";
612+
int result_root = system(pull_data.c_str());
613+
614+
if (result_root != 0) {
615+
std::cerr << "❌ 无法访问 /data/data。需要 root 权限。" << std::endl;
616+
return;
617+
}
618+
619+
std::string pull_tmp =
620+
"adb pull /sdcard/wechat_tmp \"" + outputDir + "/data_data/\"";
621+
if (system(pull_tmp.c_str()) == 0) {
622+
std::cout << "✅ 成功提取 /data/data 目录。" << std::endl;
623+
} else {
624+
std::cerr << "❌ 复制 /data/data 失败。" << std::endl;
625+
}
626+
}

model/model.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ class Model {
112112
void DumpSysFromSpecificPackage(std::string PACKAGE_NAME);
113113
void RunPackageAs();
114114
void RunApkTool(std::string APK_FILE);
115+
116+
void Extract微信();
115117
};
116118

117119
#endif

view/view.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,33 @@ void View::DisplayHeader() {
3636
╭══════════════════════════════════════════════════════════╮
3737
│ 法律依据 ♡
3838
│ • 《中华人民共和国刑事诉讼法》第138条
39+
│ - 关于电子数据收集与使用的规定
3940
│ • 《中华人民共和国网络安全法》第50条
41+
│ - 网络运营者配合网络安全与信息内容管理
4042
│ • 《中华人民共和国公安机关办理刑事案件程序规定》第234条
43+
│ - 电子数据取证程序与要求
4144
│ • 《中华人民共和国电子签名法》第14条
45+
│ - 电子签名的法律效力
4246
│ • 《电子数据取证规范》GA/T 1070-2013
47+
│ - 移动设备取证技术标准
4348
│ • 《移动互联网应用程序信息安全管理规定》
49+
│ - APP数据安全与隐私保护要求
4450
╰──────────────────────────────────────────────────────────╯
4551
╭══════════════════════════════════════════════════════════╮
46-
│ 警告事项
52+
│ 警告事项
4753
│ • 未经授权的数据提取可能构成违法行为
54+
│ - 可能违反《刑法》第285条
55+
│ - 可能违反《个人信息保护法》相关规定
4856
│ • 提取的数据可能涉及个人隐私,请依法处理
57+
│ - 需遵守数据保密原则
58+
│ - 确保数据存储安全
4959
│ • 建议在获得合法授权后再进行数据提取
60+
│ - 获取书面授权文件
61+
│ - 记录授权过程
5062
│ • 不当使用可能承担法律责任
63+
│ - 民事赔偿责任
64+
│ - 行政处罚责任
65+
│ - 刑事责任
5166
╰──────────────────────────────────────────────────────────╯
5267
╭══════════════════════════════════════════════════════════╮
5368
│ 免责声明 ♡
@@ -104,11 +119,13 @@ void View::DisplayHelp() {
104119
<< std::endl;
105120
std::cout << BLUE << " [14] " << WHITE << "🔔 Notifications 通知记录"
106121
<< std::endl;
122+
std::cout << BLUE << " [15] " << WHITE << "💭 WeChat Data 提取微信数据"
123+
<< std::endl;
107124

108125
// 常用命令区域~
109126
std::cout << GREEN << "\n✧ 常用命令 Commands ✧" << WHITE << std::endl;
110127
std::cout << YELLOW << "" << WHITE
111-
<< "1-14: Execute feature 执行对应功能" << std::endl;
128+
<< "1-15: Execute feature 执行对应功能" << std::endl;
112129
std::cout << YELLOW << "" << WHITE << "help/?: Show help 显示帮助"
113130
<< std::endl;
114131
std::cout << YELLOW << "" << WHITE << "about: Show about 关于程序"

0 commit comments

Comments
 (0)