TypechoJoeTheme

霍雅的博客

登录
用户名
密码
/
注册
用户名
邮箱

霍雅

追求源于热爱,极致源于梦想!
网站页面
文章目录

2025羊城杯初赛re 完整wp

2025-10-14
/
0 评论
/
311 阅读
/
正在检测是否收录...
10/14

ez_py

先用pyinstxtractor解包exe
然后尝试反编译pyc
但是用了在线网站会少东西

# Decompiled with PyLingual (https://pylingual.io)

# Internal filename: key.py

# Bytecode version: 3.13.0rc3 (3571)

# Source timestamp: 1970-01-01 00:00:00 UTC (0)

  

import ast

import types

import sys

o0o0o0 = [105084753, 3212558540, 351342182, 844102737, 2002504052, 356536456, 2463183122, 615034880, 1156203296]

  

def changli(o0o0o1, o0o0o2, o0o0o3):

    o0o0o4 = 2269471011

    o0o0o5 = o0o0o3 & 4294967295

    o0o0o6 = (o0o0o3 >> 8 ^ 305419896) & 4294967295

    o0o0o7 = (o0o0o3 << 4 ^ 2271560481) & 4294967295

    o0o0o8 = (o0o0o3 >> 12 ^ 2882400000) & 4294967295

    o0o0o9 = o0o0o1 & 4294967295

    o0o0o10 = o0o0o2 & 4294967295

    o0o0o11 = 0

    for _ in range(32):

        o0o0o11 = o0o0o11 + o0o0o4 & 4294967295

        o0o0o9 = o0o0o9 + ((o0o0o10 << 4) + o0o0o5 ^ o0o0o10 + o0o0o11 ^ (o0o0o10 >> 4) + o0o0o6) & 4294967295

        o0o0o10 = o0o0o10 + ((o0o0o9 << 4) + o0o0o7 ^ o0o0o9 + o0o0o11 ^ (o0o0o9 >> 4) + o0o0o8) & 4294967295

    return (o0o0o9, o0o0o10)

  

def Shorekeeper(o0o0o12):

    o0o0o13 = o0o0o12 >> 16

    o0o0o14 = o0o0o12 & 65535

    return (o0o0o13, o0o0o14)

  

def Kathysia(o0o0o15, o0o0o16):

    return o0o0o15 << 16 | o0o0o16 + 0

  

def Phrolova(o0o0o17):

    o0oA = 'Carlotta'

    o0oB = ['o0oC', 'o0oD', 'o0oE', 'o0oF']

    o0oG = []

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oH', ctx=ast.Store())], value=ast.Constant(305419896)))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oI', ctx=ast.Store())], value=ast.BinOp(ast.Name(id='o0oE', ctx=ast.Load()), ast.BitAnd(), ast.Constant(65535))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oJ', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oE', ctx=ast.Load()), ast.RShift(), ast.Constant(16)), ast.BitAnd(), ast.Constant(65535))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oK', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oE', ctx=ast.Load()), ast.BitXor(), ast.Name(id='o0oF', ctx=ast.Load())), ast.BitAnd(), ast.Constant(65535))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oL', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oE', ctx=ast.Load()), ast.RShift(), ast.Constant(8)), ast.BitXor(), ast.Name(id='o0oF', ctx=ast.Load())), ast.BitAnd(), ast.Constant(65535)))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oM', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oH', ctx=ast.Load()), ast.Mult(), ast.BinOp(ast.Name(id='o0oF', ctx=ast.Load()), ast.Add(), ast.Constant(1))), ast.BitAnd(), ast.Constant(4294967295))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oN', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.BinOp(ast.Name(id='o0oD', ctx=ast.Load()), ast.LShift(), ast.Constant(5)), ast.Add(), ast.Add(), ast.Constant(5)), ast.Add(), ast.Name(id='o0oJ', ctx=ast.Load()))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oP', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oC', ctx=ast.Load()), ast.Add(), ast.Name(id='o0oN', ctx=ast.Load())), ast.BitAnd(), ast.Constant(65535))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oN', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.BinOp(ast.Name(id='o0oP', ctx=ast.Load()), ast.LShift(), ast.Constant(5)), ast.Add(), ast.Add(), ast.Constant(5)), ast.Add(), ast.Name(id='o0oL', ctx=ast.Load()))))

    o0oG.append(ast.Assign(targets=[ast.Name(id='o0oQ', ctx=ast.Store())], value=ast.BinOp(ast.BinOp(ast.Name(id='o0oD', ctx=ast.Load()), ast.Add(), ast.Name(id='o0oN', ctx=ast.Load())), ast.BitAnd(), ast.Constant(65535))))

    o0oG.append(ast.Return(ast.Tuple(elts=[ast.Name(id='o0oP', ctx=ast.Load()), ast.Name(id='o0oQ', ctx=ast.Load())], ctx=ast.Load())))

    o0oU = ast.FunctionDef(name=o0oA, args=ast.arguments(posonlyargs=[], args=[ast.arg(arg=a) for a in o0oB], kwonlyargs=[], kw_defaults=[], defaults=[]), body=o0oG, decorator_list=[])

    o0oV = ast.parse('\ndef _tea_helper_func(a, b, c):\n    magic1 = (a ^ b) & 0xDEADBEEF\n    magic2 = (c << 3) | (a >> 5)\n    return (magic1 + magic2 - (b & 0xCAFEBABE)) & 0xFFFFFFFF\n\ndef _fake_tea_round(x, y):\n    return ((x * 0x9E3779B9) ^ (y + 0x12345678)) & 0xFFFFFFFF\n\n_tea_magic_delta = 0x9E3779B9 ^ 0x12345678\n_tea_dummy_keys = [0x1111, 0x2222, 0x3333, 0x4444]\n').body

    o0oW = ast.Module(body=[o0oU] + o0oV, type_ignores=[])

    ast.fix_missing_locations(o0oW)

    o0oX = compile(o0oW, filename='<tea_obf_ast>', mode='exec')

    o0oY = {}

    exec(o0oX, o0oY)

    if o0oA in o0oY:

        o0o0o17[o0oA] = o0oY[o0oA]

    return None

Phrolova(globals())

  

def shouan(o0o0o32):

    raise ValueError('需要输入9个key') if len(o0o0o32)!= 9 else None

  

def jinhsi():

    print('请输入9个数字:')

    try:

        o0o0o46 = input().strip()

        if ',' in o0o0o46:

            o0o0o42 = o0o0o46.split(',')

        if len(o0o0o42)!= 9:

            print('错误: 需要输入9个数')

        return None

    except Exception as o0o0o47:

        print(f'发生错误: {o0o0o47}')

if __name__ == '__main__':

    jinhsi()

所以我们要看字节码
使用xdis

# pydisasm version 6.1.3
# Python bytecode 3.13.0 (3571)
# Disassembled from Python 3.12.3 (tags/v3.12.3:f6650f9, Apr  9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)]
# Timestamp in code: 0 (1970-01-01 08:00:00)
# Source code size mod 2**32: 0 bytes
# Method Name:       <module>
# Filename:          key.py
# Argument count:    0
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  0
# Stack size:        4
# Flags:             0x00000000 (0x0)
# First Line:        1
# Constants:
#    0: 0
#    1: None
#    2: (105084753, 3212558540L, 351342182, 844102737, 2002504052, 356536456, 2463183122L, 615034880, 1156203296)
#    3: <Code311 code object changli at 0x228b3e9b740, file key.py>, line 8
#    4: <Code311 code object Shorekeeper at 0x228b44667e0, file key.py>, line 27
#    5: <Code311 code object Kathysia at 0x228b3e98f80, file key.py>, line 32
#    6: <Code311 code object Phrolova at 0x228b4467380, file key.py>, line 35
#    7: <Code311 code object shouan at 0x228b4467590, file key.py>, line 202
#    8: <Code311 code object jinhsi at 0x228b4467920, file key.py>, line 222
#    9: '__main__'
# Names:
#    0: ast
#    1: types
#    2: sys
#    3: o0o0o0
#    4: changli
#    5: Shorekeeper
#    6: Kathysia
#    7: Phrolova
#    8: globals
#    9: shouan
#   10: jinhsi
#   11: __name__
  0:           0 RESUME               0

  1:           2 LOAD_CONST           (0)
               4 LOAD_CONST           (None)
               6 IMPORT_NAME          (ast)
               8 STORE_NAME           (ast)

  2:          10 LOAD_CONST           (0)
              12 LOAD_CONST           (None)
              14 IMPORT_NAME          (types)
              16 STORE_NAME           (types)

  3:          18 LOAD_CONST           (0)
              20 LOAD_CONST           (None)
              22 IMPORT_NAME          (sys)
              24 STORE_NAME           (sys)

  6:          26 BUILD_LIST           0
              28 LOAD_CONST           ((105084753, 3212558540L, 351342182, 844102737, 2002504052, 356536456, 2463183122L, 615034880, 1156203296))
              30 LIST_EXTEND          1
              32 STORE_NAME           (o0o0o0)

  8:          34 LOAD_CONST           (<Code311 code object changli at 0x228b3e9b740, file key.py>, line 8)
              36 MAKE_FUNCTION
              38 STORE_NAME           (changli)

 27:          40 LOAD_CONST           (<Code311 code object Shorekeeper at 0x228b44667e0, file key.py>, line 27)
              42 MAKE_FUNCTION
              44 STORE_NAME           (Shorekeeper)

 32:          46 LOAD_CONST           (<Code311 code object Kathysia at 0x228b3e98f80, file key.py>, line 32)
              48 MAKE_FUNCTION
              50 STORE_NAME           (Kathysia)

 35:          52 LOAD_CONST           (<Code311 code object Phrolova at 0x228b4467380, file key.py>, line 35)
              54 MAKE_FUNCTION
              56 STORE_NAME           (Phrolova)

200:          58 LOAD_NAME            (Phrolova)
              60 PUSH_NULL
              62 LOAD_NAME            (globals)
              64 PUSH_NULL
              66 CALL                 0
              74 CALL                 1
              82 POP_TOP

202:          84 LOAD_CONST           (<Code311 code object shouan at 0x228b4467590, file key.py>, line 202)
              86 MAKE_FUNCTION
              88 STORE_NAME           (shouan)

222:          90 LOAD_CONST           (<Code311 code object jinhsi at 0x228b4467920, file key.py>, line 222)
              92 MAKE_FUNCTION
              94 STORE_NAME           (jinhsi)

257:          96 LOAD_NAME            (__name__)
              98 LOAD_CONST           ("__main__")
             100 COMPARE_OP           (==)
             104 POP_JUMP_IF_FALSE    (to 124)

258:         108 LOAD_NAME            (jinhsi)
             110 PUSH_NULL
             112 CALL                 0
             120 POP_TOP
             122 RETURN_CONST         (None)

257:     >>  124 RETURN_CONST         (None)


# Method Name:       changli
# Filename:          key.py
# Argument count:    3
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  12
# Stack size:        5
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        8
# Constants:
#    0: None
#    1: 2269471011L
#    2: 4294967295L
#    3: 8
#    4: 305419896
#    5: 4
#    6: 2271560481L
#    7: 12
#    8: 2882400000L
#    9: 0
#   10: 32
# Names:
#    0: range
# Varnames:
#    o0o0o1, o0o0o2, o0o0o3, o0o0o4, o0o0o5, o0o0o6, o0o0o7, o0o0o8, o0o0o9, o0o0o10, o0o0o11, _
# Positional arguments:
#    o0o0o1, o0o0o2, o0o0o3
# Local variables:
#    3: o0o0o4
#    4: o0o0o5
#    5: o0o0o6
#    6: o0o0o7
#    7: o0o0o8
#    8: o0o0o9
#    9: o0o0o10
#   10: o0o0o11
#   11: _
  8:           0 RESUME               0

 10:           2 LOAD_CONST           (2269471011L)
               4 STORE_FAST           (o0o0o4)

 11:           6 LOAD_FAST            (o0o0o3)
               8 LOAD_CONST           (4294967295L)
              10 BINARY_OP            (&)
              14 STORE_FAST           (o0o0o5)

 12:          16 LOAD_FAST            (o0o0o3)
              18 LOAD_CONST           (8)
              20 BINARY_OP            (>>)
              24 LOAD_CONST           (305419896)
              26 BINARY_OP            (^)
              30 LOAD_CONST           (4294967295L)
              32 BINARY_OP            (&)
              36 STORE_FAST           (o0o0o6)

 13:          38 LOAD_FAST            (o0o0o3)
              40 LOAD_CONST           (4)
              42 BINARY_OP            (<<)
              46 LOAD_CONST           (2271560481L)
              48 BINARY_OP            (^)
              52 LOAD_CONST           (4294967295L)
              54 BINARY_OP            (&)
              58 STORE_FAST           (o0o0o7)

 14:          60 LOAD_FAST            (o0o0o3)
              62 LOAD_CONST           (12)
              64 BINARY_OP            (>>)
              68 LOAD_CONST           (2882400000L)
              70 BINARY_OP            (^)
              74 LOAD_CONST           (4294967295L)
              76 BINARY_OP            (&)
              80 STORE_FAST           (o0o0o8)

 16:          82 LOAD_FAST            (o0o0o1)
              84 LOAD_CONST           (4294967295L)
              86 BINARY_OP            (&)
              90 STORE_FAST           (o0o0o9)

 17:          92 LOAD_FAST            (o0o0o2)
              94 LOAD_CONST           (4294967295L)
              96 BINARY_OP            (&)
             100 STORE_FAST           (o0o0o10)

 18:         102 LOAD_CONST           (0)
             104 STORE_FAST           (o0o0o11)

 20:         106 LOAD_GLOBAL          (NULL + range)
             116 LOAD_CONST           (32)
             118 CALL                 1
             126 GET_ITER
             128 FOR_ITER             (to 260)
             132 STORE_FAST           (_)

 21:         134 LOAD_FAST_LOAD_FAST  (o0o0o11, o0o0o4)
             136 BINARY_OP            (+)
             140 LOAD_CONST           (4294967295L)
             142 BINARY_OP            (&)
             146 STORE_FAST           (o0o0o11)

 22:         148 LOAD_FAST_LOAD_FAST  (o0o0o9, o0o0o10)
             150 LOAD_CONST           (4)
             152 BINARY_OP            (<<)
             156 LOAD_FAST            (o0o0o5)
             158 BINARY_OP            (+)
             162 LOAD_FAST_LOAD_FAST  (o0o0o10, o0o0o11)
             164 BINARY_OP            (+)
             168 BINARY_OP            (^)
             172 LOAD_FAST            (o0o0o10)
             174 LOAD_CONST           (4)
             176 BINARY_OP            (>>)
             180 LOAD_FAST            (o0o0o6)
             182 BINARY_OP            (+)
             186 BINARY_OP            (^)
             190 BINARY_OP            (+)
             194 LOAD_CONST           (4294967295L)
             196 BINARY_OP            (&)
             200 STORE_FAST           (o0o0o9)

 23:         202 LOAD_FAST_LOAD_FAST  (o0o0o10, o0o0o9)
             204 LOAD_CONST           (4)
             206 BINARY_OP            (<<)
             210 LOAD_FAST            (o0o0o7)
             212 BINARY_OP            (+)
             216 LOAD_FAST_LOAD_FAST  (o0o0o9, o0o0o11)
             218 BINARY_OP            (+)
             222 BINARY_OP            (^)
             226 LOAD_FAST            (o0o0o9)
             228 LOAD_CONST           (4)
             230 BINARY_OP            (>>)
             234 LOAD_FAST            (o0o0o8)
             236 BINARY_OP            (+)
             240 BINARY_OP            (^)
             244 BINARY_OP            (+)
             248 LOAD_CONST           (4294967295L)
             250 BINARY_OP            (&)
             254 STORE_FAST           (o0o0o10)
             256 JUMP_BACKWARD        (to 128)

 20:     >>  260 END_FOR
             262 POP_TOP

 25:         264 LOAD_FAST_LOAD_FAST  (o0o0o9, o0o0o10)
             266 BUILD_TUPLE          2
             268 RETURN_VALUE


# Method Name:       Shorekeeper
# Filename:          key.py
# Argument count:    1
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  3
# Stack size:        2
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        27
# Constants:
#    0: None
#    1: 16
#    2: 65535
# Varnames:
#    o0o0o12, o0o0o13, o0o0o14
# Positional arguments:
#    o0o0o12
# Local variables:
#    1: o0o0o13
#    2: o0o0o14
 27:           0 RESUME               0

 28:           2 LOAD_FAST            (o0o0o12)
               4 LOAD_CONST           (16)
               6 BINARY_OP            (>>)
              10 STORE_FAST           (o0o0o13)

 29:          12 LOAD_FAST            (o0o0o12)
              14 LOAD_CONST           (65535)
              16 BINARY_OP            (&)
              20 STORE_FAST           (o0o0o14)

 30:          22 LOAD_FAST_LOAD_FAST  (o0o0o13, o0o0o14)
              24 BUILD_TUPLE          2
              26 RETURN_VALUE


# Method Name:       Kathysia
# Filename:          key.py
# Argument count:    2
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  2
# Stack size:        3
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        32
# Constants:
#    0: None
#    1: 16
#    2: 0
# Varnames:
#    o0o0o15, o0o0o16
# Positional arguments:
#    o0o0o15, o0o0o16
 32:           0 RESUME               0

 33:           2 LOAD_FAST            (o0o0o15)
               4 LOAD_CONST           (16)
               6 BINARY_OP            (<<)
              10 LOAD_FAST            (o0o0o16)
              12 LOAD_CONST           (0)
              14 BINARY_OP            (+)
              18 BINARY_OP            (|)
              22 RETURN_VALUE


