촉촉한초코칩

[Dreamhack] dreamhack-tools-cyberchef 본문

Study/MISC

[Dreamhack] dreamhack-tools-cyberchef

햄친구베이컨 2024. 8. 12. 17:54

 

문제 

문제 파일 다운받으니 이런 문장이 나왔다. 

rail fence 

  • 전치기법 중 하나 
  • 평문 문자를 대각선으로 지그재그 형태의 위아래로 왔다갔다 작성해서 맨 위의 첫번째 라인부터 순서대로 치ㅜ하여 암호문을 작성한다. 

https://m.blog.naver.com/finderway/223163606178

 

공격

위 블로그 참고해서 rail fence 만드는 코드는 완성했는데 키 값을 모른다.. 

너무 노가다 같아서 반대로 생각해보았다. 

dreamhack tools 사용해서 rot13 적용 → From base64했더니 이런 문자열이 나왔다. 

 근데 output을 아무리 넣어봐도 틀렸다고 나왔다.. 

생각해보니 rail-fence는 사용하지 않은 것 같아서+output으로 나온 문자열 조합이 이상한것같아서 output 문자열을 가지고 rail-fence에 적용해보았다. 

def solve(crypt, key):
    key = int(key)
    crypt = list(crypt)
    msg = ''
    index = []
    block_size = []
    idx = 0
    flag = 0

    for i in range(len(crypt)):
        if len(block_size) <= idx:
            block_size.append(1)
        else:
            block_size[idx] += 1
    
        if idx == key - 1:
            flag = 1
        elif idx == 0:
            flag = 0

        if flag == 1:
            idx -= 1
        elif flag == 0:
            idx += 1

    for i in range(len(block_size)):
        index.append(0)

    idx = 0
    flag = 0

    for i in range(len(crypt)):
        tmp = 0

        for j in range(idx):
            tmp += block_size[j]

        tmp += index[idx]
        index[idx] += 1
        msg += crypt[tmp]

        if idx == key - 1:
            flag = 1
        elif idx == 0:
            flag = 0

        if flag == 1:
            idx -= 1
        elif flag == 0:
            idx += 1
    
    return msg

if __name__ == '__main__':
    print('암호화 메시지 입력')
    crypt = input('> ')
    print('키 값 입력')
    key = input('>')
    print(solve(crypt, key))

성공

'Study > MISC' 카테고리의 다른 글

[Dreamhack] broken-png  (0) 2024.09.04
[Dreamhack] **Exercise: Docker  (0) 2024.08.20
[Dreamhack] baby-linux  (0) 2024.08.12
[Dreamhack] SSH  (0) 2024.07.31
[Dreamhack] 64se64  (0) 2024.07.27