吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7205|回复: 23
收起左侧

[原创] RedHat2018_Reverse

  [复制链接]
whklhh 发表于 2018-5-2 22:49
本帖最后由 whklhh 于 2018-5-4 13:02 编辑

AK了_(:з」∠)_说实话我觉得题目质量不太高233333,不过识别算法的思路还是学到了
题目和脱壳后的程序已全部打包在附件中,欢迎交流~
PS:有没有师傅头铁硬肛wcm(SMS4加密)的2333

Reverse

icm

反编译main函数,校验了长度42以后在函数中进行判断
发现每8个字节进行一次处理,最后异或119-i后和数组比较
将其dump出来备用,查看处理函数  

发现在其中把指定种子的随机数作为密钥,然后把输入的8个比特编码成4个int,再变换,最后解码还原,顺便异或了8-i  

那么关键就是这个变换是什么了
比赛的时候是没找到什么算法,头铁,硬着逆出来了
后来询问了一下师傅知道是IDEA算法
实际上key和密文dump出来解密即可得到明文

下面简述一下头铁解法

查看发现密钥扩展以后循环了8轮,每轮使用了子密钥的12个字节
完成后对四个字节再次进行了一堆处理,最后组合成一个int
每轮中的计算函数如下
  

cal_2中也是mul_low_sub_high和add和子密钥的组合,就不截图了

图上从函数命名中即可看出功能,值得一题的是mul_low_sub_high这个函数有点复杂
它return的是a b  - 0x10001 (0xFFFF0000FFFF0001LL (a b) >> 64) >> 16)
简化加动调可知实际上结果是a*b的低16位减去高16位  

对于add和xor函数只要得到结果和一个操作数就能还原出另一个操作数,这个函数该怎么处理呢?
位运算学的不好,没有想到它代表的意义,只好从头铁角度来操作

爆破
当然,由于两个操作数各16位,穷举空间高达0xffff*0xffff,不太现实
观察发现
这个函数的操作数是有限的--它的第二个操作数总是子密钥中的某个定值。由于密钥是给定的,因此第二个操作数只有有限的十几个
这样穷举空间就限制到0xffff*10左右了  

完成以上操作以后可以通过结果和一个操作数逆出另一个操作数
但是cal函数中最后v3是通过中间数和v8、v9异或得来的,而这几个数我们都没有  

绕了一下,注意到cal_2生成v8和v9的过程中只用到了v6、v7和子密钥,这其中v6和v7是中间数异或出来的,注意到v3[0]和v3[2]的异或数一样,因此可以逐个还原
说人话:
v3[0]^v3[2] = v10^v12 = v6
同理得v3[1]^v3[3] = v7,然后正向复制cal_2生成v8、v9,从而得到中间数
继续往上逆即可得到输入数了  

将子密钥完全dump出来,同样循环九轮即可得到明文  

