[BUUCTF][GWCTF 2019]pyre1

 1.取代码

反着来,先执行一次反异或。由于加密过程是每个与后面一个异或,所以我们倒着开始。循环用range(code_length-2,-1,-1)。也就是从倒数第二个开始,这里-1是stop.

    num = ((input1[i] + i) % 128 + 128) % 128这里后面的%128明显没用。

def main():
    code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']
    code_length = len(code)
    print(code_length)
    for i in range(code_length - 2, -1, -1):
        code[i] = chr(ord(code[i]) ^ ord(code[i + 1]))

    print(code)
    input1 = []
    for i in range(code_length):
        input1.append(chr((ord(code[i]) - i) % 128))

    print(input1)
    code_str = ''.join(map(str, input1))
    print(code_str)


if __name__ == '__main__':
    main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值