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)