ext/license/license.py (51 lines of code) (raw):

import hashlib from itertools import cycle from datetime import timedelta, datetime # only enc def step1(input_line): sout = [chr(ord(a) ^ ord(b)) for (a, b) in zip(input_line, cycle("your-key"))] return "".join(sout) # enc + md5 def step2(input_line, salt): m = hashlib.md5(salt) m.update(step1(input_line).encode('utf-8')) return m.hexdigest() def license_create(path, days): """ 许可证明文格式 ===== license start ===== to:2022-06-19 inode filename1 inode filename2 inode filename3 inode filename4 inode filename5 inode filename6 inode filename7 ===== license end ===== :param path: :return: """ result = "" with open("license.ab", 'w') as of: # start l = "===== license start =====\n" of.write(l) result = result + l # enddate enddate = datetime.strftime(datetime.today() + timedelta(days=int(days)), '%Y-%m-%d') t = "to:{}".format(enddate) expiry_date = step1(t) salt = bytes(expiry_date, encoding="utf8") expiry_date = expiry_date + "\n" l = step2("v1", salt) + "\n" of.write(l) result = result + l of.write(expiry_date) result = result + expiry_date flag = False with open(path) as f: for num, line in enumerate(f, 1): if "---" not in line: if flag and not line.strip().isdigit(): break flag = False license_string = step2(line.strip(), salt) of.write(license_string) of.write("\n") result = result + license_string + "\n" else: flag = True l = "===== license end =====" of.write(l) result = result + l print(result) import sys if __name__ == '__main__': if len(sys.argv) != 3: raise RuntimeError("请依次输入2个参数 预检结果文件、许可证有效天数(如果永久许可,请输入99999)") filename = sys.argv[1] license_days = sys.argv[2] license_create(filename, license_days)