From 048bd573e878de22a4325754566345bbeb51d067 Mon Sep 17 00:00:00 2001 From: midoks Date: Sun, 29 Jan 2023 14:32:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DAPI=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class/core/config_api.py | 3 +-- class/core/mw.py | 40 +++++++++++++++++++++++++++++++++++++- class/core/ssh_terminal.py | 2 +- plugins/webssh/index.py | 4 ++-- 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/class/core/config_api.py b/class/core/config_api.py index d74b95b47..97d4713a0 100755 --- a/class/core/config_api.py +++ b/class/core/config_api.py @@ -649,7 +649,6 @@ class config_api: def getPanelTokenApi(self): api_file = self.__api_addr - tmp = mw.readFile(api_file) if not os.path.exists(api_file): ready_data = {"open": False, "token": "", "limit_addr": []} @@ -668,7 +667,7 @@ class config_api: token = mw.getRandomString(32) data['token'] = mw.md5(token) data['token_crypt'] = mw.enCrypt( - data['token'], token).decode('utf-8') + data['token'], token) mw.writeFile(api_file, json.dumps(data)) data['token'] = "***********************************" diff --git a/class/core/mw.py b/class/core/mw.py index 0080a485f..2ab19e2a2 100755 --- a/class/core/mw.py +++ b/class/core/mw.py @@ -580,7 +580,7 @@ def enCrypt(key, strings): # 加密字符串 try: import base64 - _key = md5(key).encode('utf-8') + _key = key.encode('utf-8') _key = base64.urlsafe_b64encode(_key) if type(strings) != bytes: @@ -596,6 +596,44 @@ def enCrypt(key, strings): def deCrypt(key, strings): + + # 解密字符串 + try: + import base64 + _key = key.encode('utf-8') + _key = base64.urlsafe_b64encode(_key) + + if type(strings) != bytes: + strings = strings.encode('utf-8') + from cryptography.fernet import Fernet + f = Fernet(_key) + result = f.decrypt(strings).decode('utf-8') + return result + except: + print(getTracebackInfo()) + return strings + + +def enDoubleCrypt(key, strings): + # 加密字符串 + try: + import base64 + _key = md5(key).encode('utf-8') + _key = base64.urlsafe_b64encode(_key) + + if type(strings) != bytes: + strings = strings.encode('utf-8') + import cryptography + from cryptography.fernet import Fernet + f = Fernet(_key) + result = f.encrypt(strings) + return result.decode('utf-8') + except: + print(getTracebackInfo()) + return strings + + +def deDoubleCrypt(key, strings): # 解密字符串 try: import base64 diff --git a/class/core/ssh_terminal.py b/class/core/ssh_terminal.py index a86d47094..733289b8e 100644 --- a/class/core/ssh_terminal.py +++ b/class/core/ssh_terminal.py @@ -320,7 +320,7 @@ class ssh_terminal: def getSshInfo(self, file): rdata = mw.readFile(file) - destr = mw.deCrypt('mdserver-web', rdata) + destr = mw.enDoubleCrypt('mdserver-web', rdata) return json.loads(destr) def setAttr(self, sid, info): diff --git a/plugins/webssh/index.py b/plugins/webssh/index.py index 24f3c8d0e..69d748ba5 100755 --- a/plugins/webssh/index.py +++ b/plugins/webssh/index.py @@ -110,7 +110,7 @@ class App(): def getSshInfo(self, file): rdata = mw.readFile(file) - destr = mw.deCrypt('mdserver-web', rdata) + destr = mw.enDoubleCrypt('mdserver-web', rdata) return json.loads(destr) def get_server_by_host(self): @@ -199,7 +199,7 @@ class App(): if not os.path.exists(dst_host_dir): os.makedirs(dst_host_dir) - enstr = mw.enCrypt('mdserver-web', json.dumps(info)) + enstr = mw.enDoubleCrypt('mdserver-web', json.dumps(info)) mw.writeFile(dst_host_dir + '/info.json', enstr) return mw.returnJson(True, '添加成功!')