def decode(data, verbose=False): p = PrintCollector() detect(data, p) new_data = list(data) result_list = [[]] while len(new_data) > 0: t = new_data[:2] if len(t) < 2 or not (t[0] in string.digits and t[1] in string.digits): for x in result_list: x.append(t[0]) new_data = new_data[1:] continue else: new_data = new_data[2:] # 因为 i 和 j 共用了一个编码,所以这里遍历所有可能 special, c = decode_char(int(t[0]), int(t[1])) if special: tmp_result_list = deepcopy(result_list) for x in tmp_result_list: x.append('j') for x in result_list: x.append(c) result_list.extend(tmp_result_list) else: for x in result_list: x.append(c) new_result_list = [] for x in result_list: x = ''.join(x) new_result_list.append(x) p.print(x) return p.smart_output(verbose=verbose)
def decode(data, verbose=False): p = PrintCollector() data = data.strip() split_list = data.split('0') data = [sum([int(t) for t in item]) for item in split_list] result = '' for i in data: result += string.ascii_uppercase[i - 1] p.print(result) return p.smart_output(verbose=verbose)
def decode(data, verbose=True): p = PrintCollector() for i in range(26): key = '' for x in data: s = ord(x) if (s not in range(97, 123)) and (s not in range(65, 91)): key = key + chr(s) else: # print chr(s) if s in range(97, 123): if s % 2 == 0: s = s - i if s not in range(97, 123): t = 97 - s t = 123 - t key = key + chr(t) else: key = key + chr(s) else: s = s + i if s not in range(97, 123): t = s - 122 + 96 key = key + chr(t) else: key = key + chr(s) else: # print chr(s) if s % 2 == 0: s = s - i if s not in range(65, 91): t = 65 - s t = 91 - t key = key + chr(t) else: key = key + chr(s) else: s = s + i if s not in range(65, 91): t = s - 90 + 64 key = key + chr(t) else: key = key + chr(s) p.print(key) return p.smart_output(verbose=verbose)
def decode(e, verbose=False): p = PrintCollector() # e = 'tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.' data = len(e) field = [] for i in range(2, data): if data % i == 0: field.append(i) result = [] for f in field: b = data // f r = {x: '' for x in range(b)} for i in range(data): a = i % b r.update({a: r[a] + e[i]}) d = '' for i in range(b): d = d + r[i] x = '%02d栏: %s' % (f, d) result.append(x) p.print(x) if len(field) == 0: p.print('字符串长度为质数,无法自动找到合适的栏数') return p.smart_output(result=result, verbose=verbose)
def caidao_decode(data, *args, **kwargs): p = PrintCollector() data_dict = query_str_2_dict(data.strip()) d = {} for k, v in data_dict.items(): v = unquote(v) try: x = force_bytes(v) missing_padding = len(v) % 4 if missing_padding != 0: x += b'=' * (4 - missing_padding) d[k] = force_text(base64.decodebytes(x)) except Exception as e: print(e) d[k] = v z0_raw = '' if 'z0' in d: z0_raw = d['z0'] d['z0'] = ';\n'.join(d['z0'].split(';')) for k, v in d.items(): value = '{}:\n{}\n'.format(k, v) p.print(value) if k == 'z0': if value != 'z0:\n{}\n'.format(z0_raw): p.print('z0_raw:\n{}\n'.format(z0_raw)) return p.smart_output()
def decode(e): p = PrintCollector() # e = 'tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.' data = len(e) field = [] for i in range(2, data): if data % i == 0: field.append(i) for f in field: b = data // f r = {x: '' for x in range(b)} for i in range(data): a = i % b r.update({a: r[a] + e[i]}) d = '' for i in range(b): d = d + r[i] x = '分为\t' + str(f) + '\t' + '栏时,解密结果为: ' + d p.print(x) return p.all_output()
def decode(data, verbose=False): p = PrintCollector() data = data.replace(' ', '').replace('\t', '').strip() # if len(data) % 2 != 0: # p.print('可能不是9宫格手机键盘编码') # return p.smart_output(verbose=verbose) tmp_data = list(data) result = [] while len(tmp_data) > 0: k = ''.join(tmp_data[:2]) tmp_data = tmp_data[2:] v = dict_map.get(k) if v is None: v = '' # p.print('可能不是9宫格手机键盘编码') # return p.smart_output(verbose=verbose) result.append(v) result = ''.join(result) p.print(result) return p.smart_output(result, verbose=verbose)
def decode(data, verbose=False): p = PrintCollector() output = rail_fence_decode(data, verbose=False) for t in output: for key in range(26): d = caesar_decode(t, key) p.print(d) if len(output) == 0: p.print('字符串长度为质数,无法自动找到合适的栏数') return p.smart_output(verbose=verbose)
def decode_all(data, verbose=True): p = PrintCollector() for key in range(26): d = [] for i, t in enumerate(data): k = (key + i) % 26 r = decode(t, k) d.append(r) p.print(''.join(d)) p.print('') for key in range(26): d = [] for i, t in enumerate(data): k = (key + i) % 26 r = encode(t, k) d.append(r) p.print(''.join(d)) return p.smart_output(verbose=verbose)
def decode(data, verbose=False): p = PrintCollector() data = ''.join([t for t in data.lower() if t in ('a', 'b')]) for mode in range(2): if mode == 0: # e_array = re.findall(".{5}", data) new_data = data else: # 互换 a 和 b p.print('-----------------') p.print('互换 a 和 b') new_data = ''.join(['b' if t == 'a' else 'b' for t in data]) # e_array = re.findall(".{5}", new_data) decode_method_1(new_data, p) decode_method_2(new_data, p) return p.smart_output(verbose=verbose)
def decode(data, verbose=False): p = PrintCollector() # raw_data = "DEath IS JUST A PaRT oF lIFE, sOMeTHInG wE'RE aLL dESTInED TO dO." raw_data = data for mode in (0, 1): if mode == 0: p.print('\n小写为a,大写为b\n') else: p.print('\n小写为b,大写为a\n') new_data = recovery_transformed_bacon_data(p, raw_data, mode) # data = 'baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaa/abaaabaaba/aaabaabbbaabbbaababb' # 这种就直接解码 # data = 'abbab_babbb_baaaa_aaabb' decode_method_1(new_data, p) decode_method_2(new_data, p) return p.smart_output(verbose=verbose)
def decode_all(data): p = PrintCollector() p.print('标准 qwerty 键盘') r = decode(data, dict_map1) p.print(r) p.print('\n从上到下,从左到右') r = decode(data, dict_map2) p.print(r) p.print('\nqwerty 逆序') r = decode(data, dict_map3) p.print(r) return p.all_output()
def decode_all(data, verbose=True): p = PrintCollector() for key in range(94): r = decode(data, key) p.print(r) return p.smart_output(verbose=verbose)
def decode(data): data = quopri.decodestring(data) p = PrintCollector() # 原始的数据可能是用不同的编码 try: p.print('decode as utf8:') p.print(data) except: pass try: p.print('decode as gb2312:') p.print(data.decode('gb2312')) except: pass return p.all_output()
def char_count(data, *args, **kwargs): """ 字符频率统计 """ p = PrintCollector() r = Counter(data) length = len(data) data = [{'k': k, 'v': v} for k, v in r.items()] data1 = sorted(data, key=lambda a: a['v'], reverse=False) p.print('从小到大: ') for t in data1: k, v = t['k'], t['v'] p.print('{}: {:.1f}%, {}'.format(k, v / length * 100, v)) data2 = sorted(data, key=lambda a: a['v'], reverse=True) p.print('') p.print('从大到小: ') for t in data2: k, v = t['k'], t['v'] p.print('{}: {:.1f}%, {}'.format(k, v / length * 100, v)) return p.smart_output()
def decode(data): p = PrintCollector() d = decode_rot13(data) p.print(d) return p.all_output()
def decode(data, verbose=False): p = PrintCollector() d = pigpen_cipher(data) p.print(d) return p.smart_output(verbose=verbose)
def decode(data, verbose=False): p = PrintCollector() d = decode_rot13(data) p.print(d) return p.smart_output(verbose=verbose)
def decode_old(data, verbose=False): p = PrintCollector() data = ''.join([t for t in data.lower() if t in ('a', 'b')]) for mode in range(2): if mode == 0: e_array = re.findall(".{5}", data) else: # 互换 a 和 b p.print('-----------------') p.print('互换 a 和 b') new_data = ''.join(['b' if t == 'a' else 'b' for t in data]) e_array = re.findall(".{5}", new_data) d_string1 = "" d_string2 = "" for index in e_array: for i in range(0, 26): if index == first_cipher[i]: d_string1 += alphabet[i] if index == second_cipher[i]: d_string2 += alphabet[i] p.print("first method: \n" + d_string1) p.print("\nsecond method: \n" + d_string2) return p.smart_output(verbose=verbose)
def decode(data, verbose=False): if len(data) % 4 != 0: data = data + '=' * (4 - len(data) % 4) p = PrintCollector() p.print('base64:') r = b64decode(force_bytes(data)) p.print(smart_text(r)) p.print('\nrot13->base64:') r = b64decode(force_bytes(decode_rot13(data))) p.print(smart_text(r)) new_data = [] for t in data: if t in string.ascii_lowercase: t = t.upper() elif t in string.ascii_uppercase: t = t.lower() new_data.append(t) r = ''.join(new_data) p.print('\nswap_case->base64:') r = b64decode(force_bytes(r)) p.print(smart_text(r)) new_data = data[::-1] new_data = new_data.lstrip('=') if len(new_data) % 4 != 0: new_data = new_data + '=' * (4 - len(new_data) % 4) r = b64decode(force_bytes(new_data)) p.print('\nreverse->base64:') p.print(smart_text(r)) return p.smart_output(verbose=verbose)
def decode_all(data, verbose=True): p = PrintCollector() for key in range(26): r = decode(data, key) p.print(r) return smart_output(p.collector, verbose, p)
def decode(data, verbose=False): data = quopri.decodestring(data) p = PrintCollector() # 原始的数据可能是用不同的编码 try: p.print('decode as utf8:') p.print(data) except: pass try: p.print('decode as gb2312:') p.print(data.decode('gb2312')) except: pass return p.smart_output(verbose=verbose)
def decode(data, verbose=False): """ 这个网站的实现中 http://web.chacuo.net/charsetxxencode/ 每60个字符输出一行,然后在开始位置加上1个字符存储长度 :param verbose: :param data: :return: """ p = PrintCollector() result = [] data = data.replace('\n', '').replace(' ', '').strip() # print(data) length = 61 data_list = [] while len(data) > 0: data_list.append(data[:length]) data = data[length:] for t in data_list: length = cipher_letters.index(t[0]) # print(length) result.append(decrypt(t[1:], length, print_output=False)) # result = [force_bytes(t) for t in result] output = b''.join(result) print(output) try: p.print('utf8编码:') p.print(output) except: pass try: p.print('gb2312编码:') p.print(output.decode('gb2312')) except: pass return p.smart_output(verbose=verbose)
def decode_all(data, verbose=False): p = PrintCollector() p.print('标准 qwerty 键盘') r = decode(data, dict_map1) p.print(r) p.print('\n从上到下,从左到右') r = decode(data, dict_map2) p.print(r) p.print('\nqwerty 逆序') r = decode(data, dict_map3) p.print(r) return p.smart_output(verbose=verbose)