crypto新手区
1.base64
打开附件,用base64,得出flag
2.Caesra
打开附件
很明显是凯撒密码,但是由于不知道位移是多少(也有可能是我猜看不出来),一个一个式,当位移为12时得出flag
3.Morse
打开附件,只有0和1猜想为摩斯密码,把1改为-,把0改为.
用摩斯密码解密后,根据题目提示改为小写,得出flag
4.幂数加密
打开附件,一堆数字
题目说是8位大写的字母,刚好有7个0把数字分为8段,每段数字相加就是26字母的序号
得出flag
5.Railfence
根据题目提示,是栅栏密码,且栏数为5
但正常的栅栏密码解不出来,于是用W型(变异性)栅栏密码解码,得出flag
解码网站
6.不仅仅是morse
打开附件,是摩斯密码
用摩斯密码解密后得到如下,题目提示是一种食物,那就是培根密码,解码得到flag
培根解码网站
7.混合编码
打开附件,先用base64解码,得到下图
再用Unicode解码(网站)得到另一个base64解码
解得如下,这些得到的数字都是大于等于97小于等于119,对照ASCII转换得到flag(转换网站,需要自己对照)
8.easy_RSA
打开附件,如下图
这里可以用脚步跑,也可以用工具破解
脚本
工具,工具下载和使用
嗯······因为不会用工具,所以我是脚本跑出来的
9.easychallenge
这题我们可以直接利用python在线反编译软件,也可以在安装uncompyle进行反编译,软件可以自己找,我来说一下安装uncompyle的步骤
win+R打开cmd
命令:pip install uncompyle
等安装后,输入命令:uncompyle6 ‘pyc文件路径’
如下图
根据返回得到的代码写解密脚本
import base64
def decode1(ans):
s = ''
for i in ans:
x = i^36
x = x - 36
s += chr(x)
return s
def decode2(ans):
s = ''
for i in ans:
x = ord(i) - 25
x = x ^ 36
s += chr(x)
return s
def decode3(ans):
return base64.b32decode(ans, casefold =False, map01= None)
number ="UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="
number = decode2(decode1(decode3(number)))
print(number)
运行得到flag
10.转轮机加密
打开附件如下
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP
查看别人的wp后知道这个这么做出来
密钥的数字代表所需要操作的行数,<2,N>就是要讲第二行的转轮N作为开头
即:
KPBELNACZDTRXMJQOYHGVSFUWI //第二行原来是这样
然后把第二的N(包括后面的字母)放到前面,把N前面的字母放到后面
NOZUTWDCVRJLXKISEFAPMYGHBQ //改变后,并且把这一行作为新数组的第一行
以此类推,得到如下
NACZDTRXMJQOYHGVSFUWIKPBEL
FHTEQGYXPLOCKBDMAIZVRNSJUW
QGWTHSPYBXIZULVKMRAFDCEONJ
KCPMNZQWXYIHFRLABEUOTSGJVD
SXCDERFVBGTYHNUMKILOPJZQAW
EIURYTASBKJDFHGLVNCMXZPQOW
VUBMCQWAOIKZGJXPLTDSRFHENY
OSFEZWAXJGDLUBVIQHKYPNTCRM
QNOZUTWDCVRJLXKISEFAPMYGHB
OWTGVRSCZQKELMXYIHPUDNAJFB
FCUKTEBSXQYIZMJWAORPLNDVHG
NBVCXZQWERTPOIUYALSKDJFHGM
PNYCJBFZDRUSLOQXVETAMKGHIW
进过观察,倒数第9列为flag
也可以用脚步退出上面的数列:
import re
sss='''1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <
'''
m="NFQKSEVOQOFNP"
content=re.findall(r'< (.*?) <',sss,re.S)
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
vvv=[]
ans=""
for i in range(13):
index=content[iv[i]-1].index(m[i])
vvv.append(index)
for i in range(0,26):
flag=""
for j in range(13):
flag+=content[iv[j]-1][(vvv[j]+i)%26]
print(flag)
注:最后得出来的就是答案,直接填上就对了,不用花括号括起来
还有两题不会,菜鸟终是菜鸟