攻防世界-Crypto-easychallenge

news2024/11/27 14:30:22

题目描述:将文件下载下来,只有一个pyc文件 

1. 思路分析

先向chatgpt问下什么是pyc文件:

OK,这里简单总结下:

1. pyc文件是python源码编译后的生成的二进制文件

2. 通过一些库可以逆向出pyc的源代码

那么我们需要做的就是先将源代码还原,还原后再根据具体代码实现找出flag

2. 解题过程

2.1 先逆向出pyc的源代码

我们使用uncompyle6试试(先pip install uncompyle6安装该工具)

然后执行命令:uncompyle6 "42aa1a89e3ae48c38e8b713051557020.pyc" > source.py

这样我们将源代码输出到了source.py中,源代码如下:

# uncompyle6 version 3.9.0
# Python bytecode version base 2.7 (62211)
# Decompiled from: Python 3.10.8 (main, Nov  4 2022, 09:21:25) [GCC 12.2.0]
# Embedded file name: ans.py
# Compiled at: 2018-08-08 23:29:44
import base64

def encode1(ans):
    s = ''
    for i in ans:
        x = ord(i) ^ 36
        x = x + 25
        s += chr(x)

    return s


def encode2(ans):
    s = ''
    for i in ans:
        x = ord(i) + 36
        x = x ^ 36
        s += chr(x)

    return s


def encode3(ans):
    return base64.b32encode(ans)


flag = ' '
print 'Please Input your flag:'
flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
    print 'correct'
else:
    print 'wrong'
# okay decompiling 42aa1a89e3ae48c38e8b713051557020.pyc

 2.2 解码出flag

从代码中分析,代码对flag进行了三层编码,那么我们需要对这三层编码一一进行解码,我们按照编码的顺序反着进行解码即可,调整下代码如下:

import base64

def decode1(ans):
    s = ''
    for i in ans:
        # x = ord(i) ^ 36
        x = ord(i) - 25
        x = x ^ 36
        s += chr(x)

    return s


def decode2(ans):
    s = ''
    for i in ans:
        # x = ord(i) + 36
        x = i ^ 36
        x = x - 36
        s += chr(x)

    return s


def decode3(ans):
    return base64.b32decode(ans)


#flag = ' '
#print 'Please Input your flag:'
#flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
flag = decode1(decode2(decode3(final)))
print(flag)

 执行该脚本获取flag即可:cyberpeace{interestinghhhhh}

总结:这里主要考察的是pyc文件的逆向,还有一些编码和解码的基本操作,将源代码解出来后,进行反向解码即可

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组题目总结 -- 单调栈问题

目录 零. 单调栈一. Next Greater Element(单调栈问题模板)题目简述:思路和代码:I. 思路II. 代码 二. Next Warmer Weather题目简述:思路和代码:I. 思路II. 代码 三. Next Greater Elements(循环数组)题目简…

UG\NX二次开发 装配下的点坐标

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UF_CURVE_create_point 创建一个点 UF_CSYS_create_temp_csys 创建临时坐标系 以上两个函数都有一个点坐标输入,而且都是输入的绝对坐标系下的点坐标值。下面验证在装配下两个绝对坐标值具体指 “当…

【三维视觉】空间点集的最小包围盒计算

0 问题描述 假设有一个空间点集,不重合的点数有N个。 N1时,最小包围盒是一个点:中心为其本身,半径无穷小 N2时,最小包围盒是一个圆:中心为连线中点,半径为边长一半 N3时,不共线的三…

【C#】并行编程实战:任务并行性(上)

在 .NET 的初始版本中,我们只能依赖线程(线程可以直接创建或者使用 ThreadPool 类创建)。ThreadPool 类提供了一个托管抽象层,但是开发人员仍然需要依靠 Thread 类来进行更好的控制。而 Thread 类维护困难,且不可托管&…

优惠券超发问题该怎么测试?

在拼夕夕面试中,面试官问了一连串经典的问题:“优惠券库存是怎么扣减的?开发为了解决超发优惠券问题而设计的方案,你了解过吗?你又是如何测试的呢?” 当时听到这些问题还挺懵的,没遇到过超发问…

MidJourney教程02

1.主体内容:高数AI你需要画什么?比如说,一个男生在电脑前画画? 2.环境北京:例如给某些地点或者物件,比如桌子上,足球场,水面有倒影等? 3.构图镜头:比如说强…

springboot项目外卖管理 day07-功能补充

