附件链接:https://wwvc.lanzouj.com/iIqq218z5x0d



给了一个pyc文件

利用命令将pyc转换为py文件

uncompyle6 ezPython.pyc > ezPython.py

打开py文件

# uncompyle6 version 3.9.0
# Python bytecode version base 3.7.0 (3394)
# Decompiled from: Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: .\ezPython.py
# Compiled at: 2022-09-03 23:53:44
# Size of source mod 2**32: 444 bytes
from Crypto.Util.number import *
import base64, base58
password = open('password.txt', 'r').read()
tmp = bytes_to_long(password.encode('utf-8'))
ans = base64.b64encode(base58.b58encode(str(tmp))).decode()
print("I've forgot my password,could you please help me find the password?")
if ans == 'M0hBajFITHVLcWV6R1BOcEM5MTR0R0J3eGZVODV6MTJjZUhGZFNHQw==':
print('You get the password!')
else:
print('Wrong! try again')
# okay decompiling ezPython.pyc

这段代码是Python中的字符串和编码转换操作。

首先,password是一个字符串,使用encode()方法将其转换为字节类型(bytes),采用UTF-8编码方式进行转换。接下来,tmp使用bytes_to_long函数将字节序列转换为一个长整型数值。

然后,tmp的值通过先使用Base58编码,再使用Base64编码的方式进行转换。base58.b58encode()和base64.b64encode()分别是对应的编码函数。

最后,使用decode()方法将编码后的结果转换为字符串类型。使加密后的值也就是ans等于M0hBajFITHVLcWV6R1BOcEM5MTR0R0J3eGZVODV6MTJjZUhGZFNHQw==

整个过程就是将密码转换为经过Base58编码和Base64编码的字符串,以ans变量保存结果。

解码过程:

先将ans进行base64解密,再进行base58解密

3HAj1HLuKqezGPNpC914tGBwxfU85z12ceHFdSGC

22385992650816784030032474165

再用python跑出bytes字节类型转换为长整型数值

from Crypto.Util.number import *
import base64, base58
password = '22385992650816784030032474165'
tmp = long_to_bytes(password.encode('utf-8'))
print(tmp) # b'HUBUCTF@1405'

password为HUBUCTF@1405



根据题目描述,flag为md5(password),一般取md5加密都是32位小写



故flag:NSSCTF{fd78ee3399dd6a3c1d0b637fdca0c075}

[HUBUCTF 2022 新生赛]ezPython的更多相关文章

  1. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  2. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  3. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist

    [ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...

  5. [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga

    [ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...

  6. [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt

    [ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...

  7. [BUUCTF]REVERSE——[ACTF新生赛2020]rome

    [ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...

  8. [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

    [ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...

  9. GDOU-CTF-2023新生赛Pwn题解与反思

    第一次参加CTF新生赛总结与反思 因为昨天学校那边要进行天梯模拟赛,所以被拉过去了.16点30分结束,就跑回来宿舍开始写.第一题和第二题一下子getshell,不用30分钟,可能我没想那么多,对比网上 ...

  10. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

随机推荐

  1. IntelliJ IDEA 的初次使用--/护头

    IntelliJ IDEA 的使用 使用前先完成以下两点 环境配置 Win10环境配置(二) --Java篇 软件安装 IntelliJ IDEA 的安装 在完成软件安装,打开软件的瞬间,我是懵逼的. ...

  2. 完成第一个 Vue3.2 项目后,使用体会

    第一次Composition API 在vue3.2中,正式支持了script setup的写法,这样可以大大简化组件的代码量,减少一些重复操作,我认为当你写vue3时,应该把这当作默认写法.在vue ...

  3. 解决MySQL自动弹出命令行窗口

    自从装了MySQL之后,我的电脑就会在某些时刻弹出一个黑乎乎的命令行窗口,然后立马消失.一开始还以为是电脑出了什么故障,但一直没有出现其他什么问题,就是玩游戏时弹出来有点难受.有一次我眼睛看到了一闪而 ...

  4. CSS3实现嵌套立方体旋转的3D效果

    刚发现一个网站上面的3D立方体效果挺好看的,就模仿着用CSS3实现了一个类似的效果:http://39.105.101.122/myhtml/CSS/transform_3D/cube_3D.html ...

  5. 从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

    摘要:随着云计算的兴起和渗透,云数仓成为了数仓技术演进的新阶段,并且逐渐成为了众多企业的共同选择. 本文分享自华为云社区<从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生>,作 ...

  6. 推荐一款C#开源的操作简单、免费的屏幕录制和GIF动画制作神器

    前言 今天要给大家推荐一款由C#语言开发且开源的操作简单.免费的屏幕录制和GIF动画制作神器:ScreenToGif . 工具介绍 ScreenToGif 是一款免费的开源屏幕录制和GIF 制作工具. ...

  7. Android 妙用TextView实现左边文字,右边图片

    原文: Android 妙用TextView实现左边文字,右边图片 - Stars-One的杂货小窝 有时候,需要文字在左边,右边有个箭头,我个人之前会有两种做法: 使用线性布局来实现 或者使用约束布 ...

  8. 【MAUI Blazor踩坑日记】3.Windows标题栏自定义颜色,运行时改变颜色

    目录 修改默认颜色 修改运行时颜色 效果图 MAUI中Windows默认的标题栏颜色是灰色的,有一点丑. 如果去掉默认的标题栏,自己画一个,可能会出现问题,也比较麻烦. 想要自定义默认标题栏的颜色,官 ...

  9. shell 并发

    #!/bin/bash # 设置并发数 thread_num=3 # 创建管道文件 FIFO=/tmp/$$-FIFO mkfifo $FIFO # 使用句柄打开管道文件 exec 1000<& ...

  10. 使用netdata 监控Linux 主机

    在linux主机上,直接使用下面的命令创建容器即可 docker run -d --name=netdata \ -p 19999:19999 \ -v netdataconfig:/etc/netd ...