代码写得不是很好,但你们看思路就行了。。。。
废话:因为之前看到很多人都在发快手的密码和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=== 的大致原理了,详情看代码和注射吧,时间有点急所以教程写的不是很好,将就看吧!不懂得地方回帖问吧
发表评论: