通過一些CTF的任務,我偶然發現了有趣的挑戰。以下程序將採用包含單行隨機字母字符(標誌)的標誌文本文件。將運行它雖然隨機字符旋轉,並返回一個字符串加密僞隨機
import random,string
flag = "FLAG:"+open("flag", "r").read()[:-1]
encflag = ""
random.seed("random")
for c in flag:
if c.islower():
#rotate number around alphabet a random amount
encflag += chr((ord(c)-ord('a')+random.randrange(0,26))%26 + ord('a'))
elif c.isupper():
encflag += chr((ord(c)-ord('A')+random.randrange(0,26))%26 + ord('A'))
elif c.isdigit():
encflag += chr((ord(c)-ord('0')+random.randrange(0,10))%10 + ord('0'))
else:
encflag += c
print "Unguessably Randomized Flag: "+encflag
輸出:BNZQ:1l36de9583w5516fv3b8691102224f3e
任何人都可以解釋這是可以解決的?
我想你可以嘗試將它反轉,因爲你知道'seed'(「random」)和部分未加密的字符串(「FLAG:」)。看到輸出我想象的加密文本應該是一個md5哈希(32個較小的字母數字字符) –
@tmadam好的,因爲它是所有數字和小寫,並且比小寫字母更多的數字我會告訴你結果應該可能包含32個十六進制數,因此很可能是一個散列值(我沒有在這裏運行python)。 –
*「任何人都可以解釋這可以解決?」* - 這裏有什麼問題?我沒有看到有什麼要解決的。你想扭轉它嗎? –