代码如下:

         # r = [167, 150, 222, 232, 190, 10, 42, 36, 82, 138, 135, 95, 58, 46, 4, 84, 41, 168, 186, 209, 34, 98, 125, 140, 188, 69, 158, 208, 202, 127, 38, 67, 55, 168, 96, 200, 185, 86, 29, 215, 194, 217, 222, 16, 243, 208, 57, 61]
        # for i in range(len(r)//8):
        #     p = r[i*8:i*8+8]
        #     for j in range(8):
        #         print(p[j]^(8-j), end=', ')
        from string import printable
        r = [175, 145, 216, 237, 186, 9, 40, 37, 90, 141, 129, 90, 62, 45, 6, 85, 33, 175, 188, 212, 38, 97, 127, 141, 180, 66, 152, 213, 206, 124, 36, 66, 63, 175, 102, 205, 189, 85, 31, 214, 202, 222, 216, 21, 247, 211, 59, 60]
        mul_table = {}
        rand_table = [6398, 40087, 2674, 38645, 49917, 61102, 5237, 37546, 11796, 58669, 60293, 64477, 23592, 60197, 21553, 64825, 23511, 3063, 47800, 20950, 19112, 25594, 29276, 10698, 61301, 28835, 44181, 20679, 62692, 47187, 38071, 44567, 18265, 10913, 36841, 51568, 42793, 28508, 12254, 60129, 17183, 54162, 57678, 21214, 47199, 48597, 49806, 45653]
        mul_table_value = [0x25c2, 0xbf7b]
        for i in range(8):
            mul_table_value.append(rand_table[6*i+0])
            mul_table_value.append(rand_table[6*i+3])

        def mul(a, b):
            p = (((a*b)&0xffff) - (a*b>>16))
            return p&0xffff if p>0 else (p&0xffff)+1

        def find_mul_table(x, v):
            # print(hex(x))
            for i in range(len(mul_table[v])):
                if(mul_table[v][i]==x):
                    return i
            else:
                print("error")

        for v in mul_table_value:
            mul_table[v] = []
            for m in range(0x100):
                for n in range(0x100):
                    q = (m<<8) + n
                    # print(hex(q))
                    mul_table[v].append(mul(q, v)&0xffff)
            # print("%x has added"% v)
        print(len(r))
        rn = []
        for i in range(24):
            # for j in range(4):

                p = (r[i*2]<<8) + r[i*2+1]
                rn.append(p)
            # print(hex(p))
        print(rn)

        # rn = [44945, 55533, 47625, 10277, 23181, 33114, 15917, 1621, 8623, 48340, 9825, 32653, 46146, 39125, 52860, 9282, 16303, 26317, 48469, 8150, 51934]

        def re_cal(r, j):
            # result = []
            # for i in range(6):
            #     print(hex(rand_table[6*j+i]), end=' ')
            # print()
            r[1], r[2] = r[2], r[1]
            v6 = r[0]^r[2]
            # print(hex(v6))
            v7 = r[1]^r[3]
            rand0 = rand_table[6*j+4]
            rand1 = rand_table[6*j+5]

            v4 = mul(v6, rand0)
            v5 = (v7+v4)&0xffff
            v9 = mul(v5, rand1)
            v8 = (v4+v9)&0xffff
            # print(r[0], v9)
            r0 = r[0]^v9
            r1 = r[1]^v8
            r2 = r[2]^v9
            r3 = r[3]^v8
            # print(r0)
            r0 = find_mul_table(r0, rand_table[6*j+0])
            r1 = (r1 - rand_table[6*j+1])&0xffff
            r2 = (r2 - rand_table[6*j+2])&0xffff
            r3 = find_mul_table(r3, rand_table[6*j+3])
            return [r0, r1, r2, r3]

        def re(r):
            a0 = find_mul_table(r[0],0x25c2)
            a1 = (r[1]-0x9ca5)&0xffff
            a2 = (r[2]-0xbd70)&0xffff
            a3 = find_mul_table(r[3],0xbf7b)
            a1, a2 = a2, a1
            k = [a0, a1, a2, a3]
            # for i in k:
            #     print(hex(i), end=' ')
            # print()
            for j in range(7, -1, -1):
                k = re_cal(k, j)
                # print(k, j)
                # for i in k:
                #     print(hex(i), end=' ')
                # print(j)
            # print(k)
            return k
        for i in range(6):
            p = re(rn[i*4+0:i*4+4])
            for i in p:
                print(chr(i>>8), end='')
                print(chr(i&0xff), end='')

用IDEA的源码可以秒解=。=  

wcm

ida插件识别到SMS4算法的box,比对发现一致
找到源码,key同样由指定种子的随机数生成,dump下来后通过源码解密即可  

(本来icm也是可以这么简洁的qaq羡慕师傅们的识别能力)

ccm

查壳发现nSPack,脱壳机搞定
逆向发现对输入的hex进行了转换

首先将输入encode成hex以后送入了这个函数中
r2.png
对于非字母,也就是数字部分直接查一个表即可
逆的时候也就是相应的反查这个表的index了,很简单,没啥好说的
同时因为flag的hex大部分是0x6?,因此这个判断机制实际上大部分都落在数字部分里了,这也最终让我昨天猜了过去233

对于字母就有些复杂了,会通过函数sub_4010E0来处理
事实上就是一个维吉尼亚解密,跟进去看的流程虽然比较乱,但是理顺了还是很清晰的
函数中先通过-'A'和-'a'来判断大小写,由于它encode出来的都是小写字母,因此这里以小写字母为例。大写字母中除了Table不一样,其他完全一致

首先通过两个while循环遍历找到value和key的下标
r3.png

这个table_lowwer如下

