[AFCTF2018]Morse
题目:
乐了,我寻思可以水这题了,放摩斯解码里面:
https://www.lddgo.net/encrypt/morse
给个空格。。(试了,不是flag),最后思路是,将"/"换成空格,换完摩斯解码,解完发现还~不对,观察,范围0到F,十六进制转字符串。脚本放这了:
cstr='-..../.----/-..../-..../-..../...--/--.../....-/-..../-..../--.../-.../...--/.----/--.../...--/..---/--.../--.../....-/...../..-./--.../...--/...--/-----/...../..-./...--/...--/...--/....-/...--/...../--.../----./--.../-..'
estr=cstr.replace("/"," ")
print(estr)
#用网站解码estr得到hstr
hstr='61666374667B317327745F73305F333435797D'
print(bytes.fromhex(hstr).decode("utf-8"))
结果:afctf{1s’t_s0_345y}
flag{1s’t_s0_345y}
异性相吸
题目:
思路:key和密文转为2进制,二者做异或,异或的结果转为字符串
我先给正确的解法,解完后抛过程&问题
1.于010编辑器打开俩个文档:
2.脚本完成异或:
a = '0110000101110011011000010110010001110011011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011100010111011101100101011100110111000101100110'
b = '0000011100011111000000000000001100001000000001000001001001010101000000110001000001010100010110000100101101011100010110000100101001010110010100110100010001010010000000110100010000000010010110000100011000000110010101000100011100000101010101100100011101010111010001000001001001011101010010100001010000011011'
c = ''
for i in range(len(a)):
if(a[i] == b[i]):
c+='0'
else:
c+='1'
print(c)
运行结果:
0110011001101100011000010110011101111011011001010110000100110001011000100110001100110000001110010011100000111000001110010011100100110010001100100011011100110110011000100011011101100110001110010011010101100010001101010011010001100001001101110011010000110011001101010110010100111000001110010110010101111101
3.脚本二进制转字符
a='0110011001101100011000010110011101111011011001010110000100110001011000100110001100110000001110010011100000111000001110010011100100110010001100100011011100110110011000100011011101100110001110010011010101100010001101010011010001100001001101110011010000110011001101010110010100111000001110010110010101111101'
binary_string = "011001100110110001100001011001110111101101100101011000010011000101100010011000110011000000111001001110000011100000111001001110010011001000110010001101110011011001100010001101110110011000111001001101010110001000110101001101000110000100110111001101000011001100110101011001010011100000111001011001010111110"
text = ''.join([chr(int(binary_string[i:i+8], 2)) for i in range(0, len(binary_string), 8)])
print(text)
flag{ea1bc0988992276b7f95b54a7435e89e>}
附:中途想法及问题
“异性”相吸,我就应该想到0和1的。这里有个文本转二进制的脚本:
def string_to_binary(input_string):
# 字符串编码为字节
byte_array = input_string.encode()
# 转换每个字节为二进制表示
binary_array = [format(byte, '08b') for byte in byte_array]
# 合并为一个字符串
binary_string = ''.join(binary_array)
return binary_string
# 示例
key = "asadsasdasdasdasdasdasdasdasdasdqwesqf"
code='ἇ̀Ј唒ဃ塔屋䩘卖剄䐃堂ن䝔嘅均ቄ䩝ᬔ'
strk = string_to_binary(key)
strc=string_to_binary(strk)
print(strk)
print(strc)
但好像转出来的和010编辑器的不一样
还有我不会用010将二进制转文本,所以这里用代码解决的
old fanshion
题目:
啥啊,用这个网站
https://quipqiup.com/
复制进直接点solve,往下划拉:
flag{n1_2hen-d3_hu1-mi-ma_a}