# Method Name:       Phrolova
# Filename:          key.py
# Argument count:    1
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  10
# Stack size:        20
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        35
# Constants:
#    0: None
#    1: 'Carlotta'
#    2: ('o0oC', 'o0oD', 'o0oE', 'o0oF')
#    3: 'o0oH'
#    4: ('id', 'ctx')
#    5: 305419896
#    6: ('targets', 'value')
#    7: 'o0oI'
#    8: 'o0oE'
#    9: 65535
#   10: 'o0oJ'
#   11: 16
#   12: 'o0oK'
#   13: 'o0oF'
#   14: 'o0oL'
#   15: 8
#   16: 'o0oM'
#   17: 1
#   18: 4294967295L
#   19: 'o0oN'
#   20: 'o0oD'
#   21: 5
#   22: 'o0oP'
#   23: 'o0oC'
#   24: 'o0oQ'
#   25: ('elts', 'ctx')
#   26: ('arg',)
#   27: ('posonlyargs', 'args', 'kwonlyargs', 'kw_defaults', 'defaults')
#   28: ('name', 'args', 'body', 'decorator_list')
#   29: '\ndef _tea_helper_func(a, b, c):\n    magic1 = (a ^ b) & 0xDEADBEEF\n    magic2 = (c << 3) | (a >> 5)\n    return (magic1 + magic2 - (b & 0xCAFEBABE)) & 0xFFFFFFFF\n\ndef _fake_tea_round(x, y):\n    return ((x * 0x9E3779B9) ^ (y + 0x12345678)) & 0xFFFFFFFF\n\n_tea_magic_delta = 0x9E3779B9 ^ 0x12345678\n_tea_dummy_keys = [0x1111, 0x2222, 0x3333, 0x4444]\n'
#   30: ('body', 'type_ignores')
#   31: '<tea_obf_ast>'
#   32: 'exec'
#   33: ('filename', 'mode')
# Names:
#    0: append
#    1: ast
#    2: Assign
#    3: Name
#    4: Store
#    5: Constant
#    6: BinOp
#    7: Load
#    8: BitAnd
#    9: RShift
#   10: BitXor
#   11: Mult
#   12: Add
#   13: LShift
#   14: Return
#   15: Tuple
#   16: FunctionDef
#   17: arguments
#   18: arg
#   19: parse
#   20: body
#   21: Module
#   22: fix_missing_locations
#   23: compile
#   24: exec
# Varnames:
#    o0o0o17, o0oA, o0oB, o0oG, a, o0oU, o0oV, o0oW, o0oX, o0oY
# Positional arguments:
#    o0o0o17
# Local variables:
#    1: o0oA
#    2: o0oB
#    3: o0oG
#    4: a
#    5: o0oU
#    6: o0oV
#    7: o0oW
#    8: o0oX
#    9: o0oY
 35:           0 RESUME               0

 37:           2 LOAD_CONST           ("Carlotta")
               4 STORE_FAST           (o0oA)

 38:           6 BUILD_LIST           0
               8 LOAD_CONST           (('o0oC', 'o0oD', 'o0oE', 'o0oF'))
              10 LIST_EXTEND          1
              12 STORE_FAST           (o0oB)

 39:          14 BUILD_LIST           0
              16 STORE_FAST           (o0oG)

 41:          18 LOAD_FAST            (o0oG)
              20 LOAD_ATTR            (NULL|self + append)
              40 LOAD_GLOBAL          (ast)
              50 LOAD_ATTR            (Assign)
              70 PUSH_NULL

 42:          72 LOAD_GLOBAL          (ast)
              82 LOAD_ATTR            (Name)
             102 PUSH_NULL
             104 LOAD_CONST           ("o0oH")
             106 LOAD_GLOBAL          (ast)
             116 LOAD_ATTR            (Store)
             136 PUSH_NULL
             138 CALL                 0
             146 LOAD_CONST           (('id', 'ctx'))
             148 CALL_KW              2
             150 BUILD_LIST           1

 43:         152 LOAD_GLOBAL          (ast)
             162 LOAD_ATTR            (Constant)
             182 PUSH_NULL
             184 LOAD_CONST           (305419896)
             186 CALL                 1

 41:         194 LOAD_CONST           (('targets', 'value'))
             196 CALL_KW              2
             198 CALL                 1
             206 POP_TOP

 46:         208 LOAD_FAST            (o0oG)
             210 LOAD_ATTR            (NULL|self + append)
             230 LOAD_GLOBAL          (ast)
             240 LOAD_ATTR            (Assign)
             260 PUSH_NULL

 47:         262 LOAD_GLOBAL          (ast)
             272 LOAD_ATTR            (Name)
             292 PUSH_NULL
             294 LOAD_CONST           ("o0oI")
             296 LOAD_GLOBAL          (ast)
             306 LOAD_ATTR            (Store)
             326 PUSH_NULL
             328 CALL                 0
             336 LOAD_CONST           (('id', 'ctx'))
             338 CALL_KW              2
             340 BUILD_LIST           1

 48:         342 LOAD_GLOBAL          (ast)
             352 LOAD_ATTR            (BinOp)
             372 PUSH_NULL
             374 LOAD_GLOBAL          (ast)
             384 LOAD_ATTR            (Name)
             404 PUSH_NULL
             406 LOAD_CONST           ("o0oE")
             408 LOAD_GLOBAL          (ast)
             418 LOAD_ATTR            (Load)
             438 PUSH_NULL
             440 CALL                 0
             448 LOAD_CONST           (('id', 'ctx'))
             450 CALL_KW              2
             452 LOAD_GLOBAL          (ast)
             462 LOAD_ATTR            (BitAnd)
             482 PUSH_NULL
             484 CALL                 0
             492 LOAD_GLOBAL          (ast)
             502 LOAD_ATTR            (Constant)
             522 PUSH_NULL
             524 LOAD_CONST           (65535)
             526 CALL                 1
             534 CALL                 3

 46:         542 LOAD_CONST           (('targets', 'value'))
             544 CALL_KW              2
             546 CALL                 1
             554 POP_TOP

 51:         556 LOAD_FAST            (o0oG)
             558 LOAD_ATTR            (NULL|self + append)
             578 LOAD_GLOBAL          (ast)
             588 LOAD_ATTR            (Assign)
             608 PUSH_NULL

 52:         610 LOAD_GLOBAL          (ast)
             620 LOAD_ATTR            (Name)
             640 PUSH_NULL
             642 LOAD_CONST           ("o0oJ")
             644 LOAD_GLOBAL          (ast)
             654 LOAD_ATTR            (Store)
             674 PUSH_NULL
             676 CALL                 0
             684 LOAD_CONST           (('id', 'ctx'))
             686 CALL_KW              2
             688 BUILD_LIST           1

 53:         690 LOAD_GLOBAL          (ast)
             700 LOAD_ATTR            (BinOp)
             720 PUSH_NULL

 54:         722 LOAD_GLOBAL          (ast)
             732 LOAD_ATTR            (BinOp)
             752 PUSH_NULL
             754 LOAD_GLOBAL          (ast)
             764 LOAD_ATTR            (Name)
             784 PUSH_NULL
             786 LOAD_CONST           ("o0oE")
             788 LOAD_GLOBAL          (ast)
             798 LOAD_ATTR            (Load)
             818 PUSH_NULL
             820 CALL                 0
             828 LOAD_CONST           (('id', 'ctx'))
             830 CALL_KW              2
             832 LOAD_GLOBAL          (ast)
             842 LOAD_ATTR            (RShift)
             862 PUSH_NULL
             864 CALL                 0
             872 LOAD_GLOBAL          (ast)
             882 LOAD_ATTR            (Constant)
             902 PUSH_NULL
             904 LOAD_CONST           (16)
             906 CALL                 1
             914 CALL                 3

 55:         922 LOAD_GLOBAL          (ast)
             932 LOAD_ATTR            (BitAnd)
             952 PUSH_NULL
             954 CALL                 0

 56:         962 LOAD_GLOBAL          (ast)
             972 LOAD_ATTR            (Constant)
             992 PUSH_NULL
             994 LOAD_CONST           (65535)
             996 CALL                 1

 53:        1004 CALL                 3

 51:        1012 LOAD_CONST           (('targets', 'value'))
            1014 CALL_KW              2
            1016 CALL                 1
            1024 POP_TOP

 60:        1026 LOAD_FAST            (o0oG)
            1028 LOAD_ATTR            (NULL|self + append)
            1048 LOAD_GLOBAL          (ast)
            1058 LOAD_ATTR            (Assign)
            1078 PUSH_NULL

 61:        1080 LOAD_GLOBAL          (ast)
            1090 LOAD_ATTR            (Name)
            1110 PUSH_NULL
            1112 LOAD_CONST           ("o0oK")
            1114 LOAD_GLOBAL          (ast)
            1124 LOAD_ATTR            (Store)
            1144 PUSH_NULL
            1146 CALL                 0
            1154 LOAD_CONST           (('id', 'ctx'))
            1156 CALL_KW              2
            1158 BUILD_LIST           1

 62:        1160 LOAD_GLOBAL          (ast)
            1170 LOAD_ATTR            (BinOp)
            1190 PUSH_NULL

 63:        1192 LOAD_GLOBAL          (ast)
            1202 LOAD_ATTR            (BinOp)
            1222 PUSH_NULL
            1224 LOAD_GLOBAL          (ast)
            1234 LOAD_ATTR            (Name)
            1254 PUSH_NULL
            1256 LOAD_CONST           ("o0oE")
            1258 LOAD_GLOBAL          (ast)
            1268 LOAD_ATTR            (Load)
            1288 PUSH_NULL
            1290 CALL                 0
            1298 LOAD_CONST           (('id', 'ctx'))
            1300 CALL_KW              2
            1302 LOAD_GLOBAL          (ast)
            1312 LOAD_ATTR            (BitXor)
            1332 PUSH_NULL
            1334 CALL                 0
            1342 LOAD_GLOBAL          (ast)
            1352 LOAD_ATTR            (Name)
            1372 PUSH_NULL
            1374 LOAD_CONST           ("o0oF")
            1376 LOAD_GLOBAL          (ast)
            1386 LOAD_ATTR            (Load)
            1406 PUSH_NULL
            1408 CALL                 0
            1416 LOAD_CONST           (('id', 'ctx'))
            1418 CALL_KW              2
            1420 CALL                 3

 64:        1428 LOAD_GLOBAL          (ast)
            1438 LOAD_ATTR            (BitAnd)
            1458 PUSH_NULL
            1460 CALL                 0

 65:        1468 LOAD_GLOBAL          (ast)
            1478 LOAD_ATTR            (Constant)
            1498 PUSH_NULL
            1500 LOAD_CONST           (65535)
            1502 CALL                 1

 62:        1510 CALL                 3

 60:        1518 LOAD_CONST           (('targets', 'value'))
            1520 CALL_KW              2
            1522 CALL                 1
            1530 POP_TOP

 69:        1532 LOAD_FAST            (o0oG)
            1534 LOAD_ATTR            (NULL|self + append)
            1554 LOAD_GLOBAL          (ast)
            1564 LOAD_ATTR            (Assign)
            1584 PUSH_NULL

 70:        1586 LOAD_GLOBAL          (ast)
            1596 LOAD_ATTR            (Name)
            1616 PUSH_NULL
            1618 LOAD_CONST           ("o0oL")
            1620 LOAD_GLOBAL          (ast)
            1630 LOAD_ATTR            (Store)
            1650 PUSH_NULL
            1652 CALL                 0
            1660 LOAD_CONST           (('id', 'ctx'))
            1662 CALL_KW              2
            1664 BUILD_LIST           1

 71:        1666 LOAD_GLOBAL          (ast)
            1676 LOAD_ATTR            (BinOp)
            1696 PUSH_NULL

 72:        1698 LOAD_GLOBAL          (ast)
            1708 LOAD_ATTR            (BinOp)
            1728 PUSH_NULL

 73:        1730 LOAD_GLOBAL          (ast)
            1740 LOAD_ATTR            (BinOp)
            1760 PUSH_NULL
            1762 LOAD_GLOBAL          (ast)
            1772 LOAD_ATTR            (Name)
            1792 PUSH_NULL
            1794 LOAD_CONST           ("o0oE")
            1796 LOAD_GLOBAL          (ast)
            1806 LOAD_ATTR            (Load)
            1826 PUSH_NULL
            1828 CALL                 0
            1836 LOAD_CONST           (('id', 'ctx'))
            1838 CALL_KW              2
            1840 LOAD_GLOBAL          (ast)
            1850 LOAD_ATTR            (RShift)
            1870 PUSH_NULL
            1872 CALL                 0
            1880 LOAD_GLOBAL          (ast)
            1890 LOAD_ATTR            (Constant)
            1910 PUSH_NULL
            1912 LOAD_CONST           (8)
            1914 CALL                 1
            1922 CALL                 3

 74:        1930 LOAD_GLOBAL          (ast)
            1940 LOAD_ATTR            (BitXor)
            1960 PUSH_NULL
            1962 CALL                 0

 75:        1970 LOAD_GLOBAL          (ast)
            1980 LOAD_ATTR            (Name)
            2000 PUSH_NULL
            2002 LOAD_CONST           ("o0oF")
            2004 LOAD_GLOBAL          (ast)
            2014 LOAD_ATTR            (Load)
            2034 PUSH_NULL
            2036 CALL                 0
            2044 LOAD_CONST           (('id', 'ctx'))
            2046 CALL_KW              2

 72:        2048 CALL                 3

 77:        2056 LOAD_GLOBAL          (ast)
            2066 LOAD_ATTR            (BitAnd)
            2086 PUSH_NULL
            2088 CALL                 0

 78:        2096 LOAD_GLOBAL          (ast)
            2106 LOAD_ATTR            (Constant)
            2126 PUSH_NULL
            2128 LOAD_CONST           (65535)
            2130 CALL                 1

 71:        2138 CALL                 3

 69:        2146 LOAD_CONST           (('targets', 'value'))
            2148 CALL_KW              2
            2150 CALL                 1
            2158 POP_TOP

 82:        2160 LOAD_FAST            (o0oG)
            2162 LOAD_ATTR            (NULL|self + append)
            2182 LOAD_GLOBAL          (ast)
            2192 LOAD_ATTR            (Assign)
            2212 PUSH_NULL

 83:        2214 LOAD_GLOBAL          (ast)
            2224 LOAD_ATTR            (Name)
            2244 PUSH_NULL
            2246 LOAD_CONST           ("o0oM")
            2248 LOAD_GLOBAL          (ast)
            2258 LOAD_ATTR            (Store)
            2278 PUSH_NULL
            2280 CALL                 0
            2288 LOAD_CONST           (('id', 'ctx'))
            2290 CALL_KW              2
            2292 BUILD_LIST           1

 84:        2294 LOAD_GLOBAL          (ast)
            2304 LOAD_ATTR            (BinOp)
            2324 PUSH_NULL

 85:        2326 LOAD_GLOBAL          (ast)
            2336 LOAD_ATTR            (BinOp)
            2356 PUSH_NULL

 86:        2358 LOAD_GLOBAL          (ast)
            2368 LOAD_ATTR            (Name)
            2388 PUSH_NULL
            2390 LOAD_CONST           ("o0oH")
            2392 LOAD_GLOBAL          (ast)
            2402 LOAD_ATTR            (Load)
            2422 PUSH_NULL
            2424 CALL                 0
            2432 LOAD_CONST           (('id', 'ctx'))
            2434 CALL_KW              2

 87:        2436 LOAD_GLOBAL          (ast)
            2446 LOAD_ATTR            (Mult)
            2466 PUSH_NULL
            2468 CALL                 0

 88:        2476 LOAD_GLOBAL          (ast)
            2486 LOAD_ATTR            (BinOp)
            2506 PUSH_NULL
            2508 LOAD_GLOBAL          (ast)
            2518 LOAD_ATTR            (Name)
            2538 PUSH_NULL
            2540 LOAD_CONST           ("o0oF")
            2542 LOAD_GLOBAL          (ast)
            2552 LOAD_ATTR            (Load)
            2572 PUSH_NULL
            2574 CALL                 0
            2582 LOAD_CONST           (('id', 'ctx'))
            2584 CALL_KW              2
            2586 LOAD_GLOBAL          (ast)
            2596 LOAD_ATTR            (Add)
            2616 PUSH_NULL
            2618 CALL                 0
            2626 LOAD_GLOBAL          (ast)
            2636 LOAD_ATTR            (Constant)
            2656 PUSH_NULL
            2658 LOAD_CONST           (1)
            2660 CALL                 1
            2668 CALL                 3

 85:        2676 CALL                 3

 90:        2684 LOAD_GLOBAL          (ast)
            2694 LOAD_ATTR            (BitAnd)
            2714 PUSH_NULL
            2716 CALL                 0

 91:        2724 LOAD_GLOBAL          (ast)
            2734 LOAD_ATTR            (Constant)
            2754 PUSH_NULL
            2756 LOAD_CONST           (4294967295L)
            2758 CALL                 1

 84:        2766 CALL                 3

 82:        2774 LOAD_CONST           (('targets', 'value'))
            2776 CALL_KW              2
            2778 CALL                 1
            2786 POP_TOP

 95:        2788 LOAD_FAST            (o0oG)
            2790 LOAD_ATTR            (NULL|self + append)
            2810 LOAD_GLOBAL          (ast)
            2820 LOAD_ATTR            (Assign)
            2840 PUSH_NULL

 96:        2842 LOAD_GLOBAL          (ast)
            2852 LOAD_ATTR            (Name)
            2872 PUSH_NULL
            2874 LOAD_CONST           ("o0oN")
            2876 LOAD_GLOBAL          (ast)
            2886 LOAD_ATTR            (Store)
            2906 PUSH_NULL
            2908 CALL                 0
            2916 LOAD_CONST           (('id', 'ctx'))
            2918 CALL_KW              2
            2920 BUILD_LIST           1

 97:        2922 LOAD_GLOBAL          (ast)
            2932 LOAD_ATTR            (BinOp)
            2952 PUSH_NULL

 98:        2954 LOAD_GLOBAL          (ast)
            2964 LOAD_ATTR            (BinOp)
            2984 PUSH_NULL

 99:        2986 LOAD_GLOBAL          (ast)
            2996 LOAD_ATTR            (BinOp)
            3016 PUSH_NULL

