Crypto入门 (十一)easychallenge
前言:
这题跟python有关,可见看懂python代码还是很有必要得,需要有一些python基础才好
easychallenge:
题目: 下载后来发现是一个.pyc为后缀得文件,查找资料可知,该文件为python编译后得文件,所以我们第一步应该是反编译,将其转成py文件
我们使用python得uncompyle6库来进行反编译,安装出错或者太慢试试这个,
pip install -i https://pypi.doubanio.com/simple/ 包名
下面给出如何使用得命令
uncompyle6 -o F:\桌面\ F:\桌面\tmp\1.pyc
然后将反编译后得py文件内容给出:
1 # uncompyle6 version 3.7.3
2 # Python bytecode 2.7 (62211)
3 # Decompiled from: Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)]
4 # Embedded file name: ans.py
5 # Compiled at: 2018-08-09 11:29:44
6 import base64
7
8 def encode1(ans):
9 s = ''
10 for i in ans:
11 x = ord(i) ^ 36
12 x = x + 25
13 s += chr(x)
14
15 return s
16
17
18 def encode2(ans):
19 s = ''
20 for i in ans:
21 x = ord(i) + 36
22 x = x ^ 36
23 s += chr(x)
24
25 return s
26
27
28 def encode3(ans):
29 return base64.b32encode(ans)
30
31
32 flag = ' '
33 print 'Please Input your flag:'
34 flag = raw_input()
35 final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
36 if encode3(encode2(encode1(flag))) == final:
37 print 'correct'
38 else:
39 print 'wrong'
可以看到通过该py文件加密后得final是 UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E=== ,然后我们修改一下encode3 encode2 encode1,将其改成decode1 decode2 decode3,
下面给出代码:
1 # uncompyle6 version 3.7.3
2 # Python bytecode 2.7 (62211)
3 # Decompiled from: Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)]
4 # Embedded file name: ans.py
5 # Compiled at: 2018-08-09 11:29:44
6 import base64
7
8 def decode3(ans):
9 s = ''
10 for i in ans:
11 # x = ord(i) ^ 36
12 # x = x + 25
13
14 x = ord(i) -25
15 x = x ^ 36
16 s += chr(x)
17
18 return s
19
20
21 def decode2(ans):
22 s = ''
23 for i in ans:
24 # x = ord(i) + 36
25 # x = x ^ 36
26
27 x = i ^ 36
28 x = x - 36
29 s += chr(x)
30
31 return s
32
33
34 def decode1(ans):
35 return base64.b32decode(ans)
36
37
38 final = b'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
39 print(decode3(decode2(decode1(final))))
反向即可解码
参考链接:
https://www.runoob.com/python3/python3-func-ord.html
Crypto入门 (十一)easychallenge的更多相关文章
- C#基础入门 十一
C#基础入门 十一 复选框 复选框的应用--问卷调查 实现描述:通过问卷调查统计性别和下班后回家的方式,单击"提交"按钮,通过消息框显示所提交的信息.运行结果如下图所示(图27): ...
- Crypto++入门学习笔记(DES、AES、RSA、SHA-256)(加解密)
转自http://www.cppblog.com/ArthasLee/archive/2010/12/01/135186.html 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后 ...
- Crypto++入门学习笔记(DES、AES、RSA、SHA-256)
最先附上 下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作. 笔 ...
- ES6入门十一:Generator生成器、async+await、Promisify
生成器的基本使用 生成器 + Promise async+await Promise化之Promisify工具方法 一.生成器的基本使用 在介绍生成器的使用之前,可以简单理解生成器实质上生成的就是一个 ...
- SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪
现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文<Dapper, a Large-Scale Distributed Systems Tracing Infrastructu ...
- Android入门(十一)SQLite CURD
原文链接:http://www.orlion.ga/594/ 一.添加数据 SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()方法 ...
- HTML5入门十一---Canvas画布实现画图(二)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Hibernate入门(十一)多对多案例
Hibernate多对多案例 1.用户对角色 DROP TABLE IF EXISTS emp_role; DROP TABLE IF EXISTS employee; DROP TABLE IF E ...
- SpringBoot入门 (十一) 数据校验
本文记录学习在SpringBoot中做数据校验. 一 什么是数据校验 数据校验就是在应用程序中,对输入进来得数据做语义分析判断,阻挡不符合规则得数据,放行符合规则得数据,以确保被保存得数据符合我们得数 ...
- 设计模式之装饰器模式io的小入门(十一)
装饰器模式详解地址 原文总结 定义: 在不必改变原类文件和使用继承的情况下, 动态的扩展一个对象的功能. 通过创建一个包装对象, 也就是装饰来包裹真实的对象 部分详解提示 看了一些文档, 装饰器模式非 ...
随机推荐
- centos7.9重启后,主机名会变为IP地址
现象: centos7.9重启后,主机名会变为IP地址 当关闭DHCP功能,则主机名修改生效,否则重启后,主机名依旧变为图示的IP地址 解决方法:经过排查,由 /etc/sysconfig/netwo ...
- 【STM32】电能表抄表功能实现|自学笔记
一.抄表的原理 抄表就是读电能表的测量参数,一般有电能,电压,电流,实时功率,功率因数等,用单板抄表其实就是读电能表种相应寄存器中的值.智能电表目前主流协议有DLT645国标各家通用,MODBUS各家 ...
- zabbix(历史数据保留时长和趋势存储时间的区别)
zabbix(历史数据保留时长和趋势存储时间的区别)? zabbix(历史数据保留时长和趋势存储时间分别影响着哪里)? 001.影响grafana 数据展示的是历史数据还是趋势数据? 等把<历史 ...
- 打卡node day01--基础和fs内置模块
一, 检查 node 版本 node -v 或 node --version 二,检查安装过的node 版本(nvm node 版本管理工具 安装链接 参考百度) nvm ls 三,切换node 版 ...
- jmeter非GUI模式之jtl文件解析
我们知道非GUI模式的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果, <httpSample t="1" lt="1" t ...
- Coursera Programming Languages, Part C 华盛顿大学 Week 3
整个系列课程的最后一小结! 介绍了之前在 interface 中所提到的 subtype 系统以及其与 ML 中 generics 的不同 introduction to subtyping 在之前的 ...
- [530] C3 Rise Of Darkness Opcodez
[530] C3 Rise Of Darkness Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 RequestE ...
- nginx 工作流程
NGINX 把http请求处理流程划分为11个阶段,逻辑细分,以模块为单位进行处理.各个阶段可以包含多个http模块,每个阶段以流水线的形式处理请求.这样的分层处理模式与计算机网络的7层模式类似,每个 ...
- CH9121小结
当通过网络配置工具将CH9121设置成UDP SERVER模式时,同时通过SRT-NET设置将PC设置成UDP并与CH9121用网线连接.将CH9121配置好与PC信息相匹配的端口号与IP地址,PC端 ...
- Luogu P2375 [NOI2014 D2]动物园 kmp
P2375 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物 ...