Bugku 加密 python writeup
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,一上来就给了两个文件,一个是加密的源代码,一个是加密过程文件,challenge.py
千家信息网最后更新 2024年11月14日Bugku 加密 python writeup
一上来就给了两个文件,一个是加密的源代码,一个是加密过程文件,
challenge.py
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 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安全错误
数据库的锁怎样保障安全
未来教育网络技术用不了
远程时服务器有指定端口
给家长宣传网络安全
计算机中数据库常用文献
虚拟机上的数据库吗
通过命令查看ftp服务器编码
软件开发工程的风险有哪些
网络安全手抄报A3纸怎么画
关于软件开发方面的证书
1018国家网络安全
原神的服务器分为哪几种
数据库用户表怎么查看
阿里云网站服务器ip地址
软件开发人员为啥不参评职称
数据库管理系统方法
教务系统网络安全培训
舌苔数据库
数据库管理与维护的软件
risc服务器多少钱
国家网络安全知识内容ppt
马云网络安全讲座
网络安全法 账户强绑手机
三级网络技术激活码16
我与网络安全作文400
大学生校园网络安全保卫工作
工程项目软件开发流程
好用ftp服务器
刷脸存入数据库
云主机和服务器租用
pppoe服务器负载均衡