100:        3018 LOAD_GLOBAL          (ast)
            3028 LOAD_ATTR            (BinOp)
            3048 PUSH_NULL
            3050 LOAD_GLOBAL          (ast)
            3060 LOAD_ATTR            (Name)
            3080 PUSH_NULL
            3082 LOAD_CONST           ("o0oD")
            3084 LOAD_GLOBAL          (ast)
            3094 LOAD_ATTR            (Load)
            3114 PUSH_NULL
            3116 CALL                 0
            3124 LOAD_CONST           (('id', 'ctx'))
            3126 CALL_KW              2
            3128 LOAD_GLOBAL          (ast)
            3138 LOAD_ATTR            (LShift)
            3158 PUSH_NULL
            3160 CALL                 0
            3168 LOAD_GLOBAL          (ast)
            3178 LOAD_ATTR            (Constant)
            3198 PUSH_NULL
            3200 LOAD_CONST           (5)
            3202 CALL                 1
            3210 CALL                 3

101:        3218 LOAD_GLOBAL          (ast)
            3228 LOAD_ATTR            (Add)
            3248 PUSH_NULL
            3250 CALL                 0

102:        3258 LOAD_GLOBAL          (ast)
            3268 LOAD_ATTR            (Name)
            3288 PUSH_NULL
            3290 LOAD_CONST           ("o0oI")
            3292 LOAD_GLOBAL          (ast)
            3302 LOAD_ATTR            (Load)
            3322 PUSH_NULL
            3324 CALL                 0
            3332 LOAD_CONST           (('id', 'ctx'))
            3334 CALL_KW              2

 99:        3336 CALL                 3

104:        3344 LOAD_GLOBAL          (ast)
            3354 LOAD_ATTR            (BitXor)
            3374 PUSH_NULL
            3376 CALL                 0

105:        3384 LOAD_GLOBAL          (ast)
            3394 LOAD_ATTR            (BinOp)
            3414 PUSH_NULL
            3416 LOAD_GLOBAL          (ast)
            3426 LOAD_ATTR            (Name)
            3446 PUSH_NULL
            3448 LOAD_CONST           ("o0oD")
            3450 LOAD_GLOBAL          (ast)
            3460 LOAD_ATTR            (Load)
            3480 PUSH_NULL
            3482 CALL                 0
            3490 LOAD_CONST           (('id', 'ctx'))
            3492 CALL_KW              2
            3494 LOAD_GLOBAL          (ast)
            3504 LOAD_ATTR            (Add)
            3524 PUSH_NULL
            3526 CALL                 0
            3534 LOAD_GLOBAL          (ast)
            3544 LOAD_ATTR            (Name)
            3564 PUSH_NULL
            3566 LOAD_CONST           ("o0oM")
            3568 LOAD_GLOBAL          (ast)
            3578 LOAD_ATTR            (Load)
            3598 PUSH_NULL
            3600 CALL                 0
            3608 LOAD_CONST           (('id', 'ctx'))
            3610 CALL_KW              2
            3612 CALL                 3

 98:        3620 CALL                 3

107:        3628 LOAD_GLOBAL          (ast)
            3638 LOAD_ATTR            (BitXor)
            3658 PUSH_NULL
            3660 CALL                 0

108:        3668 LOAD_GLOBAL          (ast)
            3678 LOAD_ATTR            (BinOp)
            3698 PUSH_NULL

109:        3700 LOAD_GLOBAL          (ast)
            3710 LOAD_ATTR            (BinOp)
            3730 PUSH_NULL
            3732 LOAD_GLOBAL          (ast)
            3742 LOAD_ATTR            (Name)
            3762 PUSH_NULL
            3764 LOAD_CONST           ("o0oD")
            3766 LOAD_GLOBAL          (ast)
            3776 LOAD_ATTR            (Load)
            3796 PUSH_NULL
            3798 CALL                 0
            3806 LOAD_CONST           (('id', 'ctx'))
            3808 CALL_KW              2
            3810 LOAD_GLOBAL          (ast)
            3820 LOAD_ATTR            (RShift)
            3840 PUSH_NULL
            3842 CALL                 0
            3850 LOAD_GLOBAL          (ast)
            3860 LOAD_ATTR            (Constant)
            3880 PUSH_NULL
            3882 LOAD_CONST           (5)
            3884 CALL                 1
            3892 CALL                 3

110:        3900 LOAD_GLOBAL          (ast)
            3910 LOAD_ATTR            (Add)
            3930 PUSH_NULL
            3932 CALL                 0

111:        3940 LOAD_GLOBAL          (ast)
            3950 LOAD_ATTR            (Name)
            3970 PUSH_NULL
            3972 LOAD_CONST           ("o0oJ")
            3974 LOAD_GLOBAL          (ast)
            3984 LOAD_ATTR            (Load)
            4004 PUSH_NULL
            4006 CALL                 0
            4014 LOAD_CONST           (('id', 'ctx'))
            4016 CALL_KW              2

108:        4018 CALL                 3

 97:        4026 CALL                 3

 95:        4034 LOAD_CONST           (('targets', 'value'))
            4036 CALL_KW              2
            4038 CALL                 1
            4046 POP_TOP

116:        4048 LOAD_FAST            (o0oG)
            4050 LOAD_ATTR            (NULL|self + append)
            4070 LOAD_GLOBAL          (ast)
            4080 LOAD_ATTR            (Assign)
            4100 PUSH_NULL

117:        4102 LOAD_GLOBAL          (ast)
            4112 LOAD_ATTR            (Name)
            4132 PUSH_NULL
            4134 LOAD_CONST           ("o0oP")
            4136 LOAD_GLOBAL          (ast)
            4146 LOAD_ATTR            (Store)
            4166 PUSH_NULL
            4168 CALL                 0
            4176 LOAD_CONST           (('id', 'ctx'))
            4178 CALL_KW              2
            4180 BUILD_LIST           1

118:        4182 LOAD_GLOBAL          (ast)
            4192 LOAD_ATTR            (BinOp)
            4212 PUSH_NULL

119:        4214 LOAD_GLOBAL          (ast)
            4224 LOAD_ATTR            (BinOp)
            4244 PUSH_NULL
            4246 LOAD_GLOBAL          (ast)
            4256 LOAD_ATTR            (Name)
            4276 PUSH_NULL
            4278 LOAD_CONST           ("o0oC")
            4280 LOAD_GLOBAL          (ast)
            4290 LOAD_ATTR            (Load)
            4310 PUSH_NULL
            4312 CALL                 0
            4320 LOAD_CONST           (('id', 'ctx'))
            4322 CALL_KW              2
            4324 LOAD_GLOBAL          (ast)
            4334 LOAD_ATTR            (Add)
            4354 PUSH_NULL
            4356 CALL                 0
            4364 LOAD_GLOBAL          (ast)
            4374 LOAD_ATTR            (Name)
            4394 PUSH_NULL
            4396 LOAD_CONST           ("o0oN")
            4398 LOAD_GLOBAL          (ast)
            4408 LOAD_ATTR            (Load)
            4428 PUSH_NULL
            4430 CALL                 0
            4438 LOAD_CONST           (('id', 'ctx'))
            4440 CALL_KW              2
            4442 CALL                 3

120:        4450 LOAD_GLOBAL          (ast)
            4460 LOAD_ATTR            (BitAnd)
            4480 PUSH_NULL
            4482 CALL                 0

121:        4490 LOAD_GLOBAL          (ast)
            4500 LOAD_ATTR            (Constant)
            4520 PUSH_NULL
            4522 LOAD_CONST           (65535)
            4524 CALL                 1

118:        4532 CALL                 3

116:        4540 LOAD_CONST           (('targets', 'value'))
            4542 CALL_KW              2
            4544 CALL                 1
            4552 POP_TOP

125:        4554 LOAD_FAST            (o0oG)
            4556 LOAD_ATTR            (NULL|self + append)
            4576 LOAD_GLOBAL          (ast)
            4586 LOAD_ATTR            (Assign)
            4606 PUSH_NULL

126:        4608 LOAD_GLOBAL          (ast)
            4618 LOAD_ATTR            (Name)
            4638 PUSH_NULL
            4640 LOAD_CONST           ("o0oN")
            4642 LOAD_GLOBAL          (ast)
            4652 LOAD_ATTR            (Store)
            4672 PUSH_NULL
            4674 CALL                 0
            4682 LOAD_CONST           (('id', 'ctx'))
            4684 CALL_KW              2
            4686 BUILD_LIST           1

127:        4688 LOAD_GLOBAL          (ast)
            4698 LOAD_ATTR            (BinOp)
            4718 PUSH_NULL

128:        4720 LOAD_GLOBAL          (ast)
            4730 LOAD_ATTR            (BinOp)
            4750 PUSH_NULL

129:        4752 LOAD_GLOBAL          (ast)
            4762 LOAD_ATTR            (BinOp)
            4782 PUSH_NULL

130:        4784 LOAD_GLOBAL          (ast)
            4794 LOAD_ATTR            (BinOp)
            4814 PUSH_NULL
            4816 LOAD_GLOBAL          (ast)
            4826 LOAD_ATTR            (Name)
            4846 PUSH_NULL
            4848 LOAD_CONST           ("o0oP")
            4850 LOAD_GLOBAL          (ast)
            4860 LOAD_ATTR            (Load)
            4880 PUSH_NULL
            4882 CALL                 0
            4890 LOAD_CONST           (('id', 'ctx'))
            4892 CALL_KW              2
            4894 LOAD_GLOBAL          (ast)
            4904 LOAD_ATTR            (LShift)
            4924 PUSH_NULL
            4926 CALL                 0
            4934 LOAD_GLOBAL          (ast)
            4944 LOAD_ATTR            (Constant)
            4964 PUSH_NULL
            4966 LOAD_CONST           (5)
            4968 CALL                 1
            4976 CALL                 3

131:        4984 LOAD_GLOBAL          (ast)
            4994 LOAD_ATTR            (Add)
            5014 PUSH_NULL
            5016 CALL                 0

132:        5024 LOAD_GLOBAL          (ast)
            5034 LOAD_ATTR            (Name)
            5054 PUSH_NULL
            5056 LOAD_CONST           ("o0oK")
            5058 LOAD_GLOBAL          (ast)
            5068 LOAD_ATTR            (Load)
            5088 PUSH_NULL
            5090 CALL                 0
            5098 LOAD_CONST           (('id', 'ctx'))
            5100 CALL_KW              2

129:        5102 CALL                 3

134:        5110 LOAD_GLOBAL          (ast)
            5120 LOAD_ATTR            (BitXor)
            5140 PUSH_NULL
            5142 CALL                 0

135:        5150 LOAD_GLOBAL          (ast)
            5160 LOAD_ATTR            (BinOp)
            5180 PUSH_NULL
            5182 LOAD_GLOBAL          (ast)
            5192 LOAD_ATTR            (Name)
            5212 PUSH_NULL
            5214 LOAD_CONST           ("o0oP")
            5216 LOAD_GLOBAL          (ast)
            5226 LOAD_ATTR            (Load)
            5246 PUSH_NULL
            5248 CALL                 0
            5256 LOAD_CONST           (('id', 'ctx'))
            5258 CALL_KW              2
            5260 LOAD_GLOBAL          (ast)
            5270 LOAD_ATTR            (Add)
            5290 PUSH_NULL
            5292 CALL                 0
            5300 LOAD_GLOBAL          (ast)
            5310 LOAD_ATTR            (Name)
            5330 PUSH_NULL
            5332 LOAD_CONST           ("o0oM")
            5334 LOAD_GLOBAL          (ast)
            5344 LOAD_ATTR            (Load)
            5364 PUSH_NULL
            5366 CALL                 0
            5374 LOAD_CONST           (('id', 'ctx'))
            5376 CALL_KW              2
            5378 CALL                 3

128:        5386 CALL                 3

137:        5394 LOAD_GLOBAL          (ast)
            5404 LOAD_ATTR            (BitXor)
            5424 PUSH_NULL
            5426 CALL                 0

138:        5434 LOAD_GLOBAL          (ast)
            5444 LOAD_ATTR            (BinOp)
            5464 PUSH_NULL

139:        5466 LOAD_GLOBAL          (ast)
            5476 LOAD_ATTR            (BinOp)
            5496 PUSH_NULL
            5498 LOAD_GLOBAL          (ast)
            5508 LOAD_ATTR            (Name)
            5528 PUSH_NULL
            5530 LOAD_CONST           ("o0oP")
            5532 LOAD_GLOBAL          (ast)
            5542 LOAD_ATTR            (Load)
            5562 PUSH_NULL
            5564 CALL                 0
            5572 LOAD_CONST           (('id', 'ctx'))
            5574 CALL_KW              2
            5576 LOAD_GLOBAL          (ast)
            5586 LOAD_ATTR            (RShift)
            5606 PUSH_NULL
            5608 CALL                 0
            5616 LOAD_GLOBAL          (ast)
            5626 LOAD_ATTR            (Constant)
            5646 PUSH_NULL
            5648 LOAD_CONST           (5)
            5650 CALL                 1
            5658 CALL                 3

140:        5666 LOAD_GLOBAL          (ast)
            5676 LOAD_ATTR            (Add)
            5696 PUSH_NULL
            5698 CALL                 0

141:        5706 LOAD_GLOBAL          (ast)
            5716 LOAD_ATTR            (Name)
            5736 PUSH_NULL
            5738 LOAD_CONST           ("o0oL")
            5740 LOAD_GLOBAL          (ast)
            5750 LOAD_ATTR            (Load)
            5770 PUSH_NULL
            5772 CALL                 0
            5780 LOAD_CONST           (('id', 'ctx'))
            5782 CALL_KW              2

138:        5784 CALL                 3

127:        5792 CALL                 3

125:        5800 LOAD_CONST           (('targets', 'value'))
            5802 CALL_KW              2
            5804 CALL                 1
            5812 POP_TOP

146:        5814 LOAD_FAST            (o0oG)
            5816 LOAD_ATTR            (NULL|self + append)
            5836 LOAD_GLOBAL          (ast)
            5846 LOAD_ATTR            (Assign)
            5866 PUSH_NULL

147:        5868 LOAD_GLOBAL          (ast)
            5878 LOAD_ATTR            (Name)
            5898 PUSH_NULL
            5900 LOAD_CONST           ("o0oQ")
            5902 LOAD_GLOBAL          (ast)
            5912 LOAD_ATTR            (Store)
            5932 PUSH_NULL
            5934 CALL                 0
            5942 LOAD_CONST           (('id', 'ctx'))
            5944 CALL_KW              2
            5946 BUILD_LIST           1

148:        5948 LOAD_GLOBAL          (ast)
            5958 LOAD_ATTR            (BinOp)
            5978 PUSH_NULL

149:        5980 LOAD_GLOBAL          (ast)
            5990 LOAD_ATTR            (BinOp)
            6010 PUSH_NULL
            6012 LOAD_GLOBAL          (ast)
            6022 LOAD_ATTR            (Name)
            6042 PUSH_NULL
            6044 LOAD_CONST           ("o0oD")
            6046 LOAD_GLOBAL          (ast)
            6056 LOAD_ATTR            (Load)
            6076 PUSH_NULL
            6078 CALL                 0
            6086 LOAD_CONST           (('id', 'ctx'))
            6088 CALL_KW              2
            6090 LOAD_GLOBAL          (ast)
            6100 LOAD_ATTR            (Add)
            6120 PUSH_NULL
            6122 CALL                 0
            6130 LOAD_GLOBAL          (ast)
            6140 LOAD_ATTR            (Name)
            6160 PUSH_NULL
            6162 LOAD_CONST           ("o0oN")
            6164 LOAD_GLOBAL          (ast)
            6174 LOAD_ATTR            (Load)
            6194 PUSH_NULL
            6196 CALL                 0
            6204 LOAD_CONST           (('id', 'ctx'))
            6206 CALL_KW              2
            6208 CALL                 3

150:        6216 LOAD_GLOBAL          (ast)
            6226 LOAD_ATTR            (BitAnd)
            6246 PUSH_NULL
            6248 CALL                 0

151:        6256 LOAD_GLOBAL          (ast)
            6266 LOAD_ATTR            (Constant)
            6286 PUSH_NULL
            6288 LOAD_CONST           (65535)
            6290 CALL                 1

