1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| import hashlib import string
md5_list = [ "38F88A3BC570210F8A8D95585B46B065", "83055AE80CDC8BD59378B8628D733FCB", "FA7DAFFBD7ACEC13B0695D935A04BC0F", "C29CC0FD3801C7FDD315C782999BD4CB", "2BA2D01AF12D9BE31A2B44323C1A4F47", "DDEEBAF002527A9EAD78BD16684573CC", "BF95B89934A1B555E1090FECDFD3DA9F", "B6422C30B02938535F8E648D60A87B94", "08C1B76643AF8DD50CB06D7FDD3CF8ED", "42D69719F97088F06540F412DC1706FB", "A1F23DA61615400E7BD9EA72D63567EB", "4E246F0A5DD3CE59465FF3D02EC4F984", "B8CF25F963E8E9F4C3FDDA34F6F01A35", "2D98D820835C75A9F981AD4DB826BF8E", "702EAD08A3DD56B3134C7C3841A652AA", "D2D557B613662B92F399D612FB91591E", "E4422B6320ED989E7E3CB97F369CBA38", "71803586C67059DDA32525CE844C5079", "83B371801D0ADE07B5C4F51E8C6215E2", "B0D1B4885BC2FDC5A665266924486C5F", "792C9E7F05C407C56F3BEC4CA7E5C171", "3855E5A5BBC1CBE18A6EAB5DD97C063C", "886D45E0451BBBA7C0341FE90A954F34", "3A437CBE6591EA34896425856EAE7B65", "34304967A067308A76701F05C0668551", "D6AF7C4FEDCF2B6777DF8E83C932F883", "DF88931E7EEFDFCC2BB80D4A4F5710FB", "CB0FC813755A45CE5984BFBA15847C1E", ]
flag = "}"
chr_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-1234567890{}"
num_hashes = len(md5_list)
for i in range(num_hashes): target_md5 = md5_list[num_hashes - 1 - i] found_char = False for char_to_try in chr_list: temp_flag = char_to_try + flag
encoded_flag = temp_flag.encode('utf-8') hash_object = hashlib.md5(encoded_flag) current_md5 = hash_object.hexdigest().upper() if current_md5 == target_md5: flag = temp_flag print(f"找到字符: '{char_to_try}', 当前 Flag: {flag}") found_char = True break if not found_char: print(f"错误:无法为索引 {num_hashes - 1 - i} (哈希值 {target_md5}) 找到匹配的字符。") break
print("\n最终推导出的 Flag:") print(flag)
|