[BUUCTF] java逆向解密

看到名字,就不想做了,java没学过怎么办,不过这题不难。

用这个看

打开后如下

这是两个函数,首先进入main

我们输入的flag就是str,然后把str放进stringArr,用Encrypt()函数处理

这个循环真不一般,和c语言里面一点都不一样,发现它叫“增强for循环”,其实就是依此用arr中的字符去代替c中的字符,就是对我们输入的flag进行处理

接下来按照惯例,应该就是对比了

果不其然,这应该就是处理后的字符,理论结束,实践开始

(tips:a^b=c,那么c^a=b,c^b=a)

key=[180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
flag='flag{'
for i in range(len(key)):
    flag+=chr(key[i]^32-ord('@'))
flag+='}'
print(flag)

第一次写的脚本这样,然后报错

问了神奇的chatgpt发现是异或的运算优先级小于减法

加上括号,答案出现

flag{This_is_the_flag_!}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值