爬虫逆向加密总结
文章目录
一、常规加密分类
一、取盐算法(消息摘要算法)
- 取盐 算法,消息摘要算法,是对数据进行一系列运算后,截取一部分关键值进行校验。因此运算过程不可逆,无法还原出加密前的 初始文本。
- 消息摘要算法得到的结果长度一般是固定的,无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。一般地,只要输入的文本不同,对其进行摘要以后产生的摘要消息也必不相同,但相同的文本输入必会产生相同的输出。
1、md系列
- 字符串为 16 进制,即数字英文组合,而且 英文最大是字母 f 。
- 位数为 16、32。也有可能魔改
- 搜索关键字有:
- – 关键词:md5、MD5
– 默认的 key 值:0123456789abcdef、0123456789ABCDEF
– 原始MD5的魔法值(16进制):0x67452301、0xefcdab89、0x98badcfe、0x10325476
– 原始MD5的魔法值(10进制):1732584193、271733879、1732584194、271733878 - 123456 计算结果值:
– 16 位,结果值 49 开头。
– 16位小写计算结果:49ba59abbe56e057
– 16位大写计算结果:49BA59ABBE56E057 32 位,结果值 e10、E10 开头。
– 32位小写计算结果:e10adc3949ba59abbe56e057f20f883e
– 32位小写计算结果:E10ADC3949BA59ABBE56E057F20F883E
测试加密方式的时候可以用 123456 进行简单的测试从而缩短定位具体加密方式的时间
2、sha系列
- 字符串为 16 进制,即数字英文组合,而且 英文最大是字母 f 。
- 位数为 40、64、96、128 等,位数均是 8 的倍数。
- 123456 计算结果值:
– SHA1:40 位:7c4a8d09ca3762af61e59520943dc26494f8941b
– SHA256:64
位:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
– SHA384:96
位:0a989ebc4a77b56a6e2bb7b19d995d185ce44090c13e2984b7ecc6d446d4b61ea9991b76a4c2f04b1b4d244841449454
– SHA512:128
位ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413
二、对称加密算法(加密解密密钥相同)
1、AES
- 一般AES加密出来的数据是128 或 256 的整倍数。
- 搜索关键词:cryptojs.aes、encryptedString、010001(或类似二进制模值)。
2、DES
- 搜索关键词:cryptojs.des.encrypt。
3、3DES
- 搜索关键词:CryptoJS.TripleDES.encrypt。
三、非对称加密(分公钥私钥)
1、RSA
RSA 是典型的 非对称加密,拥有一个公钥和一个私钥。
在非对称加密算法中,加密与解密的密钥肯定是不一样的(一样的话,就不叫非对称加密算法了)。牢记“十六字方针”后,我们只要找到‘公钥’和‘私钥’就能解密了。当然python也有现成的库进行RSA解密。
- 加密后的数据长度不可能是 8 的倍数。
- 搜索关键词:new JSEncrypt、setpublickey、ABCDEFG、abcdefg。
四、其他加密
1、Base64
- 字符串的长度为4的整数倍。 字符串的符号取值只能在 A-Z, a-z, 0-9, +, /, = 共计65个字符中,且 =
如果出现就必须在结尾出现。
附录
下面表格是把明文123用不同算法加密后的密文。相关的加密方法源码可以在下面的知识星球获得。
在实际逆向项目中MD5、SHA、AES、RSA,自定义加密函数使用频率是最多的。而且极有可能会碰到多种不同加密算法混合使用,例如:网页数据先base64再AES再进行base64,或者解密明文的RSA的密钥对被AES加密了等等情况。
DES、3DES、AES、RSA、MD5、SHA传入的数据或者密钥都是bytes数据类型,不是bytes数据类型的需要先转换;密钥一般是8的倍数。