文章目录 前端补充功能1、历史订单功能1.1、梳理过程1.2历史订单展示1.3、效果展示 2、修改/删除地址2.1、回显数据梳理过程 代码展示 2.2、修改地址梳理过程代码 2.3、删除地址梳理过程代码展示 3、再来一单功能3.1、梳理过程3.2、具体实现思路(参考一下当初我们怎…

Linux操作系统——第四章 进程间通信

目录 进程间通信介绍 进程间通信目的 进程间通信发展 进程间通信分类 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 管道读写规则 管道特点 命名管道 创建一个命名管道 匿名管道与命名管道的区别 命名管道的打开规则 system V共享内存 共享内存示意…

【SpringBoot】解决依赖版本不一致报错问题

哈喽大家好,我是阿Q。今天在开发代码的过程中,由于手抖,不知道引入了什么包依赖,导致项目启动一直报错,特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 问题描述 报错信息如下…

vite中使用 vite- aliases 插件报错

vite 中使用 vite-aliases 插件报错 vite-aliases 介绍报错内容解决方法 vite-aliases 介绍 vite-aliases 可以帮助我们自动生成别名: 检测你当前目录下包括 src 在内的所有文件夹, 并帮助我们去生成别名。 下载 npm i vite-aliases -D 使用 import { defineConfig } from vi…

VALSE 2023 无锡线下参会个人总结 6月11日-2

VALSE2023无锡线下参会个人总结 6月11日-2 6月11日会议日程安排Workshop:目标检测与分割程明明:粒度自适应的图像感知技术张兆翔:基于多传感器融合的视觉物体检测与分割 Workshop:ChatGPT与计算机视觉白翔:再谈ChatGPT…

290. 单词规律

290. 单词规律 C代码:别人手搓的 bool wordPattern(char * pattern, char * s){char arr[301][3001];char *p strtok(s, " ");int pos 0;while(p ! NULL) {sprintf(arr[pos], "%s", p);p strtok(NULL, " ");}int len strlen(pat…

Linux环境安装Jdk图文步骤

准备工作: a、jdk安装包:百度网盘 请输入提取码,提取码:jdk8 b、远程工具,xshell,,electerm,,MobaXterm,,fxp,docker,宝…

软件测试V、W和H模型的优缺点汇总,零基础必看哦

目录 V模型 W模型 H模型 总结: 软件测试有三种模型,分别是V模型,W模型和H模型。每种模型都有自己的优点和缺点。 V模型 V模型如下图所示: V模型的优点 V模型明确地标识出了在开发过程中一般应完成的测试级别,以及…

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

STM32-HAL库串口DMA空闲中断的正确使用方式解析SBUS信号 一. 问题描述二. 方法一——使用HAL_UART_Receive_DMA三. 方法二——使用HAL_UARTEx_ReceiveToIdle_DMA四. 方法三——使用HAL_UARTEx_ReceiveToIdle_IT(不使用DMA)五. 总结 一. 问题描述 能够点…

java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧

文章java springboot整合MyBatis做数据库查询操作讲述了boot项目整合MyBatis的操作方法 但现在就还有一个 MyBatis-Plus Plus是国内整合的一个技术 国内的很多人会喜欢用 特别是一些中小型公司 他们用着会比较舒服 好 然后我们打开idea 创建一个项目 选择 Spring Initializr…

(九)CSharp-数组

一、矩形数组 1、访问数组元素 class Program{static void Main(string[] args){int[] intArr1 new int[15];intArr1[2] 10;int var1 intArr1[2];int[,] intArr2 new int[5, 10];intArr2[2, 3] 7;int var2 intArr2[2, 3];int[] myIntArray new int[4];for (int i 0; i…

Git 报错 Updates were rejected because the remote contains work that you do

目录 Git 报错 Updates were rejected because the remote contains work that you do 1、命令行出现这种情况 2、idea出现同样的报错,解决方式同上 Git 报错 Updates were rejected because the remote contains work that you do 这个报错实在是让我受不了了&…

Kendo UI for jQuery---03.组件___网格---05.编辑---01.概述

编辑概述 编辑是剑道 UI 网格的一项基本功能,它允许您操作其数据的呈现方式。 网格提供以下编辑模式: 批量编辑 内联编辑 弹出窗口编辑 自定义编辑开始 要启用编辑: 熟悉剑道UI中的常见编辑概念 配置网格的数据源 通过配置定义字段schem…

PaddleOCR Windows下配置环境并测试

目录 1.PaddleOCR 介绍 1.2 PaddleOCR支持模型介绍 2.环境配置 3.PaddleOCR源码 1.PaddleOCR 介绍 PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。 支持多种OCR相关前沿算法,在此基础上打…