From 6a052ea5087048ef3a2cde0c974658f55f32975d Mon Sep 17 00:00:00 2001 From: Mas0nShi <1281814306@qq.com> Date: Tue, 22 Feb 2022 16:20:34 +0800 Subject: [PATCH] fix #32. --- typora.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/typora.py b/typora.py index ef18d7b..b9f22de 100644 --- a/typora.py +++ b/typora.py @@ -11,7 +11,7 @@ from base64 import b64decode, b64encode from jsbeautifier import beautify from jsmin import jsmin from os import listdir, urandom, makedirs -from os.path import isfile, isdir, join as pjoin, split as psplit, exists +from os.path import isfile, isdir, join as pjoin, split as psplit, exists, abspath from loguru import logger as log from masar import extract_asar, pack_asar from shutil import rmtree @@ -31,10 +31,14 @@ else: AES_KEY = struct.pack("<4Q", *[0x4B029A9482B3E14E, 0xF157FEB4B4522F80, 0xE25692105308F4BE, 0x6DD58DDDA3EC0DC2]) -def _newDir(_path): - if exists(_path): - rmtree(_path) - makedirs(_path) +def _mkDir(_path): + if not exists(_path): + makedirs(_path) + else: + if _path == psplit(__file__)[0]: + log.warning("plz try not to use the root dir.") + else: + log.warning(f"May FolderExists: {_path}") def decScript(b64: bytes, prettify: bool): @@ -53,13 +57,18 @@ def decScript(b64: bytes, prettify: bool): def extractWdec(asarPath, path, prettify): """ + :param prettify: bool :param asarPath: asar out dir :param path: out dir :return: None """ # try to create empty dir to save extract files path = pjoin(path, "typoraCrackerTemp") - _newDir(path) + + if exists(path): + rmtree(path) + _mkDir(path) + log.info(f"extract asar file: {asarPath}") # extract app.asar to {path}/* extract_asar(asarPath, path) @@ -69,7 +78,10 @@ def extractWdec(asarPath, path, prettify): # construct the save directory {pathRoot}/dec_app outPath = pjoin(psplit(path)[0], "dec_app") # try to create empty dir to save decryption files - _newDir(outPath) + if exists(outPath): + rmtree(outPath) + _mkDir(outPath) + log.info(f"set Directory: {outPath}") # enumerate extract files fileArr = listdir(path) @@ -109,14 +121,17 @@ def packWenc(path, outPath, compress): :param compress: Bool :return: None """ + # check out path if isfile(outPath): log.error("plz input Directory for app.asar") raise NotADirectoryError - _newDir(outPath) + _mkDir(outPath) encFilePath = pjoin(psplit(outPath)[0], "typoraCrackerTemp") - _newDir(encFilePath) + if exists(encFilePath): + rmtree(encFilePath) + _mkDir(encFilePath) outFilePath = pjoin(outPath, "app.asar") log.info(f"set outFilePath: {outFilePath}")