如何破解加密的字体?(使用ChatGPT编写)
写在前头
本篇文章99%的内容使用ChatGPT(new bing)编写的,由于ChatGPT无法生成很长的文章,所以此篇文章是多个回复的拼接,我只是做个整合。我是这么给ChatGPT说的:
我想编写一篇关于字体加密破解的技术文章,我的思路是这样的:1、将字体通过python fontTools库读取出cmap。2、根据cmap中的unicode码点生成html,并在html中引入加密字体,这样就可以将所有加密过的字体通过浏览器展示出来。3、将浏览器的内容截图并交给OCR识别成文字。4、将文字的顺序和cmap的顺序一一对应起来,这样就创建好了一个映射关系。
以下内容是ChatGPT生成:
如何破解加密的字体?
字体加密是一种常见的网页反爬虫技术,它通过将文字替换成自定义的符号,使得爬虫无法直接获取文字内容。但是,这种技术并不是无懈可击的,我们可以用Python+OCR来实现一个简单的字体加密破解器。
第一步:读取cmap
cmap是一个字体文件中的一个表,它存储了字符和字形之间的映射关系。我们可以用Python的fontTools库来读取cmap,并将其转换成一个字典。
首先,我们需要安装fontTools库:
pip install fontTools
然后,我们需要下载一个加密过的字体文件,接着,我们可以用以下代码来读取cmap:
from fontTools.ttLib import TTFont
# 读取字体文件
font = TTFont('encrypted_font.woff')
# 获取cmap表
cmap = font['cmap']
# 转换成字典
cmap_dict = cmap.getBestCmap()
# 打印结果
print(cmap_dict)
运行结果如下:
{57344: '', 57345: '', 57346: '', 57347: '', 57348: '', 57349: '', ...}
这样,我们就得到了每个字符对应的自定义符号。
第二步:生成html并引入加密字体
在第一步中,我们已经通过python fontTools库读取出了加密字体文件中的cmap表,这个表存储了每个字符对应的unicode码点。我们可以利用这个信息来生成一个html文件,并在其中引入加密字体文件。这样,我们就可以通过浏览器来展示出所有加密过的字符。
具体来说,我们需要做以下几件事:
- 创建一个空白的html文件,并在标签中添加<style>标签。
- 在<style>标签中定义一个@font-face规则,指定加密字体文件的路径和名称。
- 在<style>标签中定义一个类名为font-encrypt的样式,设置font-family为加密字体名称,并设置其他属性如font-size等。
- 在标签中创建一个标签,并给它添加类名为font-encrypt。
- 在标签中插入所有cmap表中包含的unicode码点,用&#x开头和;结尾表示。
- 保存html文件,并用浏览器打开。
下面是一个示例代码:
<html>
<head>
<style>
@font-face {
font-family: 'FontEncrypt';
src: url('FontEncrypt.ttf');
}
.font-encrypt {
font-family: 'FontEncrypt';
font-size: 32px;
}
</style>
</head>
<body>
<div class="font-encrypt">


...(省略)
</div>
</body>
</html>
打开html文件后,我们可以看到浏览器上显示了一些奇怪的符号,这些就是加密过的字符。如果我们知道这些字符对应的原始文字,我们就可以建立起一个映射关系。
第三步:OCR识别
OCR(Optical Character Recognition)是一种将图像中的文字转换成可编辑的文本的技术,它可以用来识别各种语言和字体的文字。我们可以利用OCR来破解字体加密,具体步骤如下:
- 将浏览器的内容截图并交给OCR识别成文字。这里我们需要选择一个能够支持多种语言和字体的OCR工具,比如Google Cloud Vision API或者百度AI开放平台。
- 将文字的顺序和cmap的顺序一一对应起来,这样就创建好了一个映射关系。我们可以把这个映射关系保存成一个新的字体文件或者一个json文件,以便后续使用。
结论
通过上述方法,我们就可以成功地破解字体加密,并且还原出原始的文字内容。当然,这种方法也有一些局限性,比如:
- OCR识别可能会出现错误或者漏识别,导致映射关系不完整或者不准确。
- 字体加密可能会采用更复杂的方式进行混淆或者变形,使得OCR难以识别。
- 字体加密可能会涉及版权问题或者敏感信息,破解后可能会引起法律纠纷或者道德争议。
因此,在使用这种方法时,请务必遵守相关法律法规,并且尊重原作者和内容。
我希望这篇博客文章能够对你有所帮助和启发。如果你有任何问题或者建议,请在评论区留言。谢谢你的阅读!
以上内容是ChatGPT生成
写在后头
令我没想到的是ChatGPT帮我生成了对应的python代码,没想到还可以正确的运行。最后两段比较仓促,因为是另外一个回答拼接起来的。ChatGPT看似很强大,目前也有很多错误,比如有时候认为今年是2022年等,另外,英文内容质量比较高。
本作品采用《CC 协议》,转载必须注明作者和本文链接