前端加密与解密

前端加密与解密

前言

本文章仅用于记录平时安全测试中所遇到的前端加密和解密,有些内容与爬虫遇到的反爬措施类似,可参照处理。

常见加密所用算法

前端常见的加密(哈希)算法:MD5,AES,Rsa,sha1等;当然这些算法也有被魔改的变态版本,通常可以根据算法中的常见函数判断算法是属于哪一种。对于属于简单编码类的base64及其同类如base32或十六进制之类的不在本次讨论范围。
MD5:待加密明文($pass),盐($salt)值(可选),密文长度32位或16位,加密形式多种,包括:md5(md5($pass)),md5(md5($salt).$pass),md5($salt.md5($pass)),md5($pass.md5($salt))等。
AES:常见参数为秘钥key和初始向量iv,加密模式(ECB,CBC,GCM,CFB等)和填充方式(pkcs5, pkcs7, NOPADDING)。
RSA:参数包括公钥、私钥、指数Exponent(常用值65537)和模数Modulus,填充方式(通常为PKCS#1),公(私)钥长度通常为2048位或4096位,即公钥(私钥)长度是256字节或512字节。
sha1和sha256略,与MD5类似,均为哈希算法。

关键函数的查找

通常用于加密的函数名包含关键字encode、encrypt,解密函数名则可能包含decode、decrypt。或者搜索AES、Rsa、MD5也可,对于经过混淆处理了函数名和变量名的情况,只能通过浏览器调试结合堆栈中的变量值进行推测了。

算法分析

通常可以直接搜索浏览器调试工具的“资源”选项卡(Sources),使用Ctrl+shift+F快捷键在全局范围查找包含关键字(如sign)的文件,见下图所示。

在这里插入图片描述
从搜索到的js文件中筛选出包含目标关键词的关键函数,设置断点之后刷新页面,如果断点设置正确,通常代码会停在断点处,之后根据需要进行调试,找到一些必要的入口函数及参数值,最后可以把js代码保存到一个js文件中,使用pyhon结合nodejs进行调用和执行,完成算法模拟。

一些捷径

通常简单的算法可以通过浏览器调试分析得到算法和参数,但是有时候可能不能很轻松的获得算法的js代码,或者一些类似浏览器指纹的参数值具体是哪些很难确定,这时可以将加密生成时用到的js文件(网站原始文件)保存到本地,然后新建一个html网页文件,通过简单的代码引用本地保存的js文件,调用js文件中的加密函数(输入函数入口参数),此时使用浏览器打开html文件即可得到密文,可以结合爬虫利器Pyppeteer的 无头模式实现自动化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值