因为之前卖给了论坛一会员而他也转手给另一个人且免费发放了部分的的代码,所以我就不藏着了。。。。。。
代码写得不是很好,但你们看思路就行了。。。。
废话:因为之前看到很多人都在发快手的密码和sign和算法定制贴,而且价格也不低,就因为这样我就开始搞快手了,一开始直接反编译apk看那密码加密部分的java代码相当蛋疼,但还是可以看出是base64编码的,不过和正常的有一点点改动而已,下面看分析。 首先测试抓包一下:明文为123得到编码是GEZDG=== 看到这里先不用着急,我们来看一下base64的编码原理 引用: 【Base64】
-base64的编码都是按字符串长度,以每3个8bit的字符为一组,
-然后针对每组,首先获取每个字符的ASCII编码,
-然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
-然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
-然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符 看完上面的编码原理我们已经对base64编码过程有一点理解了吧! 以密文是123为例 1的ascii码是 49 2的ascii码是 50 3的ascii码是 51 然后再把ascii码转换成二进制 1------49----------110001 2------50----------110010 3------51----------110011 然后再看123的编码GEZDG=== G 对应的是6 E 对应的是4 Z 对应的是25 D 对应的是3 G 对应的是6 再转换成二进制数进行分析 6----------- 110 4----------- 100 25----------- 11001 3----------- 11 6----------- 110 转成二进制数后我们在和上面的ascii码的二进制进行比较一下,是不是有点关联尼? (二进制全部补成8位先,就是在前面加0) 49 50 51 00110001 00110010 00110011 6 4 25 3 6 110 100 11001 11 110 正常的base64编码是把全部二进制合在一起,然后6位一组这样的,但我们发现下面的二进制就是上的前5位,不够5位的后面补0 00110 00100 11001 00011 00110 110 100 11001 11 110 这样我们就知道了123编码是GEZDG=== 的大致原理了,详情看代码和注射吧,时间有点急所以教程写的不是很好,将就看吧!不懂得地方回帖问吧
源码
|