油猴中文网白嫖时发现了一个帖子:超赞的Vue模板

正好这段时间在学习Vue这个框架。看看了预览,很好康,但是购买需要$40

我们肯定要支持正版,先上车再买票[滑稽]。而楼主也贴心的为我们这些白嫖怪附上了网盘下载链接。

但是,楼主对它设了密码。

楼主的提示

楼主贴心的告诉了我们一个神秘密码

==DCbTWQ

同时告诉我们加密过程:

  1. 对原密码进行编码
  2. 对编码后的密码进行了一个关于顺序的加密
  3. 关于顺序的加密后进行了一个关于ASCII码的加密

最后就得出了==DCbTWQ

且原密码是一个3位数字+1个字母


分析一下,加密步骤我们已明确。那么我们解密就应该逆序操作:

还原关于ASCII码的加密

关于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
# coding=utf-8
import os
import base64
import xlrd as xd
data =xd.open_workbook ("D:\Desktop\mi.xls") #读取excel表
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]

# 逆序解码所有base64编码:
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
# coding=utf-8
import requests
headers = {
...
}
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)
#print(response.text,a+d)
if len(response.content)==95: #密码错误时长度可能有变,请依据自己的更改
print('密码错误',a+d)
else:
print(response.text,a+d)
exit()

我们不建议使用这种方法,这可能对蓝奏云造成不必要的请求,只是表明有这个思路。

应楼主要求,也是不能直接把答案告诉你呢~

不过我几乎已经告诉你密码怎么来了。好了,慢慢玩趴~