x00

运行所给的代码,socket连接之后直接得到flag

x01

在第一关的基础上再额外发送一个字符串,添加

print('Receiving challenge.')
data3 = s.recv(1024)
print(data3)

print('Envio reto')
s.send(data3)

运行即可

x02

需要全部大写

data3=data2.upper()
s.send(data3)

x03

运用base64库进行base64解码

data3=base64.b64decode(data2)
s.send(data3)

x04

字符串逆序

data3=data2[::-1]
s.send(data3)

x05

取倒数5个字符

data3=data2[-5:]
s.send(data3)

x06

len取到的是int,先str转成字符再encode成bytes来发送

data3= str(len(data2))
print(data3)
s.send(data3.encode())

x07

先进行hex解码转换为字节,再转换成ascii字符

data3= bytes.fromhex(data2.decode())
data4=data3.decode('ascii').encode()
s.send(data4)

x08

得到类似b’1 2’的输入,通过分割然后转成int进行计算

num1,num2=data2.split()
num1=int(num1)
num2=int(num2)
data3=str(num1+num2)
s.send(data3.encode())

x09

ROT13 是一种简单的字母替换加密方法,它通过将每个字母替换为字母表中向后移动 13 位的字母来实现加密和解密。由于字母表中共有 26 个字母,应用两次 ROT13 会得到原始文本。因此,解密过程与加密过程相同

import codecs
data3=codecs.decode(data2.decode(),'rot13')
s.send(data3.encode())

这题似乎有些问题,有时候解密中会出现”@”字符,ROT13加解密是不会出现这玩意的吧???

x10

先将输入分割成列表,转换成整数。使用sort进行排序,再转换成字符串进行拼接

data2=data2.decode()
def sort_numbers(input_string):
number_strings = input_string.split()
numbers = [int(num) for num in number_strings]
numbers.sort()
sorted_string = ''.join(map(str, numbers))
return sorted_string
data3=sort_numbers(data2)
s.send(data3.encode())