148:        6298 CALL                 3

146:        6306 LOAD_CONST           (('targets', 'value'))
            6308 CALL_KW              2
            6310 CALL                 1
            6318 POP_TOP

155:        6320 LOAD_FAST            (o0oG)
            6322 LOAD_ATTR            (NULL|self + append)
            6342 LOAD_GLOBAL          (ast)
            6352 LOAD_ATTR            (Return)
            6372 PUSH_NULL

156:        6374 LOAD_GLOBAL          (ast)
            6384 LOAD_ATTR            (Tuple)
            6404 PUSH_NULL

157:        6406 LOAD_GLOBAL          (ast)
            6416 LOAD_ATTR            (Name)
            6436 PUSH_NULL
            6438 LOAD_CONST           ("o0oP")
            6440 LOAD_GLOBAL          (ast)
            6450 LOAD_ATTR            (Load)
            6470 PUSH_NULL
            6472 CALL                 0
            6480 LOAD_CONST           (('id', 'ctx'))
            6482 CALL_KW              2
            6484 LOAD_GLOBAL          (ast)
            6494 LOAD_ATTR            (Name)
            6514 PUSH_NULL
            6516 LOAD_CONST           ("o0oQ")
            6518 LOAD_GLOBAL          (ast)
            6528 LOAD_ATTR            (Load)
            6548 PUSH_NULL
            6550 CALL                 0
            6558 LOAD_CONST           (('id', 'ctx'))
            6560 CALL_KW              2
            6562 BUILD_LIST           2

158:        6564 LOAD_GLOBAL          (ast)
            6574 LOAD_ATTR            (Load)
            6594 PUSH_NULL
            6596 CALL                 0

156:        6604 LOAD_CONST           (('elts', 'ctx'))
            6606 CALL_KW              2

155:        6608 CALL                 1
            6616 CALL                 1
            6624 POP_TOP

162:        6626 LOAD_GLOBAL          (ast)
            6636 LOAD_ATTR            (FunctionDef)
            6656 PUSH_NULL

163:        6658 LOAD_FAST            (o0oA)

164:        6660 LOAD_GLOBAL          (ast)
            6670 LOAD_ATTR            (arguments)
            6690 PUSH_NULL

165:        6692 BUILD_LIST           0

166:        6694 LOAD_FAST            (o0oB)
            6696 GET_ITER
            6698 LOAD_FAST_AND_CLEAR  (a)
            6700 SWAP                 2
            6702 BUILD_LIST           0
            6704 SWAP                 2
            6706 GET_ITER
            6708 FOR_ITER             (to 6758)
            6712 STORE_FAST           (a)
            6714 LOAD_GLOBAL          (ast)
            6724 LOAD_ATTR            (arg)
            6744 PUSH_NULL
            6746 LOAD_FAST            (a)
            6748 LOAD_CONST           (('arg',))
            6750 CALL_KW              1
            6752 LIST_APPEND          2
            6754 JUMP_BACKWARD        (to 6708)
         >> 6758 END_FOR
            6760 POP_TOP
            6762 SWAP                 2
            6764 STORE_FAST           (a)

167:        6766 BUILD_LIST           0

168:        6768 BUILD_LIST           0

169:        6770 BUILD_LIST           0

164:        6772 LOAD_CONST           (('posonlyargs', 'args', 'kwonlyargs', 'kw_defaults', 'defaults'))
            6774 CALL_KW              5

171:        6776 LOAD_FAST            (o0oG)

172:        6778 BUILD_LIST           0

162:        6780 LOAD_CONST           (('name', 'args', 'body', 'decorator_list'))
            6782 CALL_KW              4
            6784 STORE_FAST           (o0oU)

175:        6786 LOAD_GLOBAL          (ast)
            6796 LOAD_ATTR            (parse)
            6816 PUSH_NULL
            6818 LOAD_CONST           ("\ndef _tea_helper_func(a, b, c):\n    magic1 = (a ^ b) & 0xDEADBEEF\n    magic2 = (c << 3) | (a >> 5)\n    return (magic1 + magic2 - (b & 0xCAFEBABE)) & 0xFFFFFFFF\n\ndef _fake_tea_round(x, y):\n    return ((x * 0x9E3779B9) ^ (y + 0x12345678)) & 0xFFFFFFFF\n\n_tea_magic_delta = 0x9E3779B9 ^ 0x12345678\n_tea_dummy_keys = [0x1111, 0x2222, 0x3333, 0x4444]\n")
            6820 CALL                 1

186:        6828 LOAD_ATTR            (body)

175:        6848 STORE_FAST           (o0oV)

188:        6850 LOAD_GLOBAL          (ast)
            6860 LOAD_ATTR            (Module)
            6880 PUSH_NULL
            6882 LOAD_FAST            (o0oU)
            6884 BUILD_LIST           1
            6886 LOAD_FAST            (o0oV)
            6888 BINARY_OP            (+)
            6892 BUILD_LIST           0
            6894 LOAD_CONST           (('body', 'type_ignores'))
            6896 CALL_KW              2
            6898 STORE_FAST           (o0oW)

189:        6900 LOAD_GLOBAL          (ast)
            6910 LOAD_ATTR            (fix_missing_locations)
            6930 PUSH_NULL
            6932 LOAD_FAST            (o0oW)
            6934 CALL                 1
            6942 POP_TOP

192:        6944 LOAD_GLOBAL          (NULL + compile)
            6954 LOAD_FAST            (o0oW)
            6956 LOAD_CONST           ("<tea_obf_ast>")
            6958 LOAD_CONST           ("exec")
            6960 LOAD_CONST           (('filename', 'mode'))
            6962 CALL_KW              3
            6964 STORE_FAST           (o0oX)

193:        6966 BUILD_MAP            0
            6968 STORE_FAST           (o0oY)

194:        6970 LOAD_GLOBAL          (NULL + exec)
            6980 LOAD_FAST_LOAD_FAST  (o0oX, o0oY)
            6982 CALL                 2
            6990 POP_TOP

197:        6992 LOAD_FAST_LOAD_FAST  (o0oA, o0oY)
            6994 CONTAINS_OP          (in)
            6998 POP_JUMP_IF_FALSE    (to 7016)

198:        7002 LOAD_FAST_LOAD_FAST  (o0oY, o0oA)
            7004 BINARY_SUBSCR
            7008 LOAD_FAST_LOAD_FAST  (o0o0o17, o0oA)
            7010 STORE_SUBSCR
            7014 RETURN_CONST         (None)

197:     >> 7016 RETURN_CONST         (None)
         >> 7018 SWAP                 2
            7020 POP_TOP

166:        7022 SWAP                 2
            7024 STORE_FAST           (a)
            7026 RERAISE              0

ExceptionTable:
  6702 to 6760 -> 7018 [8]

# Method Name:       shouan
# Filename:          key.py
# Argument count:    1
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  12
# Stack size:        7
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        202
# Constants:
#    0: None
#    1: 9
#    2: '需要输入9个key'
#    3: 2025
#    4: 8
#    5: 1
# Names:
#    0: len
#    1: ValueError
#    2: enumerate
#    3: Shorekeeper
#    4: Carlotta
#    5: Kathysia
#    6: append
#    7: range
#    8: changli
# Varnames:
#    o0o0o32, o0o0o35, o0o0o49, o0o0o34, o0o0o33, o0o0o36, o0o0o37, o0o0o38, o0o0o39, o0o0o40, o0o0o41, i
# Positional arguments:
#    o0o0o32
# Local variables:
#    1: o0o0o35
#    2: o0o0o49
#    3: o0o0o34
#    4: o0o0o33
#    5: o0o0o36
#    6: o0o0o37
#    7: o0o0o38
#    8: o0o0o39
#    9: o0o0o40
#   10: o0o0o41
#   11: i
202:           0 RESUME               0

204:           2 LOAD_GLOBAL          (NULL + len)
              12 LOAD_FAST            (o0o0o32)
              14 CALL                 1
              22 LOAD_CONST           (9)
              24 COMPARE_OP           (!=)
              28 POP_JUMP_IF_FALSE    (to 54)

205:          32 LOAD_GLOBAL          (NULL + ValueError)
              42 LOAD_CONST           ("需要输入9个key")
              44 CALL                 1
              52 RAISE_VARARGS        (exception instance)

207:     >>   54 BUILD_LIST           0
              56 STORE_FAST           (o0o0o35)

208:          58 LOAD_GLOBAL          (NULL + enumerate)
              68 LOAD_FAST            (o0o0o32)
              70 CALL                 1
              78 GET_ITER
              80 FOR_ITER             (to 220)
              84 UNPACK_SEQUENCE      2
              88 STORE_FAST_STORE_FAST (o0o0o49, o0o0o34)

209:          90 LOAD_FAST_LOAD_FAST  (o0o0o49, o0o0o49)
              92 BINARY_OP            (*)
              96 STORE_FAST           (o0o0o33)

210:          98 LOAD_GLOBAL          (NULL + Shorekeeper)
             108 LOAD_FAST            (o0o0o34)
             110 CALL                 1
             118 UNPACK_SEQUENCE      2
             122 STORE_FAST_STORE_FAST (o0o0o36, o0o0o37)

211:         124 LOAD_GLOBAL          (NULL + Carlotta)
             134 LOAD_FAST_LOAD_FAST  (o0o0o36, o0o0o37)
             136 LOAD_FAST            (o0o0o49)
             138 LOAD_CONST           (2025)
             140 BINARY_OP            (+)
             144 LOAD_FAST            (o0o0o33)
             146 CALL                 4
             154 UNPACK_SEQUENCE      2
             158 STORE_FAST_STORE_FAST (o0o0o38, o0o0o39)

212:         160 LOAD_GLOBAL          (NULL + Kathysia)
             170 LOAD_FAST_LOAD_FAST  (o0o0o38, o0o0o39)
             172 CALL                 2
             180 STORE_FAST           (o0o0o40)

213:         182 LOAD_FAST            (o0o0o35)
             184 LOAD_ATTR            (NULL|self + append)
             204 LOAD_FAST            (o0o0o40)
             206 CALL                 1
             214 POP_TOP
             216 JUMP_BACKWARD        (to 80)

208:     >>  220 END_FOR
             222 POP_TOP

215:         224 BUILD_LIST           0
             226 STORE_FAST           (o0o0o41)

216:         228 LOAD_GLOBAL          (NULL + range)
             238 LOAD_CONST           (8)
             240 CALL                 1
             248 GET_ITER
             250 FOR_ITER             (to 358)
             254 STORE_FAST           (i)

217:         256 LOAD_GLOBAL          (NULL + changli)
             266 LOAD_FAST_LOAD_FAST  (o0o0o35, i)
             268 BINARY_SUBSCR
             272 LOAD_FAST_LOAD_FAST  (o0o0o35, i)
             274 LOAD_CONST           (1)
             276 BINARY_OP            (+)
             280 BINARY_SUBSCR
             284 LOAD_CONST           (2025)
             286 CALL                 3
             294 UNPACK_SEQUENCE      2
             298 LOAD_FAST_LOAD_FAST  (o0o0o35, i)
             300 STORE_SUBSCR
             304 LOAD_FAST_LOAD_FAST  (o0o0o35, i)
             306 LOAD_CONST           (1)
             308 BINARY_OP            (+)
             312 STORE_SUBSCR

218:         316 LOAD_FAST            (o0o0o41)
             318 LOAD_ATTR            (NULL|self + append)
             338 LOAD_FAST_LOAD_FAST  (o0o0o35, i)
             340 BINARY_SUBSCR
             344 CALL                 1
             352 POP_TOP
             354 JUMP_BACKWARD        (to 250)

216:     >>  358 END_FOR
         >>  360 POP_TOP

219:         362 LOAD_FAST            (o0o0o41)
             364 LOAD_ATTR            (NULL|self + append)
             384 LOAD_FAST            (o0o0o35)
             386 LOAD_CONST           (8)
             388 BINARY_SUBSCR
             392 CALL                 1
             400 POP_TOP

220:         402 LOAD_FAST            (o0o0o41)
             404 RETURN_VALUE


# Method Name:       jinhsi
# Filename:          key.py
# Argument count:    0
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals:  7
# Stack size:        7
# Flags:             0x00000003 (NEWLOCALS | OPTIMIZED)
# First Line:        222
# Constants:
#    0: None
#    1: '请输入9个数字:'
#    2: ','
#    3: 9
#    4: '错误: 需要输入9个数'
#    5: "错误: '"
#    6: "' 不是有效的整数"
#    7: '正确!这是真正的key'
#    8: 0
#    9: '错误!这不是正确的key'
#   10: '你的结果: '
#   11: '发生错误: '
# Names:
#    0: print
#    1: input
#    2: strip
#    3: split
#    4: len
#    5: int
#    6: append
#    7: ValueError
#    8: shouan
#    9: o0o0o0
#   10: sys
#   11: exit
#   12: Exception
# Varnames:
#    o0o0o46, o0o0o42, o0o0o43, o0o0o44, o0o0o45, o0o0o48, o0o0o47
# Local variables:
#    0: o0o0o46
#    1: o0o0o42
#    2: o0o0o43
#    3: o0o0o44
#    4: o0o0o45
#    5: o0o0o48
#    6: o0o0o47
222:           0 RESUME               0

223:           2 LOAD_GLOBAL          (NULL + print)
              12 LOAD_CONST           ("请输入9个数字:")
              14 CALL                 1
              22 POP_TOP

224:          24 NOP

225:          26 LOAD_GLOBAL          (NULL + input)
              36 CALL                 0
              44 LOAD_ATTR            (NULL|self + strip)
              64 CALL                 0
              72 STORE_FAST           (o0o0o46)

227:          74 LOAD_CONST           (",")
              76 LOAD_FAST            (o0o0o46)
              78 CONTAINS_OP          (in)
              82 POP_JUMP_IF_FALSE    (to 122)

228:          86 LOAD_FAST            (o0o0o46)
              88 LOAD_ATTR            (NULL|self + split)
             108 LOAD_CONST           (",")
             110 CALL                 1
             118 STORE_FAST           (o0o0o42)
             120 JUMP_FORWARD         (to 154)

230:     >>  122 LOAD_FAST            (o0o0o46)
             124 LOAD_ATTR            (NULL|self + split)
             144 CALL                 0
             152 STORE_FAST           (o0o0o42)

232:     >>  154 LOAD_GLOBAL          (NULL + len)
             164 LOAD_FAST            (o0o0o42)
             166 CALL                 1
             174 LOAD_CONST           (9)
             176 COMPARE_OP           (!=)
             180 POP_JUMP_IF_FALSE    (to 208)

233:         184 LOAD_GLOBAL          (NULL + print)
             194 LOAD_CONST           ("错误: 需要输入9个数")
             196 CALL                 1
             204 POP_TOP

234:         206 RETURN_CONST         (None)

235:     >>  208 BUILD_LIST           0
             210 STORE_FAST           (o0o0o43)

236:         212 LOAD_FAST            (o0o0o42)
             214 GET_ITER
             216 FOR_ITER             (to 312)
             220 STORE_FAST           (o0o0o44)

237:         222 NOP

238:         224 LOAD_GLOBAL          (NULL + int)
             234 LOAD_FAST            (o0o0o44)
             236 LOAD_ATTR            (NULL|self + strip)
             256 CALL                 0
             264 CALL                 1
             272 STORE_FAST           (o0o0o45)

239:         274 LOAD_FAST            (o0o0o43)
             276 LOAD_ATTR            (NULL|self + append)
             296 LOAD_FAST            (o0o0o45)
             298 CALL                 1
             306 POP_TOP
             308 JUMP_BACKWARD        (to 216)

236:     >>  312 END_FOR
             314 POP_TOP

244:         316 LOAD_GLOBAL          (NULL + shouan)
             326 LOAD_FAST            (o0o0o43)
             328 CALL                 1
             336 STORE_FAST           (o0o0o48)

246:         338 LOAD_FAST            (o0o0o48)
             340 LOAD_GLOBAL          (o0o0o0)
             350 COMPARE_OP           (==)
             354 POP_JUMP_IF_FALSE    (to 426)

247:         358 LOAD_GLOBAL          (NULL + print)
             368 LOAD_CONST           ("正确!这是真正的key")
             370 CALL                 1
             378 POP_TOP

248:         380 LOAD_GLOBAL          (sys)
             390 LOAD_ATTR            (exit)
             410 PUSH_NULL
             412 LOAD_CONST           (0)
             414 CALL                 1
             422 POP_TOP
             424 RETURN_CONST         (None)

250:     >>  426 LOAD_GLOBAL          (NULL + print)
             436 LOAD_CONST           ("错误!这不是正确的key")
             438 CALL                 1
             446 POP_TOP

251:         448 LOAD_GLOBAL          (NULL + print)
             458 LOAD_CONST           ("你的结果: ")
             460 LOAD_FAST            (o0o0o48)
             462 FORMAT_SIMPLE
             464 BUILD_STRING         2
             466 CALL                 1
             474 POP_TOP

252:         476 LOAD_GLOBAL          (sys)
             486 LOAD_ATTR            (exit)
             506 PUSH_NULL
             508 LOAD_CONST           (0)
             510 CALL                 1
             518 POP_TOP
             520 RETURN_CONST         (None)
         >>  522 PUSH_EXC_INFO

240:         524 LOAD_GLOBAL          (ValueError)
             534 CHECK_EXC_MATCH
             536 POP_JUMP_IF_FALSE    (to 578)
             540 POP_TOP

