温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GlidedSky字体加密的方法是什么

发布时间:2021-12-14 09:23:47 来源:亿速云 阅读:141 作者:iii 栏目:大数据

本篇内容介绍了“GlidedSky字体加密的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

字体加密: 字体文件的本质是,给定字符、字号等参数,输出一组像素点信息,用于在设备上展示。

        特别简单一点来说,就是网页上显示数据和你真实获取到的数据,通过某一种关系表连接起来。这样就可以达到 1 是 2, 3 是 7 的效果。我说的都是比较浅显的理解,可以去百度或者 Google 一下。我截个图理解一下。

GlidedSky字体加密的方法是什么

上面的图应该可以帮助你理解一下。当然这是简单的字体加密。

而现在我们需要拿真实的响应数据,根据对应关系,去匹配页面上你所看到的数据。

其实这个对应关系也就是字体文件,需要找到这个字体文件。

第一步:打开网站,打开 network

GlidedSky字体加密的方法是什么

打开网页你会看到,你看到的和你拿到的数据并不是一致,所以有时候眼睛看到的也不一定是真的。

而且当你刷新页面的时候,你拿到的数据和上一次也不一样,说明字体文件更新了。所以最好把这 1000 页的 HTML 内容保存下来,方便理解。

GlidedSky字体加密的方法是什么

找到字体文件:

GlidedSky字体加密的方法是什么

第二步:就是处理这个字体加密

拿到的是 base64 加密的数据,上面的图圈起来的 base64 后面的,不要把前面的内容也搞出来,解密后保存为 ttf 文件。

至于怎么获取这 1000 页的内容,看你自己

直接上代码:

    1 、获取页面的 base64 加密的字体文件。使用的库

import requestsfrom lxml import etree
import toolsimport base64from fontTools.ttLib import TTFont   # 字体解析库import xml.dom.minidomfrom bs4 import BeautifulSoup
f = open(f'page/font-puzzle-{i}.html').read()soup = BeautifulSoup(f, "html.parser")html = str(soup.select('style'))str_base64 = html.split('base64,', 1)[1]font_face_base64 = str_base64.split(') format', 1)[0]# base64 解密b = base64.b64decode(font_face_base64)# 保存为 ttf 格式的文件with open('ttfji/{}.ttf'.format(i), 'wb') as f:    f.write(b)
font = TTFont('ttfji/{}.ttf'.format(i))# 转为 xml 格式文件,并保存font.saveXML('dictxml/{}.xml'.format(i))

可以使用工具  FontCreator 打开,给大家百度网盘的链接:

链接: https://pan.baidu.com/s/1xzdNQeOUX7JHACpG3CJb_A 提取码: ebcq 复制这段内容后打开百度网盘手机App,操作更方便哦

打开就是这样:

GlidedSky字体加密的方法是什么

而 xml 文件中是这样:其实是没有 10 的,name 向上对应就是你打开 ttf 看到的。GlyphOrder 中显示的就是对应关系。

GlidedSky字体加密的方法是什么

而 name 的值代表的数字,就是自己个翻译过来的数字。可以看看 cmap.

GlidedSky字体加密的方法是什么

也就是这样:该字体加密恰巧数字对应它自己的英文名。每一个字体加密都需要去找 name 对应的 value .

dict = {            'zero': '0',            'one': '1',            'two': '2',            'three': '3',            'four': '4',            'five': '5',            'six': '6',            'seven': '7',            'eight': '8',            'nine': '9',        }

到这里基本就理解完了,剩下的就是怎么获取 xml 中的对应关系,就是写代码了。理解了写代码就容易多了。

newdict = {}dom = xml.dom.minidom.parse('dictxml/{}.xml'.format(i))root = dom.documentElementbb = root.getElementsByTagName('GlyphID')for j in range(1, 11):    # 下标从 1 开始,获取的是zero,    k = bb[j].getAttribute("name")    # 在字体文件 xml 中对应关系就是 j-1, 也就是0, zero对应的就是0,注释仅针对第一个字体文件    # 建立对应关系,取出真实的 name 对应的数字。    newdict[dict[k]] = str(j - 1)

“GlidedSky字体加密的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI