第八讲 JS、CSS、Base64解密

JS、CSS、Base64解密

  • js加密
  • Hash算法介绍
  • css加密
  • base64编码

js加密

js加密目标:参数加密。通过分析js或者ajax接口,分析目标就是接口的参数。
(一)参数一般从哪里找

  • 有可能出现之前分类类别信息中。—在页面信息中。
    豆瓣电影案例
  • 有可能之前发送一些ajax请求,在这些请求的结果中找到参数,进行下次的ajax请求发送。
    参照高德地图案例
  • 通过js加密,进行参数伪装。–js加密不一定能破解。
    加密的时候一般hash算法。—16摘要。js加密想要破解是很难的。如果解决不了就使用selenium获取。

(二)分析js加密的步骤:
1、定位哪些参数是加密的。
定位的过程也就是对比找不一样的参数的过程。哪些参数不一样就是分析对象,16进制数的特征。
2、通过上述分析的标准过滤排除,发现只有可能在js文件中。此时可以定位js加密。
3、进行js加密的分析。
在哪些js文件中是否有出现这个参数的名字。搜索——提前:加载出js来。(要重新加载一些页面,将js加载到发开这工具内存中)。然后进入到文件再进行查找。学会使用格式化代码的功能,选中文件右键选择open in Sources panel进入执行文件。
具体流程在案例中讲解。

Hash算法介绍

Hash :散列,通过关于键值(key)的函数,将数据映射到内存存储中一个位置来访问。这个过程叫做Hash,这个映射函数称做散列函数,存放记录的数组称做散列表(Hash Table),又叫哈希表。这个函数可以将任意一段数据(一般称这段数据为“消息”)压缩成固定长度的字符串(一般称输出的字符串为“摘要”。原理简述为:先分类,再查找,通过计算,缩小范围,加快查找速度。
作用:①数字签名:给数据打指纹(需要一种指纹一样的标志来检查文件的可靠性)②密码存储
hash算法的特性:

  • 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
  • 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
  • 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
  • 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。

如果两个key通过hash函数处理之后得到的散列值相同,这种情况就叫做散列算法的碰撞。

css加密

css加密-----页面的样式相关的。
定位问题:什么情况是css加密?只要和显示相关的问题都是css加密范畴。
解决办法:

  • 首先获取数据里面就是&开头16进制,但是显示到页面中,就是正确内容。这说明就是css加密,然后通过下列步骤进行解密。
  • 对照的信息应该在css文件中,打开每个css文件进行查找,寻找与字体文件相关的woff字眼,而且和@font-face相关。字体加密文件就是woff字体文件。
  • 找到css中woff文件。下载woff文件,通过这些woff文件,获取里面键。其中值是由画图器画出的,只能手打。比较耗时,也可以使用文字识别工具,qq截图就有。
  • 生成字典,使用字典循环替换页面内容。

对字体文件操作需要下载新的插件:

pip install fontTools

导包

from fontTools.ttLib import TTFont
font = TTFont(文件路径+文件名)
keys = font.getGlyphOrder()

具体使用哪个方法,需要确定数据在字体文件中的位置。
程序如何编写请参考第八讲案例。

base64编码

有兴趣的可以单独查找相关文章,这里只列一些base64编码的特点和使用方法。
特点:

  • 前六位只由A-Z a-z 0-9 +/组成
  • 特点2:结尾有很多=。ascii码对于base64编码转化的时候,结尾字符无法对应的时候会用=进行补齐

base64方法:

import base64
from io import BytesIO
from fontTools.ttLib import TTFont

# 使用base64将字符串转为二进制
font_byte = base64.b64decode(font_str)
# 将二进制转换为内存流保存到xml文件中
font = TTFont(BytesIO(font_byte))
font.saveXML('font.xml')

具体程序请参考下一篇文章,第八讲案例https://blog.csdn.net/lxd1908717401/article/details/107413818

你可能感兴趣的:(#,爬虫学习笔记,python,js,css,base64)