某汉芯城字体反爬

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

在上篇文章某汉芯城js逆向我们已经成功研究出了参数的加密流程,但是请求的回来的数据却是一堆以 &#x 开头的字符串
在这里插入图片描述
从图中可以看出来我们遇到了字体反爬了
在这里插入图片描述
把这个文件下载下来 研究下他的字体映射关系是啥下面是我下载了两个不同的字体文件进行了比对
在这里插入图片描述

font = TTFont(r'xxx.ttf')
font.saveXML('xxx.xml')

转换成xml格式在进行比对
在这里插入图片描述
这是ttf文件和xml的对应关系
在这里插入图片描述
经过对比发现在这两个字体文件中用来表示6的坐标点都是一致的,那么说明了这只是个静态的字体文件反扒,针对这种情况我们可以去做一个静态的映射关系

#这里我是以glyf节点TTGlyph字体on信息做了一组映射
a_dict = {'1010101010101110101010101010101010101011111101010101010': 5,
          '1111111': 7,
          '101010101010101010101010101010101010101010101010': 0,
          '10101010101011101010101010101010101010101010101010101010101010101010101010': 9,
          '10101010101011010101010101010110101010101010101010101010101010101010101010': 8,
          '1111': '.', '11111111111111': 4,
          '111010101010101010111010101010101010101011': 2,
          '111111101010101111': 1,
          '10101010101010101110101010101010101010111101010101010101011101010101010101011010': 3,
          '10101010101010101010101011101010101010101010101010101010101010101010101010': 6}



import re
from fontTools.ttLib import TTFont

# 加载ttf文件
font = TTFont("ickey (2).ttf")
cmp_lists = font.getGlyphOrder()[4:]
print(cmp_lists)
# for index,unicode in enumerate(cmp_lists):
#     contour=font['glyf'][unicode].coordinates
#     print(contour)
str_ = "通用 񸱿 - 񏉏MHz 𮦤󀌧nA 񏉏mA 𮦤󑣞mA 񓣫-PDIP 񸱿mV 򃦄 V ~ 򃦄񸱿 V,±񏉏󼓅󀌧 V ~ 񏉏򑌄 V"

print("请求返回的数据",str_)
data_dict = {}
new_dict = {}
for z,cmp_name in enumerate(cmp_lists):
    new_tag_name = cmp_name.replace("u","&#x") + ";"
    aaa = font['glyf'][cmp_name].flags
    on_z = str(aaa).replace("\\x0", "").replace("bytearray(b'", "").replace("')", "")
    number_ = a_dict[on_z]
    new_dict[new_tag_name] = number_
    str_ = str_.replace(new_tag_name,str(number_))


print("处理完的数据",str_)

最终结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值