2020]usualCrypt

32位载入

字符串没有找到有用信息

进入主函数
在这里插入图片描述

sub_403CF8

进去看了看,
看到file,猜是读取文件的,没什么用

sub_401080

在这里插入图片描述
这边是base64加密,从代码看不出来的话,这边的密码表可以点进去,虽然是EOA0,但E0AA的空间和他是连在一起的,所以这俩个合在一起就是密码表,然后看到那个 ‘+/’,这些符号应该就可以看出来base64加密了
在这里插入图片描述

sub_401000

base加密开头的函数,就是交换字符,从第6个开始,往后数到15
因为这俩个空间是连在一起的,所以可以当作一个数组

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

所以才有第15个,不然到不了15的
也就是QRSTUVWXY和GHIJKLMNOP相互交换

这边交换之后形成了新的密码表
"ABCDEFQRSTUVWXYGHIJKLMNOPGHIJKLMNOPZabcdefghijklmnopqrstuvwxyz0123456789+/

在这里插入图片描述

sub_401030

在这里插入图片描述
这个就很简单了,大小写字母转化,非字母的就不动

思路

首先这里有一个比较的函数,结合上面所说的,这个byte_40E0E4就是我们输入的字符串经过加密后的样子,就到这来,
1.先进行大小写转换
2,算出新的密码表
3,通过新的密码表,对恢复原大小写的字符串进行base64解密

因为密码表被动过了,所以一些解密网站都没用了,要自己写代码解密,这个我也不会,贴上大佬的
想要

脚本

import base64

flag = ''
dict = {}
offset = 10

string = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9'.swapcase() #sub_401030()
print ('转换后的字符串:'+string)

myb = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'


for i in range(len(myb)):
    dict[myb[i]] = myb[i]
    


for i in range(6, 15): #sub_401000()
    dict[myb[i]] , dict[myb[i+offset]] = dict[myb[i+offset]] , dict[myb[i]] # 恢复base64密钥表
  


print ('**********')
for i in dict:
    print (i,dict[i])
print ('**********')

for i in range(len(string)):
    flag += dict[myb[i]]
   
    
flag = base64.b64decode(flag)

print(flag)

flag{bAse64_h2s_a_Surprise}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值