촉촉한초코칩
[Dreamhack] dreamhack-tools-cyberchef 본문
문제
문제 파일 다운받으니 이런 문장이 나왔다.
rail fence
- 전치기법 중 하나
- 평문 문자를 대각선으로 지그재그 형태의 위아래로 왔다갔다 작성해서 맨 위의 첫번째 라인부터 순서대로 치ㅜ하여 암호문을 작성한다.
공격
위 블로그 참고해서 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 |