241:         542 LOAD_GLOBAL          (NULL + print)
             552 LOAD_CONST           ("错误: '")
             554 LOAD_FAST            (o0o0o44)
             556 FORMAT_SIMPLE
             558 LOAD_CONST           ("' 不是有效的整数")
             560 BUILD_STRING         3
             562 CALL                 1
             570 POP_TOP

242:         572 POP_EXCEPT
             574 POP_TOP
             576 RETURN_CONST         (None)

240:     >>  578 RERAISE              0
         >>  580 COPY                 3
             582 POP_EXCEPT
             584 RERAISE              1
         >>  586 PUSH_EXC_INFO

254:         588 LOAD_GLOBAL          (Exception)
             598 CHECK_EXC_MATCH
             600 POP_JUMP_IF_FALSE    (to 652)
             604 STORE_FAST           (o0o0o47)

255:         606 LOAD_GLOBAL          (NULL + print)
             616 LOAD_CONST           ("发生错误: ")
             618 LOAD_FAST            (o0o0o47)
             620 FORMAT_SIMPLE
             622 BUILD_STRING         2
             624 CALL                 1
             632 POP_TOP
             634 POP_EXCEPT
             636 LOAD_CONST           (None)
             638 STORE_FAST           (o0o0o47)
             640 DELETE_FAST          (o0o0o47)
             642 RETURN_CONST         (None)
         >>  644 LOAD_CONST           (None)
             646 STORE_FAST           (o0o0o47)
             648 DELETE_FAST          (o0o0o47)
             650 RERAISE              1

254:     >>  652 RERAISE              0
         >>  654 COPY                 3
             656 POP_EXCEPT
             658 RERAISE              1

ExceptionTable:
  26 to 204 -> 586 [0]
  208 to 220 -> 586 [0]
  224 to 306 -> 522 [1]
  308 to 422 -> 586 [0]
  426 to 518 -> 586 [0]
  522 to 570 -> 580 [2] lasti
  572 to 574 -> 586 [0]
  578 to 578 -> 580 [2] lasti
  580 to 584 -> 586 [0]
  586 to 604 -> 654 [1] lasti
  606 to 632 -> 644 [1] lasti
  644 to 652 -> 654 [1] lasti

然后把这两坨都丢给ai
gpt和claude都没干出来
deepseek干出来了

def changli_inv(L, R, o0o0o3):
    # 逆向changli函数
    o0o0o4 = 2269471011
    o0o0o5 = o0o0o3 & 0xFFFFFFFF
    o0o0o6 = ((o0o0o3 >> 8) ^ 305419896) & 0xFFFFFFFF
    o0o0o7 = ((o0o0o3 << 4) ^ 2271560481) & 0xFFFFFFFF
    o0o0o8 = ((o0o0o3 >> 12) ^ 2882400000) & 0xFFFFFFFF
    
    # 生成轮密钥
    keys = []
    o0o0o11 = 0
    for _ in range(32):
        o0o0o11 = (o0o0o11 + o0o0o4) & 0xFFFFFFFF
        keys.append(o0o0o11)
    
    # 逆向Feistel网络
    for i in range(31, -1, -1):
        o0o0o11 = keys[i]
        # 逆向右半部分
        R_prev = (R - (((L << 4) + o0o0o7) ^ (L + o0o0o11) ^ ((L >> 4) + o0o0o8))) & 0xFFFFFFFF
        # 逆向左半部分
        L_prev = (L - (((R_prev << 4) + o0o0o5) ^ (R_prev + o0o0o11) ^ ((R_prev >> 4) + o0o0o6))) & 0xFFFFFFFF
        L, R = L_prev, R_prev
    
    return L, R

def Carlotta_inv(output_P, output_Q, o0oE, o0oF):
    # 逆向Carlotta函数
    o0oH = 305419896
    o0oI = o0oE & 0xFFFF
    o0oJ = (o0oE >> 16) & 0xFFFF
    o0oK = (o0oE ^ o0oF) & 0xFFFF
    o0oL = ((o0oE >> 8) ^ o0oF) & 0xFFFF
    o0oM = (o0oH * (o0oF + 1)) & 0xFFFFFFFF
    
    # 第二轮逆向
    o0oN2 = (((output_P << 5) + o0oK) ^ (output_P + o0oM) ^ ((output_P >> 5) + o0oL)) & 0xFFFFFFFF
    o0oD = (output_Q - o0oN2) & 0xFFFF
    
    # 第一轮逆向
    o0oN1 = (((o0oD << 5) + o0oI) ^ (o0oD + o0oM) ^ ((o0oD >> 5) + o0oJ)) & 0xFFFFFFFF
    o0oC = (output_P - o0oN1) & 0xFFFF
    
    return o0oC, o0oD

def find_original_input():
    # 目标输出
    target = [105084753, 3212558540, 351342182, 844102737, 2002504052, 356536456, 2463183122, 615034880, 1156203296]
    
    # 步骤1: 逆向changli操作链
    # 从后往前逆向changli操作
    state = target.copy()
    
    # 逆向8轮changli操作
    for i in range(7, -1, -1):
        L_prev, R_prev = changli_inv(state[i], state[i+1], 2025)
        state[i] = L_prev
        state[i+1] = R_prev
    
    # 步骤2: 逆向Carlotta和Shorekeeper操作
    original_input = []
    for j in range(9):
        # 从state[j]中提取Carlotta的输出
        output_P = (state[j] >> 16) & 0xFFFF
        output_Q = state[j] & 0xFFFF
        
        # Carlotta函数的参数
        o0oE = j + 2025  # 索引 + 2025
        o0oF = j * j     # 索引的平方
        
        # 逆向Carlotta得到Shorekeeper的输出
        o0oC, o0oD = Carlotta_inv(output_P, output_Q, o0oE, o0oF)
        
        # 合并得到原始输入
        original_val = (o0oC << 16) | o0oD
        original_input.append(original_val)
    
    return original_input

# 计算原始key
original_key = find_original_input()
print("原始key:", original_key)

# 验证结果
def verify_solution(input_key):
    # 重新实现shouan函数来验证
    if len(input_key) != 9:
        raise ValueError("需要输入9个key")
    
    o0o0o35 = []
    for o0o0o49, o0o0o34 in enumerate(input_key):
        o0o0o33 = o0o0o49 * o0o0o49
        
        # Shorekeeper操作
        o0o0o13 = o0o0o34 >> 16
        o0o0o14 = o0o0o34 & 0xFFFF
        
        # Carlotta操作
        o0oE = o0o0o49 + 2025
        o0oF = o0o0o33
        
        o0oH = 305419896
        o0oI = o0oE & 0xFFFF
        o0oJ = (o0oE >> 16) & 0xFFFF
        o0oK = (o0oE ^ o0oF) & 0xFFFF
        o0oL = ((o0oE >> 8) ^ o0oF) & 0xFFFF
        o0oM = (o0oH * (o0oF + 1)) & 0xFFFFFFFF
        
        o0oN = (((o0o0o14 << 5) + o0oI) ^ (o0o0o14 + o0oM) ^ ((o0o0o14 >> 5) + o0oJ)) & 0xFFFFFFFF
        o0oP = (o0o0o13 + o0oN) & 0xFFFF
        
        o0oN = (((o0oP << 5) + o0oK) ^ (o0oP + o0oM) ^ ((o0oP >> 5) + o0oL)) & 0xFFFFFFFF
        o0oQ = (o0o0o14 + o0oN) & 0xFFFF
        
        o0o0o40 = (o0oP << 16) | o0oQ
        o0o0o35.append(o0o0o40)
    
    o0o0o41 = []
    for i in range(8):
        L, R = changli(o0o0o35[i], o0o0o35[i+1], 2025)
        o0o0o35[i] = L
        o0o0o35[i+1] = R
        o0o0o41.append(L)
    
    o0o0o41.append(o0o0o35[8])
    return o0o0o41

# 重新定义changli函数用于验证
def changli(o0o0o1, o0o0o2, o0o0o3):
    o0o0o4 = 2269471011
    o0o0o5 = o0o0o3 & 0xFFFFFFFF
    o0o0o6 = ((o0o0o3 >> 8) ^ 305419896) & 0xFFFFFFFF
    o0o0o7 = ((o0o0o3 << 4) ^ 2271560481) & 0xFFFFFFFF
    o0o0o8 = ((o0o0o3 >> 12) ^ 2882400000) & 0xFFFFFFFF
    o0o0o9 = o0o0o1 & 0xFFFFFFFF
    o0o0o10 = o0o0o2 & 0xFFFFFFFF
    o0o0o11 = 0
    
    for _ in range(32):
        o0o0o11 = (o0o0o11 + o0o0o4) & 0xFFFFFFFF
        o0o0o9 = (o0o0o9 + (((o0o0o10 << 4) + o0o0o5) ^ (o0o0o10 + o0o0o11) ^ ((o0o0o10 >> 4) + o0o0o6))) & 0xFFFFFFFF
        o0o0o10 = (o0o0o10 + (((o0o0o9 << 4) + o0o0o7) ^ (o0o0o9 + o0o0o11) ^ ((o0o0o9 >> 4) + o0o0o8))) & 0xFFFFFFFF
    
    return (o0o0o9, o0o0o10)

# 验证结果
print("验证结果:", verify_solution(original_key))
print("目标输出:", [105084753, 3212558540, 351342182, 844102737, 2002504052, 356536456, 2463183122, 615034880, 1156203296])
print("验证通过:", verify_solution(original_key) == [105084753, 3212558540, 351342182, 844102737, 2002504052, 356536456, 2463183122, 615034880, 1156203296])

deepseek记录
https://chat.deepseek.com/share/kjctuy9d9s1ndd4yqx

好吧,后面就简单了
src打开很明显的pyarmor

使用

https://github.com/Lil-House/Pyarmor-Static-Unpack-1shot


但是py头被删了

补上PY000000
自己打包一份就知道了

反编译出来这样
把之前的key给ai

GD1

godot engine

https://in1t.top/2024/01/23/godot-%E5%BC%95%E6%93%8E%E9%80%86%E5%90%91%E5%88%9D%E6%8E%A2/

解包后,直接使用记事本打开main.gd

把main丢ai

binary_stream = (
    "00000110100000000110010100001000001100000110011100001000010000000111000000010010"
    "001100010010000000000110011100010001011100000110011000010000010100000111000000001"
    "000100100010001010000000100010100010001011100000101001100001001011100001000000000"
    "000101000000000100010100001000000100010000011000010001010100010001001000000111010"
    "100010000011100000100010100010001010000010000010000000100100000000111011000000111"
    "100100000100010100010001100100000101011100001000011100001001000000000101011000000"
    "1101000000100000001000010000011000100100101"
)

decoded_text = ""
for pos in range(0, len(binary_stream), 12):
    segment = binary_stream[pos:pos + 12]
    high_bits = int(segment[:4], 2)
    mid_bits = int(segment[4:8], 2)
    low_bits = int(segment[8:], 2)
    ascii_code = high_bits * 100 + mid_bits * 10 + low_bits
    decoded_text += chr(ascii_code)

print(decoded_text)

eztauri

根据题目描述可以得知是tauri的程序
https://blog.yllhwa.com/2023/05/09/Tauri%20%E6%A1%86%E6%9E%B6%E7%9A%84%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E6%8F%90%E5%8F%96%E6%96%B9%E6%B3%95%E6%8E%A2%E7%A9%B6/

i还有rust和javascript写的程序

搜索flag找到一个html

交叉引用找到地址

把index_flag.html dump下来解密
参考最开始的连接

把所有的js dump下来

# idapython: dump_if_contains_js.py
# 严格规则:当 filename 包含 ".js" 或 data 前样本包含 ".js" 时,dump 完整数据(不判断其它类型)
# 结构(64-bit):
#  qword @+0x0  -> filename_ptr
#  qword @+0x10 -> data_ptr
#  qword @+0x18 -> length (little-endian qword)
#
# 配置 START_EA=None 则扫描 .rdata 段;否则从 START_EA 开始按 ENTRY_SIZE 步长扫描。

import os, time
try:
    import idaapi, ida_bytes, ida_segment, idc
except Exception as e:
    print("请在 IDA 的 IDAPython 环境中运行。错误:", e)
    raise

# ========== 配置 ==========
START_EA = 0x0000000140642660   # 起始地址,改为 None 则自动在 .rdata 段内扫描
SEG_NAME = ".rdata"
ENTRY_SIZE = 0x20
MAX_DUMP_SIZE = 50 * 1024 * 1024   # 最大 dump 大小(50MB,防误读)
SAMPLE_SIZE = 8192                 # 用于检测的样本长度(字节)
OUTPUT_DIR = None                  # None -> 使用被分析文件所在目录
VERBOSE = True
MAX_ENTRIES = 20000                # 最多扫描条目数(防无限循环)

# ========== 工具函数 ==========
def read_bytes(ea, n):
    return ida_bytes.get_bytes(ea, n)

def read_qword(ea):
    b = read_bytes(ea, 8)
    if not b or len(b) < 8:
        return None
    return int.from_bytes(b, "little")

def is_mapped_address(addr):
    if not addr:
        return False
    return idaapi.getseg(addr) is not None

def safe_get_cstring(addr, maxlen=4096):
    if not addr:
        return None
    try:
        s = idc.get_strlit_contents(addr, -1, idc.STRTYPE_C)
        if s:
            return s.decode('utf-8', 'ignore')
    except Exception:
        pass
    b = read_bytes(addr, min(maxlen, 4096))
    if not b:
        return None
    i = b.find(b'\x00')
    if i >= 0:
        return b[:i].decode('utf-8', 'ignore')
    return b.decode('utf-8', 'ignore')

def sanitize_filename(name):
    if not name:
        name = "resource"
    name = name.replace("\\", "/")
    base = name.split("/")[-1]
    if not base:
        base = "resource"
    base = "".join(ch if (31 < ord(ch) < 127) else "_" for ch in base)
    if len(base) > 200:
        base = base[:200]
    return base

def unique_path(directory, filename):
    path = os.path.join(directory, filename)
    base, ext = os.path.splitext(filename)
    i = 1
    while os.path.exists(path):
        path = os.path.join(directory, f"{base}_{i}{ext}")
        i += 1
    return path

# ========== 主流程 ==========
def main():
    global START_EA, OUTPUT_DIR
    print("[*] dump_if_contains_js.py 启动")

    # 输出目录
    if OUTPUT_DIR:
        out_dir = OUTPUT_DIR
    else:
        try:
            in_path = idaapi.get_input_file_path()
            out_dir = os.path.dirname(in_path) or os.getcwd()
        except Exception:
            out_dir = os.getcwd()
    os.makedirs(out_dir, exist_ok=True)
    print("[*] 输出目录:", out_dir)

    # 决定扫描起点与终点
    if START_EA is None:
        seg = ida_segment.get_segm_by_name(SEG_NAME)
        if not seg:
            # 模糊匹配包含 rdata 的段名
            seg = None
            ea_tmp = idaapi.get_first_seg()
            while ea_tmp != idaapi.BADADDR:
                s = idaapi.getseg(ea_tmp)
                if not s:
                    break
                try:
                    name = ida_segment.get_segm_name(s)
                except:
                    try:
                        name = idaapi.get_segm_name(s)
                    except:
                        name = ""
                if name and SEG_NAME.lower() in name.lower():
                    seg = s
                    break
                ea_tmp = s.end_ea
            if not seg:
                print("[-] 未找到段 '%s',请设置 START_EA" % SEG_NAME)
                return
        start = seg.start_ea
        end = seg.end_ea
    else:
        start = START_EA
        seg = idaapi.getseg(start)
        if seg:
            end = seg.end_ea
        else:
            end = start + ENTRY_SIZE * MAX_ENTRIES

    print("[*] 扫描区间: 0x%X - 0x%X (步长 0x%X)" % (start, end, ENTRY_SIZE))

    ea = start
    dumped = 0
    scanned = 0
    while ea < end and scanned < MAX_ENTRIES:
        scanned += 1
        try:
            fname_ptr = read_qword(ea)
            if not fname_ptr or not is_mapped_address(fname_ptr):
                ea += ENTRY_SIZE
                continue
            fname = safe_get_cstring(fname_ptr)
            # 读取 data_ptr 和 length(必须存在)
            data_ptr = read_qword(ea + 0x10)
            length = read_qword(ea + 0x18)
            if not data_ptr or not length:
                ea += ENTRY_SIZE
                continue
            if not is_mapped_address(data_ptr):
                ea += ENTRY_SIZE
                continue
            if length <= 0 or length > MAX_DUMP_SIZE:
                if VERBOSE:
                    print("[!] 跳过 entry@0x%X,长度异常: %s" % (ea, str(length)))
                ea += ENTRY_SIZE
                continue

            # 读取样本(用于判断是否包含 ".js"), 小写字节比较
            sample_len = min(length, SAMPLE_SIZE)
            sample = read_bytes(data_ptr, sample_len) or b""
            sample_lower = sample.lower() if isinstance(sample, bytes) else bytes(sample).lower()

            # 判断逻辑:只要 filename 包含 ".js"(不区分大小写)或样本包含 b'.js' 就 dump
            fname_has_js = False
            if fname:
                try:
                    fname_has_js = ('.js' in fname.lower())
                except:
                    fname_has_js = False

            sample_has_js = b'.js' in sample_lower

            if not (fname_has_js or sample_has_js):
                if VERBOSE:
                    # 输出少量信息便于排查
                    print("[-] 非 .js,跳过 entry@0x%X name=%s data@0x%X len=%d" % (ea, fname if fname else "None", data_ptr, length))
                ea += ENTRY_SIZE
                continue

            # 读取完整数据并写文件
            data = read_bytes(data_ptr, length)
            if data is None:
                if VERBOSE:
                    print("[!] 无法读取完整数据 data@0x%X len=%d" % (data_ptr, length))
                ea += ENTRY_SIZE
                continue

            # 生成文件名:优先使用原名(若存在),若没有或不合理则生成 res_<addr>.js
            if fname and '.js' in fname.lower():
                clean_name = sanitize_filename(fname)
                # 若没有扩展名,追加 .js
                if os.path.splitext(clean_name)[1] == "":
                    clean_name += '.js'
            else:
                clean_name = "res_%X.js" % data_ptr

            out_path = unique_path(out_dir, clean_name)
            with open(out_path, 'wb') as f:
                f.write(data)

            dumped += 1
            print("[+] DUMP: %s (entry@0x%X, data@0x%X, len=%d)" % (out_path, ea, data_ptr, length))

            # 在 IDA 上添加注释 / 命名
            try:
                idc.set_name(ea, "js_res_entry_%X" % ea, idc.SN_CHECK)
                idc.set_name(data_ptr, "js_res_data_%X" % data_ptr, idc.SN_CHECK)
                idc.set_cmt(ea, "dumped -> %s (contains .js)" % os.path.basename(out_path), 0)
            except Exception:
                pass

        except Exception as ex:
            print("[-] 异常 @0x%X: %s" % (ea, ex))
        ea += ENTRY_SIZE

    print("[*] 完成。扫描条目数: %d, 成功 dump: %d 个文件" % (scanned, dumped))

