[NCTF2019]Reverse
[NCTF2019]Reverse
題目
汮S賳!Ⅳ?Z_l,?漋& hDa蕕&5匼?oZ€|U€骸%#}巴 import os import pyDesflag = "NCTF{******************************************}" key = os.urandom(8)d = pyDes.des(key) cipher = d.encrypt(flag.encode())with open('cipher', 'wb') as f:f.write(cipher)# Leak: d.Kn[10] == [0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1]解題
讀程序
pyDes模塊:
pyDes.des(key, [mode], [IV], [pad], [padmode])
pyDes.triple_des(key, [mode], [IV], [pad], [padmode])
key->包含加密密鑰的字節。DES為8字節,16或24字節
三重DES
mode -> 加密類型的可選參數,可以是pyDes.ECB(電子碼本)或pyDes.CBC(密碼區塊鏈)
IV -> 可選初始值字節,如果使用CBC模式,則必須提供。長度必須為8字節。
pad -> Optional參數,將pad字符(pad\u NORMAL)設置為在使用此實例完成的所有加密/解密操作。
padmode -> 可選參數,設置填充模式(PAD_NORMAL或PAD_PKCS5)在對此實例執行的所有加密/解密操作期間使用。
encrypt(data, [pad], [padmode])
decrypt(data, [pad], [padmode])
data -> 要加密/解密的字節
pad -> 可選參數。僅當使用PAD_NORMAL的padmode時。對于加密時,將此字符添加到數據塊的末尾數據不是8字節的倍數。對于解密,將刪除最后8個字符中與此填充字符匹配的尾隨字符未加密數據塊的字節數。
padmode -> 可選參數,設置填充模式,必須是PAD\u NORMAL之一或PAD_PKCS5)。默認為PAD_NORMAL
os.urandom(n)返回一個有n個byte那么長的一個string,然后很適合用于加密。
每輪循環左移的位數不一定相同
泄露的d.Kn[10] 說明已經進行了11輪了(每一輪生成一個子密鑰),因此要做sum(movnum[:11])次逆運算
參考
答案
flag{1t_7urn3d_0u7_7h47_u_2_g00d_@_r3v3rs3_1snt}
總結
以上是生活随笔為你收集整理的[NCTF2019]Reverse的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-07-29
- 下一篇: [羊城杯 2020]RRRRRRRSA