Bandit Level 11 → Level 12
Level Goal
The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions
Sol)
이번엔 암호학과 관련 되어 있는 듯하다. 대소문자 모두 13자리씩 이동 되었다는 말.
검색해보니 ROT-13이라는 단순한 암호화 방법이라고 한다. 13자리인 이유는 영어가 26개의 문자로 이루어져서 그렇다고한다.
결국 매커니즘 적으로 평문을 ROT-13 방법으로 두번 암호화하면 다시 평문이 된다.
어차피 이미 한번 암호화가 되어 있으니 다시 암호화 하면 복호화가 된다. 리눅스(외에도 유닉스 계열 OS는 다 되는 듯하다.)에서는 문자변환 명령어인 'tr' 로 사용이 가능하다.
# group1에 해당하는 문자 집합을 group2 문자 집합으로 바꾼다.
tr [-option] [group1] [group2]
#[-option]
# -d : group1 문자 집합에 해당하는 문자를 지운다
# -s : group1 문자 집합에 해당하는 문자를 group2에 해당하는 문자로 치환
# ROT-13 암호화
# 'A-Za-z'는 영어의 대소문자 전체(A~Z, a~z)
# 'N-ZA-Mn-za-m'는 N~Z와 A~M을 합쳐 만든 문자 그룹(소문자 동일)
tr 'A-Za-z' 'N-ZA-Mn-za-m'
#종합적으로 명령어를 구성하면
cat < data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
그럼 또 친절하게 알려준다.