Jump to content
Korean Random
IzeBerg

Как и чем декомпилировать/компилировать питон?

Recommended Posts

а что ответить нельзя?плиииз

выполни и посмотри результат:

if 0:
    print 'FIG VAM'

результата не будет.. print 'FIG VAM' не выполниться.. т.к. 0 <> 1 (в условии если не указана операция сравнения то идет сравнение с True, т.е. с 1, т.е. грубо if 64-64==1: )... т.о. всё условие if 64-64: i1i1i1iiii  (и подобные) можно удалять. это кусок от защиты странника (вроде бы) остался после снятия защиты со скрипта от ПростоНуба плагиатором ЛСДМаксом, а дальше ЛСД просто перепаковал декомпиленный исходник не убрав куски от снятой защиты.

Share this post


Link to post

Short link
Share on other sites

это кусок от защиты странника (вроде бы) остался

 

1. Я ни какой защиты еще не выкладывал. Подозреваю речь шла об упаковке в ZB64, ну какая-это защита, так баловство одно ))))

2. if 64-64:бла бла - это фича из pyobfuscate-master, называется gen_noop_line

    def gen_noop_line(self):
        if self.paren_count > 0 or \
           self.curly_count > 0 or \
           self.square_count > 0:
            result = "# "
        else:
            testint = random.randint(1, 100)
            result = "if %d - %d: " % (testint, testint)
        num_words = random.randint(1, 6)
        for x in range(num_words - 1):
            op = random.choice((".", "/", "+", "-", "%", "*"))
            result += self.nametranslator.get_bogus_name() + " %s " % op
        result += self.nametranslator.get_bogus_name()
        return result
Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

 

 

Я ни какой защиты еще не выкладывал.... pyobfuscate-master

ой, ошибся. попадался уже раньше такой код, а память подвела откуда он был... думал что из каких-то твоих скриптов (прошлый или позапрошлый год) это были куски.

zb64 - это баловство, согласен.. защита, конечно, но уж от совсем новичков..

Share this post


Link to post

Short link
Share on other sites

Ребят... просьба и разминка для ума...

Попробуйте декомпильнуть.... интересна устойчивость метода.

@StranikS_Scan, думаю Вам будет интересно тоже... поэтому взываю по имени :)

Edited by Yusha

Share this post


Link to post

Short link
Share on other sites

Ребят... просьба и разминка для ума...

Попробуйте декомпильнуть.... интересна устойчивость метода.

@StranikS_Scan, думаю Вам будет интересно тоже... поэтому взываю по имени :)

 

Я видел предыдущую версию с ретурном во второй позиции и абсолютным джампом за ретурн в начале каждого блока + длинные списки инструкций с мусорными ни чего не делающими переменными в конце блока, которым предшествует абсолютный джамп на ретурн в начало блока.

 

Мельком глянул, в новом скрипте по другому, но ни чего принципиально нового. Если за эталон брать защиту мерца 3-го поколения, то эта хуже её, т.к. эту снять можно вручную, а защиту мерца снимать вручную ни кому не охота, там идёт случайное перемешивание инструкций между собой и с мусором после чего цепочка выполнения выставляется джампами. Если защита строиться только на запутывании последовательности инструкций, то лучше этого придумать нельзя. Сделайте как у него.  ))))

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Если за эталон брать защиту мерца 3-го поколения, то эта хуже её, т.к. эту снять можно вручную, а защиту мерца снимать вручную ни кому не охота, там идёт случайное перемешивание инструкций между собой и с мусором после чего цепочка выполнения выставляется джампами.

 

мерц восстанавливается без участия человека, исключительно скриптами - достаточно восстановить последовательность и удалить мусор.

чтобы восстановить этот скрипт надо переписывать байткод, да вероятно лишь вручную.. можно под каждый такой скрипт написать скрипт-декриптор.. универсального все равно не сделать.

вывод - этот скрипт сильнее защищен.

 

 

Если защита строиться только на запутывании последовательности инструкций, то лучше этого придумать нельзя.

 

Увы, это защита от школьников. Восстанавливаются такие скрипты элементарно просто.

Надо понимать что если дан код:

print 'bla-bla-bla'
LOAD_CONST 'bla-bla-bla'
PRINT_ITEM

