首页 > 编程语言 >攻防世界-难度1- bad_python

攻防世界-难度1- bad_python

时间:2024-04-27 23:56:10浏览次数:22  
标签:__ 攻防 python flag sum1 v0 v1 bad value

the .pyc is broken ,can you help me recover?

攻防世界难度1-bad_python

python头部

观察文件名pyre.cpython-36.pyc,说明是在python3.6环境下编译的,那么需要恢复正常pyc3.6对应的首部16字节。

uncompyle6

pip3 install uncompyle6
uncompyle6 --version
uncompyle6 pyre.cpython-36.pyc >main.py
pip install pycryptodome	

对称加密-TEA变种算法

这里是对称加密,密钥、密文、加密算法已知,只要根据逆加密算法配合密钥就能将密文还原回去

from ctypes import *
from Crypto.Util.number import bytes_to_long
from Crypto.Util.number import long_to_bytes


def decrypt(v, k):
    v0 = c_uint32(v[0])
    v1 = c_uint32(v[1])
    sum1 = c_uint32(195935983 * 32)
    delta = 195935983
    for i in range(32):
        v1.value -= (v0.value << 4 ^ v0.value >> 7) + v0.value ^ sum1.value + k[sum1.value >> 9 & 3]
        sum1.value -= delta
        v0.value -= (v1.value << 4 ^ v1.value >> 7) + v1.value ^ sum1.value + k[sum1.value & 3]

    return (v0.value, v1.value)

if __name__ == '__main__':
    enc = [4006073346, 2582197823, 2235293281, 558171287, 2425328816, 1715140098, 986348143, 1948615354]
    k = [255, 187, 51, 68]
    decrypted = []
    for i in range(0, len(enc), 2):
        decrypted += decrypt([enc[i], enc[i + 1]], k)
    flag = ""
    for num in decrypted:
        flag += long_to_bytes(num).decode("ascii")
    print("flag is flag{%s}" % flag)

flag{Th1s_1s_A_Easy_Pyth0n__R3veRse_0}

标签:__,攻防,python,flag,sum1,v0,v1,bad,value
From: https://www.cnblogs.com/Rainy-Day/p/18162824

相关文章

  • python题
    【Python0002】排列组合序列【题目描述】用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。【源代码程序】importitertools defgenerate_permutations_combinations(letters,m):    #生成......
  • python下载和扩展文件下载
    (三)、练习安装Python扩展库【实验截图】1、在资源管理器中进入Python安装目录的scripts子目录,然后按下Shift键,在空白处单击鼠标右键,在弹出来的菜单中选择“在此处打开命令窗口”进入命令提示符环境   2.使用pip命令在线安装Python扩展库numpy、pandas、scipy......
  • blender python api 将指定的顶点组(water)转换为颜色属性water_colors
    1.选中物体,进入权重绘制模式2.代码:importbpy#获取当前活动的物体obj=bpy.context.object#确保物体是网格类型ifobj.type!='MESH':print("当前激活的对象不是网格类型。")#exit()#使用exit()来提前退出脚本#获取名为“water”的顶点组vertex_gro......
  • blender python api 获取所有顶点组并将各自的顶点组转换为对应的颜色属性
    1.选中物体,进入权重绘制模式2.代码importbpy#获取当前活动的物体obj=bpy.context.object#确保物体是网格类型ifobj.type!='MESH':print("当前激活的对象不是网格类型。")#exit()#遍历所有顶点组forvg_nameinobj.vertex_groups.keys():#获......
  • python 如何动态加载lib中的函数
    classTestInstance:def__init__(self):#初始化库字典,存放找到的库self.lib=Proxy()#使用一个代理对象来模拟层级结构classProxy:def__init__(self):self._libObjectDictCache={}def_getLibInstance(self,l......
  • python虚拟环境
    主要是解决自己的一些疑问:1、python的虚拟环境其实就是对我们真实安装python的另一份。2、当我们在pip时,我们经常只会安装一个包,但是却经常要安装依赖包,再删除时却只会删除我们安装的那个包,其它依赖包留了下来,这样就不好对包进行管理,下次我们安装相同包的不同版本时,就会出现目标......
  • python库使用总结
    python库的使用1:print(补充)2:math2.1:math库包括的4个数学常数2.2math库中的函数幂对数函数三角曲线函数3:字符串处理函数补充:sorted(str)对字符串中的元素进行排序,返回排序后的列表,而不是字符串​ reversed(str)对字符串中的元素反向输出3.1字符串......
  • python学习思维导图分享
    python本文包含了我的一些python学习的笔记和思维导图第一部分:python基础导图下载链接第二部分:函数及其他文件操作导图下载链接第三部分:类及网络编程导图下载链接第四部分:mysql导图下载链接......
  • 深入理解Python协程:从基础到实战
    title:深入理解Python协程:从基础到实战date:2024/4/2716:48:43updated:2024/4/2716:48:43categories:后端开发tags:协程异步IO并发编程Pythonaiohttpasyncio网络爬虫第1章:协程基础1.1协程概念介绍协程(Coroutines)是一种特殊的软件构造,它允许程序在执......
  • Go的Gin框架中使用Cgo调用Python的CApi调用Python代码
    在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库packagecpython//#cgoCFLAGS:-I"Q:/Sill-/anaconda/envs/poetry/include"//#cgoLDFLAGS:-L"Q:/Sill-/anaconda/envs/poetry/libs"-lpython311//#include<Python.h>imp......