Bugku 加密 python writeup
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一上来就给了两个文件,一个是加密的源代码,一个是加密过程文件,challenge.py
千家信息网最后更新 2026年10月31日Bugku 加密 python writeup

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

challenge.py
N1ES.pyN1ES.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 base64s=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 resres=''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+Rprint res
函数
加密
两个
文件
得了
数据
是在
源代码
程序
脚本
过程
运算
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技有限公司
重生之互联网科技帝国
没上市的科技互联网公司
齐家互联网科技
唐信互联网科技
致聘互联网科技
科技创新互联网企业
西安互联网科技公司
国外互联网科技网站
卫星互联网科技股票
互联网保险科技创业
燊美集互联网科技有限公司
元气玛特互联网科技公司是外包吗
北京市互联网新科技
卡尔迅互联网科技有限公司
南京一网一红互联网科技有限公司
全球科技与互联网公司市值变化
互联网科技手机排行榜
易租星互联网科技有限公司
悟空问答互联网科技
科技互联网
保险科技 互联网保险
深圳科技互联网
广州互联网络科技有限公司
济南和联互联网科技有限公司
崇明区互联网教育科技售后服务
吉林省码上互联网科技电话
江苏互联网智能科技产品出厂价
互联网时代高科技布局
黑龙江互联网科技公司