hgame-2019-week2-wp

hgame-2019-wp归总:https://www.danisjiang.xyz/2019/02/22/hgame-2019-wp%E5%BD%92%E6%80%BB/

HGAME Week2 WriteUp

这周有些事,所以没做什么题

RE

maze

外面这个函数的大意就是前面几个Setmap返回值得是”.”,最后一个Setmap的返回值则是”t”

再进入Setmap函数,


发现是走迷宫,这个迷宫是60个一行的,所以 y_2973 代表 y轴,x_2974 代表 x 轴

所以先生成迷宫

从”s”开始,走到”t”就行了

得到flag

hgame{wwwwaaaaaaaaaaaaaasssssssssssssssddddddddddddddwwwwwwwaaaaaaaaaaaa}

Pro的Python教室(二)

发现下载到的是一个.pyc,查了一下发现有在线反编译工具

这题还是比较易懂的,写了一个逆向代码

int main()
{
    char a[] = "ioOavquaDb}x2ha4[~ifqZaujQ#";
    int b[] = { 0,3,6,9,12,15,18,21,24,2,5,8,11,14,17,20,23,26,1,4,7,10,13,16,19,22,25};
    char c[27];
    for (int i = 0; i < 27; i++)
    {
        c[b[i]] = a[i];
    }
    for (int i = 0; i < 27; i++)
    {
        if (i % 2 == 0)
        {
            c[i] -= 1;
        }
        else
        {
            c[i] -= 2;
        }
        putchar(c[i]);
    }
}

得到flag

MISC

初识二维码

得到的内容是base64编码的图片,所以在html里加上就行了

得到残缺的二维码,扫了一下发现扫不出来,然后发现少了一些东西,看了看大多数的二维码发现缺了用来定位的三个正方形,所以PS里加上

扫描得到flag

CRYPTO

浪漫的足球圣地

查了一下题目,发现浪漫的足球圣地是指曼切斯特

然后查了一下相关的内容,发现了一个曼切斯特编码

给的内容是十六进制数,所以要转换成二进制先

最后得到一串十六进制数,其实是ASCII码

得到flag

hill

这道题想了蛮长时间的,但是python实在写不好,写了半天也不知道为啥就是跑不出来,改了很多次,最终也没有得到flag,先把有问题的脚本放在这里了,希望学长能指一下哪里出错了 (当然做不出来,我这个做得也太傻了,逆元也没有求)

from numpy import *

word = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]]
new = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]]
word2 = [[0,0,0],[0,0,0],[0,0,0]]
word3 = [[0,0,0],[0,0,0],[0,0,0]]
string=''
a1 = 'TCS'
a2 = 'HXZ'
a3 = 'TCX'
a4 = 'APB'
a5 = 'DKJ'
a6 = 'VJD'
a7 = 'OHJ'
a8 = 'EAE'
e = ''
answer = ''
for i in range(3):
    word[i][0] = ord(a1[i]) - ord('A') + 1
    word[i][1] = ord(a2[i]) - ord('A') + 1
    word[i][2] = ord(a3[i]) - ord('A') + 1
    word[i][3] = ord(a4[i]) - ord('A') + 1
    word[i][4] = ord(a5[i]) - ord('A') + 1
    word[i][5] = ord(a6[i]) - ord('A') + 1
    word[i][6] = ord(a7[i]) - ord('A') + 1
    word[i][7] = ord(a8[i]) - ord('A') + 1

A = mat(word)
#print 'A = '
#print A
#BABYSHILL
d = 'BABYSHILL'
for i in range(3):
    word2[0][i] = ord(d[i*3]) - ord('A') + 1
    word2[1][i] = ord(d[i*3+1]) - ord('A') + 1
    word2[2][i] = ord(d[i*3+2]) - ord('A') + 1
B = mat(word2)
#print 'B = '
#print B
#print 'B_1 = '
#print B_1
s = 'TCSHXZTCXAPBDKJVJDOHJEAE'
for k in range(15):
    e = s[k:k+10]

    print e

    for j_1 in range(3):
        for j_2 in range(3):
            for j_3 in range(3):
                for j_4 in range(3):
                    for j_5 in range(3):
                        for j_6 in range(3):
                            for j_7 in range(3):
                                for j_8 in range(3):
                                    for j_9 in range(3):
                                        word3[0][0] = ord(e[0]) - ord('A') + 1 + j_1 * 26
                                        word3[1][0] = ord(e[1]) - ord('A') + 1 + j_2 * 26
                                        word3[2][0] = ord(e[2]) - ord('A') + 1 + j_3 * 26
                                        word3[0][1] = ord(e[3]) - ord('A') + 1 + j_4 * 26
                                        word3[1][1] = ord(e[4]) - ord('A') + 1 + j_5 * 26
                                        word3[2][1] = ord(e[5]) - ord('A') + 1 + j_6 * 26
                                        word3[0][2] = ord(e[6]) - ord('A') + 1 + j_7 * 26
                                        word3[1][2] = ord(e[7]) - ord('A') + 1 + j_8 * 26
                                        word3[2][2] = ord(e[8]) - ord('A') + 1 + j_9 * 26
                                        C = mat(word3)
#print C
                                        try:    
                                            C_1 = C.I
#print C_1

                                            K = B *C_1
#print K
                                            K_1 = K.I

                                            AN = K * A
                                            #print AN

                                            for k in range(8):
                                                for l in range(3):
                                                    if AN[l][k] > 0:
                                                        answer += chr(int(AN[l][k])%26+ord('A') - 1)
                                                    else:
                                                        #print e + ' error ' + str(j_1) +str(j_2)+str(j_3)+str(j_4)+str(j_5)+str(j_6)+str(j_7)+str(j_8)+str(j_9)
                                                        break
                                            print answer
                                            answer = ''

                                        except:
                                            #print e + ' error0'
                                            pass

Vigener~

查了一下题目发现是维吉尼亚密码,然后用了一个在线解密

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