本工具支持base16、base32、base64混合编码后的字符串解码,过程中全自动识别字符串编码格式,无需手动一次次复制~
无需在pycharm中运行,使用argparse库使其能在cmd中参数化运行,并将主要功能全部封装为函数,可在其他py文件中调用:
python basefamily.py -h #显示帮助
python basefamily.py -t "aWxvdmV5b3U=" #对双引号内字符串进行解码
python basefamily.py -f "/User/xx/Desktop/base.txt" #对指定文件进行解码
#也可不加任何参数,直接进入主函数运行
只是一次小练手,期间发现网上很多对base64编码中“=”号的规则理解有误,应该用getsizeof()进行字节数判断,而非len()。没有做健壮性测试,需要的可自行完善。
import base64
import sys
import argparse
Step = []
#循环爆破模块,同时修正字符串
def base(strs):
try:
if strs == b64de(strs):
strs += "="
base(strs)
else:
strs = b64de(strs)
Step.append('64-->')
base(strs)
except:
try:
strs = b32de(strs)
Step.append('32-->')
base(strs)
except:
try:
strs = b16de(strs)
Step.append('16-->')
base(strs)
except:
if Step:
print("[+]解码结束!结果为:\n" + strs)
step = ''.join(Step)
print("[+]步骤: " + step[:-3])
else:
strs += "="
base(strs)
#base64解码模块
def b64de(strs):
if sys.getsizeof(strs) % 3 == 1:
strs += "=="
elif sys.getsizeof(strs) % 3 == 2:
strs += "="
#origStr = bytes(strs, encoding='utf8')
bcode = base64.b64decode(strs).decode()
return bcode
#base32解码模块
def b32de(strs):
origStr = bytes(strs, encoding='utf8')
bcode = str(base64.b32decode(origStr).decode())
return bcode
#base16解码模块
def b16de(strs):
origStr = bytes(strs, encoding='utf8')
bcode = str(base64.b16decode(origStr).decode())
return bcode
#cmd调用模块
def getbase(text,file):
if text:
base(text)
elif file:
with open(file, 'r') as file:
base(file.read())
else:
base(input("请输入base字符串:"))
paser = argparse.ArgumentParser(description='base_boom')
paser.add_argument('--text', '-t',nargs='?', help='可选参数,用于传入basecode,建议双引号框选')
paser.add_argument('--file', '-f',nargs='?', help='可选参数,用于从指定文件读入basecode,请用绝对路径')
args = paser.parse_args()
getbase(args.text, args.file)
?
|