[MRCTF2020]Transform

查壳,拖入64位IDA

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

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

从题目里得到 加密代码

a[i] = flag[b[i]];

a[i] ^= b[i];

c == a

即c[i] = a[i] ^ b[i]

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

a = a ^ b 即 a = c ^ b

然后 flag[b[i]] = a[i]

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]))
相关推荐
漫随流水3 分钟前
leetcode算法(429.N叉树的层序遍历)
数据结构·算法·leetcode·二叉树
漫随流水6 分钟前
leetcode算法(116.填充每个节点的下一个右侧节点指针)
数据结构·算法·leetcode·二叉树
浪客川12 分钟前
【百例RUST - 005】所有权和切片
开发语言·后端·rust
古城小栈14 分钟前
Axum: Rust 好用的 Web 框架
开发语言·rust
_OP_CHEN16 分钟前
【算法基础篇】(四十四)数论之欧拉定理与扩展欧拉定理深度解析:从降幂到超大规模幂运算
c++·算法·蓝桥杯·算法竞赛·欧拉定理·扩展欧拉定理·acm/icpc
lfwh19 分钟前
Java 中基于 DBSCAN 算法的车辆交汇点计算实现详解
java·开发语言·算法
liulilittle20 分钟前
DeepWiki: OPENPPP2 工程价值
网络·c++·网络协议·ai·信息与通信·通信
数据大魔方22 分钟前
【期货量化入门】期权交易入门:从零开始学期权量化(TqSdk完整教程)
数据库·python·mysql·算法·区块链·程序员创富
星河耀银海23 分钟前
C++面向对象编程:从基础到实战
开发语言·c++
期货资管源码29 分钟前
期货资管分仓软件开发/平台搭建经验分享
经验分享·算法·eclipse·区块链