在油猴中文网 白嫖时发现了一个帖子:超赞的Vue模板
正好这段时间在学习Vue这个框架。看看了预览,很好康,但是购买需要$40 。
我们肯定要支持正版,先上车再买票[滑稽]。而楼主也贴心的为我们这些白嫖怪附上了网盘下载链接。
但是,楼主对它设了密码。
楼主贴心的告诉了我们一个神秘密码
同时告诉我们加密过程:
对原密码进行编码
对编码后的密码进行了一个关于顺序 的加密
对关于顺序 的加密后进行了一个关于ASCII码 的加密
最后就得出了==DCbTWQ
且原密码是一个3位数字 +1个字母
MISC选手的自我修养 Web选手的自我修养 拿来主义 分析一下,加密步骤我们已明确。那么我们解密就应该逆序操作:
关于ASCII的加密很多,包括Unicode=>ASCII,UTF=>ASCII等等…
我们利用ASCII在线转换 可以粗略的看看有哪些常见加密 可能==DCbTWQ
是由以上编码转换而来的。我们分别尝试解码上述编码,你会发现,答案有很多,但没有一个是对的。
这里关于ASCII码 的加密指的是凯撒加密 。我们将==DCbTWQ
进行凯撒解密
原因猜测
至于为什么不是Unicode这些而是凯撒加密,凯撒加密可以去搜一下。它其实是将加密的每一个字符都推移了x位,而这个和ASCII码也有这千丝万缕的联系。
其实更重要的是,从题目的两个== 号来看,几乎可以肯定使用了base64编码。而base64编码过后,进行了一个逆序 加密后再进行一次加密后的字符居然还跟base64编码长得非常相似。
而凯撒加密只是偏移了每个字符的位数,添加到ASCII码上,跟原数据非常相似。
解密会得到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 凯撒Caesar解码: key #0: ==DCbTWQ key #1: ==CBaSVP key #2: ==BAzRUO key #3: ==AZyQTN key #4: ==ZYxPSM key #5: ==YXwORL key #6: ==XWvNQK key #7: ==WVuMPJ key #8: ==VUtLOI key #9: ==UTsKNH key #10: ==TSrJMG key #11: ==SRqILF key #12: ==RQpHKE key #13: ==QPoGJD key #14: ==POnFIC key #15: ==ONmEHB key #16: ==NMlDGA key #17: ==MLkCFZ key #18: ==LKjBEY key #19: ==KJiADX key #20: ==JIhZCW key #21: ==IHgYBV key #22: ==HGfXAU key #23: ==GFeWZT key #24: ==FEdVYS key #25: ==EDcUXR
有很多,我们暂且不管,我们来看看关于顺序 的加密。
我原来一直认为关于顺序 的加密是凯撒加密,但是很好奇为什么两个== 号会在最前面。
只有两个== 号在字符串后时才能解码出有意义的内容。我们尝试x+1次后猜测它的关于顺序 的加密其实就是逆序输出了
写一个小python脚本,在解码base64前先逆序过来:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import osimport base64import xlrd as xddata =xd.open_workbook ("D:\Desktop\mi.xls" ) sheet = data.sheet_by_name('Sheet1' ) body = [] for r in range (sheet.nrows): for c in range (sheet.ncols): tab=sheet.cell_value(r,c) body.append(tab) print ("\n已读取" , list (body)[0 ],"等" , len (body), "参数" )def strReverse (strDemo ): return strDemo[::-1 ] for v in range (len (body)): f=strReverse(body[v]) de64=base64.b64decode(f+"==" ) print ("【" ,de64,"】" )
这里我是将所有凯撒解密的结果去掉==后放在了mi.xls文件第一列中,python遍历逆序解码它们。
在这里我们就发现了符合3数字+1字母 的解密结果,即为访问密码。
看文章很快,很轻松。可是,我在里面的尝试,花了一下午。其中走了很多弯路,还是我想得太多。
告诉了我们密码长度以及组合,爆破手准备!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import requestsheaders = { ... } for i in range (0 ,1000 ): a="%03d" % i for q in range (26 ): d=chr (q+97 ) data = { 'action' : 'downprocess' , 'sign' : '...' , 'p' : a+d } response = requests.post('https://taozhiyu.lanzouq.com/ajaxm.php' , headers=headers, data=data) if len (response.content)==95 : print ('密码错误' ,a+d) else : print (response.text,a+d) exit()
我们不建议使用这种方法,这可能对蓝奏云造成不必要的请求,只是表明有这个思路。
应楼主要求,也是不能直接把答案告诉你呢~
不过我几乎已经告诉你密码怎么来了。好了,慢慢玩趴~