好几天没做题了
废话不多说
我们今天直接来做题


变异凯撒

一看题目,我们就知道
这是一个变形的凯撒密码

解压打开看一下

我们可以看到密文中含有^

1
afZ_r9VYfScOeO_UL^RWUc

我们可以猜测到
这个可能是ascii码的变换
我们打开ascii码表看一下把

我们看到头四位afZ_转换成flag

密文 明文 变化规律
a f +5
f l +6
Z a +7
_ g +8

所以我们可以看到
这个的偏移量就是4+n

经过“强大的”搜索能力
我们可以利用程序简单解码

Python解码程序

1
2
3
4
5
ciphertext = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5
for i in ciphertext:
print(chr(ord(i) + j), end='')
j += 1

Java解码程序

1
2
3
4
5
6
7
8
9
10
11
12
public class Caesar {
public static void main(String[] args) {
String ciphertext = "afZ_r9VYfScOeO_UL^RWUc";
char[] plaintext = new char[ciphertext.length()];
for(int i = 0; i < ciphertext.length(); i++){ //注意i是从0开始的,所以是5+i
plaintext[i] = (char)(((int)ciphertext.charAt(i) + 5 + i) % 128);
}
for (char i: plaintext) {
System.out.print(i);
}
}
}

通过程序解码

所以这题的答案就是flag{Caesar_variation}

Quoted-printable

机翻了一下,引用打印?
打开一看,这也不是Base64

1
=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

再去查了一下Quoted-printable

我们直接使用在线解码器

那我们这次的答案就是
flag{那你也很棒哦}

Rabbit

经过之前的锻炼
我觉得这个就是一个新的解码方式

我们解压看一下题目把

1
U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI

然后我们在线解码一下

所以这次我们的答案是
flag{Cute_Rabbit}

篱笆墙的影子

我们这次打开直接看到一首诗

下载解压打开看到

1
felhaagv{ewtehtehfilnakgw}

我们可以看到
他会出现一个

f l a g
e h a v

根据度娘的讲法
这叫做栅栏密码
所以我们直接解密

所以我们这次的密码就是
flag{wethinkwehavetheflag}

RSA

RSA,哈哈哈~
我的RSA~

我们先解压打开先把

1
2
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

手算是不可能手算的
永远都不可能手算的
我们拿出我们的工具RSATool2v17

所以我们这次的答案就是flag{524C0C99F622014801}

啊~ 错了,为什么呢?
看到大佬的解法
原来是计算器默认是16进制
所以我们需要调回10进制
e=17~[10]~应该转换成e=11~[16]~

所以我们再去算一次

所以这题的答案就是flag{125631357777427553}

丢失的MD5

我们解压打开一看

1
2
3
4
5
6
7
8
9
import hashlib   
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print des

然后我们执行看一下

我们修改一下

1
2
3
4
5
6
7
8
9
10
11
import hashlib   
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
s='TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM'
m.update(s.encode("utf8"))
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print des
break

OK,这题答案就是flag{e9032994dabac08080091151380478a2}