[MRCTF2020]Transform

查壳,拖入64位IDA

LOBYTE8位就是一个字节,在此处无意义,因为我们输入的本来就是按字节输入的

设 a = byte_414040,b=dword_40F040,c=byte_40F0E0,输入的字符串为flag;

从题目里得到 加密代码

ai = flagb\[i];

ai ^= bi;

c == a

即ci = ai ^ bi

解密就反过来 ,因为a是不知道的,所以就先解除a

a = a ^ b 即 a = c ^ b

然后 flagb\[i] = ai

python 复制代码
b = [0x9, 0x0A, 0x0F, 0x17, 0x7, 0x18, 0x0C, 0x6, 0x1, 0x10, 0x3, 0x11, 0x20, 0x1D, 0x0B, 0x1E, 0x1B, 0x16, 0x4, 0x0D, 0x13, 0x14, 0x15, 0x2, 0x19, 0x5, 0x1F, 0x8, 0x12, 0x1A, 0x1C, 0x0E, 0]
a = [0x67, 0x79, 0x7B, 0x7F, 0x75, 0x2B, 0x3C, 0x52, 0x53, 0x79, 0x57, 0x5E, 0x5D, 0x42, 0x7B, 0x2D, 0x2A, 0x66, 0x42, 0x7E, 0x4C, 0x57, 0x79, 0x41, 0x6B, 0x7E, 0x65, 0x3C, 0x5C, 0x45, 0x6F, 0x62, 0x4D]

flag = [0]*33

for i in range(len(b)):
    a[i] ^= b[i]

for i in range(len(b)):
    flag[b[i]] = a[i]
print (''.join([chr(x) for x in flag]))
相关推荐
zzzll111110 分钟前
LangChain4j:Java 生态的 AI 应用开发利器
java·开发语言·人工智能
Dream Cosmos26 分钟前
Linux 多线程——线程互斥:从抢票问题到 Mutex 底层原理
linux·c++
hahaha601627 分钟前
HLS高层次综合设计技巧--循环merge和循环split
人工智能·算法·计算机视觉
JAI科研28 分钟前
Deepseek Agent Harness教程(七) | Deepseek Harness不是一个内核加一堆插件
开发语言·人工智能·深度学习·算法·自然语言处理·transformer·vllm
集思广益的灰太狼1 小时前
变频器启动致PLC数据异常?西门子G120配合滤波器EMC抑制方案
人工智能·算法·工控·emc·电磁兼容·变频器·西门子
zbyyd1 小时前
Linux 进程间通信(IPC):信号、消息队列、共享内存与信号量详解
linux·运维·c语言
孙克旭_1 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
Titan20241 小时前
HTTPS基础知识梳理
服务器·网络·c++·网络协议·学习·http·https
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】SSE协议
c++·学习·面试·大模型·sdk
斑马1391 小时前
Linux软件编程学习笔记(五)——线程
开发语言·php