buu-reverse-ACTF-usualCrypt

思路

加密过程是:使用变形alpha表的base64加密得到字符串(已知)

这个变形base64加密过程:变表-》加密-》结果大小写反向

其中的:

  • 变表:本质上是将原base64码表[6,15)进行0xA偏移值交换操作得到
  • 结果大小写反向:python的字符串成员方法swapcase()

难点

难点就在于变表decode有两种常见思路

  • 变表decode,但是python不支持
  • 还原成正常表加密的结果,然后再decode

对于第二种方法,原理如下:

  • 原编码表:ABCDEF
  • 新编码表:CDEFDG
  • 则将加密结果中的C替换成A,D替换成B,位次关系不变,变的是值

代码实现

# -*- coding: utf-8
import base64

sub300 = "zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9".swapcase()
# 得到码表
base_alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
proc_alpha = list(base_alpha)
for i in range(6,15):
    proc_alpha[i],proc_alpha[i+0xA] = proc_alpha[i+0xA],proc_alpha[i]
# 还原原base64结果
def findIndex(input):
    for i in range(len(proc_alpha)):
        if proc_alpha[i]==input:
            return i
enc = ''
for i in sub300:
    # index 相同值不同
    enc += base_alpha[findIndex(i)]
# base64正常码表decode
dec = base64.b64decode(enc)
print(dec)

image.png

Last modification:March 15, 2021
如果觉得我的文章对你有用,请随意赞赏。咖啡(12RMB)进度+100%,一块巧克力(1RMB)进度+6%。
(赞赏请备注你的名称哦!后台记录中来自理工小菜狗)