解锁并提取Linux客户端微信数据库 (vibe coded)
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))