ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • holyshield puzzle
    CTF&Wargame/ETC 2016.12.19 19:15

    holyshield puzzle

    이런식으로 이미지가 주어지는데 이걸 합쳐서 하나의 이미지로 만들어야한다

    http://swlock.blogspot.kr/2015/12/script-python-tile.html 우선 이 글을 참고했다

    파일 이름이 00_00.png이런식인데 1단계는 쉽게 통과할 수 있다

    2단계는 base64인데 디코딩을해서 파일이름을 위와같이 만들어주고 합치면된다

    이제 3단계인데 3단계는 MD5로 되어있다 md5는 복고화가 일일이 안되니

    반대로 생각해보면된다 파일 형식은 00_00.png이런식이다 그러므로 01_01.png이름을 md5로 해서 찾으면 된다

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import os
    import hashlib
     
    for x in range(1100):
        for y in range(197):
            try:
     
               a = hashlib.md5("%02d_%02d.png" % (x, y)).hexdigest()
               os.rename(a, "%02d_%02d.png" % (x, y))
            except WindowsError:
                pass
     
     
    cs

    우선 이런식으로 이름을 정렬해준다 그다음은 1~2단계와 같이 합쳐주기만 하면 끝


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    from pytesser import *
     
    """ save file name """
    savefilename = "out_new.png" 
    """ load file name """
    loadfilename = []
    for x in range(1100):
        for y in range(197):
            loadfilename.append("%02d_%02d.png" % (x, y))
     
    sizeColumn = 96
     
    image = Image.open(loadfilename[0])
    = image.size[0];
    = image.size[0];
    length = len(loadfilename);
     
    newimg=Image.new("RGBA",( int(sizeColumn*(x)) , int((((length-1)/sizeColumn)+1)*(y)) ) )
    print "x,y:",x,y,int(sizeColumn),int(((length-1)/sizeColumn)+1),( int(sizeColumn*(x)) , int((((length-1)/sizeColumn)+1)*(y)) )
     
    = 0;
    for j in loadfilename:
     image = Image.open(j)
     box = (0,0,x,y)
     cutting = image.crop(box)
     print "process:",j,(i/sizeColumn),(i%sizeColumn),box,((x)*(i/sizeColumn),(y)*(i%sizeColumn))
     newimg.paste(cutting,((x)*(i%sizeColumn),(y)*(i/sizeColumn)))
     i=i+1;
     
    newimg.save(savefilename,"PNG")
    cs

    9000장이라 리스트에 넣고 하는 방법은 코드 효율이 안좋지만 일단 그걸 따지고 만들었던게 아니라서 1단계 2단계에서 썼던방법대로 하고 한 3분정도 기다렸다


    기다리다가 지쳐서 껐지만 폴더를 보니 이런 사진이 있었다

    'CTF&Wargame > ETC' 카테고리의 다른 글

    holyshield ppc  (0) 2016.12.24
    holyshield BrokenPiano  (0) 2016.12.22
    holyshield puzzle  (0) 2016.12.19
    holyshield ransome  (0) 2016.12.19
    holyshield easylang  (0) 2016.12.19
    holyshield StudyScala  (0) 2016.12.19

    댓글 0

Designed by Tistory.