Level 11 → Level 12

bandit1112

문제 설명을 확인해 보면 data.txt 파일에 저장된 문자열이 소문자(a–z)와 대문자(A–Z)가 각각 13자리씩 회전된 상태라고 되어 있다.

알파벳을 일정한 수만큼 이동시키는 암호 방식에는 여러 종류가 있지만, 13자리씩 회전하는 방식은 ROT13(Rotate by 13 places) 암호 방식이다.

a  n  a

또한 ROT13은 같은 변환을 한 번 더 수행하면 원래 문자열로 복원되는 특징이 있다.

따라서 data.txt에 저장된 문자열을 ROT13 방식으로 다시 변환하면 원래 문자열을 확인할 수 있다고 판단하였다.

data.txt확인

먼저 현재 디렉터리에 data.txt 파일이 존재하는지 확인하였으며, cat 명령어를 사용해 암호화된 문자열을 확인하였다.

이후 리눅스에는 문자열의 문자를 다른 문자로 변환하는 tr(translate) 명령어가 존재하기 때문에 이를 이용하여 ROT13 방식으로 변환된 문자열을 다시 원래 문자열로 복원할 수 있다고 판단하였다.

tr 명령어는 **문자를 다른 문자로 변환(치환)**  사용하는 리눅스 명령어이다.

tr '변환할 문자집합' '변환될 문자집합'

1️⃣ ‘A-Za-z’ 의미 → 변환할 문자 범위

구성

  • A-Z → 대문자 A부터 Z까지
  • a-z → 소문자 a부터 z까지 즉 모든 알파벳 문자를 의미한다.

2️⃣ ‘N-ZA-Mn-za-m’ 의미 → 변환될 문자 범위 (ROT13)

구성

대문자

  • A-M → N-Z
  • N-Z → A-M

소문자

  • a-m → n-z
  • n-z → a-m 즉 알파벳을 13칸 이동시키는 ROT13 변환 규칙이다.

3️⃣ 정리

tr 'A-Za-z' 'N-ZA-Mn-za-m'

‘A-Za-z’는 변환할 모든 알파벳 범위를 의미하고, ‘N-ZA-Mn-za-m’은 ROT13 방식으로 13칸 이동된 문자 범위를 의미한다.

비밀번호 출력

위 명령어를 사용해서 Level 12로 이동하기 위한 비밀번호를 확인하였다.

접속완료

접속완료

댓글남기기