[VCTF2024纳新赛]-Reverse:ezre解析(变异rc4,换表base64)

本文介绍了如何在Python中使用IDA工具和RC4加密算法对字符串进行加密和解密操作,包括`reverse1`函数的逆序处理和`RC4_init`、`cry`函数的加密过程。
摘要由CSDN通过智能技术生成

查壳

查看ida

完整exp:

import string
import base64

def reverse1():
    old_table='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
    new_table='0123456789XYZabcdefghijklABCDEFGHIJKLMNOPQRSTUVWmnopqrstuvwxyz+/='

    s1='3pn1Ek92hmAEg38EXMn99J9YBf8='

    print(base64.b64decode(s1.translate(str.maketrans(new_table,old_table))))
    return base64.b64decode(s1.translate(str.maketrans(new_table,old_table)))
def RC4_init(s,aThi51sKey,len):
    v8=0
    k=[0]*128
    for i in range(128):
        s[i]=i
        k[i]=aThi51sKey[i%len]
    for i in range(128):
        v8=(v8+s[i]+ord(k[i]))%128
        #v8=(v3>>32)>>25+v8+s[i]+ord(k[i])&0x7f-(v3>>32)>>25
        v5=s[i]
        s[i]=s[v8]
        s[v8]=v5
    return s
def cry(s,inputs,len):
    v6=0
    v7=0
    for i in range(len):
        v6=(v6+1)%128
        v7=(s[v6]+v7)%128
        #v7=(v3>>32)>>25+s[v6]+v7&0x7f-(v3>>32)>>25
        v5=s[v6]
        s[v6]=s[v7]
        s[v7]=v5
        t=(s[v6]+s[v7])%128
        inputs[i]=chr(s[t]^inputs[i])
    return inputs

aThi51sKey='Thi5_1S_key?'
s=[0]*128
inputs=list(reverse1())
RC4_init(s,aThi51sKey,len(aThi51sKey))
inputs=cry(s,inputs,len(inputs))
inputs=''.join(inputs)
print(inputs)

补充点1:这里的类似#v8=(v3>>32)>>25+v8+s[i]+ord(k[i])&0x7f-(v3>>32)>>25要注释,用不着,应该改为s[]相关的数据取余128。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值