exe,pyinstaller解包,
把login.pyc的010第一行换成struct.pyc的010
# 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}