Защита мерца сделает из него примерно так:

    LOAD_COST 1
    POP_JUMP_IF_TRUE X1
    <123>
    <124>
X2: PRINT_ITEM
    JUMP_ABSOLUTE X3
X1: LOAD_CONST 'bla-bla-bla'
    JUMP_ABSOLUTE X2
X3: ...

трассировка байткода дает следующий результат:

    LOAD_COST 1
    POP_JUMP_IF_TRUE X1
    <123>
    <124>
X1: LOAD_CONST 'bla-bla-bla'
    JUMP_ABSOLUTE X2
X2: PRINT_ITEM
    JUMP_ABSOLUTE X3
X3: ...

второй проход удаляет все лишние джампы на следующий по порядку опкод:

    LOAD_COST 1
    POP_JUMP_IF_TRUE X1
    <123>
    <124>
X1: LOAD_CONST 'bla-bla-bla'
    PRINT_ITEM

третий проход удаляет оставшийся мусор, меняя на NOP:

    LOAD_COST 1
    POP_JUMP_IF_TRUE X1
    NOP
    NOP
X1: LOAD_CONST 'bla-bla-bla'
    PRINT_ITEM

после декомпилируем и получаем

if 1:
    print 'bla-bla-bla'

т.е. не приходится делать ничего, кроме как удалить последовательные джампы и мусор. в результате остается практически исходный скрипт.

а в случае скрипта от Юши удалять нечего - мусорного байткода нет, и восстановить последовательность невозможно - она реально корректная.. там надо наоборот добавлять байткод в нужные места. в том виде как он есть - он работает, но для декомпиляции требуется выполнить рефакторинг имеющегося (т.е. абстрактно(!) говоря "i <<1" заменить на "i/2", т.к. операцию "<<1" декомпилятор не понимает - нет такой в синтаксисе питона, но она есть в VM-машине питона и может быть использована в байткоде).

 

Это принципиальные отличия обоих защит.

Т.ч. кто-то значительно ошибается считая что то, что возможно автоматом восстановить есть более сильная защита чем та, где автоматизировать восстановление практически невозможно и требуется применить ручной анализ.

 

Но надо признать что лоадер у мерца сильнее, простым хуком маршала сам исполняемый скрипт не получить.. Хотя все равно все можно получить уже в самой игре, т.ч. лоадер - это тоже защита от школоло и в расчет можно не брать ;)

 

зы: хм, и все-же где исходный код Юшиного скрипта.. рассуждать можно долго, но важен результат..

метод рефакторинга применяемый к защите мерца дает такой результат.. уверен на 99.99% что исходник был абсолютно другой)) @Yushaоригинал можно посмотреть?

_pQp_ = 'y'
_pvp_ = 'p'
_pRp_ = 'c'
_pwp_ = 'i'
_pUp_ = 'r'
_pOp_ = 's'
_pcp_ = 't'
rhc = chr
import py_compile
5NF4Z = 24
W9XA3 = 9826
if W9XA3 == 9826:
    pass
1
if not 5NF4Z == 40:
    if not 5NF4Z == 36 or 5NF4Z == 42:
        if not 5NF4Z == 38:
            if not 5NF4Z == 30:
                if not 5NF4Z == 26:
                    if not 5NF4Z == 32:
                        if not 5NF4Z == 28:
                            continue
                        continue
                    continue
                continue
            continue
            continue
        continue
        continue

Share this post


Link to post

Short link
Share on other sites

 

 

там надо наоборот добавлять байткод в нужные места. в том виде как он есть - он работает, но для декомпиляции требуется выполнить рефакторинг имеющегося (т.е. абстрактно(!) говоря "i <<1" заменить на "i/2", т.к. операцию "<<1" декомпилятор не понимает - нет такой в синтаксисе питона, но она есть в VM-машине питона и может быть использована в байткоде).

 

Где ты там такое увидел?

Share this post


Link to post

Short link
Share on other sites

<Суслик>

;)

 

Да с ссуликом это я дал маху, каюсь каюсь выпало из головы когда писал, а он в самом начале блока, смещение в нумерации байтов, дающее прыжок якобы в никуда в обычном диззасме. Действительно рефакторинг. Надо было конечно отметить, мой косяк-с.

 

