萌新_密码1
密文:
53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D
猜测密文为十六进制(0-9, A-F, a-f),使用脚本进行转换:
def hex_to_string(hex_str):
"""
将十六进制字符串转换为普通字符串
:param hex_str: 十六进制字符串,例如 "48656c6c6f20576f726c64"(对应 "Hello World")
:return: 转换后的普通字符串
"""
try:
# 将十六进制字符串转换为字节
bytes_obj = bytes.fromhex(hex_str)
# 将字节解码为字符串
result = bytes_obj.decode('utf-8')
return result
except ValueError as e:
return f"转换失败:{e}"
hex_input = input("请输入十六进制字符串:")
result = hex_to_string(hex_input)
print(f"转换结果:{result}")
得到:
S1lkZjBhM2ViZDVjNGRjMTYwLUV7ZmI2M2VlMDI5OGI4ZjRkOH0=
猜测为base64(A-Z, a-z, 0-9, +, /, =),使用脚本进行解码:
import base64
def base64_decode(encoded_str):
"""
对Base64编码的字符串进行解码
:param encoded_str: Base64编码的字符串
:return: 解码后的字符串
"""
try:
# 对输入的Base64字符串进行解码
decoded_bytes = base64.b64decode(encoded_str)
# 将解码后的字节对象转换为普通字符串
decoded_str = decoded_bytes.decode('utf-8')
return decoded_str
except Exception as e:
return f"解码失败:{e}"
encoded_input = input("请输入Base64编码的字符串:")
result = base64_decode(encoded_input)
print(f"解码结果:{result}")
得到:
KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8}
猜测是栅栏密码,栅栏密码的密文由明文字符组成,只是顺序被打乱。如果密文包含明文中的所有字符,且没有新增或缺失字符,可能是栅栏密码。
使用脚本进行解密:
def rail_fence_decrypt(ciphertext, key):
"""
解密栅栏密码
:param ciphertext: 密文字符串
:param key: 栏数(密钥)
:return: 解密后的明文字符串
"""
# 初始化栅栏矩阵
rail = [['\n' for _ in range(len(ciphertext))] for _ in range(key)]
# 确定字符在栅栏中的位置
direction = -1
row = 0
for i in range(len(ciphertext)):
rail[row][i] = '*'
if row == 0 or row == key - 1:
direction = -direction
row += direction
# 填充密文到栅栏矩阵
index = 0
for i in range(key):
for j in range(len(ciphertext)):
if rail[i][j] == '*' and index < len(ciphertext):
rail[i][j] = ciphertext[index]
index += 1
# 按列读取明文
result = []
direction = -1
row = 0
for i in range(len(ciphertext)):
result.append(rail[row][i])
if row == 0 or row == key - 1:
direction = -direction
row += direction
return ''.join(result)
def brute_force_rail_fence(ciphertext, max_key=10):
"""
尝试不同的栏数进行解密
:param ciphertext: 密文字符串
:param max_key: 最大尝试的栏数
"""
print("尝试解密栅栏密码...")
for key in range(2, max_key + 1):
plaintext = rail_fence_decrypt(ciphertext, key)
print(f"栏数={key}: {plaintext}")
if __name__ == "__main__":
ciphertext = input("请输入密文:")
max_key = int(input("请输入最大尝试的栏数(默认10):") or 10)
brute_force_rail_fence(ciphertext, max_key)
得到:
栏数=2: KEY{dffb06a33eeeb0d259c84bd8cf146d08-}
栏数=3: K59cY48ddcb1f6800-fEa{4f3bd6e38ebe}0d2
栏数=4: Ke{8fbYdbf65dc34e4fded0c012896a08}b-3E
栏数=5: Kac6f313Ye6e4e0bdd-0d2E5fc{988f40dbb}8
栏数=6: K0c-e40E4aY3d{2d9fcedb1b88b66df5038}fe
栏数=7: K0c069d83-4aY3dEeb88e{cedb1f0f}42b6df5
栏数=8: Kfbd-69d83Ecd0Ya51{eb88ef6c3de40b0f}42
栏数=9: Kfbd-6288f93Ecd0Ya51{e84}dbef6c3de40b0
栏数=10: Kfb46{3288f9ef0dd0Ya5c-be84}db06E1c3de
根据题目要求格式,判断key为2,最后的flag为:
KEY{dffb06a33eeeb0d259c84bd8cf146d08-}
萌新_密码2
密文:
rdcvbg 2qase3 6tghu7
根据在键盘上安组合逐一尝试:

