1. 문제
- 반복적으로 압축된 hexdump 파일의 data.txt 파일에 비밀번호가 저장되어 있다.
- /tmp 아래에 작업 디렉터리를 만들고 datafile을 복사하고 이름을 변경하라고 한다.
2. Hex dump on Wikipedia
2.1 개요
- Hex Dump는 데이터를 16진수 형식으로 시각적으로 표시하는 방법이다.
- 데이터가 파일, 메모리 또는 스토리지 장치에서 가져온 바이너리 데이터일 때 주로 사용된다.
- 디버깅, 리버스 엔지니어링, 디지털 포렌식에서 데이터 분석을 위해 사용된다.
- 대표적인 Hex Dump 명령어는 hexdump, xxd, od 등이 있다.
2.2 Hex Dump의 특징
- 16진수로 표현:
- 데이터를 바이트 단위로 16진수 값으로 표시한다.
- 일반적으로 8바이트 또는 16바이트 단위로 나누어 표시한다.
- 주소 정보 포함:
- 각 줄의 왼쪽에는 메모리 주소(또는 오프셋)가 표시된다.
- ASCII 변환 추가 가능:
- 오른쪽에 각 바이트 값의 ASCII 문자가 출력되어 가독성을 높인다.
- ASCII 범위를 벗어난 문자는 점(.)으로 표시.
- 반복 데이터 축약:
- 연속적인 동일 데이터는 *로 표시하여 축약할 수 있다.
2.3 명령어 사용법
2.3.1 hexdump
- 파일의 내용을 16진수로 덤프.
기본 형식
hexdump [옵션] 파일명
주요 옵션
- C: 16진수와 ASCII를 함께 출력.
- v: 축약 없이 모든 데이터를 출력.
- n N: 처음 N 바이트만 출력.
- s N: N 바이트를 건너뛴 후 출력.
예제
- 파일의 기본 Hex Dump
- hexdump example.txt
- ASCII와 함께 출력
- hexdump -C example.txt
- 처음 32바이트 출력
- hexdump -n 32 example.txt
- 10바이트를 건너뛴 후 출력
- hexdump -s 10 example.txt
2.3.2 xxd
- 데이터를 Hex Dump 형식으로 변환하거나 Hex Dump를 원래 데이터로 복원.
기본 형식
xxd [옵션] 파일명
주요 옵션
- r: Hex Dump를 바이너리로 복원.
- p: 평문 출력 (16진수만 출력).
- g N: N 바이트 단위로 그룹화.
- c N: 한 줄에 N 바이트 출력.
예제
- Hex Dump 생성
- xxd example.txt
- Hex Dump를 원래 파일로 복원
- xxd -r hex_output.txt original_file.txt
- 16진수 값만 출력
- xxd -p example.txt
2.3.3 od (Octal Dump)
- 8진수, 16진수 또는 ASCII로 데이터를 표시.
기본 형식
od [옵션] 파일명
주요 옵션
- t x1: 각 바이트를 16진수로 표시.
- t x2: 2바이트 단위로 16진수 표시.
- c: ASCII 문자로 출력.
- A n: 주소 표시를 비활성화.
예제
- 16진수 1바이트씩 표시
- od -t x1 example.txt
- ASCII 문자로 출력
- od -c example.txt
- 주소 표시 없이 출력
3. 풀이
- data.txt를 확인해보니 ASCII 문자로 되어있는 hexdump 파일이다.
- 문제의 조언대로 /tmp 아래에 작업 디렉터리를 만들자.
- 해당 명령어로 /tmp 아래에 woo 디렉터리를 만들었다.
- 이후 cp 명령어로 해당 파일을 복사했다.
mkdir /tmp/woo
cp data.txt /tmp/woo
xxd -r data.txt test
mv test test.gz
gunzip test.gz
- 압축 해제된 파일을 확인하니 bzip2으로 압축이 되어있다.
- 다시 확장자를 bz2 로 바꾸고 bunzip2로 압축을 해제한다.
mv test test.bz2
bunzip2 test.bz2
- 다시 file 명령으로 test를 확인하니 이번에는 다시 gzip으로 압축되어 있다.
- 그렇다면 다시 mv 명령으로 확장자 바꾸고 gunzip 으로 압축을 해제한다.
mv -> gzip -> file 으로 다시 확인하니 tar으로 되어있다.
- 여기서 주목해야 하는것은 tar archive다.
- 즉, 여러 파일과 디렉터리를 하나의 아카이브 파일로 묶는것이다.
- tar 명령어로 해당 압축을 해제할 수 있다.
mv test test.tar
tar -xvf test.tar
- 압축해제 하니 bin 파일이 나온다.
- file로 확인하니 tar로 압축되어 있다.
- 다시 압축을 해제한다.
- 압축을 해제하면 data6.bin이 나오고
- 이것은 bzip2로 압축이 되어 있다.
- 압축을 해제하니 다시 data6.bin이 나오고 해당 파일은 tar로 압축되어있다.
- 또 압축이 gzip으로 되어있다.....
- 다시 압축 해제....................................
- 압축을 풀고 data8.bin을 확인하니 ASCII text다.
- cat으로 읽으면 끝
'Wargame > bandit wargame' 카테고리의 다른 글
Bandit Level 13 → 14 (0) | 2025.01.06 |
---|---|
13 → 17 까지 필요한 명령어 (1) | 2025.01.06 |
12 → 13 까지 필요한 명령어 (0) | 2025.01.06 |
Bandit Level 11 → 12 (0) | 2025.01.05 |
Bandit Level 10 → 11 (0) | 2025.01.05 |