当前位置: 首页 > 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月上午题答案解析
  • 山东省委组织部办公室主任吴宪利已任德州市委常委、组织部部长
  • 国铁集团郑州局预计“五一”发送642.5万人
  • 中国人民解放军南部战区位南海海域进行例行巡航
  • 中信银行一季度净利195.09亿增1.66%,不良率持平
  • 【社论】人工智能,年轻的事业
  • 五月院线片单:就看五一档表现了