Bugku 加密 python writeup
admin
2023-01-22 08:01:01
0

Bugku 加密 python  writeup
一上来就给了两个文件,一个是加密的源代码,一个是加密过程文件,

Bugku 加密 python  writeup
challenge.py

Bugku 加密 python  writeup

                                                                N1ES.py

N1ES.py里一共有四个函数,一个类,类里含有两个函数,除了最后一个encrypt函数外其他函数都是在对key进行运算,然后通过key来对flag进行加密,所以我直接跑了一下程序,获得了key加密后的数据,然后只对encrypt函数进行逆向
解密脚本:

Kn=[['~', 'w', 'Y', 'k', 'k', '\x02', '\x05', '\x05'],['w', 'd', '}', '\x14', '?', '\x13', '\x04', 'W'],['l', '6', '\x08', '\x04', '\x13', '3', '\x19', '\x10'],['\x08', 'P', '2', '\x02', '/', 'W', '/', 'W'],['\x08', '\x14', '?', '@', 'W', '^', ' ', 'k'],['\x1b', '6', '^', '(', 'M', 'Y', '\x19', '\x02'],['3', 'f', 'w', '(', '\x13', '}', '\x08', 'u'],['=', '_', '\x13', 'M', '2', '=', '@', '\x04'],['z', '_', '~', '\x08', 'L', 'f', '\x19', 'z'],['I', 'Y', '\x01', '}', '/', '}', 'L', 'o'],['\x19', '\x05', '3', '\x01', 'z', 'w', '~', '?'],['L', 'B', '~', '\x13', '@', '6', '@', '\x05'],['\x08', 'd', '\x13', 'L', '^', '?', 'L', 'u'],['\x05', '{', 'M', 'P', 'M', '\n', 'z', 'P'],['k', '~', 'k', '/', 'o', 'u', '\x19', '\x04'],['o', 'k', '(', '\x13', 'I', 'f', ' ', '='],['~', '\x04', '\x08', '^', '\x02', '\n', '6', '3'],['/', '\x05', 'w', '2', ' ', 'd', '\x13', '6'],[' ', '/', '}', '?', '\x04', '}', 'z', '\x19'],['\x05', '\n', '\n', 'l', '\x02', 'l', '^', 'l'],['k', '3', '}', '\x19', 'u', 'I', ' ', '^'],['~', 'B', '\x02', '}', 'k', '\x05', '\x02', '/'],['\n', '\x05', '^', '^', 'P', '}', '!', '{'],['\x08', 'W', 'u', 'o', ' ', '2', 'd', '\x04'],['/', 'W', 'w', '\x08', 'z', '\x19', '@', 'I'],['\x14', ' ', 'P', '!', '6', '6', ' ', '}'],['(', '!', '\x01', '\x08', 'd', '\x08', 'w', '?'],['u', 'W', '@', '\x13', '}', '~', '6', 'o'],['3', 'B', 'd', '\x01', 'W', '2', '\n', '6'],['}', '\x08', '6', '\x19', '&', '\x04', 'k', 'u'],['\x13', '2', '2', '(', '\x19', '{', '/', 'w'],['\x02', 'Y', ' ', 'W', '\x08', 'u', '\x01', 'I']]

import base64

s=base64.b64decode('HRlgC2ReHW1/WRk2DikfNBo1dl1XZBJrRR9qECMNOjNHDktBJSxcI1hZIz07YjVx')

flag=[]

for i in range(3):

    flag.append(s[i*16:(i+1)*16])

from z3 import *

def fun(a,b):

    x=[BitVec('x%d'%i,32) for i in range(8)]

    solver=Solver()

    res=''

    for i in range(len(a)):

        exec("solver.add(x[i]-2*(x[i]&ord(b[i]))==ord(a[i])-ord(b[i]))")

        solver.check()

        try:

            exec("res+=chr(solver.model()[x[i]].as_long())")

        except:

            print solver

    return res

res=''

for i in flag:

    L=i[:8]

    R=i[8:]

    L,R=R,L

    for k in range(32):

        L,R=R,fun(L,Kn[k])

    res+=L+R

print res

相关内容

热门资讯

助农瓜香暖人心 央企担当送清凉 7月18日,中铁中产置业有限公司赴开封市尉氏县采购11000余斤西瓜,以实际行动助力农户增收。这批西...
88岁母亲被77万条未读信息“... 王勋和女儿帮母亲清理手机里的信息 | 央视截屏王勋走进母亲所住的养老院房间,此起彼伏的手机提示音不间...
美媒爆料:特朗普批准美国与沙特... 据凤凰卫视援引美国媒体报道,特朗普政府计划向国会提交一项美国和沙特阿拉伯共享核电技术的协议,协议将允...
中国游客印尼亲历沉船事故:漂流... 近日,刘女士向红星新闻记者反映,7月16日,其在印尼乘坐游轮旅行时,遇到了沉船事故,其与其他游客及船...
女子付款2分钟后申请退票,34... 暑假是出行高峰期,不少在外务工的家长会购飞机票接子女阖家团聚。云南籍的胡女士说,7月19日11点左右...
特朗普扬言要打掉的“镐山”是什... 美伊两国在霍尔木兹海峡持续交锋之际,美国总统特朗普多次放出狠话,威胁轰炸伊朗一处山体深处的在建核设施...
台湾将进行“汉光42号演习”,... 7月22日,国务院台湾事务办公室举行例行新闻发布会,发言人张晗就近期两岸热点问题回答记者提问。有记者...
油烟机单电机更换方法 油烟机是我们家庭生活中不可缺少的厨房电器,它可以有效地排除厨房中产生的油烟和异味。但是,油烟机经常使...
洗衣机波轮轴如何检修 洗衣机的波轮轴是洗衣机的重要组成部分,它是帮助洗衣机完成洗涤功能的核心部分。波轮轴一旦出现故障,将会...
空调开机跳闸原因检修方法 空调一开机就跳闸,常见的原因就是空调内部漏电造成短路了,这时开启空调后电闸就会迅速跳闸,起到保护家里...