攻防世界——crypt

这道题的考点是RC4加密

我们要获得key和明文,来得到flag

我觉得这道题最大的难点就是脚本这一关,我卡了许久:

前面IDA查壳什么的,我就不多赘述了

直接进入IDA操作界面、

你运行一次程序,试过就知道,开局的这个error和nicejob就是最后程序给我们的

我们跟进看一下

这道题主体没什么大的难度,就让你认识下RC4加密

RC4加密算法-CSDN博客

最后这个12345678就是S表

而明文

肯定在最后比对里面去找

说了那么多 ,接下来这个脚本真是让我头疼,这个编码问题

#coding=gbk
import base64
from Crypto.Cipher import ARC4
def rc4_decrypt(data, key):  # RC4解密函数
    data = base64.b64decode(data)
    key = bytes(key, encoding='utf-8')
    enc = ARC4.new(key)
    res = enc.decrypt(data)
    res = str(res, 'utf-8')
    return res
key = "12345678abcdefghijklmnopqrspxyz"  # Str
byte_14013B000 = [0x9E, 0xE7, 0x30, 0x5F, 0xA7, 0x01, 0xA6, 0x53, 0x59, 0x1B, 0x0A, 0x20, 0xF1, 0x73, 0xD1, 0x0E, 0xAB,
                  0x09, 0x84, 0x0E, 0x8D, 0x2B]
tmp = [0] * len(byte_14013B000)
for i in range(len(byte_14013B000)):
    tmp[i] = byte_14013B000[i] ^ 0x22
data = base64.b64encode(bytes(tmp)).decode()  # 这里注意python3的解码编码方式与python2不同,要加个decode()方法
decrypt_data = rc4_decrypt(data, key)  # RC4解密
print('答案:', decrypt_data)

不使用

这个gbk就是错的,我搞了大半天,真难受

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Nickname

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值