二进制转布莱叶盲文转义
s为二进制数据,脚本使用python3运行
TYPE_HEX = 0 TYPE_ASCII = 1 TYPE_BINARY = 2 TYPE_BRAILLE = 3 with open('lookup_table.txt', 'r') as f: rows = f.read().splitlines() table = list(map(lambda x: x.split('\t'), rows)) def convert(text_array, in_type=TYPE_BINARY, out_type=TYPE_ASCII, sep=''): output = [] input_table = list(map(lambda x: x[in_type], table)) output_table = list(map(lambda x: x[out_type], table)) for item in text_array: index = input_table.index(item.upper()) output.append(output_table[index]) return sep.join(output) s='100100011100010100100100011110110100000111110001101001100100110000111010001111100110010100111000111000001111100100000101011111' x = [] for i in range(0,len(s),6): x.append(s[i:i+6]) y=convert(x, TYPE_BINARY, TYPE_BRAILLE) print(y)
#⠉⠎⠊⠉⠞⠋⠸⠣⠥⠉⠃⠗⠼⠙⠊⠇⠇⠼⠉⠨⠾ z=convert(y, TYPE_BRAILLE, TYPE_HEX) print(z)
#4353494354465F3C554342522344494C4C23432E29 print(bytes.fromhex(z).decode())
#CSICTF_<UCBR#DILL#C.)
输入结果为CSICTF_<UCBR#DILL#C.),实际上需要转换,将所有的大写转成小写,'_>'转成'{','.)'转成'}',#C对应3,#D对应4,如此类推
即结果为csictf{ucbr4ill3}