if __name__ == "__main__":
    main()

使用 brotli对文件进行批量解压缩

import os  
import brotli  
  
# 当前文件夹  
folder_path = os.getcwd()  
output_folder = os.path.join(folder_path, "decompressed_files")  
  
# 创建输出文件夹  
os.makedirs(output_folder, exist_ok=True)  
  
# 遍历文件夹中的所有文件  
for filename in os.listdir(folder_path):  
    file_path = os.path.join(folder_path, filename)  
  
    # 跳过文件夹  
    if os.path.isdir(file_path):  
        continue  
  
    try:  
        with open(file_path, "rb") as f:  
            compressed_data = f.read()  
  
        decompressed_data = brotli.decompress(compressed_data)  
  
        # 构造输出文件名  
        output_name = f"{os.path.splitext(filename)[0]}_decompressed{os.path.splitext(filename)[1]}"  
        output_path = os.path.join(output_folder, output_name)  
  
        with open(output_path, "wb") as f:  
            f.write(decompressed_data)  
  
        print(f"[SUCCESS] {filename} -> {output_name}")  
  
    except brotli.error:  
        print(f"[FAILED] {filename} is not a valid Brotli file.")  
    except Exception as e:  
        print(f"[ERROR] {filename} caused an error: {e}")

然后分析一下结构
把这些js都丢给ai分析

把代码量不多的都可以删了
分析出来两个文件存在加密函数
一个是main.js一个是html_actuator.js
main.js

html_actuator.js

html_actuator可能性跟高一点
分析出来是
前端 RC4 加密、Base64 编码后发给 Tauri 后 端 greet

让ai写脚本获取xor流

// 原始混淆代码保持不变

(function(_0x97aee2,_0x14d3d9){const _0x151017=_0x363b,_0x2b0390=_0x97aee2();while(!![]){try{const _0x3b9dd4=parseInt(_0x151017(0xb0))/0x1+parseInt(_0x151017(0xac))/0x2+parseInt(_0x151017(0xaa))/0x3+-parseInt(_0x151017(0xab))/0x4+-parseInt(_0x151017(0xa7))/0x5*(parseInt(_0x151017(0xa8))/0x6)+-parseInt(_0x151017(0xae))/0x7*(-parseInt(_0x151017(0xa6))/0x8)+-parseInt(_0x151017(0xad))/0x9;if(_0x3b9dd4===_0x14d3d9)break;else _0x2b0390['push'](_0x2b0390['shift']());}catch(_0x34886e){_0x2b0390['push'](_0x2b0390['shift']());}}}(_0x3a0b,0x6e7b4));

function Encrypt_0x5031b3(_0x5031b3, _0xa31304){const _0x22bac7=_0x363b,_0x5d7b84=new TextEncoder()[_0x22bac7(0xa9)](_0x5031b3),_0x2db5b9=new TextEncoder()[_0x22bac7(0xa9)](_0xa31304),_0x1f7f86=new Uint8Array(0x100);let _0x562e52=0x0;for(let _0x24ca0d=0x0; _0x24ca0d<0x100; _0x24ca0d++){_0x1f7f86[_0x24ca0d]=_0x24ca0d,_0x562e52=(_0x562e52+_0x1f7f86[_0x24ca0d]+_0x5d7b84[_0x24ca0d%_0x5d7b84[_0x22bac7(0xaf)]])%0x100,[_0x1f7f86[_0x24ca0d],_0x1f7f86[_0x562e52]]=[_0x1f7f86[_0x562e52],_0x1f7f86[_0x24ca0d]];}let _0x5b36c3=0x0,_0x205ec1=0x0;const _0x444cf9=new Uint8Array(_0x2db5b9[_0x22bac7(0xaf)]);for(let _0x527286=0x0; _0x527286<_0x2db5b9[_0x22bac7(0xaf)]; _0x527286++){_0x5b36c3=(_0x5b36c3+0x1)%0x100,_0x205ec1=(_0x205ec1+_0x1f7f86[_0x5b36c3])%0x100,[_0x1f7f86[_0x5b36c3],_0x1f7f86[_0x205ec1]]=[_0x1f7f86[_0x205ec1],_0x1f7f86[_0x5b36c3]];const _0x326832=(_0x1f7f86[_0x5b36c3]+_0x1f7f86[_0x205ec1])%0x100;_0x444cf9[_0x527286]=_0x2db5b9[_0x527286]^_0x1f7f86[_0x326832];}return _0x444cf9;}function _0x363b(_0x3e7d70, _0x4a2c88){const _0x3a0bb6=_0x3a0b();return _0x363b=function(_0x363b1f, _0x4025c1){_0x363b1f=_0x363b1f-0xa6;let _0x387f5b=_0x3a0bb6[_0x363b1f];return _0x387f5b;},_0x363b(_0x3e7d70,_0x4a2c88);}function _0x3a0b(){const _0x37fb1e=['3283052tzDAvB','542866JdmzNj','4112658rTyTXQ','16954tUYpad','length','457163LwGIuU','2696pusaTH','233035azfeoA','66oGYEyB','encode','2094372kZRrIa'];_0x3a0b=function(){return _0x37fb1e;};return _0x3a0b();}

  

// 提取keystream的代码

const key = "SAdt0ngY1AIrC4hH";

const plaintext = 'a'.repeat(64);  // 64个'a'

  

// 使用原始函数加密

const encrypted = Encrypt_0x5031b3(key, plaintext);

  

// 提取keystream: ciphertext XOR plaintext = keystream

const keystream = [];

const aCharCode = 'a'.charCodeAt(0);  // 97

  

for (let i = 0; i < encrypted.length; i++) {

    keystream.push(encrypted[i] ^ aCharCode);

}

  

// 按要求的格式输出

console.log('KEYSTREAM = [', keystream.join(','), ']');
node -e "(function(_0x97aee2,_0x14d3d9){const _0x151017=_0x363b,_0x2b0390=_0x97aee2();while(!![]){try{const _0x3b9dd4=parseInt(_0x151017(0xb0))/0x1+parseInt(_0x151017(0xac))/0x2+parseInt(_0x151017(0xaa))/0x3+-parseInt(_0x151017(0xab))/0x4+-parseInt(_0x151017(0xa7))/0x5*(parseInt(_0x151017(0xa8))/0x6)+-parseInt(_0x151017(0xae))/0x7*(-parseInt(_0x151017(0xa6))/0x8)+-parseInt(_0x151017(0xad))/0x9;if(_0x3b9dd4===_0x14d3d9)break;else _0x2b0390['push'](_0x2b0390['shift']());}catch(_0x34886e){_0x2b0390['push'](_0x2b0390['shift']());}}}(_0x3a0b,0x6e7b4));function Encrypt_0xa31304(_0x5031b3, _0xa31304){const _0x22bac7=_0x363b,_0x5d7b84=new TextEncoder()[_0x22bac7(0xa9)](_0x5031b3),_0x2db5b9=new TextEncoder()[_0x22bac7(0xa9)](_0xa31304),_0x1f7f86=new Uint8Array(0x100);let _0x562e52=0x0;for(let _0x24ca0d=0x0; _0x24ca0d<0x100; _0x24ca0d++){_0x1f7f86[_0x24ca0d]=_0x24ca0d,_0x562e52=(_0x562e52+_0x1f7f86[_0x24ca0d]+_0x5d7b84[_0x24ca0d%_0x5d7b84[_0x22bac7(0xaf)]])%0x100,[_0x1f7f86[_0x24ca0d],_0x1f7f86[_0x562e52]]=[_0x1f7f86[_0x562e52],_0x1f7f86[_0x24ca0d]];}let _0x5b36c3=0x0,_0x205ec1=0x0;const _0x444cf9=new Uint8Array(_0x2db5b9[_0x22bac7(0xaf)]);for(let _0x527286=0x0; _0x527286<_0x2db5b9[_0x22bac7(0xaf)]; _0x527286++){_0x5b36c3=(_0x5b36c3+0x1)%0x100,_0x205ec1=(_0x205ec1+_0x1f7f86[_0x5b36c3])%0x100,[_0x1f7f86[_0x5b36c3],_0x1f7f86[_0x205ec1]]=[_0x1f7f86[_0x205ec1],_0x1f7f86[_0x5b36c3]];const _0x326832=(_0x1f7f86[_0x5b36c3]+_0x1f7f86[_0x205ec1])%0x100;_0x444cf9[_0x527286]=_0x2db5b9[_0x527286]^_0x1f7f86[_0x326832];}return _0x444cf9;}function _0x363b(_0x3e7d70,_0x4a2c88){const _0x3a0bb6=_0x3a0b();return _0x363b=function(_0x363b1f,_0x4025c1){_0x363b1f=_0x363b1f-0xa6;let _0x387f5b=_0x3a0bb6[_0x363b1f];return _0x387f5b;},_0x363b(_0x3e7d70,_0x4a2c88);}function _0x3a0b(){const _0x37fb1e=['3283052tzDAvB','542866JdmzNj','4112658rTyTXQ','16954tUYpad','length','457163LwGIuU','2696pusaTH','233035azfeoA','66oGYEyB','encode','2094372kZRrIa'];_0x3a0b=function(){return _0x37fb1e;};return _0x3a0b();}const key='SadTongYiAiRC4HH';const plaintext='a'.repeat(64);const encrypted=Encrypt_0xa31304(key,plaintext);const keystream=[];const aCharCode='a'.charCodeAt(0);for(let i=0;i<encrypted.length;i++){keystream.push(encrypted[i]^aCharCode);}console.log('KEYSTREAM = [',keystream.join(','),']');"

KEYSTREAM = [ 232,0,230,97,0,0,88,88,0,118,233,0,91,8,29,213,0,224,188,251,252,20,20,0,0,0,0,0,0,0,222,119,0,0,177,0,0,0,0,0,0,0,149,8,120,233,187,175,0,3,3,0,238,96,0,0,241,87,73,96,0,31,31,0 ]
PS C:\Users\administered>

继续分析exe
findcrypt识别到tea和base64

先从base64开始看起
把这串东西丢给ai

