话不多说上代码,因为考虑到编码绕过的适合的方便性,所以输出时候进行了一下方便性的修改,注释掉的地方为容错机制(个人觉得没啥必要)
import base64 data = input('请输入需要编码的字符串n:') ''' while data == '': data = input('请输入需要编码的字符串,或者输入q退出n:') if data == 'q':exit() ''' base_list = ['b','o','d','x','a'] o = str.lower(input("选择编码方式:(B)in、(O)ct、(D)ec、He(x)、B(a)se64n:")) ''' while o not in base_list: o = str.lower(input("选择编码方式:(B)in、(O)ct、(D)ec、He(x)、B(a)se64,或者输入q退出n:")) if o == 'q':exit() ''' base_name = ['2进制:','8进制:','10进制:','16进制:','base64:'] options = {'b': 0,'o': 1, 'd': 2, 'x': 3,'a':4} b = options[o] if b == 4: print(base_name[b]+str(base64.b64encode(data.encode('utf-8')),"utf-8")) exit() base = [format(ord(i), base_list[b]) for i in data] if b == 3: print(base_name[b]+'\x'+'\x'.join(base)) else: print(base_name[b]+'\'+'\'.join(base))
输出示例
请输入需要编码的字符串 :ls -a / 选择编码方式:(B)in、(O)ct、(D)ec、He(x)、B(a)se64 :x 16进制:x6Cx73x20x2Dx61x20x2F
请输入需要编码的字符串 : 选择编码方式:(B)in、(O)ct、(D)ec、He(x)、B(a)se64 :o 8进制:7477160150160401001451661411545044137120117123124133471631504713551737776
效果演示(是不是很有趣)
➜ ~ #16进制编码 ➜ ~ $(printf "x6Cx73x20x2Dx61x20x2F") . bin dev home lib lib64 lost+found mnt proc run srv tmp var .. boot etc init lib32 libx32 media opt root sbin sys usr ➜ ~ ➜ ~#8进制编码 ➜ ~ $(printf "15416340551414057") . bin dev home lib lib64 lost+found mnt proc run srv tmp var .. boot etc init lib32 libx32 media opt root sbin sys usr ➜ ~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)