一、总体思路
1、获取字体文件
2、base64解密文件分别保存为woff文件与xml文件
3、查看映射关系创建映射字典
4、通过映射字典,第二次获取响应时替换成实际数据
二、解析过程
image.png1、获取字体文件
在开发者工具中查找"font-face",如图所示
image.png获取到base64字符串并删除头部信息,在这里就是data:application/font-ttf;charset=utf-8;base64, 逗号也要删除,这样就获取到了字体信息,这一段密文就是加密后的字体文件
T1RUTwAJAIAAAwAQQ0ZGICGSe1oAAATUAAAEd09TLzJlNl+eAAABAAAAAGBjbWFwACoGOwAABAQAAACwaGVhZBf2b3IAAACcAAAANmhoZWEA3wBNAAAA1AAAACRobXR4B/AAAAAACUwAAAAkbWF4cAAJUAAAAAD4AAAABm5hbWUKXYQxAAABYAAAAqNwb3N0AAMAAAAABLQAAAAgAAEAAAABAACCl4DfXw889QADAQAAAAAA3DAYYwAAAADcMBhjAAf//wB4ALUAAAADAAIAAAAAAAAAAQAAAN3/xQAAAH4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAkAAFAAAAkAAAADAH4B9AAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACBYWFhYAEAATgBVAN3/xQAAALUAAQAAAAEAAAAAAG8AtQAAAAAAAAAAACIBngABAAAAAAAAAAEAQgABAAAAAAABAAwAAAABAAAAAAACAAYAJAABAAAAAAADABUAxgABAAAAAAAEABMANgABAAAAAAAFAAsApQABAAAAAAAGABIAbwABAAAAAAAHAAEAQgABAAAAAAAIAAEAQgABAAAAAAAJAAEAQgABAAAAAAAKAAEAQgABAAAAAAALAAEAQgABAAAAAAAMAAEAQgABAAAAAAANAAEAQgABAAAAAAAOAAEAQgABAAAAAAAQAAwAAAABAAAAAAARAAYAJAADAAEECQAAAAIAYQADAAEECQABABgADAADAAEECQACAAwAKgADAAEECQADACoA2wADAAEECQAEACYASQADAAEECQAFABYAsAADAAEECQAGACQAgQADAAEECQAHAAIAYQADAAEECQAIAAIAYQADAAEECQAJAAIAYQADAAEECQAKAAIAYQADAAEECQALAAIAYQADAAEECQAMAAIAYQADAAEECQANAAIAYQADAAEECQAOAAIAYQADAAEECQAQABgADAADAAEECQARAAwAKk9wZW5UeXBlU2FucwBPAHAAZQBuAFQAeQBwAGUAUwBhAG4Ac01lZGl1bQBNAGUAZABpAHUAbU9wZW5UeXBlU2FucyBNZWRpdW0ATwBwAGUAbgBUAHkAcABlAFMAYQBuAHMAIABNAGUAZABpAHUAbU9wZW5UeXBlU2Fuc01lZGl1bQBPAHAA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
进行base64解码(为什么是bs64呢,因为font-face中标明了是base64)并分别保存为woff文件与xml文件
# base64解密
font_content = base64.b64decode(base64_str)
# TTFont打开从内存读取的二进制woff数据
font = TTFont(io.BytesIO(font_content))
# 将woff文件转换为xml文件
font.save('ts.woff')
font.saveXML('ts.xml')
使用Fontcreator打开woff文件,就可以看到字形与实际字体的对应关系,也就是映射
image.png这就知道了结果,然后打开xml文件,通过结果查找映射关系就事半功倍了。
image.png至于创建映射字典和替换数据都是体力活了,就不一一介绍了。
网友评论