Тогда, если такой подход применять, то я вижу это так (шифрование), надо перемешать случайно инструкции, добавить мусора, выставить джампы, а потом делать рефакторинг, берем скажем первого суслика по коду (хотя вообще-то надо делать с конца) и делаем его рефакторинг, в результате которого идущий следом код смещается и получается как бы новое состояние кода, затем идем по коду ко второму суслику, делаем его рефакторинг и код переходит во второе состояние. В результате если глянуть такой код в дизасме - то дизасм покажет полную чушь.

 

Бесспорно такой подход будет превосходит защиту мерца 3 поколения на порядок.

 

Выше по коду смещения всем слоем не сделано, но ели его сделать как я написал выше - то тогда в дизасме все инструкции будут левыми и код будет выглядеть как одна большая куча мусора ))))

 

ЗЫ: Молодцы ребята, молодцы )))

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

 

 

Yusha, оригинал можно посмотреть
 

Блин... там реально 2 строчки написано... хотелось бы взглянуть.. сможете или нет... я особо не заморачивался :)

Share this post


Link to post

Short link
Share on other sites
 ## Проверка ##
filename: script.pyc
magic number: 0x(03 f3 0d 0a)
timestamp: 0 (Thu Jan 01 03:00:00 1970)
code
co_argcount: 0
co_cellvars: ()
co_filename: '<dev>'
co_firstlineno: 0
co_flags: 0x00040
co_freevars: ()
co_lnotab: ''
co_name: '<module>'
co_names: ('_UwU_', '_UZU_', '_UHU_', '_UXU_', '_UfU_', '_UdU_', '_UGU_', '_UgU_', '_UhU_', '_UBU_', '_UxU_', '_UvU_', '_UcU_', '_UtU_', '_UQU_', '_UOU_', '_UNU_', 'chr', 'rhc', 'cj', 'dr', 'e', 'ge', 'getattr', 'c', 'data', 've', 'ord', 'rnd', 'yke', 'list', 'prc', 'len', 'kI', 'xx', 'x', 'lk', 'append', 'ev', '__import__', 'sys', 'os', 'join', 'ssl', 'globals', 'Exception', 'format', 'LYK83', 'TQLL8')
co_nlocals: 0
co_stacksize: 73
co_varnames: ()
co_consts
0 'o'
1 's'
2 'n'
3 'i'
4 'l'
5 'r'
6 'f'
7 'e'
8 'd'
9 'h'
10 'a'
11 'b'
12 'c'
13 't'
14 'p'
15 'm'
16 'y'
17 0
18 (code object)
co_argcount: 0
co_cellvars: ()
co_filename: '<dev>'
co_firstlineno: 0
co_flags: 0x00042
co_freevars: ()
co_lnotab: 'E\xc5\xc3\xd7\x8b\x8c\xff\xa3\xc1H\x8e\xb5\xbc\xdd\xa8\xac\xd8\xfb\xac\x9d\xbc\xda\xa9\x97\x97\xa2\xf2\xf0\xbd\xa6L\xaf\xcf\xd9\xbd[\xa3\xa8\x9d\x9c\xb7\xeb\xb3\xd9QB\xb5\xb2\x98\x9e\x9c\xbe\xb7\xb3I\xa3\xcf\xb2\xa6\xaf\x92\xa9\xd1\xb5\xbc\x9d\xd9\xfb\xbb\xbc\x95\xd8\xd9\x95\xbdW\xf3\xfd\xa8S\x9a\xbc\xd8\xbd\xac\xac\xf2\xa2\xbb\xaf\x8a\xfe\xda\xbd\xb8\x99\xfe\xde\xaf\x92\x9a\xf1\xf0\xafKN\xc1\xf2\x9d\xb2\xaa\xcb\xff\x97\x9dM\xb1\xaf\x96\xad\x92\xac\xb3\x99Q\x9b\xc3\xde\x97\x95\x9c\xd2\xbb\xb3\xa9\xaa\xcb\xd3\xddJ\x97\xd9\xfb\xbf\xb7\x90\xb2\xda\x91J\x95\xc3\xde\xdf\x8f\x8e\xca\xbd\xcc\x99\xa3\xae\xd7\xaf\x9eH\xca\xd8\xcb\xb3\x9d\xd5\xde\xb5S\xbd\xd5\xb7\x9a\x8f\xa1\xd0\xcb\x91\xbdS\xba\xaa\x9fI\xb5\xf2\xd8\xb5\x9eO\xd7\xa3\xdf\xae\x93\xd0\xae\x9fS\xb3\xdf\xd8\xcc\x8d\x8e\xd5\xbd\xd3\xb7R\xd8\xc3\x99K\xbd\xf9\xc8\xb5\x8c\x8a\xd2\xb3\xab\xa6\x92\xa9\xcd\xdb\xb0\xb5\xb4\xb9\x9cQ\xb0\xa9\xcd\xb0\x9b\xa9\xeb\xad\xa6\x99\x88\xda\xcc\xbe\x8e\xb5\xc9\xd8\xa9\x95\x88\xff\xab\xab\x9c\xbe\xc9\xd3\x9d\xaf\xa9\xdf\xa2\xd9\x9a\xa8\xc1\xd3\xdbK\xac\xdc\xd7\xb8\xb0\xb4\xcc\xa9\xac\xbc\xb1\xbe\xc8\xa9\x89\xbd\xb7\xb6\xc8N\x89\xc3\xb1\x9a\xbc\x8d\xbc\xd6\xb1\x9c\xb6\xf0\xba\xb6\x8e\xb3\xc8\xf2\xd9\xbf\x89\xd9\xb9\xba\x95B\xb4\xdf\xa8\xa1\xbf\xf3\xda\xc1\x94\xb5\xaf\xad\xcbJN\xd7\xcf\xbc\xba\xbb\xb3\xc9\xbdMA\xcd\xfe\xcd\xbd\xb3\xc3\xb7\xa6\xbf\x99\xc9\xc2\xa6NA\xa8\xf2\xc1\x98\xbd\xaf\xda\xbbA\x98\xdf\xc3\x90AC\xb3\xf3\xbfM\xb8\xd5\xbb\xc1\x96\xae\xc8\xac\xd0H\xbc\xfd\xa3\xdbQ\x95\xff\xcc\x9c\xb2\xb0\xcc\xaf\xb0\x9c\xaa\xfe\xf2\xcd\x9e\xb0\xb6\xa2\x97\x92C\xc1\xf1\xb2A\x89\xdc\xc3\xabS\x8f\xd3\xf3\xb7\x9fN\xb8\xb8\xb1\xae\xbb\xaf\xd2\xba\xb6\xb5\xdc\xbd\xcc\xa1\xbf\xd9\xae\xcf\x8d\x8f\xfc\xa3\xb5J\xb1\xb9\xb5\xb4\x99\xb7\xf2\xcd\xc9\xb5P\xc3\xcb\xb3\x95\xbf\xb8\xcf\xb1\xaeC\xd1\xda\xb7\x9a\xbe\xf7\xb8\xbdA\x9b\xbf\xd1\xd9\xbdP\xce\xb0\xb2\x9d'
co_name: 'ge'
co_names: ('join', 'dr', '_UNU_', '_UZU_', 'e', 'cj', '_UfU_', '_UHU_', 'X63CF', 'L0UKE')
co_nlocals: 0
co_stacksize: 72
co_varnames: ()
co_consts
0 None
1 ''
2 (code object)
co_argcount: 1
co_cellvars: ()
co_filename: '<dev>'
co_firstlineno: 0
co_flags: 0x00062
co_freevars: ()
co_lnotab: ''
co_name: '<genexpr>'
co_names: ('cj', 'QVKIZ', 'ZQY72')
co_nlocals: 2
co_stacksize: 69
co_varnames: ('.0', 'c')
co_consts
0 None
1 9475
2 7
3 364
4 8
co_code
71 06 00 53 91 52 7c 00 00 5d 21 00 7d 01 00 74
00 00 7c 01 00 83 01 00 64 01 00 64 02 00 6e 12
00 64 03 00 64 04 00 6e 09 00 71 09 00 64 00 00
71 03 00 5a 01 00 5a 02 00 65 02 00 64 03 00 6b
02 00 72 49 00 01 6e 01 00 56 65 01 00 64 04 00
6b 02 00 73 2a 00 71 21 00
disassembled:

 
Это какой то Morphism.  :dots: Edited by KACTET
  • Upvote 2
  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