// Hidden C++ exception states: #wind=8
char __fastcall sub_1400356D0(__int64 a1, __int64 a2)
{
  const void *v3; // rsi
  __int64 v5; // r9
  char *v6; // rsi
  size_t n8_1; // r12
  __int64 Buf1_4; // r8
  unsigned __int64 i_1; // rdi
  size_t n8; // r15
  unsigned int v11; // r14d
  unsigned int v12; // r13d
  int n32; // eax
  int n2117703607; // ecx
  unsigned __int64 v15; // rdi
  char *Buf1_1; // rdx
  _QWORD *v17; // r10
  unsigned __int64 i; // rbx
  unsigned __int8 v19; // r12
  unsigned int v20; // r14d
  unsigned int v21; // r13d
  char v22; // si
  unsigned __int64 v23; // r15
  char *Buf1_9; // rax
  char *v25; // r15
  char v26; // r12
  unsigned __int64 v27; // rsi
  char *v28; // rax
  char *v29; // rsi
  char v30; // r14
  unsigned __int64 v31; // r15
  char *v32; // rax
  char *v33; // r15
  char v34; // si
  unsigned __int64 v35; // rdx
  char *v36; // rax
  _QWORD *v37; // r12
  _QWORD *v38; // r12
  unsigned __int64 i_2; // rcx
  unsigned int v40; // ebx
  char v41; // si
  unsigned __int64 v42; // rdi
  char *Buf1_5; // rax
  __int64 v44; // rbx
  char *v45; // rdi
  char v46; // bl
  unsigned __int64 v47; // r10
  char *v48; // rcx
  __int64 v49; // rax
  char *n74; // r10
  char *v51; // rdx
  char *n74_1; // rcx
  char *v53; // rcx
  __int64 v54; // rdi
  __int64 v55; // rbx
  unsigned __int8 v56; // si
  unsigned int v57; // r14d
  char v58; // bl
  unsigned __int64 v59; // rdi
  char *Buf1_2; // rax
  int v61; // esi
  char *v62; // rdi
  char v63; // si
  unsigned __int64 v64; // rbx
  char *v65; // rcx
  __int64 v66; // r14
  __int64 v67; // rax
  char *v68; // rbx
  char v69; // si
  char *v70; // rcx
  unsigned __int64 v71; // rdx
  char *v72; // rdx
  char *v73; // rcx
  __int64 v74; // rax
  __int64 v75; // rsi
  __int64 v76; // rcx
  __int64 v77; // rsi
  __int64 v78; // rax
  char *Buf1_6; // r14
  char *n74_2; // rsi
  char *n74_3; // rsi
  char *Buf1_3; // r15
  char *v83; // rsi
  __int64 v84; // [rsp+20h] [rbp-60h]
  _BYTE Dst[520]; // [rsp+38h] [rbp-48h] BYREF
  _QWORD v86[50]; // [rsp+240h] [rbp+1C0h] BYREF
  __int128 v87; // [rsp+3D0h] [rbp+350h] BYREF
  __int64 v88; // [rsp+3E0h] [rbp+360h]
  void *Src[2]; // [rsp+3E8h] [rbp+368h] BYREF
  size_t Size[2]; // [rsp+3F8h] [rbp+378h]
  _QWORD v91[50]; // [rsp+408h] [rbp+388h] BYREF
  __int64 v92; // [rsp+598h] [rbp+518h] BYREF
  __int128 v93; // [rsp+5A0h] [rbp+520h]
  __int128 v94; // [rsp+5B0h] [rbp+530h]
  __int128 v95; // [rsp+5C0h] [rbp+540h] BYREF
  void *Buf1_7; // [rsp+5D0h] [rbp+550h]
  __int64 v97; // [rsp+5D8h] [rbp+558h]
  void *Buf1; // [rsp+5E0h] [rbp+560h]
  __int64 v99; // [rsp+5E8h] [rbp+568h]
  __int64 Buf1_8; // [rsp+5F0h] [rbp+570h]
  char v101; // [rsp+5FFh] [rbp+57Fh]
  __int64 v102; // [rsp+600h] [rbp+580h]

  v102 = -2;
  if ( *(_QWORD *)(a2 + 472) != 11
    || **(_QWORD **)(a2 + 464) ^ 0x6D6D6F635F637069LL | *(_QWORD *)(*(_QWORD *)(a2 + 464) + 3LL) ^ 0x646E616D6D6F635FLL )
  {
    sub_14000E200(a2);
    return 0;
  }
  v3 = (const void *)(a2 + 520);
  memcpy(Dst, (const void *)a2, sizeof(Dst));
  memcpy(v86, v3, sizeof(v86));
  Buf1_7 = *(void **)(a2 + 936);
  v95 = *(_OWORD *)(a2 + 920);
  v91[6] = 0;
  v91[0] = aIpcCommand;
  v91[1] = 11;
  v91[2] = aName_0;
  v91[3] = 4;
  v91[4] = Dst;
  v91[5] = &v95;
  v101 = 1;
  sub_1402E0C00(Src, v91);
  if ( LOBYTE(Src[0]) != 6 )
  {
    v94 = *(_OWORD *)Size;
    v93 = *(_OWORD *)Src;
    memcpy(v91, v3, 0x168u);
    v87 = *(_OWORD *)(a2 + 880);
    v88 = *(_QWORD *)(a2 + 896);
    v92 = 1;
    v101 = 0;
    sub_140277AC0((unsigned int)v91, v86[48], (unsigned int)&v92, (unsigned int)&v87, v86[49], HIDWORD(v86[49]));
    goto LABEL_83;
  }
  v6 = (char *)Src[1];
  n8_1 = Size[0];
  v91[0] = 0;
  v91[1] = 1;
  v91[2] = 0;
  Buf1_4 = 1;
  if ( Size[0] )
  {
    Buf1_8 = 1;
    i_1 = 0;
    do
    {
      n8 = 8;
      if ( n8_1 < 8 )
        n8 = n8_1;
      v92 = 0;
      memcpy(&v92, v6, n8);
      v11 = v92;
      v12 = HIDWORD(v92);
      n32 = 32;
      n2117703607 = 2117703607;
      do
      {
        v11 += (16 * v12 + 1668048215) ^ (v12 + n2117703607) ^ ((v12 >> 5) + 1949527375);
        v5 = (16 * v11 + 1937076784) ^ (n2117703607 + v11);
        v12 += v5 ^ ((v11 >> 5) + 1432441972);
        n2117703607 += 2117703607;
        --n32;
      }
      while ( n32 );
      if ( v91[0] - i_1 <= 3 )
      {
        sub_1405C98F0((unsigned int)v91, i_1, 4, 1, 1);
        Buf1_8 = v91[1];
        i_1 = v91[2];
      }
      *(_DWORD *)(Buf1_8 + i_1) = _byteswap_ulong(v11);
      v15 = i_1 + 4;
      v91[2] = v15;
      if ( v91[0] - v15 <= 3 )
      {
        sub_1405C98F0((unsigned int)v91, v15, 4, 1, 1);
        v15 = v91[2];
      }
      v6 += n8;
      n8_1 -= n8;
      Buf1_8 = v91[1];
      *(_DWORD *)(v91[1] + v15) = _byteswap_ulong(v12);
      i_1 = v15 + 4;
      v91[2] = i_1;
    }
    while ( n8_1 );
    v99 = v91[0];
    Buf1_4 = 1;
  }
  else
  {
    i_1 = 0;
    Buf1_8 = 1;
    v99 = 0;
  }
  v91[0] = 0;
  v91[1] = 1;
  v91[2] = 0;
  Buf1_1 = 0;
  v17 = v91;
  for ( i = 0; i + 2 < i_1; i += 3LL )
  {
    if ( i >= i_1 )
      sub_1405DC1E8(i, i_1, &off_1405E0BE8, v5, v84);// "src\\lib.rs"
    if ( i + 1 >= i_1 )
      sub_1405DC1E8(i + 1, i_1, &off_1405E0C00, v5, v84);// "src\\lib.rs"
    v19 = *(_BYTE *)(Buf1_8 + i);
    v20 = *(unsigned __int8 *)(Buf1_8 + i + 1);
    v21 = *(unsigned __int8 *)(Buf1_8 + i + 2);
    v22 = BASE64_table_1405E0B90[v19 >> 2];
    v23 = (v22 < 0) + 1LL;
    Buf1_9 = Buf1_1;
    if ( v23 <= v91[0] - (_QWORD)Buf1_1 )
    {
      if ( v22 >= 0 )
        goto LABEL_27;
LABEL_26:
      Buf1_9[Buf1_4 + 1] = v22 & 0xBF;
      v22 = ((unsigned __int8)v22 >> 6) | 0xC0;
      goto LABEL_27;
    }
    Buf1 = Buf1_1;
    sub_1405C98F0((_DWORD)v17, (_DWORD)Buf1_1, (v22 < 0) + 1, 1, 1);
    Buf1_4 = v91[1];
    Buf1_9 = (char *)v91[2];
    Buf1_1 = (char *)Buf1;
    v17 = v91;
    if ( v22 < 0 )
      goto LABEL_26;
LABEL_27:
    Buf1_9[Buf1_4] = v22;
    v25 = &Buf1_1[v23];
    v91[2] = v25;
    v26 = BASE64_table_1405E0B90[(16 * v19) & 0x30 | (v20 >> 4)];
    v27 = (v26 < 0) + 1LL;
    v28 = v25;
    if ( v27 <= v91[0] - (_QWORD)v25 )
    {
      Buf1_4 = v91[1];
      if ( v26 >= 0 )
        goto LABEL_30;
LABEL_29:
      v28[Buf1_4 + 1] = v26 & 0xBF;
      v26 = ((unsigned __int8)v26 >> 6) | 0xC0;
      goto LABEL_30;
    }
    sub_1405C98F0((_DWORD)v17, (_DWORD)v25, (v26 < 0) + 1, 1, 1);
    v28 = (char *)v91[2];
    v17 = v91;
    Buf1_4 = v91[1];
    if ( v26 < 0 )
      goto LABEL_29;
LABEL_30:
    v28[Buf1_4] = v26;
    v29 = &v25[v27];
    v91[2] = v29;
    v30 = BASE64_table_1405E0B90[4 * (v20 & 0xF) + (v21 >> 6)];
    v31 = (v30 < 0) + 1LL;
    v32 = v29;
    if ( v31 <= v91[0] - (_QWORD)v29 )
    {
      if ( v30 >= 0 )
        goto LABEL_33;
LABEL_32:
      v32[Buf1_4 + 1] = v30 & 0xBF;
      v30 = ((unsigned __int8)v30 >> 6) | 0xC0;
      goto LABEL_33;
    }
    v37 = v17;
    sub_1405C98F0((_DWORD)v17, (_DWORD)v29, (v30 < 0) + 1, 1, 1);
    Buf1_4 = v91[1];
    v32 = (char *)v91[2];
    v17 = v37;
    if ( v30 < 0 )
      goto LABEL_32;
LABEL_33:
    v32[Buf1_4] = v30;
    v33 = &v29[v31];
    v91[2] = v33;
    v34 = BASE64_table_1405E0B90[v21 & 0x3F];
    v35 = (v34 < 0) + 1LL;
    v36 = v33;
    if ( v35 <= v91[0] - (_QWORD)v33 )
    {
      if ( v34 >= 0 )
        goto LABEL_20;
LABEL_35:
      v36[Buf1_4 + 1] = v34 & 0xBF;
      v34 = ((unsigned __int8)v34 >> 6) | 0xC0;
      goto LABEL_20;
    }
    v38 = v17;
    sub_1405C98F0((_DWORD)v17, (_DWORD)v33, (v34 < 0) + 1, 1, 1);
    Buf1_4 = v91[1];
    v36 = (char *)v91[2];
    v35 = (v34 < 0) + 1LL;
    v17 = v38;
    if ( v34 < 0 )
      goto LABEL_35;
LABEL_20:
    v36[Buf1_4] = v34;
    Buf1_1 = &v33[v35];
    v91[2] = Buf1_1;
  }
  i_2 = i + 1;
  if ( i + 1 != i_1 )
  {
    if ( i + 2 != i_1 )
      goto LABEL_75;
    if ( i >= i_1 )
      sub_1405DC1E8(i, i_1, &off_1405E0B60, v5, v84);// "src\\lib.rs"
    if ( i_2 >= i_1 )
      sub_1405DC1E8(i_2, i_1, &off_1405E0B78, v5, v84);// "src\\lib.rs"
    v56 = *(_BYTE *)(Buf1_8 + i);
    v57 = *(unsigned __int8 *)(Buf1_8 + i + 1);
    v58 = BASE64_table_1405E0B90[v56 >> 2];
    v59 = (v58 < 0) + 1LL;
    Buf1_2 = Buf1_1;
    if ( v59 > v91[0] - (_QWORD)Buf1_1 )
    {
      Buf1_3 = Buf1_1;
      sub_1405C98F0((unsigned int)v91, (_DWORD)Buf1_1, (v58 < 0) + 1, 1, 1);
      Buf1_4 = v91[1];
      Buf1_2 = (char *)v91[2];
      Buf1_1 = Buf1_3;
    }
    v61 = (16 * v56) & 0x30;
    if ( v58 < 0 )
    {
      Buf1_2[Buf1_4 + 1] = v58 & 0xBF;
      v58 = ((unsigned __int8)v58 >> 6) | 0xC0;
    }
    Buf1_2[Buf1_4] = v58;
    v62 = &Buf1_1[v59];
    v91[2] = v62;
    v63 = BASE64_table_1405E0B90[v61 | (v57 >> 4)];
    v64 = (v63 < 0) + 1LL;
    v65 = v62;
    if ( v64 > v91[0] - (_QWORD)v62 )
    {
      sub_1405C98F0((unsigned int)v91, (_DWORD)v62, (v63 < 0) + 1, 1, 1);
      v65 = (char *)v91[2];
    }
    v66 = (4 * (_BYTE)v57) & 0x3C;
    v67 = v91[1];
    if ( v63 < 0 )
    {
      v65[v91[1] + 1] = v63 & 0xBF;
      v63 = ((unsigned __int8)v63 >> 6) | 0xC0;
    }
    v65[v67] = v63;
    v68 = &v62[v64];
    v91[2] = v68;
    v69 = BASE64_table_1405E0B90[v66];
    v70 = v68;
    v71 = (v69 < 0) + 1LL;
    if ( v71 > v91[0] - (_QWORD)v68 )
    {
      sub_1405C98F0((unsigned int)v91, (_DWORD)v68, (v69 < 0) + 1, 1, 1);
      v67 = v91[1];
      v70 = (char *)v91[2];
      v71 = (v69 < 0) + 1LL;
      if ( v69 >= 0 )
        goto LABEL_72;
    }
    else if ( v69 >= 0 )
    {
LABEL_72:
      v70[v67] = v69;
      v72 = &v68[v71];
      v91[2] = v72;
      v73 = v72;
      if ( (char *)v91[0] == v72 )
      {
        v83 = v72;
        sub_1405C98F0((unsigned int)v91, (_DWORD)v72, 1, 1, 1);
        v67 = v91[1];
        v73 = (char *)v91[2];
        v72 = v83;
      }
      v73[v67] = 61;
      Buf1_1 = v72 + 1;
      Buf1_4 = v91[1];
LABEL_75:
      v54 = v99;
      Buf1 = (void *)Buf1_4;
      v55 = v91[0];
      if ( Buf1_1 != (char *)76 )
        goto LABEL_77;
      goto LABEL_76;
    }
    v70[v67 + 1] = v69 & 0xBF;
    v69 = ((unsigned __int8)v69 >> 6) | 0xC0;
    goto LABEL_72;
  }
  if ( i >= i_1 )
    sub_1405DC1E8(i, i_1, &off_1405E0BD0, v5, v84);// "src\\lib.rs"
  v40 = *(unsigned __int8 *)(Buf1_8 + i);
  v41 = BASE64_table_1405E0B90[v40 >> 2];
  v42 = (v41 < 0) + 1LL;
  Buf1_5 = Buf1_1;
  if ( v42 > v91[0] - (_QWORD)Buf1_1 )
  {
    Buf1_6 = Buf1_1;
    sub_1405C98F0((unsigned int)v91, (_DWORD)Buf1_1, (v41 < 0) + 1, 1, 1);
    Buf1_4 = v91[1];
    Buf1_5 = (char *)v91[2];
    Buf1_1 = Buf1_6;
    v44 = (16 * (_BYTE)v40) & 0x30;
    if ( v41 < 0 )
    {
LABEL_48:
      Buf1_5[Buf1_4 + 1] = v41 & 0xBF;
      v41 = ((unsigned __int8)v41 >> 6) | 0xC0;
    }
  }
  else
  {
    v44 = (16 * (_BYTE)v40) & 0x30;
    if ( v41 < 0 )
      goto LABEL_48;
  }
  Buf1_5[Buf1_4] = v41;
  v45 = &Buf1_1[v42];
  v91[2] = v45;
  v46 = BASE64_table_1405E0B90[v44];
  v47 = (v46 < 0) + 1LL;
  v48 = v45;
  if ( v47 > v91[0] - (_QWORD)v45 )
  {
    sub_1405C98F0((unsigned int)v91, (_DWORD)v45, (v46 < 0) + 1, 1, 1);
    v48 = (char *)v91[2];
    v47 = (v46 < 0) + 1LL;
    v49 = v91[1];
    if ( v46 < 0 )
    {
LABEL_51:
      v48[v49 + 1] = v46 & 0xBF;
      v46 = ((unsigned __int8)v46 >> 6) | 0xC0;
    }
  }
  else
  {
    v49 = v91[1];
    if ( v46 < 0 )
      goto LABEL_51;
  }
  v48[v49] = v46;
  n74 = &v45[v47];
  v91[2] = n74;
  v51 = (char *)v91[0];
  n74_1 = n74;
  if ( (char *)v91[0] == n74 )
  {
    n74_2 = n74;
    sub_1405C98F0((unsigned int)v91, (_DWORD)n74, 1, 1, 1);
    v51 = (char *)v91[0];
    v49 = v91[1];
    n74_1 = (char *)v91[2];
    n74 = n74_2;
  }
  n74_1[v49] = 61;
  v53 = n74 + 1;
  v91[2] = n74 + 1;
  v54 = v99;
  if ( v51 == n74 + 1 )
  {
    n74_3 = n74;
    sub_1405C98F0((unsigned int)v91, (_DWORD)v51, 1, 1, 1);
    v49 = v91[1];
    v53 = (char *)v91[2];
    v54 = v99;
    n74 = n74_3;
  }
  v53[v49] = 61;
  Buf1 = (void *)v91[1];
  v55 = v91[0];
  if ( n74 != (char *)74 )
  {
LABEL_77:
    nullsub_1();
    v74 = sub_140001080(3, 1);
    if ( !v74 )
    {
      v97 = v55;
      sub_1405DBDA3(1, 3, &off_1405E0B38);      // "C:\\Users\\Xierluo\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib/rustlib/src/rust\\library\\alloc\\src\\slice.rs"
    }
    v75 = v74;
    *(_BYTE *)(v74 + 2) = 100;
    *(_WORD *)v74 = 25922;
    if ( v55 )
      goto LABEL_79;
    goto LABEL_80;
  }
LABEL_76:
  if ( memcmp(Buf1, aDafDkqxixgmzn0, 0x4Cu) )
    goto LABEL_77;
  nullsub_1();
  v78 = sub_140001080(3, 1);
  if ( !v78 )
  {
    v97 = v55;
    sub_1405DBDA3(1, 3, &off_1405E0B38);        // "C:\\Users\\Xierluo\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib/rustlib/src/rust\\library\\alloc\\src\\slice.rs"
  }
  v75 = v78;
  *(_BYTE *)(v78 + 2) = 110;
  *(_WORD *)v78 = 26967;
  if ( v55 )
LABEL_79:
    sub_140001090(Buf1, v55, 1);
LABEL_80:
  if ( v54 )
    sub_140001090(Buf1_8, v54, 1);
  memcpy(v91, v86, sizeof(v91));
  *(_QWORD *)&v93 = 3;
  *((_QWORD *)&v93 + 1) = v75;
  *(_QWORD *)&v94 = 3;
  LOBYTE(v92) = 6;
  v101 = 0;
  sub_140294520(v91);
LABEL_83:
  if ( !__OFSUB__(0, (_QWORD)v95) )
  {
    v76 = *((_QWORD *)&v95 + 1);
    Buf1 = Buf1_7;
    Buf1_8 = 0;
    v99 = *((_QWORD *)&v95 + 1);
    while ( Buf1 != (void *)Buf1_8 )
    {
      ++Buf1_8;
      v77 = v76 + 96;
      sub_140255E40();
      v76 = v77;
    }
    if ( (_QWORD)v95 )
      sub_140001090(*((_QWORD *)&v95 + 1), 96 * v95, 8);
  }
  sub_14000F550(Dst);
  return 1;
}

#!/usr/bin/env python3
import base64

# 后端 .rdata 那串 base64(你给出的)
b64 = "daF/DkQxixGmzn0aPFW2E2PhM8NabRtLjp6pI+c8TtY3WMuPxfnvlAsp9aluf8noZy/T6Sz9DJg="
ct = base64.b64decode(b64)

# 你给的 KEYSTREAM(RC4 xor 流)
KEYSTREAM = [232,0,230,97,0,0,88,88,0,118,233,0,91,8,29,213,0,224,188,251,252,20,20,0,0,0,0,0,0,0,222,119,0,0,177,0,0,0,0,0,0,0,149,8,120,233,187,175,0,3,3,0,238,96,0,0,241,87,73,96,0,31,31,0]
KS = bytes(KEYSTREAM)

# 从反编译还原的常数(对应 C++ 中出现的那些十进制常量)
C1 = 1668048215   # 0x636c6557
C2 = 1949527375   # 0x74336d4f
C3 = 1937076784   # 0x73757230
C4 = 1432441972   # 0x55615474
DELTA = 2117703607  # 0x7e3997b7

def swap32(x):
    return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x >> 8) & 0xFF00) | ((x >> 24) & 0xFF)

def decrypt_block(block8):
    # block8: 8 bytes (as stored in ct)
    a = int.from_bytes(block8[0:4], 'little')
    b = int.from_bytes(block8[4:8], 'little')
    v11 = swap32(a)
    v12 = swap32(b)
    sum_ = DELTA * 32
    for _ in range(32):
        v12 = (v12 - ( ((16 * v11 + C3) ^ (sum_ + v11)) ^ ((v11 >> 5) + C4) )) & 0xFFFFFFFF
        v11 = (v11 - ( ((16 * v12 + C1) ^ (v12 + sum_)) ^ ((v12 >> 5) + C2) )) & 0xFFFFFFFF
        sum_ = (sum_ - DELTA) & 0xFFFFFFFFFFFFFFFF
    return v11.to_bytes(4,'little') + v12.to_bytes(4,'little')

# 1) TEA-like 解密(对 ct 按 8 字节块)
plain = bytearray()
for i in range(0, len(ct), 8):
    block = ct[i:i+8]
    plain += decrypt_block(block)

