Level 12 -> Level 13
- login PW: JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
- 문제설명: PW는 hexdump 형식의 data.txt 파일에 있는데 이 파일은 반복적으로 압축이 되어있다.
Hex dump
hexdump는 주어진 파일이나 저장장치에 있는 데이터를 16진법으로 나타내는 방법입니다.
문제에서 주어진 data.txt를 읽어보면 다음과 같은 형식으로 출력값이 나타납니다.
먼저 이 hexdump를 이진 데이터로 바꾼 다음 압축형식을 하나하나 풀어보겠습니다.
1. hexdump => 이진 데이터
xxd 명령어에 -r 옵션을 사용하면 hexdump를 reverse 할 수 있습니다.
해당 명령어를 사용하기 이전에 문제에서 조언한 것 처럼 /tmp 에 새로운 dir을 만들어서 문제를 풀어나가겠습니다.
( /tmp 는 보통 임시 파일이나 dir을 저장하는 용도로 사용되는데 암호화된 파일을 해독하는 작업과 같이 중요한 작업을 수행할 때 보안 및 안정성 측면에서 사용하기 좋습니다. )
/tmp 에 ysgk라는 dir을 생성하고
data.txt를 이곳에 복사하였습니다.
# xxd -r data.txt > bandit
xxd -r 명령어를 사용하여 data.txt를 이진 데이터로 바꾼 뒤 bandit 이라는 이름으로 저장합니다.
# file bandit
이진 데이터로 바꾼 데이터의 파일형식을 확인해 보니 gzip으로 압축되어 있다는 것을 알 수 있습니다.
2. 압축된 파일 푸는 방법
- A 로 압축 된 file => A 확장자를 붙여 파일이름을 변경한다. ( ex: file.gz )
- A로 압축된 file을 푸는 명령어럴 사용하여 압축을 해제한다. ( ex: gunzip file.gz )
- 압축 종류 ( 확장자 / 압축 해제 명령어 )
- gzip ( .gz / gunzip )
- bzip2 ( .bz2 / bzip2 -d )
- POSIX ( .tar / tar -xf )
아까 확인한 바와 같이 첫번째 압축 형식은 gzip입니다.
1. # mv bandit bandit.gz
bandit 파일을 bandit.gz으로 바꿔줍니다.
2. # gunzip bandit.gz
gunzip 명령어로 압축을 해제합니다.
그 다음 압축 형식은 bzip2 입니다.
( 생략 )
( 생략 )
주어진 파일 형식이 ASCII text 일 때까지 압축해제를 해준 다음 파일을 읽으면 PW를 확인할 수 있습니다.