ZJCTF预赛一个.py的逆向题
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from hashlib import sha256
def xor(a,b):
result = []
for (i, j) in zip(a, b):
result.append(chr(ord(i) ^ ord(j)))
return "".join(result)
def HASH(msg):
return sha256(msg).digest()[:8]
def zjctf_encrypt(gen_keys, hahahah):
i = 0
d1 = hahahah[:8]
d2 = hahahah[8:]
for i in gen_keys:
d1 = xor(xor(HASH(d2),i),d1)
d1, d2 = d2, d1
return d2 + d1
def gen_keymap(key):
maps = []
_ = key
for i in range(16):
_ = HASH(_)
maps.append(_)
return maps
def encrypt(key, data):
keys = gen_keymap(key)
return zjctf_encrypt(keys, data).encode('hex')
if __name__ == "__main__":
result = encrypt("zzzzzjctffffffff", "This_is_the_flag")
print(result)
# your result = 1b3a0152bef25769f384a740aa189e78
做题提示是利用xor解决,下载下来发现是一个py文件。
首先把 "zzzzzjctffffffff", "This_is_the_flag" 这俩参数传进 encrypt()中,
gen_keymap() 对 "zzzzzjctffffffff" 进行 HASH 处理 返回一个maps
zjctf_encrypt() 把这个maps与 "This_is_the_flag" 进行切片和异或 返回d2+d1 并输出
解密代码如下:
from hashlib import sha256
def xor(a,b):
result = []
for (i, j) in zip(a, b):
result.append(chr(ord(i) ^ ord(j)))
return "".join(result)
def HASH(msg):
return sha256(msg).digest()[:8]
def zjctf_encrypt(gen_keys, hahahah):
i = 0
d1 = hahahah[:8]
d2 = hahahah[8:]
d1, d2 = d2, d1
for i in gen_keys:
d2= xor(xor(HASH(d1),d2),i)
d1, d2 = d2, d1
return d1+d2
def gen_keymap(key):
maps = []
_ = key
for i in xrange(16):
_ = HASH(_)
maps.append(_)
maps.reverse()
return maps
def encrypt(key, data):
keys = gen_keymap(key)
return zjctf_encrypt(keys, data) key="zzzzzjctffffffff"
result = '1b3a0152bef25769f384a740aa189e78'
result=result.decode('hex')
print encrypt(key, result)
这题考察的不仅是python的语法,还考察了对hashlib库的使用,加密算法的了解。
ZJCTF预赛一个.py的逆向题的更多相关文章
- z3 巧解CTF逆向题
z3 巧解逆向题 题目下载链接:http://reversing.kr/download.php?n=7 这次实验的题目为Reversing.kr网站中的一道题目. 题目要求: ReversingKr ...
- 社团的CTF逆向题WriteUp
最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...
- [BZOJ 2759] 一个动态树好题
[BZOJ 2759] 一个动态树好题 题目描述 首先这是个基环树. 然后根节点一定会连出去一条非树边.通过一个环就可以解除根的答案,然后其他节点的答案就可以由根解出来. 因为要修改\(p_i\),所 ...
- BZOJ2759: 一个动态树好题
BZOJ2759: 一个动态树好题 Description 有N个未知数x[1..n]和N个等式组成的同余方程组:x[i]=k[i]*x[p[i]]+b[i] mod 10007其中,k[i],b[i ...
- PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下
PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下 在同一个包下只需要用import 掉以后就可以找到模块所在的位置,但是如果不在同一个包下,在需要返回父级调用 ...
- 什么是函数,干嘛啊,怎么干。一个py程序员的视角.md
目录 前言 本质 math definition py definition class 是类,是对象的蓝本 回到函数 一个结论 self 是什么? 以上就是py世界里函数的定义 什么是函数,干嘛啊, ...
- Python(一) 快速配置Python编译环境与第一个py文件程序
1. Python基本语法在此不熬述. 2. 到管网下载Python 3.6.x 版本,与本机匹配的版本,如本机是 win7 64 python-3.6.5-amd64 3. 下载IDE:Python ...
- Conda安装及第一个py程序
Conda安装及第一个py程序 安装Conda 下载安装 在Anaconda官网下载Anaconda 打开Conda安装程序 设置好安装目录(这个一定要记好,后边要用),比如我的目录就是 D:\Pro ...
- RobotFramework中加载自定义python包中的library(一个py文件中有多个类)
结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...
随机推荐
- 类(class)和继承
.继承之前的写法 ↓ ----------------------------------------------------------------------------------------- ...
- 【37.48%】【hdu 2587】How far away ?(3篇文章,3种做法,LCA之树上倍增)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- css3 移动端旋转动画暂停
音乐播放图片旋转动画 ios不支持暂停: animation-play-state: paused; @-webkit-keyframes rotate{ 100% { transform: rota ...
- 13.python基础试题(二)
借鉴:https://www.cnblogs.com/shengyang17/p/8543712.html https://www.cnblogs.com/you-wei1/p/9693254.htm ...
- 前端——BOM与DOM
目录 前戏 window对象 window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM H ...
- Java动态代理 ----- jdk代理与cglib代理
1.jdk代理 针对接口进行代理,接口可以没有方法, InvocationHandler会拦截所有方法,不过好像意义不大....只能执行Object类的方法,执行结果有点奇怪... package t ...
- maven安装与常用命令
maven安装: 下载地址http://maven.apache.org/download.cgi 1.安装好Java,配置好Java的环境变量(JDK) 2.下载apache-maven-3.5.2 ...
- 洛谷$P2617\ Dynamic\ Rankings$ 整体二分
正解:整体二分 解题报告: 传送门$w$ 阿查询带修区间第$k$小不显然整体二分板子呗,,, 就考虑先按时间戳排序(,,,其实并不需要读入的时候就按着时间戳排的鸭$QwQ$ 每次二分出$mid$先把所 ...
- Tomcat启动失败原因
Tomcat启动失败原因 一.Tomcat启动时,要求被加载的项目必须拥有独立路径名称 发布的两个工程具有相同路径名称,这是不允许. 二.8080端口号已经被占用了 启动失败原因,就是8085端口上, ...
- HelloTalk 基于 OpenResty 的全球化探索之路
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,HelloTalk, Inc. 后台技术负责人李凌 ...