猫眼的字体加密相信大家都很熟悉,每一个分析字体加密的博主都会写一次字体加密,没写过至少也会做过。
所以咸鱼今天来炒冷饭,也写一次猫眼的字体加密,做过这个加密的朋友直接拉到文末给个留言,如果做过的人多咸鱼下次可以试试加快这个系列的更新频率。
先重温上次的文章结尾提到解密的步骤:
xxx.tff
这样的文件接下来开始分析网站。
打开目标网站,抓包看看【图1-1】
图1-1
可以看到图中本应该是票房数据的地方被一串乱码替换。
我们使用浏览器选中网页的票房数据查看能否找到什么线索。【图1-2】
根据【图1-2】可以看到我们选中之后右侧显示出了他的 font-family
我们点击方框 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)的坐标做比对,这个编码的坐标差异在这个范围内那么我们就认为他是某个数字,这样我们就可以的到对应后的字体了。
根据这个思路我们试着进行编码,最终可就以得到下面的结果了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有