2017-03-17 29 views
-1

我不得不解密以base-16編碼的問題。解密後的文本是python代碼。我把代碼放到一個文件中,但是當我運行它時,問題說這是代碼中不存在的行上的語法錯誤。語法中的Python問題,但代碼中不存在的問題文本

下面是代碼 http://pastebin.com/Cm6kHG3j

謝謝!

+0

你好,歡迎來到StackOverflow!請避免將文件附加到文本文檔中,只需將代碼複製並粘貼到您的問題中,然後按下代碼格式化按鈕[{}'。我們可以更好地閱讀您的代碼並幫助您。謝謝! – davedwards

+0

該代碼太長,超過200行 – roberthayek

回答

0

你解密結果進一步降低到一系列嵌套exec語句,其中最後產生如下:

flag = 'easyctf{python_3x3c_exec_3xec_ex3c}' 
priint flag 

正如你所看到的,是在priint額外i,從而導致錯誤。

+0

它是如何向您展示priint標誌,它並未出現在我使用的任何編輯器中 – roberthayek

+0

這就是您在任何編輯器中都無法看到的「加密」這是'exec'作爲代碼字符串執行'ascii'字符的結果。 – davedwards

+0

我知道由於某種原因,我無法運行它,因爲priint標誌錯誤,但在代碼中我找不到錯誤 – roberthayek

0

如果你有興趣在如何解密它。

temp = "" 

def clean(string): 
    string = string.replace("chr(","").replace("exec(","").replace(")","").split("+") 
    string = [chr(int(item)) for item in string] 
    return "".join(string) 

fileStr = "" 
with open("storage.txt", "r") as fi:  
    fileStr = fi.read() 

while (input("Keep going (-1 to exit, 1 to continue)? ") != -1): 
    fileStr = clean(fileStr) 
    print fileStr 

這裏的結果:

flag = 'easyctf{python_3x3c_exec_3xec_ex3c}' 
priint flag 

有兩個i的打印功能。