打开txt查看
然后打开py文件查看
大概捋一下思路就是flag经过encrpyt5()函数得到enc,enc经过encrypt4()函数得到temp。
在txt里面有一个密文需要破解,根据提示,这应该和卦有关的加解密,一找就找到了相关的文章。写exp解卦。
import base64
s = '升益艮归妹井萃旅离旅困未济屯未济中孚未济升困噬嗑鼎震巽噬嗑解节井萃离未济蒙归妹大畜无妄解兑临睽升睽未济无妄遁涣归妹'
def defuxi64(str):
dic = {'乾': 'A', '坤': 'B', '屯': 'C', '蒙': 'D', '需': 'E', '讼': 'F', '师': 'G', '比': 'H', '小畜': 'I', '履': 'J',
'泰': 'K', '否': 'L', '同人': 'M', '大有': 'N', '谦': 'O', '豫': 'P', '随': 'Q', '蛊': 'R', '临': 'S', '观': 'T',
'噬嗑': 'U', '贲': 'V', '剥': 'W', '复': 'X', '无妄': 'Y', '大畜': 'Z', '颐': 'a', '大过': 'b', '坎': 'c', '离': 'd',
'咸': 'e', '恒': 'f', '遁': 'g', '大壮': 'h', '晋': 'i', '明夷': 'j', '家人': 'k', '睽': 'l', '蹇': 'm', '解': 'n',
'损': 'o', '益': 'p', '夬': 'q', '姤': 'r', '萃': 's', '升': 't', '困': 'u', '井': 'v', '革': 'w', '鼎': 'x', '震': 'y',
'艮': 'z', '渐': '1', '归妹': '2', '丰': '3', '旅': '4', '巽': '5', '兑': '6', '涣': '7', '节': '8', '中孚': '9',
'小过': '0', '既济': '+', '未济': '/'}
b64text = ''
i = 0
while i < len(str):
x = str[i]
if x not in dic:
i += 1
x += str[i]
if x not in dic:
print("解密失败,密文错误")
exit(1)
b64text += dic[x]
i += 1
print(b64text)
return base64.b64decode(b64text+'='*(len(b64text)%4))
if __name__ == '__main__':
print(defuxi64(s))
#b'xb6x9cxf6xbexcex1dxe2xefxc2xffxdfxedxb9Lrxe5Ixfcxbexc7x7fx0ffXx9fxa4xa5xb6_xd8x83xbd'
但是发现解出来的有问题,根据加密算法,这里的解应该是可正常的字符才对,所以需要找到问题出在哪里。接着上网找资源,发现一篇卦顺序图,里面有一张图:
闭合为1,断开为0,那么它们就可以转换为6bit的二进制数。再根据上面的exp思路(其实就是base64的换表),重新制作替换表
首先替换为二进制
再根据顺序替换为base表:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
'坤': 'A', '剥': 'B', '比': 'C', '观': 'D', '豫': 'E', '晋': 'F', '萃': 'G', '否': 'H', '谦': 'I', '艮': 'J', '蹇': 'K',
YjJ0aGNtNWViVzVYWldkblUyaGtVR05nU2w1Y1VnPT0 b2thcm5ebW5XZWdnU2hkUGNgSl5cUg==
根据加密算法写出解密算法,然后得到完整exp
encrpyt4的算法简单,直接加回去即可,无需分析。
原文始发于微信公众号(CSJH网络安全团队):Bugku--道友不来算一算凶吉?--WP
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论