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. Vue3学习(二十一)- 文档管理页面布局修改

    写在前面 按照国际惯例,要先聊下生活,吐槽一番,今天是2月14日,也是下午听老妈说,我才知道! 现在真的是对日期节日已经毫无概念可言,只知道星期几. 现在已经觉得写博客也好,学习文章也罢,和写日记一样 ...

  2. mysql-对应删除 dict 脚本

    -- 1. 此 dict 是在不同租户下的数据字典,查询时需要根据 departid 进行分类查询 -- 2. 删除dict, dict分类主表类型与挂载的子表数据 -- 3. 通过查询到的主表的 g ...

  3. js收藏网页功能,纠正网上乱转没求证的案例

    网站一般流行以下收藏代码 function AddFavorite(title, url){ try{ //ie收藏 window.external.addFavorite(url, title); ...

  4. mainWindow = new BrowserWindow 打开慢的原因 electron 已解决 Windows Defender 拦截导致

    Windows Defender 导致拦截 不是变量的事儿 解决方案: win10 开始 设置 - windows 安全中心 - 病毒和威胁防护 - 病毒和威胁防护设置 - 排除项 - 添加排除项 将 ...

  5. http-server -S 开启 https 服务

    下载 openssl Win64 OpenSSL v1.1.1k Light http://slproweb.com/download/Win64OpenSSL_Light-1_1_1k.exe 一路 ...

  6. 已安装docker-compose,安装harbor时还是提示docker-compose未安装或者Permission denied的解决方案

    安装Harbor时,下载安装了docker-compose并赋予权限 sudo curl -L "https://github.com/docker/compose/releases/dow ...

  7. Docker 仓库国内镜像源

    1.仓库镜像对应表 原始 镜像 docker.io ***.mirror.aliyuncs.com(点进去登录查看) hub-mirror.c.163.com dockerproxy.com quay ...

  8. StableSwarmUI:功能强大且易于使用的Stable Diffusion WebUI

    StableSwarmUI是一个模块化和可定制的Stable Diffusion WebUI,最近发布了0.6.1-Beta版本.这个开源项目,托管在GitHub上:https://github.co ...

  9. [MySQL]细节、经验

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/129922615 出自[进步* ...

  10. BWO白鲸优化算法

    白鲸算法 ​ 白鲸算法(BWO)是一种新的元启发式算法,是一种基于群体的算法,其灵感来自于白鲸的行为,包括游泳,猎物和鲸落.在BWO的数学模型中构建了勘探,开发和鲸落阶段,并在开发阶段利用Levy飞行 ...