xhs 逆向,x-s、a1、x-s-common算法
1. 概述
学了几天的逆向,发现挺有意思的,发现大部分人都是用py玩的,我这里就用java写了一个脚本,输入手机号验证码就可以完成登录、小红书关注、取关等操作、发文章 收藏 点赞这些也可以,毕竟最主要的还是扣算法,算法出来其他都好搞。
用java写的原因是熟悉、然后比较少人写、如果后续操作数据库的话方便。
- 关注点赞收藏一波,然后私信我,源码免费发送,仅供学习使用
2.演示
- 运行test方法
-
输入手机号 回车(没办法输入的话可能是因为单元测试的原因,加上-Deditable.java.test.console=true)
-
输入验证码
-
输入需要关注的小红书号
-
登陆小红书发现已经关注,并且对方粉丝数量已经+1 (可以自己找个粉丝数少的测试会清楚点)
3.算法
首先我们抓包到发送验证码接口,发现cookie、x-s、参数的必填的,x-s-common有的接口需要 有的不需要。
3.1 a1算法
cookie我们发现,只需要里面a1有值就能正常请求,先看看a1在哪里生成;搜索a1一个个去找,最后是在一个js文件里面,我们点击进去
然后发现a1是一个常量,我们直接搜这个常量,发现有set方法,
然后就是把这个算法贴到本地,这个算法很简单就一些随机数啥的,直接运行本地js,发现差不多。调用接口也没问题。需要js源码的请看概述
3.2 x-s算法
也是搜索,发现里面是调用了window._webmsxyw,是一个windos函数。
从函数点进去,发现是一个被混淆的js,这个算法依赖三个参数,一个是请求url,一个是body,一个是a1;有两种处理方式,一种是补环境,一种是长链接调用。两种都试过,推荐还是用补环境的方式,长链接调用的方式a1是写死拓展性差。需要js源码的请看概述
3.2 x-s-common算法
x-s-common就是对v值进行了加密编码等操作,v里面又有 x1~x10等等属性。这个跟a1一样扣算法就行了,就是比较难点
需要js源码的请看概述
总的来说h5逆向还是挺简单的,后面目前正在看app逆向相关的,比较麻烦的是加密的so文件用的c++写的,然后就是反编译太耗内存了30g内存都不够用;后续有机会也会出其他应用的逆向博客和源码,欢迎大家一起学习交流。