Problem: [HZNUCTF 2023 preliminary]Bytecode
先用ai救命
def check_flag(input_flag): if len(input_flag) != 28: print("wrong length") return # flag_list = [25,108,108,176,18,108,110,177,64,29,134,29,187,103,32,139,144,179,134,177,32,24,144,25,111,14,111,14] for i in range(len(input_flag)): char_value = ord(input_flag[i]) char_value = (char_value * 39) % 196 if char_value != flag_list[i]: print("wrong") return print("win") input_flag = input("plz input your flag: ") check_flag(input_flag)
然后再编写逆向代码
result=[] def find_all_possible_as_given_bcd(b, c, d): possible_as = [] for a in range(c): if (a * b) % c == d: possible_as.append(a) for k in range(1, c): new_a = (a + k * c) % c if (new_a * b) % c == d: possible_as.append(new_a) return possible_as b_value = 39 c_value = 196 list=[25,108,108,176,18,108,110,177,64,29,134,29,187,103,32,139,144,179,134,177,32,24,144,25,111,14,111,14] for i in range(28): possible_as = find_all_possible_as_given_bcd(b_value, c_value, list[i]) result.append(possible_as[0]) print(result)
