[羊城杯 2020]login-入土为安的第二十二天

exe,pyinstaller解包,

把login.pyc的010第一行换成struct.pyc的010

pyc在线反编译

# Visit https://www.lddgo.net/string/pyc-compile-decompile for more information
# Version : Python 3.6

import sys
input1 = input('input something:')
if len(input1) != 14:
    print('Wrong length!')
    sys.exit()
code = []
for i in range(13):
    code.append(ord(input1[i]) ^ ord(input1[i + 1]))

code.append(ord(input1[13]))
a1 = code[2]
a2 = code[1]
a3 = code[0]
a4 = code[3]
a5 = code[4]
a6 = code[5]
a7 = code[6]
a8 = code[7]
a9 = code[9]
a10 = code[8]
a11 = code[10]
a12 = code[11]
a13 = code[12]
a14 = code[13]
if ((((a1 * 88 + a2 * 67 + a3 * 65 - a4 * 5) + a5 * 43 + a6 * 89 + a7 * 25 + a8 * 13 - a9 * 36) + a10 * 15 + a11 * 11 + a12 * 47 - a13 * 60) + a14 * 29 == 22748) & ((((a1 * 89 + a2 * 7 + a3 * 12 - a4 * 25) + a5 * 41 + a6 * 23 + a7 * 20 - a8 * 66) + a9 * 31 + a10 * 8 + a11 * 2 - a12 * 41 - a13 * 39) + a14 * 17 == 7258) & ((((a1 * 28 + a2 * 35 + a3 * 16 - a4 * 65) + a5 * 53 + a6 * 39 + a7 * 27 + a8 * 15 - a9 * 33) + a10 * 13 + a11 * 101 + a12 * 90 - a13 * 34) + a14 * 23 == 26190) & ((((a1 * 23 + a2 * 34 + a3 * 35 - a4 * 59) + a5 * 49 + a6 * 81 + a7 * 25 + (a8 << 7) - a9 * 32) + a10 * 75 + a11 * 81 + a12 * 47 - a13 * 60) + a14 * 29 == 37136) & (((a1 * 38 + a2 * 97 + a3 * 35 - a4 * 52) + a5 * 42 + a6 * 79 + a7 * 90 + a8 * 23 - a9 * 36) + a10 * 57 + a11 * 81 + a12 * 42 - a13 * 62 - a14 * 11 == 27915) & ((((a1 * 22 + a2 * 27 + a3 * 35 - a4 * 45) + a5 * 47 + a6 * 49 + a7 * 29 + a8 * 18 - a9 * 26) + a10 * 35 + a11 * 41 + a12 * 40 - a13 * 61) + a14 * 28 == 17298) & ((((a1 * 12 + a2 * 45 + a3 * 35 - a4 * 9 - a5 * 42) + a6 * 86 + a7 * 23 + a8 * 85 - a9 * 47) + a10 * 34 + a11 * 76 + a12 * 43 - a13 * 44) + a14 * 65 == 19875) & (((a1 * 79 + a2 * 62 + a3 * 35 - a4 * 85) + a5 * 33 + a6 * 79 + a7 * 86 + a8 * 14 - a9 * 30) + a10 * 25 + a11 * 11 + a12 * 57 - a13 * 50 - a14 * 9 == 22784) & ((((a1 * 8 + a2 * 6 + a3 * 64 - a4 * 85) + a5 * 73 + a6 * 29 + a7 * 2 + a8 * 23 - a9 * 36) + a10 * 5 + a11 * 2 + a12 * 47 - a13 * 64) + a14 * 27 == 9710) & (((((a1 * 67 - a2 * 68) + a3 * 68 - a4 * 51 - a5 * 43) + a6 * 81 + a7 * 22 - a8 * 12 - a9 * 38) + a10 * 75 + a11 * 41 + a12 * 27 - a13 * 52) + a14 * 31 == 13376) & ((((a1 * 85 + a2 * 63 + a3 * 5 - a4 * 51) + a5 * 44 + a6 * 36 + a7 * 28 + a8 * 15 - a9 * 6) + a10 * 45 + a11 * 31 + a12 * 7 - a13 * 67) + a14 * 78 == 24065) & ((((a1 * 47 + a2 * 64 + a3 * 66 - a4 * 5) + a5 * 43 + a6 * 112 + a7 * 25 + a8 * 13 - a9 * 35) + a10 * 95 + a11 * 21 + a12 * 43 - a13 * 61) + a14 * 20 == 27687) & (((a1 * 89 + a2 * 67 + a3 * 85 - a4 * 25) + a5 * 49 + a6 * 89 + a7 * 23 + a8 * 56 - a9 * 92) + a10 * 14 + a11 * 89 + a12 * 47 - a13 * 61 - a14 * 29 == 29250) & (((a1 * 95 + a2 * 34 + a3 * 62 - a4 * 9 - a5 * 43) + a6 * 83 + a7 * 25 + a8 * 12 - a9 * 36) + a10 * 16 + a11 * 51 + a12 * 47 - a13 * 60 - a14 * 24 == 15317):
    print('flag is GWHT{md5(your_input)}')
    print('Congratulations and have fun!')
else:
    print('Sorry,plz try again...')

exp

import hashlib
from z3 import *

# 定义变量
vars = [Int(f'a{i}') for i in range(1, 15)]

# 创建求解器
s = Solver()

