爬虫逆向爬虫遇到的常见加密算法 整理(安卓逆向 js逆向) 持续更新

爬虫逆向加密总结


一、常规加密分类

一、取盐算法(消息摘要算法)

  • 取盐 算法,消息摘要算法,是对数据进行一系列运算后,截取一部分关键值进行校验。因此运算过程不可逆,无法还原出加密前的 初始文本。
  • 消息摘要算法得到的结果长度一般是固定的,无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。一般地,只要输入的文本不同,对其进行摘要以后产生的摘要消息也必不相同,但相同的文本输入必会产生相同的输出。

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的倍数。

猜你喜欢

转载自blog.csdn.net/weixin_44236034/article/details/129728121