# 2) 解出的是个 base64 字符串,去除尾部可能的 0x00,再 decode
plain_b64 = bytes(plain).rstrip(b'\x00')
middle = base64.b64decode(plain_b64)

# 3) 用你给的 KEYSTREAM 异或(取 middle 长度)
res = bytes(middle[i] ^ KS[i] for i in range(len(middle)))
print(res.decode())
# -> flag{cf8be09b1c8a415f8b5e8f1dac71d4af}

re2

看plus.py很明显被混淆过
尝试运行一下,一个个试版本发现是3.9

报了个unicorn的错误
![[img/E8XH9BDOX]N7I(7D[YXIW20 1.png]]
装上了之后看一下调用

打印出来

<class 'operator.methodcaller'>
<unicorn.unicorn_py3.arch.intel.UcIntel object at 0x00000241D5D43730>
<cyfunction exec at 0x00000241D5DF3110>
<built-in function input>
<class 'str'>
<class 'operator.methodcaller'>
<built-in function print>


看起来说明 m 是 Python 内置模块 operator 里的类 operator.methodcaller

让ai优化一下py的代码

import re  
  
def simplify_additions_in_file(input_file, output_file):  
    # 读取原始代码  
    with open(input_file, "r", encoding="utf-8") as f:  
        code = f.read()  
  
    # 匹配类似 int(7 + 7 + 9 + 3) 这样的表达式  
    pattern = re.compile(r"int\(([\d+\s+]+)\)")  
  
    def replace_expr(match):  
        expr = match.group(1)  
        try:  
            # 计算加法的实际结果  
            result = eval(expr)  
            return f"int({result})"  
        except Exception:  
            return match.group(0)  # 出错就原样返回  
  
    # 执行替换  
    optimized_code = re.sub(pattern, replace_expr, code)  
  
    # 保存优化后的结果  
    with open(output_file, "w", encoding="utf-8") as f:  
        f.write(optimized_code)  
  
    print(f"✅ 已优化完成,结果保存到 {output_file}")  
  
# 使用示例  
simplify_additions_in_file("plus.py", "optimized.py")
from init import *;m(exec(exit(int(307) + int(922) + int(928) + int(883) + int(0) + int(60) + int(32))),exit(int(167) + int(772) + int(16)),exit(int(209) + int(715) + int(2)))(e);m(exec(exit(int(307) + int(922) + int(928) + int(883) + int(0) + int(60) + int(32))),exit(int(188) + int(743) + int(68)),exit(int(655) + int(36)))(e);m(exec(exit(int(201) + int(800) + int(370) + int(677) + int(125) + int(856) + int(982) + int(9))),exit(int(167) + int(772) + int(16)),exec(exit(int(215) + int(430) + int(820) + int(910) + int(458) + int(736) + int(505) + int(0) + int(51) + int(870) + int(224) + int(350) + int(847) + int(782) + int(563) + int(842) + int(941) + int(767) + int(450) + int(663) + int(266) + int(900) + int(616) + int(936) + int(594) + int(409) + int(721) + int(828) + int(862) + int(0) + int(50) + int(250) + int(877) + int(0) + int(0) + int(7) + int(259) + int(502) + int(951) + int(573) + int(354) + int(763) + int(0) + int(39) + int(390) + int(911) + int(514) + int(251) + int(779) + int(543) + int(944) + int(934) + int(960) + int(684) + int(0) + int(0) + int(8) + int(209) + int(628) + int(473) + int(304) + int(218) + int(610) + int(967) + int(519) + int(892) + int(397) + int(440) + int(123) + int(955) + int(636) + int(948) + int(631) + int(0) + int(47) + int(774) + int(533) + int(721) + int(835) + int(838) + int(0) + int(86) + int(0) + int(12) + int(898) + int(766) + int(274) + int(946) + int(831) + int(732) + int(554) + int(223) + int(371) + int(869) + int(0) + int(0) + int(7) + int(493) + int(373) + int(0) + int(65) + int(194) + int(188) + int(0) + int(38) + int(0) + int(55) + int(945) + int(3))),)(e);m(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(44)),exit(int(189) + int(399) + int(0) + int(3)))(e);m(exec(exit(int(201) + int(800) + int(370) + int(677) + int(125) + int(856) + int(982) + int(9))),exit(int(188) + int(784) + int(64)), i(exec(exit(int(520) + int(485) + int(229) + int(507) + int(545) + int(392) + int(928) + int(716) + int(380) + int(743) + int(873) + int(332) + int(979) + int(750) + int(615) + int(584)))).encode())(e);m(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(39)),exit(int(188) + int(784) + int(64)))(e);m(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(43)),exit(int(44)))(e);m(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(40)),7)(e);m(exec(exit(int(187) + int(100) + int(846) + int(671) + int(655) + int(242) + int(610) + int(0) + int())), exit(int(167) + int(772) + int(16)), exit(int(167) + int(773) + int(32)))(e);p(exec(exit(int(173) + int(535) + int(626) + int(0) + int()))) if (b(m(exec(exit(int(788) + int(282) + int(697) + int(949) + int(0) + int(48) + int(867) + int(6))), exit(int(188) + int(784) + int(64)), exit(int(44)))(e)).decode()== exec(exit(int(636) + int(496) + int(797) + int(464) + int(929) + int(889) + int(819) + int(0) + int(18) + int(589) + int(958) + int(474) + int(261) + int(894) + int(226) + int(380) + int(884) + int(858) + int(896) + int(837) + int(0) + int(50) + int(849) + int(823) + int(120) + int(0) + int(96) + int(559) + int(828) + int(809) + int(884) + int(712) + int(107) + int(801) + int(783) + int(610) + int(237) + int(788) + int(137) + int(0) + int(0) + int(2) + int(972) + int(622) + int(711) + int(849) + int(132) + int(377) + int(866) + int(432) + int(975) + int(817) + int(0) + int(21)))) else p(exec(exit(int(310) + int(844) + int(326) + int(706) + int(854) + int(73)))) #type:ignore
from init import *;m(exec(exit(3132)),exit(955),exit(926))(e);m(exec(exit(3132)),exit(999),exit(691))(e);m(exec(exit(4020)),exit(955),exec(exit(50720)),)(e);m(exec(exit(3635)),exit(44),exit(591))(e);m(exec(exit(4020)),exit(1036), i(exec(exit(9578))).encode())(e);m(exec(exit(3635)),exit(39),exit(1036))(e);m(exec(exit(3635)),exit(43),exit(44))(e);m(exec(exit(3635)),exit(40),7)(e);m(exec(exit(3311 + int())), exit(955), exit(972))(e);p(exec(exit(1334 + int()))) if (b(m(exec(exit(3637)), exit(1036), exit(44))(e)).decode()== exec(exit(28274))) else p(exec(exit(3113))) #type:ignore

再优化一下换行

#!/usr/bin/env python3
# optimize_and_prettify.py
# 用途:将单行混淆 Python 脚本拆行并把 int(...) 加法计算成数字
# 说明:保守替换——只计算由纯数字构成的 int(...) 加法片段,遇到空 int() 或非纯数字的 int(...) 会保留原样。

import re
import shutil
import sys
from pathlib import Path

def optimize_int_sums(text: str) -> str:
    """
    将连续的 int(NUM)+int(NUM)+... 替换成它们的和(数字字符串)。
    只匹配完全由 int(decimal) 构成的序列;不会触碰空的 int() 或含变量的 int(x)。
    """
    # 匹配类似 int(123) + int(456) + int(7)
    sum_pattern = re.compile(r'(?:int\(\d+\)(?:\s*\+\s*int\(\d+\))+)')
    def sum_repl(m):
        nums = re.findall(r'int\((\d+)\)', m.group(0))
        total = sum(map(int, nums))
        return str(total)
    text = sum_pattern.sub(sum_repl, text)

    # 再将单独的 int(123) -> 123 (但不改 int())
    text = re.sub(r'\bint\((\d+)\)\b', r'\1', text)
    return text

def split_statements_to_lines(text: str) -> str:
    """
    将以分号分隔的语句拆成多行,保留 ; 如果它在字符串常量内部则比较复杂——
    这里采取保守方法:基于简单分割 `;`,并修复连续 ; 带来的空行。
    """
    # 先把 Windows/Mac 换行标准化
    text = text.replace('\r\n', '\n').replace('\r', '\n')

    # 尝试智能拆分:把每个顶级分号作为换行位置
    # 这里用简单分割(对大多数混淆脚本是足够的,因为代码里少用字符串包含分号)
    parts = [p.strip() for p in text.split(';')]
    # 移除完全空的段
    parts = [p for p in parts if p != '']
    # 每行以分号结尾(保持语句终止),最后一行如果本来没有分号就不加
    lines = []
    for i, p in enumerate(parts):
        # 如果末尾是注释(# ...),已经在 p 中;我们保留注释
        # 对于最后一段:如果原文以分号结尾我们也会保留分号;这里检测比较难,保持每行加分号可以不影响执行
        # 但为了更自然,我们不在最后一行添加分号
        if i < len(parts) - 1:
            lines.append(p + ';')
        else:
            lines.append(p)
    return '\n'.join(lines)

def prettify(text: str) -> str:
    """
    主流程:先做数值简化,再拆行;这样可保证像 int(1)+int(2) 这种被合并后再换行。
    """
    t = optimize_int_sums(text)
    t = split_statements_to_lines(t)
    # 额外的清理:去掉多余空行
    t = re.sub(r'\n\s*\n+', '\n\n', t)
    return t

def backup_file(path: Path):
    bak = path.with_suffix(path.suffix + '.bak')
    shutil.copy2(path, bak)
    print(f"Backup created: {bak}")

def process_file(in_path: Path, out_path: Path = None):
    if not in_path.exists():
        raise FileNotFoundError(in_path)
    if out_path is None:
        out_path = in_path.with_name(in_path.stem + '_optimized' + in_path.suffix)

    backup_file(in_path)
    text = in_path.read_text(encoding='utf-8', errors='ignore')
    new_text = prettify(text)
    out_path.write_text(new_text, encoding='utf-8')
    print(f"Optimized written to: {out_path}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python optimize_and_prettify.py <input_file.py> [<output_file.py>]")
        sys.exit(1)
    inp = Path(sys.argv[1])
    out = Path(sys.argv[2]) if len(sys.argv) > 2 else None
    try:
        process_file(inp, out)
    except Exception as e:
        print("Error:", e)
        sys.exit(2)
from init import *;  
m(exec(exit(3132)),exit(955),exit(926))(e);  
m(exec(exit(3132)),exit(999),exit(691))(e);  
m(exec(exit(4020)),exit(955),exec(exit(50720)),)(e);  
m(exec(exit(3635)),exit(44),exit(591))(e);  
m(exec(exit(4020)),exit(1036), i(exec(exit(9578))).encode())(e);  
m(exec(exit(3635)),exit(39),exit(1036))(e);  
m(exec(exit(3635)),exit(43),exit(44))(e);  
m(exec(exit(3635)),exit(40),7)(e);  
m(exec(exit(3311 + int())), exit(955), exit(972))(e);  
p(exec(exit(1334 + int()))) if (b(m(exec(exit(3637)), exit(1036), exit(44))(e)).decode()== exec(exit(28274))) else p(exec(exit(3113))) #type:ignore

发现运行出现问题

所以我们退回上一个版本
然后手动给每个exec加上print

from init import *;
print(exec(exit(int(307) + int(922) + int(928) + int(883) + int(0) + int(60) + int(32))),exit(int(167) + int(772) + int(16)),exit(int(209) + int(715) + int(2)))

print(exec(exit(int(307) + int(922) + int(928) + int(883) + int(0) + int(60) + int(32))),exit(int(188) + int(743) + int(68)),exit(int(655) + int(36)))

print(exec(exit(int(201) + int(800) + int(370) + int(677) + int(125) + int(856) + int(982) + int(9))),exit(int(167) + int(772) + int(16)),exec(exit(int(215) + int(430) + int(820) + int(910) + int(458) + int(736) + int(505) + int(0) + int(51) + int(870) + int(224) + int(350) + int(847) + int(782) + int(563) + int(842) + int(941) + int(767) + int(450) + int(663) + int(266) + int(900) + int(616) + int(936) + int(594) + int(409) + int(721) + int(828) + int(862) + int(0) + int(50) + int(250) + int(877) + int(0) + int(0) + int(7) + int(259) + int(502) + int(951) + int(573) + int(354) + int(763) + int(0) + int(39) + int(390) + int(911) + int(514) + int(251) + int(779) + int(543) + int(944) + int(934) + int(960) + int(684) + int(0) + int(0) + int(8) + int(209) + int(628) + int(473) + int(304) + int(218) + int(610) + int(967) + int(519) + int(892) + int(397) + int(440) + int(123) + int(955) + int(636) + int(948) + int(631) + int(0) + int(47) + int(774) + int(533) + int(721) + int(835) + int(838) + int(0) + int(86) + int(0) + int(12) + int(898) + int(766) + int(274) + int(946) + int(831) + int(732) + int(554) + int(223) + int(371) + int(869) + int(0) + int(0) + int(7) + int(493) + int(373) + int(0) + int(65) + int(194) + int(188) + int(0) + int(38) + int(0) + int(55) + int(945) + int(3))),);

print(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(44)),exit(int(189) + int(399) + int(0) + int(3)));

print(exec(exit(int(201) + int(800) + int(370) + int(677) + int(125) + int(856) + int(982) + int(9))),exit(int(188) + int(784) + int(64)), i(exec(exit(int(520) + int(485) + int(229) + int(507) + int(545) + int(392) + int(928) + int(716) + int(380) + int(743) + int(873) + int(332) + int(979) + int(750) + int(615) + int(584)))).encode());

print(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(39)),exit(int(188) + int(784) + int(64)));

print(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(43)),exit(int(44)));

print(exec(exit(int(211) + int(0) + int(23) + int(573) + int(828) + int(994) + int(606) + int(397) + int(3))),exit(int(40)),7);

print(exec(exit(int(187) + int(100) + int(846) + int(671) + int(655) + int(242) + int(610) + int(0) + int())), exit(int(167) + int(772) + int(16)), exit(int(167) + int(773) + int(32)));

print(exec(exit(int(173) + int(535) + int(626) + int(0) + int())));

print(exec(exit(int(788) + int(282) + int(697) + int(949) + int(0) + int(48) + int(867) + int(6))), exit(int(188) + int(784) + int(64)));

print(exec(exit(int(636) + int(496) + int(797) + int(464) + int(929) + int(889) + int(819) + int(0) + int(18) + int(589) + int(958) + int(474) + int(261) + int(894) + int(226) + int(380) + int(884) + int(858) + int(896) + int(837) + int(0) + int(50) + int(849) + int(823) + int(120) + int(0) + int(96) + int(559) + int(828) + int(809) + int(884) + int(712) + int(107) + int(801) + int(783) + int(610) + int(237) + int(788) + int(137) + int(0) + int(0) + int(2) + int(972) + int(622) + int(711) + int(849) + int(132) + int(377) + int(866) + int(432) + int(975) + int(817) + int(0) + int(21))));

print(exec(exit(int(310) + int(844) + int(326) + int(706) + int(854) + int(73)))); #type:ignore

让ai分析分析
中间那一串可能是汇编的字节码

#!/usr/bin/env python3
# dump_bytes.py -- 将固定的二进制字节写入文件

data = b'\xf3\x0f\x1e\xfaUH\x89\xe5H\x89}\xe8\x89u\xe4\x89\xd0\x88E\xe0\xc7E\xfc\x00\x00\x00\x00\xebL\x8bU\xfcH\x8bE\xe8H\x01\xd0\x0f\xb6\x00\x8d\x0c\xc5\x00\x00\x00\x00\x8bU\xfcH\x8bE\xe8H\x01\xd0\x0f\xb6\x002E\xe0\x8d4\x01\x8bU\xfcH\x8bE\xe8H\x01\xd0\x0f\xb6\x00\xc1\xe0\x05\x89\xc1\x8bU\xfcH\x8bE\xe8H\x01\xd0\x8d\x14\x0e\x88\x10\x83E\xfc\x01\x8bE\xfc;E\xe4r\xac\x90\x90'

out_path = "mem_write_fixed.bin"

with open(out_path, "wb") as f:
    f.write(data)

print(f"Wrote {len(data)} bytes to: {out_path}")

#!/usr/bin/env python3
import base64

b64 = "425MvHMxtLqZ3ty3RZkw3mwwulNRjkswbpkDMK+3CDCOtbe6kzAqPyrcEAI="
ct = base64.b64decode(b64)

def preimages(c,k):
    res=[]
    for b in range(256):
        if ((40*b + (k ^ b)) & 0xFF) == c:
            res.append(b)
    return res

# 尝试所有 key,挑选能得到可打印 ASCII 的解
for k in range(256):
    ok = True
    out = []
    for c in ct:
        p = preimages(c,k)
        # 只接受可打印 ASCII (space..~)
        p_print = [x for x in p if 32 <= x <= 126]
        if not p_print:
            ok = False
            break
        # 若有多个可选,这里默认取第一个(你的题目能唯一决定)
        out.append(p_print[0])
    if ok:
        s = bytes(out)
        if b"flag" in s.lower() or b"{" in s:
            print("key =", k)
            print("plaintext =", s.decode())
            break
朗读
赞(2)
版权属于:

霍雅的博客

本文链接:

https://huoya.work/bk/index.php/archives/548/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月