解锁并提取Linux客户端微信数据库 (vibe coded)
at 56 lines 1.6 kB view raw
1# -*- coding: utf-8 -*-# 2# ------------------------------------------------------------------------------- 3# Name: helpers.py 4# Description: Miscellaneous helper utilities 5# Author: xaoyaoo 6# Date: 2024/01/16 7# ------------------------------------------------------------------------------- 8import base64 9import os 10import random 11import re 12import string 13 14 15def is_port_in_use(_host, _port): 16 import socket 17 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: 18 try: 19 s.bind((_host, _port)) 20 except socket.error: 21 return True 22 return False 23 24 25def validate_title(title): 26 """ 27 校验文件名是否合法 28 """ 29 rstr = r"[\/\\\:\*\?\"\<\>\|\.]" # '/ \ : * ? " < > |' 30 new_title = re.sub(rstr, "_", title) # 替换为下划线 31 return new_title 32 33 34def gen_base64(path): 35 # 获取文件名后缀 36 extension = os.path.splitext(path)[1] 37 if extension == '.js': 38 start_str = 'data:text/javascript;base64,' 39 elif extension == '.css': 40 start_str = 'data:text/css;base64,' 41 elif extension == '.html': 42 start_str = 'data:text/html;base64,' 43 elif extension == '.json': 44 start_str = 'data:application/json;base64,' 45 else: 46 start_str = 'data:text/plain;base64,' 47 48 with open(path, 'rb') as file: 49 js_code = file.read() 50 51 base64_encoded_js = base64.b64encode(js_code).decode('utf-8') 52 return start_str + base64_encoded_js 53 54 55def random_str(num=16): 56 return ''.join(random.sample(string.ascii_letters + string.digits, num))