Python字节码基础

  1. 下载相关文件并打开,其中为 Python 字节码。
  2. 字节码格式为

    源码行号 | 指令在函数中的偏移 | 指令符号 | 指令参数 | 实际参数值
  3. 根据上述字节码格式以及文件内容开始手搓源码

    1.



    LOAD_CONST:载入常量

    STORE_NAME:根据名称存入指定变量

    翻译成源码为keys1 = "welcome_to_qsnctf_u_will_have_a_good_time!"

    2.



    BUILD_LIST:创建列表

    翻译成源码为keys2 = [6, 22, 2, 0, 27, 11, 30, 109, 76, 86, 106, 92, 17, 15, 6, 76, 94, 102, 23, 105, 70, 68, 84, 85, 104, 12, 89, 79, 82, 62, 4, 108, 3, 66, 91, 84, 59, 18, 93, 9, 3, 92]

    3.



    翻译成源码为flag=""

    4.



    SETUP_LOOP:开启循环

    CALL_FUNCTION:启用函数

    GET_ITER:获取参数

    FOR_ITER:迭代参数

    翻译成源码为for i in range(0, len(keys1)):

    5.



    BINARY_SUBSCR:设置下标

    BINARY_XOR:异或运算

    INPLACE_ADD:加法赋值,+=运算

    JUMP_ABSOLUTE:回到循环起点

    POP_BLOCK:弹出循环块

    翻译成源码为flag += chr(ord(keys1[i]) ^ keys2[i] ^ keys2[i] ^ keys2[i] ^ keys2[i] ^ keys2[i])

    6.



    LOAD_NAME:根据名称载入指定变量

    PRINT_ITEM:输出参数

    PRINT_NEWLINE:输出换行

    RETURN_VALUE:返回指定值

    翻译成源码为print(flag)
  4. 根据上述过程总结源码如下:
keys1 = "welcome_to_qsnctf_u_will_have_a_good_time!"
keys2 = [6, 22, 2, 0, 27, 11, 30, 109, 76, 86, 106, 92, 17, 15, 6, 76, 94, 102, 23, 105, 70, 68, 84, 85, 104, 12, 89, 79, 82, 62, 4, 108, 3, 66, 91, 84, 59, 18, 93, 9, 3, 92]
flag = ""
for i in range(0, len(keys1)):
flag += chr(ord(keys1[i]) ^ keys2[i] ^ keys2[i] ^ keys2[i] ^ keys2[i] ^ keys2[i])
print(flag)
  1. 执行该程序,输出结果即是 flag

-End-

随机推荐

  1. 解密Spring中的Bean实例化:推断构造方法(上)

    在Spring中,一个bean需要通过实例化来获取一个对象,而实例化的过程涉及到构造方法的调用.本文将主要探讨简单的构造推断和实例化过程,让我们首先深入了解实例化的步骤. 实例化源码 protecte ...

  2. BeanShell Sampler 前置处理器

    一概念: 前置处理器主要作用: 用于修改即将发送的http的请求数据 BeanShell预处理器可以在取样器发送请求之前被执行,可以通过它完成发送请求所需的数据 其中的ctx.vars.props.p ...

  3. SpringCloud Hystrix断路器的基本使用

    官网资料: https://github.com/Netflix/Hystrix/wiki/How-To-Use 1. 服务雪崩 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系, ...

  4. 并发操作导致的BUG-解决方案

    一.问题由来 上周五项目发布新版本之后,生产环境一直没有出现什么问题,大家也都开开心心,平平安安的开始新需求的开发. 可是刚稳定运行没几天,负责人突然在群里面发了一个截图,从图片中的信息可以看到,有一 ...

  5. 单词本z ambition 雄心 amb = ab = about = around = 环绕

    ambition 雄心 amb = ab = about = around = 环绕 it = go = 走 ion 名词 重点是 amb 环绕 这里是抽象含义 表示内心向外扩展 所以是雄心 ambu ...

  6. 二进制文件分析工具-hexdump使用指南

    一 概念: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII.八进制.十进制.十六进制 格式进行 查看. 二 用法简介: 该工具的用法十分简单,具体如下所示: ...

  7. springboot实现post请求

    找了一堆,发现还是这个靠谱 package com.qishiyun.poplar.qlib.util; import cn.hutool.json.JSONUtil; import com.alib ...

  8. RTP网络包提取码流方法

    1.工具wireshark,官网最新的版本没有保存按键,建议使用3.4 链接:https://pan.baidu.com/s/1VHSGgojZPNtzyzV6RMVjkw 提取码:q51a 2.wi ...

  9. 聊聊ChatGLM-6B医疗数据微调

    转载请注明出处: https://www.cnblogs.com/zhiyong-ITNote/ 参考了多个医疗大模型,如扁鹊.灵心等,重新思考了下微调的方案以及数据集的格式:基于ChatGLM/其它 ...

  10. 从零开始写 Docker(八)---实现 mydocker run -d 支持后台运行容器

    本文为从零开始写 Docker 系列第八篇,实现类似 docker run -d 的功能,使得容器能够后台运行. 完整代码见:https://github.com/lixd/mydocker 欢迎 S ...