BUU_re_[GWCTF 2019]pyre

是一个pyc文件,使用pyc在线解密进行解密,得到

print ('Welcome to Re World!')
print ('Your input1 is your flag~')
l = len(input1)
for i in range(l):
    num = ((input1[i] + i) % 128 + 128) % 128
    code += num

for i in range(l - 1): #i从0取到l-1-1
    code[i] = code[i] ^ code[i + 1] 

print(code)
code = ['\x1f','\x12','\x1d','(','0', '4','\x01','\x06','\x14','4',',','\x1b', 'U', 
'?','o', '6','*',':','\x01','D',';','%','\x13']

code[i] = code[i] ^ code[i + 1] i从0取到l-1-1,code[l-1]的值没有变。所以要逆向的话,应该让i从l-2到0,code[i] = code[i] ^ code[i + 1] (因为abb=a),这样,就得到执行第二个循环前的input1。

关于取模,由于(a%c+b%c)%c=(a+b)%c,所以num 等价于 (input1[i] + i) % 128

解密脚本:

code = ['\x1f','\x12','\x1d','(','0','4','\x01','\x06','\x14','4',
    ',','\x1b','U','?','o','6','*',':','\x01','D',';','%','\x13']

for i in range(len(code)-2,-1,-1):
    code[i] = chr(ord(code[i])^ord(code[i+1]))
for i in range(len(code)):
    print(chr((ord(code[i])-i)%128),end="")#不是很懂为何是减
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值