好好好,flag为:
KEY{fwy}
萌新_密码3
密文:
-- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -- -- -.. -.. -- -.. -- -.. -- -- -- -.. -.. -.. /-- -.. -- -.. -.. --/ -- -- -- -- -- /-- -.. -.. -- -.. -- /-- -.. -.. --
应该是摩斯电码,使用脚本解密(去掉/):
# 摩斯电码到字母的映射表
MORSE_CODE_DICT = {
'.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E',
'..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J',
'-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O',
'.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T',
'..-': 'U', '...-': 'V', '.--': 'W', '-..-': 'X', '-.--': 'Y',
'--..': 'Z',
'-----': '0', '.----': '1', '..---': '2', '...--': '3', '....-': '4',
'.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9',
'.-.-.-': '.', '--..--': ',', '..--..': '?', '-..-.': '/', '-.--.-': '()',
'.----.': "'", '.-..-.': '"', '.-.-.': '+', '-....-': '-', '---...': ':',
'-.-.-.': ';', '-...-': '=', '.-.-': '@', '-.--.': '(', '-.--.-': ')',
'/': ' ' # 分隔符,用于分隔单词
}
def morse_to_text(morse_code):
"""
将摩斯电码解码为普通文本
:param morse_code: 摩斯电码字符串,字符之间用空格分隔,单词之间用三个空格分隔
:return: 解码后的文本
"""
# 按单词分隔符(三个空格)分割摩斯电码
words = morse_code.strip().split(' ')
decoded_text = []
for word in words:
# 按字符分隔符(一个空格)分割单词
letters = word.split()
decoded_word = ''.join(MORSE_CODE_DICT.get(letter, '?') for letter in letters)
decoded_text.append(decoded_word)
return ' '.join(decoded_text)
if __name__ == "__main__":
morse_input = input("请输入摩斯电码(字符用空格分隔,单词用三个空格分隔):")
result = morse_to_text(morse_input)
print(f"解码结果:{result}")
得到:
MORSE?IS?COOL?BUT?BACON?IS?COOLER?MMDDMDMDMMMDDDMDMDDMMMMMMMDDMDMMDDM
明文部分:
MORSE IS COOL BUT BACON IS COOLER //摩斯电码很酷,但培根密码更酷。
密文部分:
MMDDMDMDMMMDDDMDMDDMMMMMMMDDMDMMDDM
培根密码是一种基于二进制编码的加密方法,通常用两种不同的字符(如“A”和“B”)来表示字母。
使用脚本解密培根密码:
def bacon_decrypt(ciphertext, char_a='M', char_b='D'):
"""
解密培根密码
:param ciphertext: 培根密码的密文
:param char_a: 代表'A'的字符,默认为'M'
:param char_b: 代表'B'的字符,默认为'D'
:return: 解密后的明文
"""
# 培根密码的解码表(5位一组)
bacon_dict = {
"AAAAA": "A", "AAAAB": "B", "AAABA": "C", "AAABB": "D", "AABAA": "E",
"AABAB": "F", "AABBA": "G", "AABBB": "H", "ABAAA": "I", "ABAAB": "J",
"ABABA": "K", "ABABB": "L", "ABBAA": "M", "ABBAB": "N", "ABBBA": "O",
"ABBBB": "P", "BAAAA": "Q", "BAAAB": "R", "BAABA": "S", "BAABB": "T",
"BABAA": "U", "BABAB": "V", "BABBA": "W", "BABBB": "X", "BBAAA": "Y",
"BBAAB": "Z"
}
# 替换字符
ciphertext = ciphertext.replace(char_a, "A").replace(char_b, "B")
# 按每5个字符一组分割密文
plaintext = []
for i in range(0, len(ciphertext), 5):
chunk = ciphertext[i:i+5]
if len(chunk) == 5: # 确保每组有5个字符
plaintext.append(bacon_dict.get(chunk, "?")) # 如果找不到对应字符,用"?"代替
return ''.join(plaintext)
if __name__ == "__main__":
ciphertext = input("请输入培根密码的密文:")
char_a = input("请输入代表'A'的字符(默认为'M'):") or 'M'
char_b = input("请输入代表'B'的字符(默认为'D'):") or 'D'
result = bacon_decrypt(ciphertext, char_a, char_b)
print(f"解密结果:{result}")
得到:
GUOWANG
最终flag:
flag{GUOWANG}
萌新_密码4
密文:
QW8obWdIWF5FKUFSQW5URihKXWZAJmx0OzYiLg==
先进行base64解码,得到:
Ao(mgHX^E)ARAnTF(J]f@<6".
将字符串通过html文件打开(需要转换html实体 < ,其表示 < ),得到:
Ao(mgHX^E)ARAnTF(J]f@<6".
再使用脚本进行base85解码(ASCII 码 33 到 117):
import base64
def base85_decode(encoded_data):
"""
解码Base85编码的字符串。
参数:
encoded_data (str): Base85编码的字符串。
返回:
bytes: 解码后的二进制数据。
"""
try:
# 解码 Base85 字符串
decoded_bytes = base64.a85decode(encoded_data)
return decoded_bytes
except Exception as e:
# 若解码过程中出现任何错误
return f"Error decoding: {e}"
def main():
# 获取用户输入的Base85编码字符串
encoded_data = input("请输入Base85编码的字符串: ").strip()
# 解码
decoded_data = base85_decode(encoded_data)
if decoded_data:
print("解码成功!")
print(decoded_data.decode('ascii', errors='ignore'))
else:
print("解码失败,请检查输入是否为有效的Base85编码。")
if __name__ == "__main__":
main()
得到:
flag{base_base_base}
他强任他强,清风拂山岗。他横任他横,明月照大江。

1214

被折叠的 条评论
为什么被折叠?



