您的位置:首页 > 其它

字体加密 | 猫眼榜单字体解密(性感咸鱼,在线炒冷饭)

2021-01-02 18:48 369 查看

原创 煌金的咸鱼 咸鱼学Python 2019-10-22


猫眼的字体加密相信大家都很熟悉,每一个分析字体加密的博主都会写一次字体加密,没写过至少也会做过。

所以咸鱼今天来炒冷饭,也写一次猫眼的字体加密,做过这个加密的朋友直接拉到文末给个留言,如果做过的人多咸鱼下次可以试试加快这个系列的更新频率。

先重温上次的文章结尾提到解密的步骤:

  • 先找到字体文件的位置,查看源码大概就是xxx.tff这样的文件

  • 重复上面那个操作,将两个字体文件保存下来

  • 用上面的软件或者网址打开,并且通过 Python fontTools 将 tff 文件解析为 xml 文件

  • 根据字体文件解析出来的 xml 文件与类似上面的字体界面找出相同内容的映射规律(重点)

  • 在 Python 代码中把找出的规律实现出来,让你的代码能够通过这个规律还原源代码与展示内容

接下来开始分析网站。

字体文件定位

打开目标网站,抓包看看【图1-1】

图1-1

可以看到图中本应该是票房数据的地方被一串乱码替换。

我们使用浏览器选中网页的票房数据查看能否找到什么线索。【图1-2】

根据【图1-2】可以看到我们选中之后右侧显示出了他的 font-family 我们点击方框 3 的位置可以看到线面的内容【图1-3】
[图1-3]

图1-3

我们下载下来用上一篇中提到的工具网站打开,我这里使用的是百度字体。【图1-4】

图1-4

有了字体文件,我用 fontTools 将这个字体文件解析为 xml 文件

(注意:fontTools 是无法解析 eot 格式的字体文件的,如果是 eot 文件可以试着使用格式装换工具转换为可以解析的格式哦)

分析字体文件

通过下面的代码我们可以解析下载的字体文件进一步分析:

from fontTools.ttLib import TTFont
def save_ttfxml():
base_font = TTFont(filename)
base_font.saveXML(filename.xml)

打开解析出来的 xml 文件,重点观察下面这个位置【图2-1】

图2-1

单个文件的解析比对不出来的话可以找找多个文件解析的结果共同比对,找出差异。

例如:同样找出在百度文件【图2-2】中代表数字 5 的编码是 uniF008,并解析出 xml 文件【图2-3】与上面的【图1-4】和【图2-1】一起对比。

图2-2

图2-3

如果一个找不出来差异,建议可以多保存一个字体文件,样本够多很快就找出规律了。

思路梳理

例如:我们可以通过百度字体知道下面的对应关系。

base_dict = {
'uniF008':5,'uniE90E':2,'uniF25D':6,'uniF6DD':0,'uniE933':3,'uniF3E0':1,'uniF1FC':8,
'uniE412':7,'uniEF1F':9,'uniF5B2':4
}

通过比对两个或多个字体文件可以发现字体的坐标存在一定的差异,但是这个差异是在一定范围内的,那么我们大致得到这个差异之后再动态获取网页上的字体文件,并与上面作为基准的字体(例如图2-3)的坐标做比对,这个编码的坐标差异在这个范围内那么我们就认为他是某个数字,这样我们就可以的到对应后的字体了。

根据这个思路我们试着进行编码,最终可就以得到下面的结果了。

EOF

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: