AK了(:з」∠)题目难度相对不太大,不过识别算法的思路还是学到了

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 printabler = [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)+1def find_mul_table(x, v):# print(hex(x))for i in range(len(mul_table[v])):if(mul_table[v][i]==x):return ielse: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)&0xffffv9 = mul(v5, rand1)v8 = (v4+v9)&0xffff# print(r[0], v9)r0 = r[0]^v9r1 = r[1]^v8r2 = r[2]^v9r3 = r[3]^v8# print(r0)r0 = find_mul_table(r0, rand_table[6*j+0])r1 = (r1 - rand_table[6*j+1])&0xffffr2 = (r2 - rand_table[6*j+2])&0xffffr3 = 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)&0xffffa2 = (r[2]-0xbd70)&0xffffa3 = find_mul_table(r[3],0xbf7b)a1, a2 = a2, a1k = [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 kfor 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进行了转换

在这个函数中将字母通过一系列很复杂的方法进行了处理,而其他字符则直接变为了一个Table中的大写字母

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

原样dump出来,反解码,发现数字都正常还原了,几个字母由于懒得逆而空着

更新:
就是维吉尼亚, 详细分析过程见后一天的blog
对比一下发现只有flag{中的“l”和”{“,和后面几个位置的’-‘存在字母,因此直接对应还原即可

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

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

    tt = "GHIJKLMNOPQRSTUV"# 原始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 = 7for i in range(len(r)):# 用原始dump数组计算的时候需要跳过这些错误的字符# if(i==k):#     k += 16#     # i += 1#     flag += ' '#     continuep = (r[i])# print(p, end='')#, i, t[i%len(t)])if(p in tt):p = str(int(tt.index(p)))else:# 含有字母的几个HEX大部分是'-',转出的值为2d# 头部的flag{的l和{也含有字母,分别为6c和7b# 还原后即可p = 'd'flag += pprint()print(flag)# 666c61677b35346639343666352d663935612d346130612d626133312d3762313731613765636138327dprint(bytes.fromhex("666c61677b35346639343666352d663935612d346130612d626133312d3762313731613765636138327d"))# 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 = 0flag = 0while(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] = valueprint("[%x]m[%x] = %x"%(i, index, value))i += 4elif(c==0x29):index = code[i+1]value = (code[i+2]<<8) + code[i+3]reg[index] = valueprint("[%x]reg[%x] = %x"%(i, index, value))i += 4elif(c==0x24):index = code[i+1]m[reg[index]] = 0print("m[%x] = input"%reg[index])i += 2elif(c==0x31):index = code[i+1]value = (code[i+2]<<8) + code[i+3]reg[index] += valueprint("[%x]reg[%x] += %x (%x)"%(i, index, value, reg[index]))i += 4elif(c==0x27):index = code[i+1]value = m[reg[index]]i += 2print("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 = 1else:flag = 0print("[%x]cmp reg[%x](%x), %x"%(i, index, v1, v2))i += 4elif(c==0x3c):p = (code[i+1]<<8)+code[i+2]print("[%x]jz %x (%x)"%(i, p, flag))if(flag):i += 3else:i = pelif(c==0x38):index = code[i+1]value = (code[i+2]<<8) + code[i+3]m[reg[index]] ^= valueprint("[%x]m[%x] ^= %x (%x)"%(i, reg[index], value, m[reg[index]]))i += 4elif(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 += 3elif(c==0x2f):index1 = code[i+1]index2 = code[i+2]value1 = m[reg[index1]]value2 = m[reg[index2]]if(value1==value2):flag = 1else:flag = 0print("[%x]cmp m[%x](%x) m[%x](%x)" % (i, reg[index1], m[reg[index1]], reg[index2], m[reg[index2]]))i += 3elif(c==0x3d):print("finished")breakelse:print("unknown code : %x" % c)breakr = [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='')

等回来有空好好逆一下wcm的字母部分……
还有国赛和DD的被隐藏的真实 以及久远的Hitb OTZ比赛打太多欠债太恐怖了

180501 逆向-RedHat(Reverse)相关推荐

  1. 中职网络安全—2022年国赛逆向PE Reverse解题思路

    关于逆向入门. 一.语言 1.汇编. 分Inte|和AT&T两种语法.win平台主要是Intel ,Linux反汇编默认是AT&T ,目前CTF里Intel汇编占据主导地位.入门推荐王 ...

  2. Linux 的基础命令

    目录 介绍 一.Linux 1.shell 2.shell的优点 3.Linux的哲学思想(优点.优势) 二.Linux命令的分类 三.vim编辑 四.Linux的目录结构 五.Linux命令行 1) ...

  3. 把数据转换为在内存中Tree(树形结构)。_Linux的中断处理机制 [二] - 数据结构(2)...

    Linux的中断处理机制 [一] - 数据结构(1) 上文提到,每个IRQ同时有"irq"和"hwirq"两个编号.这里"hwirq"是硬件 ...

  4. Maven 常见问题

    1.前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项目完全迁移并应用maven ...

  5. Python之字典类型数据常见操作及排序

    一.Python 字典 Python 的字典 dictionary 是一种灵活的数据结构类型,字典的每个键值对(key=>value)用冒号(:)分割,每个对之间用逗号(,)分割. Python ...

  6. maven常见问题问答

    http://www.cnblogs.com/BigTall/archive/2011/03/23/1993253.html 1.前言 Maven,发音是[`meivin],"专家" ...

  7. 三十分钟掌握STL(Using STL)

    STL概述 STL的一个重要特点是数据结构和算法的分离.尽管这是个简单的概念,但这种分离确实使得STL变得非常通用.例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包 ...

  8. SQL Server之字符串函数

    以下所有例子均Studnet表为例:   计算字符串长度 len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写 lower( ...

  9. maven添加子工程_重量级!Maven史上最全教程,看了必懂

    作者 | 小明菜市场来源 | 小明菜市场(ID:fileGeek)头图 |  CSDN 下载自东方IC 前言 为了持续集成和持续部署,需要把项目改造为,或者使用maven创建项目,下面介绍maven ...

最新文章

  1. [题解]CQOI2012 T2 组装 assemble
  2. java世博会,反应原生失去的世博会
  3. cassandra可视化工具_一位数据科学家的私房工具清单
  4. 苹果第一财季营收1239亿美元 iPhone、Mac及服务营收均创下新高
  5. 给妹子讲python-S01E01好用的列表
  6. python编写脚本教程_python编写一个会算账的脚本的示例代码
  7. PostGis加载空间数据
  8. 同比增长19.1%,软银第一季度净利2542亿日元
  9. mysql 慢日志 逻辑读_学会读懂 MySql 的慢查询日志
  10. linux安装jdk8
  11. Android手机健康类APP市场分析
  12. 计算机病毒是计算机软件出现的故障,计算机病毒引发故障有哪些
  13. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
  14. 【旧文集】一生伏首拜阳明-记于2017
  15. int、time和timestamp区别
  16. 【图像识别】基于Haar分类器实现五官定位matlab代码
  17. 用JS实现PC端淘宝查看商品图片放大镜效果
  18. 统计给定的n个数中,负数,零和正数的个数。
  19. SQL日志文件查看工具(Log Explorer for SQL Server v4.2)
  20. 论文盘点:面部动作编码系统(FACS)识别

热门文章

  1. Oracle数据库学习(六):where条件查询及关键字使用
  2. 用layui创建表格
  3. 工业4.0细谈MES制造执行系统
  4. Word控件Spire.Doc 【段落处理】教程(十二):如何在 C# 中管理 word 文档的分页
  5. java for 字母金字塔_扣丁学堂Java培训简述如何用C#随机数生成字母金字塔
  6. 如何下载旧版本R和R包?
  7. 为什么需要克隆虚拟机,虚拟机又该怎样克隆呢?
  8. Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法
  9. 区块链学习—通证经济学的诺奖理论基础
  10. PHP7.2中AES加密解密方法mcrypt_module_open()替换方案