Bandit

리눅스 문자 변환, 삭제 명령어 tr | Bandit Level 11 -> Level 12

developerYoung 2023. 8. 31. 20:43
반응형

문제

Level 11.

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


이 문제를 풀기 전에 알아야 할 리눅스 명령어를 공부해보도록 해요!

문제를 풀은 과정의 비하인드는 아래에 말해드리죠....ㅠㅠ

 

리눅스 tr 명령어

리눅스의 tr 명령어는 특정 문화를 변환 또는 삭제할 수 있게 해주는 명령어입니다!

지정한 문자 패턴을 변환 전과 변환 후를 특정하여 사용할 수 있습니다!

tr 사용법

tr [옵션] [변환 전] [변환 후]

tr 옵션별 사용법

  • default : 특정 문자열을 특정 문자열로 변환할 때
    ex) tr "a" "b" -> a라는 문자를 b로 변환!

  • -d: 특정 문자열을 삭제할 때
    ex) tr -d [a-c] -> a, b, c를 삭제!

  • -s : 중복된 문자열을 삭제하고 싶을 때,
    ex) tr -s "abc" -> abc 문자열이 중복된 경우 중복을 제거하고 한개만 출력!

예시

예시에 사용한 환경은 가상 kali image 입니다!

먼저 준비된 파일은 이렇게 생겨서 위의 예시들로 확인해볼게요!

리눅스 tr 테스트파일

1번
cat test_file.txt | tr 'a' 'b'

2번
cat test_file.txt | tr -d '[a-c]'

 

1. 첫번째 결과로 아래처럼 a 문자가 모두 b로 치환되는걸 확인할 수 있어요!

2. 두번째 결과는 -d 옵션으로 a부터 c까지의 문자가 모두 삭제됨을 확인할 수 있어요!

반응형

 

풀이

이정도면 오늘 내용에 대해 혼자서도 풀 수 있을거에요!

물론 정규표현식에 대한 내용도 알아야하지만, 그 내용은 문제를 풀면서 설명하도록 하지요.

 

이 문제의 해설은 대소문자 영어의 경우 13번 옆으로 옮기면 패스워드를 알 수 있다는 의미입니다.

즉 a -> n b->o c->p 이런식으로 13번 뒤로 가게 되는 것이고, z -> m 이렇게 뒤에 있는건 앞으로 오면 되겠죠

 

그래서 위의 배운 내용을 응용해보면 우리가 변경시킬 문자는 a부터 z A부터 Z입니다.

이것을 나타내면 [a-zA-Z] 라고 할 수 있고, a-z가 변경될 문자열은 n-za-m 이 되고, A-Z가 변경될 문자열은 N-ZA-M이 됩니다.

 

자! 그러면 이제 문제를 풀어볼까요?

cat data.txt | tr [a-zA-Z] [n-za-mN-ZA-M]

이렇게 입력하여 엔터를 딱 누르면! 이쁘게 패스워드가 나오는 것을 확인할 수 있습니다 ㅎㅎ

 


사실 제가 이 문제를 처음에 풀었던 방법은 리눅스에서 말고 javascript로 코딩으로 풀었습니다...ㅎㅎㅎ

문자열을 변환하는 명령어가 뭔지 모르겠는데, 머릿속에 떠오르는 방법은 ascii 코드로 (코딩테스트를 했던 추억이..) +13해서 풀고나서 다시 찾아보면서 tr 명령어를 공부하게 됐네요! ㅎㅎ

 

무엇보다 자기가 아는 프로그래밍 언어를 사용했다는 점에서 다행인지는 모르겠지만, 오늘은 tr 명령어를 새로 배우게 되어 즐겁네요!

 

 

 

더보기를 눌러 비밀번호를 확인하세요!

더보기

비밀번호는 다음과 같다

Level11. JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

반응형