Увидел вот такое, внутри мод АТАС... позабавило и причем тут Warrok...

t = 'arAFebS9G4cRw3BZFUQiMRNlc7'
if (t != str(2)) and (2 <= 33):
    t = 'qixFenVYVN/39....................9P8A+WHC'
if (int('1') <= 32) and (t != str(1)):
    t = 'J' + t[2:].replace('jo' + t[24:25] + 'ar', str(1)) + 'W' + t[30:31] + '='
else:
    t = 'placet '
    t = None
if (t is not None) and ((t != str(0)) and (0 <= 31)):
    a = __import__(t[258:259] + 'rfcheats '[5:6] + 'xor '[2:3] + t[236:237] + 'ha' + t[42:43]).loads(('mercger '[1:2] + t + '=').decode('b' + 'WoT Account Stealer by \\/\\/ARR0CK '[15:16] + t[236:237] + '__export__t'[2:3] + t[92:93] + str(4)).decode('z' + t[42:43] + 'i' + 'b'))
else:
    t = 'unloadst '
t = 'encode(    (    ( '
t = None

Share this post


Link to post

Short link
Share on other sites

Ребят... просьба и разминка для ума...

Попробуйте декомпильнуть.... интересна устойчивость метода.

 

Так ведь lelicopter уже давно похожим способом криптует свой мод Horn

