粉丝2602获赞2.3万

一天一个逆向知识点,今天学习的是瑞星小程序抓包,今天给大家分享的是瑞星咖啡小程序的门店数据接口逆向分析,那么它是一个小程序,如果说大家不会抓小程序,可以看一下我的往期视频,单独有对这个小程序抓包做了讲解的。 好。那么来看一下这里会有一些门店,我们来去搜一下,比如说搜一个上,它会有对应的这些数据。来看一下这里的数据包,发了四个包,那么前面三个 png, png, gif 都是图片的,那么它不可能会把数据放到这里面,那就是只有这个叉 h r 了。来看一下这里面呢,这里面它会是一个密文值的形式,也就是它是对那个门店的数据做了加密了的。 那来看一下载客里面的 c i d 这个值一般来说是固定值。 q, 这里是一个密文值, d, k 和这个是一个纯数字,看起来那就只有这个 q 和 s 是 加密的,我们需要去逆向分析这两个参数, 那来搜索一下这个 s f 加 f, 你 要去搜索这个 q, 那 肯定太多了,那么还是搜这个长一点的 s 来加一个冒号。回车来找一下它的一个位置,找一下这里有一个空括号的定义,很明显不是 后,这里也不太对来。往下面找一下这里有个什么 a, e, e 是 什么东西? a, e, e 这种地方你可以给它向上断点,但看起来不太像这个位置,因为它还有其他的一些参数,这里看不到其他的一些参数。来,再往下面看,这里呢?也不是往下面再找,这里有个 i 五六八零,这个地方很明显应该是一个模块化加载,也不太像。再往下面看,这里往下面找,一直找到这个位置有一个什么 i 点三,这里应该也不太像,当然你如果说不确定,也可以在这里去下断点, 现在找到这个位置,这个位置 v 点 m d 五 q d k c i d u i d, 是 吧?都有,那么应该就是这个位置呗。给它加上断点之后,我们来换一个搜索,比如说搜一个 t m, 应该都会有这样的一些名称的店铺,就断在了这个位置。首先 f 点 sort, 对 f 来做了一下排序,排序 f 是 有四个元素的,宿主, c i d, 二三零二三零一零一 d k q 值和这个 u i d, 其实最开始我以为它是随机的, 当时是用了那个 python u y d 去随机生成,但后面发现随机生成拿不到数据,它这个是固定值,你可以给它给它拼接了一下,拼接之后的结果是这样的一个结果,再去加了这个 s s 是 这个地方的一个 k 值,它在这下面其实对什么 q, 它对应的是这一值,在这里是做了一个 a e s 加密的 c 传那个 q, 而是就是那个 a e s 的 key 值,这个值也是固定值,你也可以去搜索,是能搜索到的,那这里是能够获取到的,这个是 key 值,交给了这个 md 五之后,就能够去得到这样的一串值。但这个地方并不是纯正的 md 五, 这里你可以去给它输出一下,它是三十八位的,而且它并没有零到 f, 它就只是纯数字,在它这里面肯定是做了一些处理了的。我们来看一下它在这里面走的是这个逻辑,什么 mark 点 abs, 就是 a 群加 n 兔子群加 o 兔子群给它拼接到一起了, 这里是什么? m d m d 五加密结果自结数组错误,这里是做了一个什么判断,这个可以不管它上面,这里面有一个 e n a e s encrypt, d e 这个是解密 encrypt, 按道理来说它这个地方放到了同一个位置,这个应该是 q 的 一个生成位置,这个是得到数据之后它所解密用到的一个解密的方法, 这是 m d 五的一个方法,我当时做是直接把这个代码全部复制下来之后给那个 ai, 让他给我做了一下分析,所以给大家看一下我给 ai 的 一个逻辑。首先是整个的一个代码逻辑,是这样的一个逻辑,就是把这个 m d 五的那个函数给了他,把参数也给了他,呃, 给他来分析一下,他整个的分析的就是这样的一个逻辑。最后字母串进行拼接,让他去做了一下拍损还原。为什么是三十八位?他说三十二位的整数最大值绝对值是二的,三十一次方减一,等于这样的一个十位,这样只是零位,拼接起来就是三十六位到四十位之间 是一个正常的输出。结果拍损还原是这样的一个代码,去还原其实非常简单,测试参数去测试了一下,是正常没有问题的。好, 这个就是 m d 五的一个逻辑。我们再来看一下 g 的, 在这个地方你可以在这里去下断点,重新去断肯定是没问题的,但我们这里看起来好像也不太影响,在这里断住也不影响它。屁是这个对象,我们去输出一下这个对象, 正它的一个 loggin, 这个东西值差不多也是固定值,都是可以去拿到它去用的。 c i d e, 这个是 c t i d, 这个应该是那个城市的一个 id 值,分区赛是一页有多少条数据,这个是你的搜索关键词,其他的其实都是差不多固定值。 这里把 s 就是 那个 k 值和这个 c 为 true, 也给到了这个方法,这个方法其实对应到的就是那个 e n 这样的一个方法。我这个地方也是把这个逻辑这个函数给到了 ai, 让他去给我用 python 来还原,整个还原的一个逻辑是这样的一个逻辑,他传了一个 true 进来,输出这个 bash 函数的平方串,得到了一个结果。 我们为什么要去传出这里?他也是做了一个解释,后面是因为报了一次错,又给他重新生成了一下,去替换了一些东西,替换了这样的一些特殊字符来去做了一下替换,最后就能够去得到一个 a s 加密的一个结果。还有一个是解密的,解密的也是把这个是解密的看一下, 这是加密的,加密是在这上面,这个是加密的,这个是加密的,对,没问题。所以它整个解密你可以通过什么来确定它整个加密走完之后会发那个数据包嘛?它会得到一个密文值,你可以在这里的这个定义,这里下个断点来,就看它会不会断住,跑一下, 它在这里断住了,对不对?断住了这个 t 是 密文值,这个密文值最后通过了这样的一个逻辑,等一下就能够去得到对应的铭文值的信息了, 带去那个 jason 点 pass 就 能够去给它转换成对应的 jason 格式,来去在页面上做一个加载,顺便把整个的一套代码啊给它用 pass 来生成一下 md 五去做的一个加密, aes 做的一个加密,这个是 aes 做的解密,它的一个逻辑,我这里是定义了一个 对象,就字典给它转换成了 json 格式,这个是那个 key 值和传入的那个 to 调用的这个慢方法,这个慢方法首先先去做了一下 q 的 一个加密,生成 q 来看一下,这里是在这个位置,我们来重新跑一下, 好,这里就过了来再换一个上好就断住了,就这个地方 q 它是等于 g 的, 在这里传入的这些数据给到了它来做一次加密,然后这里就得到了这个 aes 的 一个加密值, 把 q, u, u, i, d 以及 d, k 还有 c, i, d 给它构造成一个列表,然后排序加上这个 key 值给到 m d 五来做一次加密,就能去得到这个散值。把它呢构造 上一个字典之后,去请求对应了这个密文值的一个接口,这个是 hash cookies, 这里的 u, i d 它也是固定的。得到那个密文值之后,我们就再把这个密文值交给这个 a e s 解密,这个 s 也是密钥 c 来做一次解密就能够去得到正确的数据了。来右键运行看一下, 它能够去拿到对应的数据,所以这个就是瑞幸咖啡它的一个门店数据的一个接口,它主要是用到了 aes 以及 m d 五来去做的一个加密。解密数据也是用的 aes, 它是 e c b 模式,并没有用到 i v 值。


