BUUCTF密碼學(crypto)
阿新 • • 發佈:2021-01-22
異性相吸,還原大師,[GKCTF2020]漢字的祕密
異性相吸
題目:最近出現了一個奇葩觀點,說性別都不一樣,怎麼能談戀愛?為了證明這個觀點錯誤,請大家證明異性是相吸的。 注意:得到的 flag 請包上 flag{} 提交
解:
第一步:先用winhex開啟第二步:看是奇數偶數,相同就做減法,不同就做加法,注意這個是十六進位制
第三步:ASCII碼轉字元
下面是找的程式碼
// key = open("key.txt", 'rb').read()
cipher = open("密文.txt", "rb" ).read()
flag = []
result = ""
for i in range(len(key)):
flag.append(key[i] ^ cipher[i])
result += chr(flag[i])
print(flag)
print(result)
flag{ea1bc0988992276b7f95b54a7435e89e}
還原大師
題目:我們得到了一串神祕字串:TASC?O3RJMV?WDJKX?ZM,問號部分是未知大寫字母,為了確定這個神祕字串,我們通過了其他途徑獲得了這個字串的32位MD5碼。但是我們獲得它的32位MD5碼也是殘缺不全,E903???4DAB???08???51?80??8A?,請猜出神祕字串的原本模樣,並且提交這個字串的32位MD5碼作為答案。 注意:得到的 flag 請包上 flag{} 提交
// # -*- coding: utf-8 -*-
#!/usr/bin/env python
import hashlib
#print hashlib.md5(s).hexdigest().upper()
k = 'TASC?O3RJMV?WDJKX?ZM' #要還原的明文
for i in range(26):
temp1 = k.replace('?',str(chr(65+i)),1)
for j in range(26):
temp2 = temp1.replace('?',chr(65+j),1)
for n in range(26):
temp3 = temp2.replace('?',chr(65+n),1)
s = hashlib.md5(temp3.encode('utf8')).hexdigest().upper()#注意大小寫
if s[:4] == 'E903': #檢查元素
print (s) #輸出密文
執行,即得flag
flag{E9032994DABAC08080091151380478A2}
[GKCTF2020]漢字的祕密
題目:你能看出漢字的奧祕嗎? 答案形式:flag{小寫字母}
附件:王壯 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由
土夫 井中 士夫 王工 王人 土由 由口夫
解: 該題涉及當鋪密碼
當鋪密碼:有幾個突出,就是幾。
如:王字,6個突出 ,即6
由字,1個突出,即1
田字,沒有突出,即0
上程式碼
//dh = '田口由中人工大土士王夫井羊壯'
ds = '00123455567899'
cip = '王壯 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由 土夫 井中 士夫 王工 王人 土由 由口夫'
s = ''
for i in cip:
if i in dh:
s += ds[dh.index(i)]
else:
s += ' '
#print(s)
ll = s.split(" ")
t = ''
for i in range(0,len(ll)):
t += chr(int(ll[i])+i+1)
print('t=', t, '\t\tt.lower()=', t.lower())
flag{you_are_good}
參考部分WP-GKCTF2020