如何破解加密的字体?(使用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">
      &#xe000;&#xe001;&#xe002;&#xe003;&#xe004;&#xe005;&#xe006;&#xe007;&#xe008;&#xe009;
       &#xe00a;&#xe00b;&#xe00c;&#xe00d;&#xe00e;&#xe00f;&#xe010;&#xe011;&#xe012;&#xe013;
        &#xe014;&#xe015;&#xe016;...(省略)
    </div>
</body>
</html>

打开html文件后,我们可以看到浏览器上显示了一些奇怪的符号,这些就是加密过的字符。如果我们知道这些字符对应的原始文字,我们就可以建立起一个映射关系。

第三步:OCR识别

OCR(Optical Character Recognition)是一种将图像中的文字转换成可编辑的文本的技术,它可以用来识别各种语言和字体的文字。我们可以利用OCR来破解字体加密,具体步骤如下:

  1. 将浏览器的内容截图并交给OCR识别成文字。这里我们需要选择一个能够支持多种语言和字体的OCR工具,比如Google Cloud Vision API或者百度AI开放平台。
  2. 将文字的顺序和cmap的顺序一一对应起来,这样就创建好了一个映射关系。我们可以把这个映射关系保存成一个新的字体文件或者一个json文件,以便后续使用。

结论

通过上述方法,我们就可以成功地破解字体加密,并且还原出原始的文字内容。当然,这种方法也有一些局限性,比如:

  • OCR识别可能会出现错误或者漏识别,导致映射关系不完整或者不准确。
  • 字体加密可能会采用更复杂的方式进行混淆或者变形,使得OCR难以识别。
  • 字体加密可能会涉及版权问题或者敏感信息,破解后可能会引起法律纠纷或者道德争议。

因此,在使用这种方法时,请务必遵守相关法律法规,并且尊重原作者和内容。

我希望这篇博客文章能够对你有所帮助和启发。如果你有任何问题或者建议,请在评论区留言。谢谢你的阅读!

以上内容是ChatGPT生成

写在后头

令我没想到的是ChatGPT帮我生成了对应的python代码,没想到还可以正确的运行。最后两段比较仓促,因为是另外一个回答拼接起来的。ChatGPT看似很强大,目前也有很多错误,比如有时候认为今年是2022年等,另外,英文内容质量比较高。

原文 github.com/woodongwong/notes/issue...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!