敏感的话一眼就能看出来是维吉尼亚表的二维数组,一维宽度为27,如下

0 1 2 3 ... 26
a b c ... z
a a b c ... z
b b c d ... a
c c d e ... b
... ... ... ... ... ...
z z a b ... y

对j的循环中,由于每次v5+25,因此永远取的是table[x][0]的值,也就是找到的第x列
对i的循环中,由于仅在第一列取,因此拿到的就是value的下标

取值方法在函数最后  

r1.png
显然就是以key作为行,value作为列来取值了

显然就是个维吉尼亚╮(╯_╰)╭
注意偏移i是字母的下标,而不是整个数列的下标,这里想当然被坑了好久233333

解密当然很简单,因为我们key是已知的,用密文与key值作差即可得到明文的偏移

最后decode逐字节对比,值得一提的是第(7+16*i)个字节的数据被跳过对比,而是最后通过CRC32来校验

对比一下发现只有flag{中的“l”和"{",和后面几个位置的'-'存在字母,因此直接对应还原即可  

缺失字母只能通过爆破CRC32来还原了,反正Table很小,五个字母几秒就出  

全部还原后解得flag
代码如下:

tt = "GHIJKLMNOPQRSTUV"
rand_letter = "sxcunsbjptdunaaxklcvxsikxiewcmpwdngfqtfvomgkbwjrmccntqlratukzoafmngbyykjtabnhrnmweln"
# 原始dump数组
r = [77, 77, 77, 117, 77, 72, 77, 211, 78, 121, 74, 76, 74, 75, 77, 77, 74, 80, 74, 75, 74, 77, 77, 227, 74, 76, 73, 102, 77, 77, 74, 80, 74, 76, 77, 72, 73, 120, 74, 243, 77, 72, 74, 71, 77, 72, 73, 113, 77, 73, 77, 72, 74, 74, 74, 3, 73, 118, 74, 78, 77, 73, 74, 72, 74, 78, 74, 72, 77, 72, 74, 19, 77, 76, 77, 74, 77, 72, 74, 79, 74, 73, 78, 101]
# 填充过CRC爆破后的数组
r = "MMMuMHMNNyJLJKMMJPJKJMMMJLIfMMJPJLMHIxJKMHJGMHIqMIMHJJJHIvJNMIJHJNJHMHJNMLMJMHJOJINe"

# from zlib import crc32
# table = b"GHIJKLMNOPQRSTUV"
# def brute():
#     for a1 in table:
#         for a2 in table:
#             for a3 in table:
#                 for a4 in table:
#                     for a5 in table:
#                         b = (bytes((a1,a2,a3,a4,a5)))
#                         if(crc32(b)==0x9D945A6E):
#                             print(b)
#                             return
# brute()
# b'NMKHN'
# 第7 18 23等缺失的部分,通过CRC爆破得到,补回原数列中

flag = ""
k = 7
n = 0
for i in range(len(r)):
    # 用原始dump数组计算的时候需要跳过这些错误的字符
    # if(i==k):
    #     k += 16
    #     # i += 1
    #     flag += ' '
    #     continue
    p = (r[i])
    # print(p, end='')#, i, t[i%len(t)])
    if(p in tt):
        p = str(int(tt.index(p)))
    else:
        key = (rand_letter[n%len(rand_letter)])
        n += 1
        p = chr(ord(p)-ord(key)+ord('a'))
    flag += p
print(flag)

# 666c61677b35346639343666352d663935612d346130612d626133312d3762313731613765636138327d
print(bytes.fromhex(flag))
# b'flag{54f946f5-f95a-4a0a-ba31-7b171a7eca82}'

Explain

很明显是个虚拟机,将code dump下来然后对应写函数运行打log即可
对照log发现接收输入以后将input[i]异或了i,然后与数组比较
求解很简单
没啥好说的(望天  

        code = [0x2b, 0x0, 0x30, 0x92, 0x2b, 0x0, 0x31, 0x96, 0x2b, 0x0, 0x32, 0x0, 0x2b, 0x0, 0x40, 0x93, 0x2b, 0x0, 0x41, 0x92, 0x2b, 0x0, 0x42, 0x0, 0x2b, 0x0, 0xa0, 0x66, 0x2b, 0x0, 0xa1, 0x6d, 0x2b, 0x0, 0xa2, 0x63, 0x2b, 0x0, 0xa3, 0x64, 0x2b, 0x0, 0xa4, 0x7f, 0x2b, 0x0, 0xa5, 0x51, 0x2b, 0x0, 0xa6, 0x6e, 0x2b, 0x0, 0xa7, 0x36, 0x2b, 0x0, 0xa8, 0x7b, 0x2b, 0x0, 0xa9, 0x56, 0x2b, 0x0, 0xaa, 0x3b, 0x2b, 0x0, 0xab, 0x78, 0x2b, 0x0, 0xac, 0x53, 0x2b, 0x0, 0xad, 0x59, 0x2b, 0x0, 0xae, 0x67, 0x2b, 0x0, 0xaf, 0x41, 0x2b, 0x0, 0xb0, 0x69, 0x2b, 0x0, 0xb1, 0x4e, 0x2b, 0x0, 0xb2, 0x44, 0x2b, 0x0, 0xb3, 0x7a, 0x2b, 0x0, 0xb4, 0x66, 0x2b, 0x0, 0xb5, 0x61, 0x2b, 0x0, 0xb6, 0x43, 0x2b, 0x0, 0xb7, 0x56, 0x2b, 0x0, 0xb8, 0x29, 0x2b, 0x0, 0xb9, 0x46, 0x2b, 0x0, 0xba, 0x57, 0x2b, 0x0, 0xbb, 0x7a, 0x2b, 0x0, 0xbc, 0x7f, 0x2b, 0x0, 0xbd, 0x55, 0x2b, 0x0, 0xbe, 0x77, 0x2b, 0x0, 0xbf, 0x71, 0x2b, 0x0, 0xc0, 0x45, 0x2b, 0x0, 0xc1, 0x0, 0x2b, 0x0, 0xc2, 0x5f, 0x29, 0x0, 0x0, 0x60, 0x29, 0x1, 0x0, 0x0, 0x24, 0x0, 0x31, 0x0, 0x0, 0x1, 0x31, 0x1, 0x0, 0x1, 0x2d, 0x1, 0x0, 0x23, 0x3c, 0x0, 0xac, 0x29, 0x0, 0x0, 0x60, 0x29, 0x1, 0x0, 0x0, 0x39, 0x0, 0x1, 0x31, 0x0, 0x0, 0x1, 0x31, 0x1, 0x0, 0x1, 0x2d, 0x1, 0x0, 0x23, 0x3c, 0x0, 0xc5, 0x29, 0x0, 0x0, 0x60, 0x29, 0x1, 0x0, 0xa0, 0x29, 0x2, 0x0, 0x0, 0x2f, 0x0, 0x1, 0x3c, 0x1, 0x1a, 0x31, 0x0, 0x0, 0x1, 0x31, 0x1, 0x0, 0x1, 0x31, 0x2, 0x0, 0x1, 0x2d, 0x2, 0x0, 0x23, 0x3c, 0x0, 0xe3, 0x29, 0x0, 0x0, 0x30, 0x29, 0x1, 0x0, 0x0, 0x38, 0x0, 0x0, 0xdd, 0x27, 0x0, 0x31, 0x0, 0x0, 0x1, 0x31, 0x1, 0x0, 0x1, 0x2d, 0x1, 0x0, 0x2, 0x3c, 0x1, 0x4, 0x3d, 0x29, 0x0, 0x0, 0x40, 0x29, 0x1, 0x0, 0x0, 0x38, 0x0, 0x0, 0xdd, 0x27, 0x0, 0x31, 0x0, 0x0, 0x1, 0x31, 0x1, 0x0, 0x1, 0x2d, 0x1, 0x0, 0x2, 0x3c, 0x1, 0x22, 0x3d, 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x40, 0x0, 0x10, 0x23, 0x40, 0x0, 0x1, 0x0, 0x0, 0x0, 0x52, 0x53, 0x44, 0x53, 0x66, 0x25, 0x2d, 0xa3, 0xeb, 0x8f, 0x4d, 0x40, 0xba, 0xaa, 0x2d, 0x3e, 0x10, 0xd3, 0xe6, 0xdd, 0x1, 0x0, 0x0, 0x0, 0x44, 0x3a, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5c, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x64, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x99, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xd4, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0x24, 0x1a, 0x40, 0x0, 0x38, 0x1a, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xd8, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0xc9, 0x1b, 0x40, 0x0, 0xdc, 0x1b, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xcc, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x1d, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x24, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, 0x24, 0x0, 0x0, 0x24, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4b, 0x45, 0x52, 0x4e, 0x45, 0x4c, 0x33, 0x32, 0x2e, 0x44, 0x4c, 0x4c, 0x0, 0x4d, 0x53, 0x56, 0x43, 0x52, 0x31, 0x32, 0x30, 0x2e, 0x64, 0x6c, 0x6c, 0x0, 0x0, 0x0, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x0, 0x0, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x0, 0x0, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x0, 0x0, 0x0, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x0, 0x0, 0x0, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x0, 0x0, 0x0, 0x49, 0x73, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x0, 0x0, 0x0, 0x49, 0x73, 0x44, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x0, 0x0, 0x0, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x0, 0x0, 0x0, 0x5f, 0x61, 0x6d, 0x73, 0x67, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x5f, 0x5f, 0x67, 0x65, 0x74, 0x6d, 0x61, 0x69, 0x6e, 0x61, 0x72, 0x67, 0x73, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x0, 0x0, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x0, 0x5f, 0x63, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x74, 0x68, 0x65, 0x72, 0x72, 0x0, 0x0, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x65, 0x0, 0x0, 0x0, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x6e, 0x76, 0x0, 0x0, 0x0, 0x5f, 0x58, 0x63, 0x70, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x0, 0x0, 0x0, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x64, 0x65, 0x0, 0x0, 0x3f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x40, 0x40, 0x59, 0x41, 0x58, 0x58, 0x5a, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x63, 0x72, 0x74, 0x53, 0x65, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x0, 0x0, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x63, 0x72, 0x74, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x64, 0x6c, 0x6c, 0x6f, 0x6e, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x0, 0x5f, 0x6f, 0x6e, 0x65, 0x78, 0x69, 0x74, 0x0, 0x0, 0x0, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x77, 0x61, 0x74, 0x73, 0x6f, 0x6e, 0x0, 0x0, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x66, 0x70, 0x5f, 0x73, 0x0, 0x0, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x34, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x63, 0x72, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x0, 0x0, 0x0, 0x5f, 0x5f, 0x63, 0x72, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x0, 0x0, 0x0, 0x5f, 0x63, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x0, 0x0, 0x67, 0x65, 0x74, 0x63, 0x68, 0x61, 0x72, 0x0, 0x0, 0x0, 0x70, 0x75, 0x74, 0x63, 0x68, 0x61, 0x72, 0x0, 0x0, 0x0, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x0, 0x0, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x0, 0x0, 0x5f, 0x66, 0x6d, 0x6f, 0x64, 0x65, 0x0, 0x0, 0x66, 0x72, 0x65, 0x65, 0x0, 0x0, 0x6d, 0x65, 0x6d, 0x63, 0x70, 0x79, 0x0, 0x0, 0x6d, 0x65, 0x6d, 0x73, 0x65, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4e, 0xe6, 0x40, 0xbb, 0xb1, 0x19, 0xbf, 0x44, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]
        m = [0 for i in range(0x1000)]
        reg = [0 for i in range(4)]
        i = 0
        flag = 0
        while(1):
        # for i in range(0x1000):
            c = code[i]
            if(c==0x2b):
                index = (code[i+1]<<8) + code[i+2]
                value = code[i+3]
                m[index] = value
                print("[%x]m[%x] = %x"%(i, index, value))
                i += 4
            elif(c==0x29):
                index = code[i+1]
                value = (code[i+2]<<8) + code[i+3]
                reg[index] = value
                print("[%x]reg[%x] = %x"%(i, index, value))
                i += 4
            elif(c==0x24):
                index = code[i+1]
                m[reg[index]] = 0
                print("m[%x] = input"%reg[index])
                i += 2
            elif(c==0x31):
                index = code[i+1]
                value = (code[i+2]<<8) + code[i+3]
                reg[index] += value
                print("[%x]reg[%x] += %x (%x)"%(i, index, value, reg[index]))
                i += 4
            elif(c==0x27):
                index = code[i+1]
                value = m[reg[index]]
                i += 2
                print("print: \t\t\t\t\t%c"%value)
            elif(c==0x2d):
                index = code[i+1]
                v1 = reg[index]
                v2 = (code[i+2]<<8)+code[i+3]
                if(v1==v2):
                    flag = 1
                else:
                    flag = 0
                print("[%x]cmp reg[%x](%x), %x"%(i, index, v1, v2))
                i += 4
            elif(c==0x3c):
                p = (code[i+1]<<8)+code[i+2]
                print("[%x]jz %x (%x)"%(i, p, flag))
                if(flag):
                    i += 3
                else:
                    i = p
            elif(c==0x38):
                index = code[i+1]
                value = (code[i+2]<<8) + code[i+3]
                m[reg[index]] ^= value
                print("[%x]m[%x] ^= %x (%x)"%(i, reg[index], value, m[reg[index]]))
                i += 4
            elif(c==0x39):
                index1 = code[i+1]
                index2 = code[i+2]
                m[reg[index1]] ^= reg[index2]
                print("[%x]m[%x] xor %x (%x)"%(i, reg[index1], reg[index2], m[reg[index1]]))
                i += 3
            elif(c==0x2f):
                index1 = code[i+1]
                index2 = code[i+2]
                value1 = m[reg[index1]]
                value2 = m[reg[index2]]
                if(value1==value2):
                    flag = 1
                else:
                    flag = 0
                print("[%x]cmp m[%x](%x) m[%x](%x)" % (i, reg[index1], m[reg[index1]], reg[index2], m[reg[index2]]))
                i += 3
            elif(c==0x3d):
                print("finished")
                break
            else:
                print("unknown code : %x" % c)
                break

        r = [0x66, 0x6d, 0x63, 0x64, 0x7f, 0x51, 0x6e, 0x36, 0x7b, 0x56, 0x3b, 0x78, 0x53, 0x59, 0x67, 0x41, 0x69, 0x4e, 0x44, 0x7a, 0x66, 0x61, 0x43, 0x56, 0x29, 0x46, 0x57, 0x7a, 0x7f, 0x55, 0x77, 0x71, 0x45, 0x0, 0x5f]
        for i in range(0x23):
            print(chr(r[i]^i), end='') 

redhat.rar

36.78 KB, 下载次数: 19, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 7威望 +1 吾爱币 +16 热心值 +6 收起 理由
Dispa1r + 1 + 1 膜师傅
imwinter + 1 谢谢@Thanks!
jaffa + 1 + 1 谢谢@Thanks!
Ravey + 1 + 1 谢谢@Thanks!
oxxo119 + 1 谢谢@Thanks!
Sound + 1 + 9 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
610100 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

evill 发表于 2018-5-3 19:13
whklhh 发表于 2018-5-3 11:11
还有哪个?我这边看已经全部正常显示了

11111.png

中午看的时候有3、4个图片不能显示,现在只有这个不能正常显示了。
 楼主| whklhh 发表于 2018-5-4 13:03
evill 发表于 2018-5-3 19:13
中午看的时候有3、4个图片不能显示,现在只有这个不能正常显示了。

我这边是正常显示这个图片的- =
重新上传论坛了,应该正常了?
car88lin 发表于 2018-5-2 22:56
Deteriorator 发表于 2018-5-2 22:58
图片显示有问题
 楼主| whklhh 发表于 2018-5-2 22:59

我刚才修正了一个嵌到表格里的,还有哪个有问题吗?
Deteriorator 发表于 2018-5-2 23:33
s-20180502-233242.png
标注的是不是图片?我这边看不到
 楼主| whklhh 发表于 2018-5-2 23:53
Deteriorator 发表于 2018-5-2 23:33
标注的是不是图片?我这边看不到

感谢提醒~不知道为啥csdn的图片地址没识别出来0.0已修复√

点评

还有不少图片无法显示,不多的话上传论坛吧?  详情 回复 发表于 2018-5-3 17:28
qqqwww0078 发表于 2018-5-2 23:55
学习快乐
Deteriorator 发表于 2018-5-3 00:02
whklhh 发表于 2018-5-2 23:53
感谢提醒~不知道为啥csdn的图片地址没识别出来0.0已修复√

CSDN博客有防盗链
evill 发表于 2018-5-3 08:47
中间还是有几个图片显示有问题
头像被屏蔽
sstm 发表于 2018-5-3 09:03
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表