题目链接:
异性相吸 300
同性真爱,异性相吸都是假的!(题目要求,我是直的)
解密压缩文件里的内容
TIPS:
- xor
- hex2binary
- len(bin(miwen))==len(bin(mingwen))
分析:
下载题目提供的压缩包 :
打开两个文件 :
根据题目提示 :
- xor
- hex2binary
- len(bin(miwen))==len(bin(mingwen))
说明加密方式为 : 异或(xor)
使用010Editor打开两个文件 , 转换成二进制模式 , 然后进行异或即可得到结果
明文 :
01101100 01101111 01110110 01100101 01101100 01101111 01110110 01100101
01101100 01101111 01110110 01100101 01101100 01101111 01110110 01100101
01101100 01101111 01110110 01100101 01101100 01101111 01110110 01100101
01101100 01101111 01110110 01100101 01101100 01101111 01110110 01100101
密文 :
00001010 00000011 00010111 00000010 01010110 00000001 00010101 00010001
00001010 00010100 00001110 00001010 00011110 00110000 00001110 00001010
00011110 00110000 00001110 00001010 00011110 00110000 00010100 00001100
00011001 00001101 00011111 00010000 00001110 00000110 00000011 00011000
异或Python脚本 : (利用了字符串比对)
a = '0000101000000011000101110000001001010110000000010001010100010001000010100001010000001110000010100001111000110000000011100000101000011110001100000000111000001010000111100011000000010100000011000001100100001101000111110001000000001110000001100000001100011000'
b = '0110110001101111011101100110010101101100011011110111011001100101011011000110111101110110011001010110110001101111011101100110010101101100011011110111011001100101011011000110111101110110011001010110110001101111011101100110010101101100011011110111011001100101'
for i in range(len(a)):
if(a[i] == b[i]):
print '0',
else:
print '1',
输出结果为 :
01100110 01101100 01100001 01100111 00111010 01101110 01100011 01110100
01100110 01111011 01111000 01101111 01110010 01011111 01111000 01101111
01110010 01011111 01111000 01101111 01110010 01011111 01100010 01101001
01110101 01100010 01101001 01110101 01100010 01101001 01110101 01111101
将其复制 , 然后打开010Editor , 创建一个新的Hex文件 , 粘贴为二进制数据 :
答案:
flag:nctf{xor_xor_xor_biubiubiu}
知识点:
- 位运算 : 异或