当前位置: 首页 > news >正文

猿人学题库13题—动态css字体加密 记录

猿人学题库13题—动态css字体加密

1.  首先 进入 浏览器的开发者工具抓包

    在 xhr 可以看到 ajax请求数据接口,返回的数据有一个 woff 键,这里就是 woff的base64格式

    请求获取 数据后 把 woff键的值 base64解码 保存为tff文件格式

2、安装库

这里需要用到fontTools库安装FontTools库非常简单,推荐使用Python的包管理工具pip进行安装。读者只需打开终端或命令提示符,输入以下命令即可:

pip install fonttools

安装完成后,可以通过以下Python代码检查是否安装成功:

import fontTools
print(fontTools.__version__)

如果控制台打印出FontTools的版本信息,则表示安装无误,我们可以继续进行下一步的FontTools探索之旅。

 3、解析 woff 文件 

保存 tff 格式后,用  from fontTools.ttLib import TTFont 读取,

在解析的过程可以先 保存为 xml 格式,查看数据

观察xml 文件发现最后 这部分 是 Unicode 编码是 排序好的,和数字排序是对应的,直接找规律。

每次请求获取 Unicode对应的数字值子典进去比对,就可以获取正确的数值了

核心代码

def SaveTff(res):new_font_name = "./tff/font_base.ttf"xml_font_name = "./tff/font_base.xml"font_data_after_decode = base64.b64decode(res['woff'])with open(new_font_name, 'wb') as f:f.write(font_data_after_decode)font = TTFont(new_font_name)font.saveXML(xml_font_name)extraNames = font.get('post').__dict__['extraNames']woff_dict = {}for index, val in enumerate(extraNames):if index < 9:num = index + 1else:num = 0woff_dict[val.replace('uni', '&#x')] = num# print(woff_dict)return woff_dict

相关文章:

  • 深入理解指针 (1)
  • Unity 打包后 无阴影 阴影不显示
  • Hi3516CV608 超高清智慧视觉 SoC 芯片 可提供开发资料
  • 论分布式事务及其解决方案 架构师论文范文(考试笔记)
  • 电力系统惯性与惯量关系解析
  • SCI论文结构笔记
  • ctfshow-web-新春欢乐杯
  • 【使用层次序列构建二叉树(数据结构C)】
  • 脚本分享:快速作图对比wannier拟合能带python脚本
  • 深入理解C语言变量:从基础到实践
  • 《深入浅出ProtoBuf:从环境搭建到高效数据序列化》​
  • 三串口进行试验
  • 如何将 sNp 文件导入并绘制到 AEDT (HFSS)
  • Vue多地址代理端口调用
  • version `GLIBCXX_3.4.32‘ not found 解决方法
  • Coding Practice,48天强训(23)
  • BIOS主板(非UEFI)安装fedora42的方法
  • How to haggle over salary with HR
  • 从LLM到AI Agent的技术演进路径:架构解析与实现逻辑
  • 软考【网络工程师】2023年5月上午题答案解析
  • 美法官裁定特朗普援引战时法律驱逐黑帮违法,系首次永久性驳回
  • 阿根廷发生5.6级地震,震源深度30公里
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • 杭州挂牌临平区两宗住宅用地,起始总价约11.02亿元
  • 全文丨中华人民共和国传染病防治法
  • 澎湃回声丨23岁小伙“被精神病8年”续:今日将被移出“重精”管理系统