2018极客大挑战-not reverse

2018极客大挑战-not reverse

在这里插入图片描述

链接: https://pan.baidu.com/s/1RPx75PQZGAcW6tE9Y8icDg 提取码: j4wv

下载下来的压缩包里有两个文件

在这里插入图片描述

fez.log

2741929a48889e2fcf64bcff0fbaf14fa3bfdd451aad6044163eb4035512372bcd87c8a045bc6c2f2b3800c4e4620c46fd0d7eb4e0e6
c3e06d3224f97d88c3d0c10e4e5ad9322362756f71e2c0ff3c7e432cca62a84fe26314d1379de4c784a352e22631105e9c30cdacfed8
a8dc0c5a4647a52e0ce122233e03844482f464064a152333c2080333eed2211ce450c2a20af243d4035001957c89632b8efa0b0fe958

fez.py

import os
def xor(a,b):
    assert len(a)==len(b)
    c=""
    for i in range(len(a)):
        c+=chr(ord(a[i])^ord(b[i]))
    return c

def f(x,k):  #这个函数好像没啥用
    return xor(xor(x,k),7)

def round(M,K):
    L=M[0:27]
    R=M[27:54]
    new_l=R
    new_r=xor(xor(R,L),K)
    return new_l+new_r

def fez(m,K):
    for i in K:
        m=round(m,i)
    return m

K=[]
for i in range(7):
    K.append(os.urandom(27))

m=open("flag","rb").read()
assert len(m)<54
m+=os.urandom(54-len(m))

test=os.urandom(54)
print test.encode("hex")
print fez(test,K).encode("hex")
print fez(m,K).encode("hex")

学好数学很重要

学好数学很重要

学好数学很重要

补充一下异或的基础知识

a^b=b^a
a^b^b=a

思路

2741929a48889e2fcf64bcff0fbaf14fa3bfdd451aad6044163eb4035512372bcd87c8a045bc6c2f2b3800c4e4620c46fd0d7eb4e0e6
c3e06d3224f97d88c3d0c10e4e5ad9322362756f71e2c0ff3c7e432cca62a84fe26314d1379de4c784a352e22631105e9c30cdacfed8
a8dc0c5a4647a52e0ce122233e03844482f464064a152333c2080333eed2211ce450c2a20af243d4035001957c89632b8efa0b0fe958


text11:2741929a48889e2fcf64bcff0fbaf14fa3bfdd451aad6044163eb4
text12:035512372bcd87c8a045bc6c2f2b3800c4e4620c46fd0d7eb4e0e6
text21:c3e06d3224f97d88c3d0c10e4e5ad9322362756f71e2c0ff3c7e43
text22:2cca62a84fe26314d1379de4c784a352e22631105e9c30cdacfed8
text31:a8dc0c5a4647a52e0ce122233e03844482f464064a152333c20803
text32:33eed2211ce450c2a20af243d4035001957c89632b8efa0b0fe958

k2k4k5=text21^text12:
k0k1k2k3k5k6=text22^text11^text12
flag2=text31^k2k4k5
flag1=text32^k0k1k2k3k5k6^flag2



SYC{y0u_sh0uld_just_THINK_this_Is_not_A_reverse}
# -*- coding: cp936 -*-
import os
def xor(a,b):
    assert len(a)==len(b)
    c=""
    for i in range(len(a)):
        c+=chr(ord(a[i])^ord(b[i]))
    return c



text1='2741929a48889e2fcf64bcff0fbaf14fa3bfdd451aad6044163eb4035512372bcd87c8a045bc6c2f2b3800c4e4620c46fd0d7eb4e0e6'
text2='c3e06d3224f97d88c3d0c10e4e5ad9322362756f71e2c0ff3c7e432cca62a84fe26314d1379de4c784a352e22631105e9c30cdacfed8'
text3='a8dc0c5a4647a52e0ce122233e03844482f464064a152333c2080333eed2211ce450c2a20af243d4035001957c89632b8efa0b0fe958'

text11=text1[0:54]
text12=text1[54:108]
text21=text2[0:54]
text22=text2[54:108]
text31=text3[0:54]
text32=text3[54:108]


print "text11:"
print text11

k2k4k5=xor(text21.decode("hex"),text12.decode("hex"))
print "k2k4k5"
print k2k4k5
flag2=xor(k2k4k5,text31.decode("hex"))
print "flag2:"
print flag2
k0k1k2k3k5k6=xor(xor(text22.decode("hex"),text11.decode("hex")),text12.decode("hex"))
flag1=xor(xor(k0k1k2k3k5k6,flag2),text32.decode("hex"))
print "flag1:"
print flag1
print flag1+flag2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值