From 1eb95d54e6f715fdf262b50cd4a7eafaf2cc60a2 Mon Sep 17 00:00:00 2001 From: xaoyaoo Date: Wed, 6 Dec 2023 13:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0v2.3.0=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=90=88=E5=B9=B6=E6=95=B0=E6=8D=AE=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pywxdump/cli.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/pywxdump/cli.py b/pywxdump/cli.py index 1bc762b..182bfb9 100644 --- a/pywxdump/cli.py +++ b/pywxdump/cli.py @@ -126,6 +126,45 @@ class MainDecrypt(): return result +class MainMerge(): + def init_parses(self, parser): + self.mode = "merge" + # 添加 'decrypt' 子命令解析器 + sb_merge = parser.add_parser(self.mode, help="合并微信数据库(MSG.db or MediaMSG.db)") + sb_merge.add_argument("-t", "--dbtype", type=str, help="数据库类型(可选值):[msg,media]", required=True, metavar="") + sb_merge.add_argument("-i", "--db_path", type=str, help="数据库路径(文件路径,使用英文[,]分割)", required=True, metavar="") + sb_merge.add_argument("-o", "--out_path", type=str, default=os.path.join(os.getcwd(), "decrypted"), + help="输出路径(必须是目录)[默认为当前路径下decrypted文件夹]", required=False, + metavar="") + return sb_merge + + def run(self, args): + # 从命令行参数获取值 + dbtype = args.dbtype + db_path = args.db_path + out_path = args.out_path + + db_path = db_path.split(",") + for i in db_path: + if not os.path.exists(i): + print(f"[-] 数据库路径不存在:{i}") + return + + if not os.path.exists(out_path): + os.makedirs(out_path) + print(f"[+] 创建输出文件夹:{out_path}") + + if dbtype == "msg": + result = merge_msg_db(db_path, out_path) + elif dbtype == "media": + result = merge_media_msg_db(db_path, out_path) + else: + print(f"[-] 未知数据库类型:{dbtype}") + return + + return result + + class MainShowChatRecords(): def init_parses(self, parser): self.mode = "dbshow" @@ -363,6 +402,11 @@ def console_run(): sb_decrypt = main_decrypt.init_parses(subparsers) modes[main_decrypt.mode] = main_decrypt + # 添加 'merge' 子命令解析器 + main_merge = MainMerge() + sb_merge = main_merge.init_parses(subparsers) + modes[main_merge.mode] = main_merge + # 添加 '' 子命令解析器 main_show_chat_records = MainShowChatRecords() sb_dbshow = main_show_chat_records.init_parses(subparsers)