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. shell下输出字体颜色
  2. jQuery学习教程(一):入门
  3. 著名模拟鼠标点击软件小点点被收购
  4. 飞鸽改变您的互联网生活
  5. shell调用python权限不足_使用权限从python运行shell脚本
  6. excel怎么设置一个按钮就一点就生成一个表_条码生成软件如何批量生成DPD条码...
  7. java中double除法和取余的若干注意
  8. 腾讯元老、上市公司CTO辞职后,每天对着200亩地发呆!
  9. 哪些事是考研前不知道,考研后才知道的?
  10. 仅允许用户radmin使用su命令
  11. 本地html本地xml文件怎么打开,处理xml文件怎么打开
  12. 零基础入门CV - Task 03 字符识别模型.md
  13. 从前慢-JavaScript之Web API-篇章4
  14. ZYNQ Linux 逻辑端(PL)中断demo
  15. 90句美丽的英文及翻译
  16. 什么是马甲APP?寻求高手马甲包封装APP上架
  17. fiddler拦截手机端请求
  18. 06-python中的集合类-01
  19. FX PLC学习之顺序功能图(SFC)
  20. Google Earth Engine(GEE)——图像位移与配准2

热门文章

  1. Android 根据身份证号判断性别
  2. 某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: 1)A和B两人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派两人去; 4)B和
  3. Linux操作系统之安装Linux虚拟机
  4. SortPool (DGCNN) - An End-to-End Deep Learning Architecture for Graph Classification AAAI 2018
  5. 【AutoSAR】【MCAL】CAN
  6. h5压缩图片 亲测有效
  7. 牛逼!手把手教你制作个人微信红包封面,保姆级红包封面制作教程
  8. 3、浙江移动网页Post登陆分析RSA算法【Post/Js逆向笔记】
  9. 优化之Joiner组件
  10. 基于搜索的贝叶斯网络结构学习算法-K2