58 método de cifrado y descifrado de fuentes de la ciudad

Referencia 4 paquetes básicos

import re
from io import BytesIO
from fontTools.ttLib import TTFont
import base64

Use regular para extraer el siguiente contenido, este es un archivo de fuente base64 encriptado

El área seleccionada es la fuente base64
Presione F12 para ver los detalles
Inserte la descripción de la imagen aquí

#code_str 为第一图蓝色字符串
def deciphering(ziti,code_str):
    result = []
    code_ziti = []
    font = TTFont(BytesIO(base64.decodebytes(code_str.encode())))
    c = font['cmap'].tables[0].ttFont.tables['cmap'].tables[0].cmap

    for i in range(len(ziti)):        
        #找出每一个字对应的16进制编码 逐一和字体文件做判断
        str_code =ziti[i].encode("unicode-escape").decode()[-4:]

		# \xa0 是空格
        if(str_code =='\\xa0'):
            str_code = ' '

		# 如果标点符号,转化后还是标点符号 长度为1
		# 如果包含则转换 
        if(len(str_code)>1):
            code = int(str_code,16)
            if(code in c):
                x = int(c[code][-2:])-1
                result.append(x)
            else:
                result.append(ziti[i])
        else:
            result.append(ziti[i])

	#  最后将数组转为字符串
    return "".join(map(lambda x:str(x),result))

Supongo que te gusta

Origin blog.csdn.net/lows_H/article/details/101421658
Recomendado
Clasificación