Post

[wargame] overthewire bandit 8 -> 9

Bandit Level 8 -> Level 9

user_id : bandit8
password : dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc

bandit8_9

목표

다음 레벨로 가는 비밀번호는 data.txt에 있고 딱 한 줄만 나타난다고 한다.

중복되는 것을 제거하거나 딱 한번만 나오는 것을 찾으면 될 것 같다.

해결법

이번에는 uniq라는 명령어를 이용해보자.

uniq

**uniq**명령어는 연속적으로 반복되는 행을 한 행으로 줄여주는 명령어이다. 특히나 uniq명령어는 sort명령어와 대부분 같이 쓰이게 되는데, sort 명령어는 정렬을 해주기 때문에 한 행이 몇번 반복되는지 한눈에 알 수 있게 해주기 떄문이다. 그리고 그 두 명령어를 같이 쓰려변 저번에 cat명령어와 grep명령어를 같이 쓸 때 사용한 |(파이프)를 써야한다.

uniq [옵션] [파일 이름]

옵션을 사용하지 않으면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bandit8@bandit:~$ cat data.txt | sort | uniq
18DyjwhN856SsMx8bNrFSvr6rJxNQKhE
1iyGemEgn3qUOOFcAJyGPHOiewqZyp1y
2CQ5DQRdtoe9Ft8YpMHqCwQcN1Bk9lCI
365RauAVsFlxktPMpoLtIf1uxijU1TfV
4K2MoVHd1gXfoOdDjvlaRxFNZwmi4A4C
52p0CnGhAvm4m3fPKqz9mTxVDeVYCvnG
5Y76FifuxKStZi4CVovF2uPhgLrZnLzG
7A4l2BI3lPJgNdWAmyXAGlfB8uvCQLX0
8cxarYi5VoKRj3lzo2baLOJaMgUtzoRH
97Qwmy18JE8aGIud1stpTsOrOtUMHeGI
9d8exmGtSsGcU1gz6HmqTfSxmnmI4FBo
A16BW831T94qcsYcGDSkgzYhxnX2xUdK
aAd8RbcAAGVRifo0gE2x1nPIGH2fjgZi

--중략--

이런식으로 문자열 단위로 정렬되어 보이게 된다. 하지만 우리는 한번만 나오는 문자열이 필요하기에 옵션을 추가해줘 비밀번호를 찾아낼 것이다.

uniq 옵션들 - options

내가 자주 쓰게 될 것들만 일단 적어본다.

-c

연속적으로 반복된 수 만큼 행 앞에 표시된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bandit8@bandit:~$ cat data.txt | sort | uniq -c
     10 18DyjwhN856SsMx8bNrFSvr6rJxNQKhE
     10 1iyGemEgn3qUOOFcAJyGPHOiewqZyp1y
     10 2CQ5DQRdtoe9Ft8YpMHqCwQcN1Bk9lCI
     10 365RauAVsFlxktPMpoLtIf1uxijU1TfV
     10 4K2MoVHd1gXfoOdDjvlaRxFNZwmi4A4C
     10 52p0CnGhAvm4m3fPKqz9mTxVDeVYCvnG
     10 5Y76FifuxKStZi4CVovF2uPhgLrZnLzG
     10 7A4l2BI3lPJgNdWAmyXAGlfB8uvCQLX0
     10 8cxarYi5VoKRj3lzo2baLOJaMgUtzoRH
     10 97Qwmy18JE8aGIud1stpTsOrOtUMHeGI
     10 9d8exmGtSsGcU1gz6HmqTfSxmnmI4FBo

    --중략--

이렇게 숫자로 표기된 곳에서 혼자 1로 표시된 문자열을 찾을 수도 있고 다음 옵션을 이용하여 찾을 수도 있다.

-u

연속적으로 반복되지 않는 행만 출력한다.

1
2
3
4
bandit8@bandit:~$ cat data.txt | sort | uniq -u
4CKMh1JI91bUIZZPXDqGanal4xvAg0JM

오호 이 녀석이 우리가 찾던 비밀번호다!

비밀번호 : 4CKMh1JI91bUIZZPXDqGanal4xvAg0JM

This post is licensed under CC BY 4.0 by the author.