# Is they same? Identical Prefix 或 ASCII Collision。 使用 hashclash 的 `generic_ipc.sh`: ```shell echo "is1abcis1abcis1a" > prefix.txt && <hashclash>/scripts/generic_ipc.sh prefix.txt ``` > 記得把 `<hashclash>` 換成你的位置。 等待幾分鐘後可以製作出自訂前綴的 `.bin`,再把 `collision1.bin`、`collision2.bin` 再用腳本把所有的位元拿去轉成 ASCII: ```python import hashlib def read_and_process_file(file_path): # Read the binary content of the file with open(file_path, 'rb') as f: binary_data = f.read() # Print the MD5 hash of the binary content md5_hash = hashlib.md5(binary_data).hexdigest() print(f"MD5 hash of {file_path}: {md5_hash}") # Convert the binary data to its ASCII representation ascii_representation = ",".join([str(byte) for byte in binary_data]) return ascii_representation # File paths file1 = 'collision1.bin' file2 = 'collision2.bin' # Process each file and print the ASCII representation ascii1 = read_and_process_file(file1) ascii2 = read_and_process_file(file2) print(f"ASCII representation of {file1}: {ascii1}") print(f"ASCII representation of {file2}: {ascii2}") ``` ```shell! $ python3 to_ascii.py MD5 hash of collision1.bin: 56dcab0a720d8a9d39e71d72f7d00932 MD5 hash of collision2.bin: 56dcab0a720d8a9d39e71d72f7d00932 ASCII representation of collision1.bin: 105,115,49,97,98,99,105,115,49,97,98,99,105,115,49,97,135,51,57,167,177,189,208,113,66,42,8,59,95,24,180,66,212,115,101,238,41,106,186,7,162,253,139,161,213,181,180,60,247,129,249,101,33,139,97,202,161,251,25,118,66,245,48,239,118,12,240,219,2,247,173,47,59,188,215,245,78,92,90,162,20,55,58,104,49,169,78,35,133,252,228,52,118,66,220,237,161,109,207,23,36,3,120,152,207,66,88,11,145,216,83,219,56,34,112,238,9,191,217,133,161,121,32,16,214,172,74,91 ASCII representation of collision2.bin: 105,115,49,97,98,99,105,115,49,98,98,99,105,115,49,97,135,51,57,167,177,189,208,113,66,42,8,59,95,24,180,66,212,115,101,238,41,106,186,7,162,253,139,161,213,181,180,60,247,129,249,101,33,139,97,202,161,251,25,118,66,245,48,239,118,12,240,219,2,247,173,47,59,187,215,245,78,92,90,162,20,55,58,104,49,169,78,35,133,252,228,52,118,66,220,237,161,109,207,23,36,3,120,152,207,66,88,11,145,216,83,219,56,34,112,238,9,191,217,133,161,121,32,16,214,172,74,91 ``` 把結果複製貼上到題目裡: ```shell! $ ncat 127.0.0.1 37358 Welcome to the is they same? challenge! In this challenge, you are required to input two strings. These two strings must have different contents, but their MD5 hashes must be identical. Additionally, both strings must start with "is1ab". Input please transform by (",".join([str(i) for i in string]).encode()). For example, if you're string is "is1ab", you're output will be "105,115,49,97,98". Please input your string 1:105,115,49,97,98,99,105,115,49,97,98,99,105,115,49,97,135,51,57,167,177,189,208,113,66,42,8,59,95,24,180,66,212,115,101,238,41,106,186,7,162,253,139,161,213,181,180,60,247,129,249,101,33,139,97,202,161,251,25,118,66,245,48,239,118,12,240,219,2,247,173,47,59,188,215,245,78,92,90,162,20,55,58,104,49,169,78,35,133,252,228,52,118,66,220,237,161,109,207,23,36,3,120,152,207,66,88,11,145,216,83,219,56,34,112,238,9,191,217,133,161,121,32,16,214,172,74,91 Please input your string 2:105,115,49,97,98,99,105,115,49,98,98,99,105,115,49,97,135,51,57,167,177,189,208,113,66,42,8,59,95,24,180,66,212,115,101,238,41,106,186,7,162,253,139,161,213,181,180,60,247,129,249,101,33,139,97,202,161,251,25,118,66,245,48,239,118,12,240,219,2,247,173,47,59,187,215,245,78,92,90,162,20,55,58,104,49,169,78,35,133,252,228,52,118,66,220,237,161,109,207,23,36,3,120,152,207,66,88,11,145,216,83,219,56,34,112,238,9,191,217,133,161,121,32,16,214,172,74,91 You're right is1abCTF{Md5_l5_NOT_sAFe_443fe166cf3a} ``` ### Reference - <https://book.jorianwoltjer.com/cryptography/hashing#md5-ascii-collision>