昨天我给大家分享完小程序后,收获了不少粉丝朋友的观看,紧接着后台就收到了私信,想让我出一期实战演示,今天他来了。今天这期视频我就以瑞幸咖啡的门店数据为案例,教大家如何配合小程序进行加解密,想学的同学记得点赞加关注。 今天给大家分享的是瑞幸咖啡小程序的门店数据接口率像分析,那么它是一个小程序,如果说大家不会抓小程序的呢,可以看一下我的往期视频,单独有对这个小程序抓包做了讲解的。 在视频开始之前,为了保证零基础的同学也能听懂,主播准备了从零到 j s 逆向进阶的学习案例,包含从新手到大神的学习路线,都放在了主页粉丝群,大家可以自行领取。好,那么来看一下这里的话呢,会有一些门店,我们来去搜一下,比如说搜一个上,他会有对应的这些数据嘛?来看一下这里的数据包, 发了四个包,那么前面三个 p n g, p n g g i f 都是图片的,那么它不可能会把数据放到这里面,那就是只有这个叉 h r 了。来看一下这里面的,那么这里面它会是一个密文值的形式,也就是说它是对那个门店的数据做了加密了的。 那来看一下那个载客,载客里面的 c i d, 那 么这个值一般来说是固定值,而 q 的 话呢,这里是一个密文值, d k 和这个散 在这个地方,它的一个散的话是一个纯数字。看起来啊,那就只有这个 q 和散是加密的,我们需要去逆向分析这两个参数,那来搜索一下这个散吧, ctrl shift 加 f, 你 要去搜索这个 q 的, 那肯定太多了嘛,那么来去搜这个长一点的散来加一个冒号吧。回车来找一下它的一个名称符不符合,这里都不太符合, 都不符合的,往上面找一下,这里的话有一个控制串的定义,那很明显不是啊, a d d hold, 这里也不太对来往下面找一下,这里有个什么 a e e 是 什么东西啊? a e e 啊。这种地方你可以给它向上断点啊,但看起来不太像这个位置,因为它还有其他的一些参数,这里看不到其他的一些那个参数来,再往下面看这里呢?这里的话也不是往下面再找, 这里呢?有个 i 五六八零。这个地方很明显应该是一个模块化加载吗?也不太像啊。再往下面看呢,这里往下面找找找。一直找到这个位置的话,有一个什么 i 点 content 点三,这里应该也不太像啊,当然你如果说不确定,也可以在这里去下断点,再来找到这个位置呢,这个位置 v 点 m d 五,然后 q 啊,然后 d k c i d u i d 是 吧?都有,那么应该就是这个位置呗,给他下上断点, 下上断点。之后我们来换一个搜索,比如说搜一个天吧,应该都会有这样的一些名称的店铺啊, 就断在了这个位置嘛,断在了这个位置。首先 f 点 sort, 对 f 来做了一下排序,排序 f 的 话呢,是有四个元素的,宿主 c i d 二三零 二三零一零一啊,然后 d k q 值和这个 u i d, 这个 u i d。 其实最开始我以为它是随机的,我当时是用了那个 python u i d 去随机生成,但后面发现随机生成拿不到数据,它这个是固定值啊,你可以给它固定上, 给它拼接了一下啊,拼接之后的结果呢,是这样的一个结果,再去加了这个 s s 的 话呢,是这个地方的一个 k 值,它在这下面呢,其实是对这个什么 啊? q 啊,它对应的是这个 g 嘛? g 的 话呢,是在这里是做了一个 a e s 加密的 c 传,那个 q s 就是 那个 a e s 的 k 值,这个值也是固定值,你也可以去搜索,是能搜索到的,它在这里是能够获取到的啊,这个是 k 值, 然后交给了这个 md 五之后,就能够去得到这样的一串值,但这个地方他并不是纯正的 md 五,这里你可以去给他输出一下,他是 三十八位的,而且他并没有零到 f, 他 就只是纯数字,所以他这里面肯定是做了一些处理了的。我们来看一下他这里面, 在这里面的话走的是这个逻辑嘛,啊?什么 mark 点 abs, 然后就是 a 兔子群加 n 兔子群加 o 兔子群,给它拼接到一起了,这里是什么? m d 五加密,结果自结数组错误啊,这里是做了一个什么判断啊?这可以不管它。 然后上面这里呢会有一个 e n a e s in craft, d e 啊,这个是解密 d e craft。 那 么按道理来说啊,他这个地方放到了同一个位置,嗯,这个应该是那个 q 的 一个生成位置,这个是那个就是得到数据之后他所解密 用到的一个解密的方法,然后这个是 m d 五的一个方法啊,我当时做的话呢,是直接把这个代码全部复制下来之后给那个 ai, 让他给我做了一下分析, 可以给大家看一下我跟 ai 的 一个逻辑啊,首先是整个的一个代码,然后逻辑是这样的一个逻辑,就是把这个 md 五的那个函数给了他,然后把参数也给了他,给他来分析一下,他整个的分析的就是这样的一个逻辑啊。最后什么字母串进行拼接, 然后让他去做了一下拍损还原啊,为什么是三十八位呢?他说三十二位的整数最大值绝对值是二的,三十一次方减一,等于这样的一个十位啊,最好只是零位啊,拼起来就是三十六位到四十位之间啊,是一个正常的输出,结果拍损还原的是这样的一个代码,去还原其实非常简单 啊,测试的参数去测试了一下,是正常没有问题的好,然后这个就是那个 md 五的一个逻辑,我们再来看一下那个 g 的, 在这个地方你可以在这里去下断点,然后重新去断啊,肯定是没问题的,但我们这里看起来好像也不太影响啊,在这里断住也不影响他。 屁,是那个对象啊,这个对象我们来去输出一下这个对象, 那么这里的话呢,它的一个 login 这个东西值差不多也是固定值啊,都是可以去拿到它来去用的啊。 cid 一, 这个是那个 ctid 啊,这个应该是那个城市的一个 id 值分区赛是一页有多少条数据嘛?然后这个是你的搜索关键词,其他的其实都是差不多固定值。 呃,然后这里的话把 s 就是 那个 k 值和这个 c 为 q 也给到了这个方法,那么这个方法呢,其实对应到的就是那个 e n 啊,这样的一个方法。 那么我这个地方呢,也是把这个逻辑啊,就这个函数给到了 ai, 让他去给我用 python 来还原,整个还原的一个逻辑呢,是这样的一个逻辑,嗯,他传了一个 q 进来嘛,然后输出这个 bash 呢啊,这里他也是做了一个解释啊, 后面是因为报了一次错,然后又给他重新生成了一下啊,去替换了一些东西啊,替换的啊,这样的一些特殊字符来去做了一下替换啊,最后就能够去得到一个 a s 加密的一个结果。还有一个是解密的啊,解密的呢,也是把那个 这个是解密的啊,加密的话呢,是在这上面啊,这个是加密的,这个是解密的,没问题啊, 所以他整个这个解密的话,你可以通过什么来确定呢?他整个加密走完之后会发那个数据包吗?他会得到一个密文值,你可以在这里的这个定义这里下个断点来,就看他会不会断住 来跑一下,他在这里断住了,对不对?断住了这个 t 的 话,是那个密文值吗?这个密文值,然后最后通过了这样的一个逻辑 就,嗯,等一下就能够去得到对应的铭文值的信息了,然后再去那个 jason 点 pass, 就 能够去给它转换成对应的 jason 格式来去在页面上做一个加载, 所以你把整个的一套代码给它用 pass 来生成一下啊, md 五去做的一个加密啊, aes 做的一个加密,然后这个呢是 aes 做的解密, 他的一个逻辑,呃,我这边是定义了一个这个这个对象啊,就字典嘛,然后给它转换成了 jason 格式豆腐串,这个是那个 k 值和传入的那个去 调用的这个慢方法。这个慢方法呢,首先先去做了一下那个 q 的 一个加密生成,就是 q 那 个来看一下啊,这里的话是在这个位置,我们来重新跑一下,好,这就过了来,再换一个上, 那就断住了,就这个地方啊, q 它是等于 g 的, 在这里传入的这些数据给到了它来做一次加密,然后这里就得到了 这个 a, e, s 的 一个加密值,把 q, u, u, i, d 以及 d, k 还有 c, i, d 给它构造成一个列表,然后排序加上这个 k 值给到 md 五来做一次加密,就能够得到这个散值。把它俩构造上一个字典之后去请求 对应了这个密文值的一个接口啊,这个是 hash cookies, 然后这里的 uid 它也是固定的, 得到那个密文值之后我们就再把这个密文值啊,把这个密文值交给这个 aes 解密啊,这个 s 也是那个密钥嘛。然后 c 是 那个 q 来做一次解密就能够去得到正确的数据了,来右键运行看一下,它就能够去拿到对应的数据啊, 所以这个就是瑞幸咖啡它的一个门店数据的一个接口,它主要是用到了 aes 以及 m 六五来去做的一个加密。解密数据呢也是用的 aes, 它是 ecb 模式,并没有用到 i v 值。

无聊的日常里,幸运藏在主动的探索里。 刷视频打发时间。 玩瑞幸解锁小幸运,你的选择是? 原来玩一下就有小幸运 玩!任性的快乐就是随时有惊喜!