# 添加约束
constraints = [
    vars[0] * 88 + vars[1] * 67 + vars[2] * 65 - vars[3] * 5 + vars[4] * 43 + vars[5] * 89 + vars[6] * 25 + vars[
        7] * 13 - vars[8] * 36 + vars[9] * 15 + vars[10] * 11 + vars[11] * 47 - vars[12] * 60 + vars[13] * 29 == 22748,
    vars[0] * 89 + vars[1] * 7 + vars[2] * 12 - vars[3] * 25 + vars[4] * 41 + vars[5] * 23 + vars[6] * 20 - vars[
        7] * 66 + vars[8] * 31 + vars[9] * 8 + vars[10] * 2 - vars[11] * 41 - vars[12] * 39 + vars[13] * 17 == 7258,
    vars[0] * 28 + vars[1] * 35 + vars[2] * 16 - vars[3] * 65 + vars[4] * 53 + vars[5] * 39 + vars[6] * 27 + vars[
        7] * 15 - vars[8] * 33 + vars[9] * 13 + vars[10] * 101 + vars[11] * 90 - vars[12] * 34 + vars[13] * 23 == 26190,
    vars[0] * 23 + vars[1] * 34 + vars[2] * 35 - vars[3] * 59 + vars[4] * 49 + vars[5] * 81 + vars[6] * 25 + vars[
        7] * 128 - vars[8] * 32 + vars[9] * 75 + vars[10] * 81 + vars[11] * 47 - vars[12] * 60 + vars[13] * 29 == 37136,
    vars[0] * 38 + vars[1] * 97 + vars[2] * 35 - vars[3] * 52 + vars[4] * 42 + vars[5] * 79 + vars[6] * 90 + vars[
        7] * 23 - vars[8] * 36 + vars[9] * 57 + vars[10] * 81 + vars[11] * 42 - vars[12] * 62 - vars[13] * 11 == 27915,
    vars[0] * 22 + vars[1] * 27 + vars[2] * 35 - vars[3] * 45 + vars[4] * 47 + vars[5] * 49 + vars[6] * 29 + vars[
        7] * 18 - vars[8] * 26 + vars[9] * 35 + vars[10] * 41 + vars[11] * 40 - vars[12] * 61 + vars[13] * 28 == 17298,
    vars[0] * 12 + vars[1] * 45 + vars[2] * 35 - vars[3] * 9 - vars[4] * 42 + vars[5] * 86 + vars[6] * 23 + vars[
        7] * 85 - vars[8] * 47 + vars[9] * 34 + vars[10] * 76 + vars[11] * 43 - vars[12] * 44 + vars[13] * 65 == 19875,
    vars[0] * 79 + vars[1] * 62 + vars[2] * 35 - vars[3] * 85 + vars[4] * 33 + vars[5] * 79 + vars[6] * 86 + vars[
        7] * 14 - vars[8] * 30 + vars[9] * 25 + vars[10] * 11 + vars[11] * 57 - vars[12] * 50 - vars[13] * 9 == 22784,
    vars[0] * 8 + vars[1] * 6 + vars[2] * 64 - vars[3] * 85 + vars[4] * 73 + vars[5] * 29 + vars[6] * 2 + vars[7] * 23 -
    vars[8] * 36 + vars[9] * 5 + vars[10] * 2 + vars[11] * 47 - vars[12] * 64 + vars[13] * 27 == 9710,
    vars[0] * 67 - vars[1] * 68 + vars[2] * 68 - vars[3] * 51 - vars[4] * 43 + vars[5] * 81 + vars[6] * 22 - vars[
        7] * 12 - vars[8] * 38 + vars[9] * 75 + vars[10] * 41 + vars[11] * 27 - vars[12] * 52 + vars[13] * 31 == 13376,
    vars[0] * 85 + vars[1] * 63 + vars[2] * 5 - vars[3] * 51 + vars[4] * 44 + vars[5] * 36 + vars[6] * 28 + vars[
        7] * 15 - vars[8] * 6 + vars[9] * 45 + vars[10] * 31 + vars[11] * 7 - vars[12] * 67 + vars[13] * 78 == 24065,
    vars[0] * 47 + vars[1] * 64 + vars[2] * 66 - vars[3] * 5 + vars[4] * 43 + vars[5] * 112 + vars[6] * 25 + vars[
        7] * 13 - vars[8] * 35 + vars[9] * 95 + vars[10] * 21 + vars[11] * 43 - vars[12] * 61 + vars[13] * 20 == 27687,
    vars[0] * 89 + vars[1] * 67 + vars[2] * 85 - vars[3] * 25 + vars[4] * 49 + vars[5] * 89 + vars[6] * 23 + vars[
        7] * 56 - vars[8] * 92 + vars[9] * 14 + vars[10] * 89 + vars[11] * 47 - vars[12] * 61 - vars[13] * 29 == 29250,
    vars[0] * 95 + vars[1] * 34 + vars[2] * 62 - vars[3] * 9 - vars[4] * 43 + vars[5] * 83 + vars[6] * 25 + vars[
        7] * 12 - vars[8] * 36 + vars[9] * 16 + vars[10] * 51 + vars[11] * 47 - vars[12] * 60 - vars[13] * 24 == 15317
]

s.add(*constraints)

# 检查求解器
if s.check() == sat:
    model = s.model()
    # 已知的变量值
    s_values = [119, 24, 10, 7, 104, 43, 28, 91, 52, 108, 88, 74, 88, 33]
    index = [2, 1, 0, 3, 4, 5, 6, 7, 9, 8, 10, 11, 12, 13]
    data = [0] * 14
    flag = ''

    # 重排并处理数据
    for i in range(len(index)):
        data[i] = s_values[index[i]]
    for i in range(len(data) - 2, -1, -1):
        data[i] ^= data[i + 1]
    for i in range(len(data)):
        flag += chr(data[i])

    # 计算 MD5 哈希值
    md5_hash = hashlib.md5(flag.encode('utf-8')).hexdigest()
    print(f'flag{{{md5_hash}}}')
//flag{58964088b637e50d3a22b9510c1d1ef8}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值