题解
给了一张二维码
扫出来提示说flag不在这里
用binwalk分析,发现还有四个rar文件
用foremost不知道为啥分离不出来,这里直接用binwalk分离
binwalk.exe -e .\BitcoinPay.png
得到四个压缩包
第一个压缩包里面套了一个加密压缩包(第一个没用,假的,骗人的)
第二个压缩包,是base64字符
解密,得到pass1(这个是第一个压缩包套娃里面加密图片的密码)
asdfghjkl1234567890
第三个压缩包,关键字flag 里面是一长串的base64,有两页多(嵌套加密了)
用脚本解密(用的别人现成的)
得到pass2,(解密第四个压缩包)
comEON_YOuAreSOSoS0great
第四个压缩包,解密之后是一段音频,听音频是摩斯密码,
懒得一个一个写,找个在线摩斯密码音频解密
得到解密字符
M O R S E I S V E R Y V E R Y E A S Y
懒得去空格和一个一个改(提交flag需要小写的,有博主帮我避坑了),用脚本改
得到最终flag
flag
flag{morseisveryveryeasy}
参考
https://blog.csdn.net/mochu7777777/article/details/108921379
嵌套解密base64
import base64
import argparse #接收参数模块
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='嵌套解密base64')
# 添加需要接收的参数
parser.add_argument('-f', type=str, help='文件名')
# 解析命令行参数
args = parser.parse_args()
def decode(f):
n = 0;
while True:
try:
f = base64.b64decode(f)
n += 1
except:
print('[+]Base64共decode了{0}次,最终解码结果如下:'.format(n))
print(str(f,'utf-8'))
break
if __name__ == '__main__':
f = open(f"{args.f}",'r').read()
decode(f)
转小写_去空格
import sys
# 从命令行参数中获取输入字符串
input_string = ' '.join(sys.argv[1:])
# 去除字符串中间的空格
output_string1 = input_string.replace(" ", "")
# 将字符串中的大写字母转换为小写字母
output_string = output_string1.lower()
# 输出转换后的字符串
print(output_string)
标签:__,string,base64,flag,解密,二维码,压缩包,神奇
From: https://www.cnblogs.com/GaolengDeKecy/p/17917664.html