Share this post


Link to post

Short link
Share on other sites

Так ведь lelicopter уже давно похожим способом криптует свой мод Horn

 

Нэээ, там только скриптовый блок ненужных переменных и констант похожий как у него, а модификация байт-кода там новая оригинальная. Но кое в чем вы правы )))

 


 

Мда, прикол за приколом... вот кому-то делать что ли не чего:

                     code
                        71f9006a0700830000016e00006400005369000004640100640200033c04
                        640300740000033c0464040074000003713a00713700712b01716401714e
                        00714b00731e5ff1f9071cf86d42517111003c0471560071280164050071
                        8300790509d42b60717500fa071998e33518dfbd17f96c03371408aa8368
                        5bee57068235244fd63e3e640600033c7d020064070071a10083324f7e0a
                        69f6790dd6876837f619307c00006b070072b70071b00071310064000053
                        6e00007403007c0000640700198301007d04007c04007c020071d3007153
                        0071e000bbe8281cd4c07bb74b046a050083000071f300508edc688f6d19
                        72c1386b060071fc00713400711101e3480c1b61064ab11e1276aa1100dc
                        b75520720d00712501d33a78e3e223066bcb702bea5d20713101712e0171
                        ad00713d007c02007c0400197400007147012b94bb113ac2ba7817715401
                        a0d92723b4ef6872413e6b0900727e017c02007c04001971670171d00071
                        79013caf18554e2ef5773f983e72ee571847486e0000740600710300
                     consts
                        None
                        '90949'
                        '\xd0\x90\xd0\xbd\xd1\x8f, \xd0\xb0\xd0\xbd\xd1\x8f...'
                        '17799492'
                        '5980355'
                        '303525'
                        '\xd0\x9d\xd1\x83 \xd1\x82\xd1\x8b \xd0\xb6\xd0\xb5 \xd0\xbf\xd1\x80@\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x81\xd1\x82!'
                        'databaseID'
                        'given to: 0'
                     names ('None', 'BANLIST', 'account', 'str', 'DBID', 'keys', 'BigWorld', 'quit')
                     varnames ('account', 'None', 'BANLIST', 'str', 'DBID', 'keys', 'BigWorld', 'quit')
                     freevars ()
                     cellvars ()
                     filename 'PMOD.py'
                     name 'PMODcheckForBan'
                     firstlineno 112
                     lnotab 000200011001090111040c010702100212011c01
                  ('g_playerEvents',)
                  'given to: 0'
               names ('None', 'PMOD_NAME_REPLACE', 'cPickle', 'Vehicle', 'ClientArena', 'new__onVehicleListUpdate', '_ClientArena__onVehicleListUpdate', 'new__onVehicleAddedUpdate', '_ClientArena__onVehicleAddedUpdate', 'new__onVehicleUpdatedUpdate', '_ClientArena__onVehicleUpdatedUpdate', '__init__', 'link__vehicle_init', 'new__vehicle_init', 'PMODcheckForBan', 'PlayerEvents', 'g_playerEvents', 'onAccountShowGUI')
               varnames ('self', 'None', 'PMOD_NAME_REPLACE', 'cPickle', 'Vehicle', 'ClientArena', 'new__onVehicleListUpdate', '_ClientArena__onVehicleListUpdate', 'new__onVehicleAddedUpdate', '_ClientArena__onVehicleAddedUpdate', 'new__onVehicleUpdatedUpdate', '_ClientArena__onVehicleUpdatedUpdate', '__init__', 'link__vehicle_init', 'new__vehicle_init', 'PMODcheckForBan', 'PlayerEvents', 'g_playerEvents', 'onAccountShowGUI')
               freevars ()
               cellvars ('link__vehicle_init', 'cPickle', 'PMOD_NAME_REPLACE')
               filename 'PMOD.py'
               name 'hideFunctional'
               firstlineno 54
               lnotab
                  0001000122011b011b011a020c0110011002120e0901120b0901120a0903
                  09011204090209111001

