python进制转换,字符转 (8进制、10进制、16进制、base64),编码绕过

python进制转换,字符转 (8进制、10进制、16进制、base64),编码绕过,第1张

python进制转换,字符转 (8进制、10进制、16进制、base64),编码绕过

话不多说上代码,因为考虑到编码绕过的适合的方便性,所以输出时候进行了一下方便性的修改,注释掉的地方为容错机制(个人觉得没啥必要)

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
➜  ~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存