90949 - тыц.

\xd0\x90\xd0\xbd\xd1\x8f, \xd0\xb0\xd0\xbd\xd1\x8f... - "Аня, аня..."

17799492 - тыц.

5980355 - тыц.

303525 - тыц.

\xd0\x9d\xd1\x83 \xd1\x82\xd1\x8b \xd0\xb6\xd0\xb5 \xd0\xbf\xd1\x80@\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x81\xd1\x82! - "Ну ты же пр@граммист!"

Edited by StranikS_Scan
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

 

Мда, прикол за приколом... вот кому-то делать что ли не чего:

 

Список негодников Санты? :)

Share this post


Link to post

Short link
Share on other sites

Список негодников Санты? :)

 

Не то слово  :heh:

Да тут походу не только Санта, а еще и его Олени, тут целый заговор  :gg:  Вот другой мод:

      code
         argcount 1
         nlocals 1
         stacksize 5
         flags 0043
         code
            712900640600711200a3dd6fe6f62b2a41276b06007225007400006a0100
            830000016e0000640000537c000064010019710300
         consts
            None
            'databaseID'
            90949
            17799492
            5980355
            303525
            (90949, 17799492, 5980355, 303525)
            'given to: phantasm'
         names ('BigWorld', 'quit')
         varnames ('account',)
         freevars ()
         cellvars ()
         filename 'c:\\p27\\iamspotted.py'
         name 'banCallback'
         firstlineno 93
         lnotab 000107010001000100010901
      'given to: phantasm'
   names ('BigWorld', 'Keys', 'ResMgr', 'PlayerEvents', 'g_playerEvents', 'debug_utils', 'LOG_DEBUG', 'LOG_ERROR', 'gui', 'SystemMessages', 'gui.shared', 'g_itemsCache', 'Avatar', 'PlayerAvatar', 'constants', 'SERVER_TICK_LENGTH', 'VEHICLE_MISC_STATUS', 'VEHICLE_HIT_FLAGS', 'gui.WindowsManager', 'g_windowsManager', 'ClientChat', 'time', 'gmtime', 'strftime', 'messenger.m_constants', 'PROTO_TYPE', 'messenger.proto', 'proto_getter', 'gui.battle_control', 'g_sessionProvider', 'BW_CHAT2', 'proto', 'None', 'enableSpottedMsg', 'ntime', 'updateVehicleMiscStatus', 'oldf', 'z_updateVehicleMiscStatus', 'helpmeMsg', 'btn', 'onUpdateHookBtn', 'banCallback', 'onAccountShowGUI')
Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Сможете показать как такой скрипт разбирать?

Obfuscator = __import__
exec Obfuscator('marshal').loads('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'.decode('base64').decode('zlib'))
я с самого начала дал а то вдруг где то ошибся с маршалом
  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...