이번에는 inhere 디렉토리에 있는 human-readable 파일 안에 비밀번호가 있다고 한다. 이게 무슨말일까 일단 가보자.

흠 파일이 엄청 여러개가 있다.

file 명령어를 이용하면 파일의 속성을 이용할 수 있다.

"*" 기호는 모든 파일을 지칭한다.

여기에서 ./-*라고 한 것은 "-"로 시작하는 모든 파일의 속성을 보여달라는 말로 이해할 수 있을 것이다,

 

명령어 실행 결과를 보면 -file07이 ASCII text인 것을 알 수 있다.

문제에서 human-readable file이라고 했고, ascii text는 우리가 읽을 수 있으므로 저 파일이 정답일것이다.

찾았당 ㅎ

반응형

inhere라는 디렉토리 안에 password가 숨겨져 있다고 한다.

cd 명령어를 이용해서 간단하게 해결할 수 있다.

cd : change directory

cd [디렉토리명] 을 하면, 디렉토리를 이동할 수 있다.

 

inhere 디렉토리로 이동해서 ls를 이용해 뭐가 있나 봤는데, 아무것도 없다.

그런데 문제에서 hidden file이라고 했으니, 숨겨진 파일을 찾아야 한다.

ls 명령어의 a 옵션을 이용하면 숨겨진 파일이나 디렉토리까지 모두 볼 수 있다.

.hiddden이라는 이름의 파일이 보인다.

열어보면 답이 나온다.

반응형

dd

다음 레벨을 위한 패스워드는 spaces in this filename이라는 파일 안에 담겨져 있다고 한다.

어? 굉장히 이지 하구만.. 하면서 cat으로 실행해보면

각각의 단어로 이루어진 파일들이 존재하지 않는다고 한다.

cat 명령어는 공백을 기준으로 서로 다른 파일이라고 인식하기 때문에 이런 경우 각각, spaces, in, this, filename 이라는 각기 다른 이름의 파일로 인식하여 실행을 시도한다.

따라서 이를 해결하려면 공백을 무시할 수 있도록 해야한다,

두 가지 해결 방법이 존재하는데,(더 있을 수도 있음...)

1. 따옴표로 묶기

2. '\' 기호 사용하기

이렇게 하면 공백을 같이 볼 수 있다.

 

 

성공``~

반응형

지난번 게시물에 이어서 확장 유클리드 알고리즘을 시작해보도록 해보아요...

 

 

지난 게시물에서, 유클리드 알고리즘에 의해

GCD(a, b) = GCD(b, r) 이 성립한다는 것을 알았음.

(※  GCD : greatest common divisor : 최대공약수, a % b = r)

 

확장 유클리드 알고리즘은 최대공약수 gcd를 구하는 것 뿐만아니라, 정수해를 가지는 부정방정식

ax + by = c가 주어질 때, a, b의 최대공약수를 구함과 동시에 이 방정식을 만족하는 x, y를 찾아주는 알고리즘이다.

당연히 식이 하나에 두 변수가 있으므로 unique한 해를 찾는다기보다는 무수히 많은 (x, y) 쌍에  대한 규칙을 찾는 것이라고 보면 될 것이다.

 

코드로 구조를 살짝 표현 해볼까?

function extended_gcd(a, b)
    s := 0; old_s := 1
    t := 1; old_t := 0
    r := b; old_r := a

    while r != 0
        quotient := old_r div r
        (old_r, r) := (r, old_r - quotient * r)
        (old_s, s) := (s, old_s - quotient * s)
        (old_t, t) := (t, old_t - quotient * t)

    output "coefficients : ", (old_s, old_t) //항등식의 계수
    output "GCD : ", old_r // a와 b의 최대공약수 (gcd)
    output "quotient by the GCD", (t, s) // 최대공약수로 나눈 몫

pseudo code 로 작성된 확장 유클리드 알고리즘.

r과 old_r을 각각 b와 a라고 두고(기존 항등식에서 사용하던 a,b와 같음), 나머지 변수들을 치워보면은 기존의 유클리드 알고리즘에서 사용하던 코드와 일치한다는 것을 알 수 있다.

이제, 여기에 s와 t가 추가되었는데, 이들은 초기값은 반드시 0, 1 / 1, 0으로 고정되고, 그 이후는 r. 즉, a, b와 비슷한 방식으로 처리되게 됨.

이걸 한번 시뮬레이션 해보자!

161x + 28y = 7을 계산해보자.

X_new는 이번 사이클에서 새롭게 구해지는 값을 말한다.

q는 이번 사이클에 구해지는 몫이다.

 

초기 세팅은 이러하다.

- q =  old_r / r

- r_new = old_r - r * q

- s_new = old_s - s * q

- t_new = old_t - t * q

q old_r r r_new old_s s s_new old_t t t_new
  161 28   1 0   0 1  

old_r = a, r = b로 세팅하고(그저 초기값일 뿐이랍니다), old_s, sm old_t, t는 1, 0, 0, 1로 각각 고정시켜놓는다.

q old_r r r_new old_s s s_new old_t t t_new
5 161 28 21 1 0 1 0 1 -5
  28 21   0 1   1 -5  

첫 스텝에서 old_r(a)을 r(b)로 나눈 몫 q = 5, r = 21이다.

이 예시에서는 a, b가 양수라서 별 상관이 없긴 하지만, 원래 확장유클리드 알고리즘은 음수에서도 작동을 해야한다. 그래서 r_new는 반드시 0 이상 abs(r) 미만의 정수가 되어야 한다(다들 아실거라고 믿고..)

예를 들어 7/(-3)을 한다고 하면 그 몫은 -2가 아니라 -3이라는 말이다. 7 - (-3 * -3)를 해야 나머지가 2. 즉, 0 이상 3 미만의 값으로 들어오기 떄문이다.

 

자 여기까지 왔으면, 나머지 s와 t를 구해준후

한칸씩 왼쪽으로 밀어서 두 번째 사이클을 준비해준다.

q old_r r r_new old_s s s_new old_t t t_new
5 161 28 21 1 0 1 0 1 -5
1 28 21 7 0 1 -1 1 -5 6
  21 7   1 -1   -5 6  

이런 작업을 r = 0이 될 떄까지 반복해주면 우리가 찾던 값이 등장하게 되는 것이다.

q old_r r r_new old_s s s_new old_t t t_new
5 161 28 21 1 0 1 0 1 -5
1 28 21 7 0 1 -1 1 -5 6
3 21 7 0 1 -1 4 -5 6 -23
  7(GCD) 0   -1 4   6 -23  

이러한 과정을 거친 결과 r = 0인 사이클에서, old_r = GCD인 것을 알 수 있고,

ax + by = c의 값을 구할 수 있는 것이다.

이 때,

x = old_s = -1

y = old_t = 6

c = GCD(161, 28) = 7임을 알 수 있다.

결과 : 161 * (-1) + 28 * 6 = 7

 

이렇게 확장 유클리드 알고리즘을 간단하게 알아보았다 ^^

s_new 와 t_new를 구하는 과정이 r_new를 구하는 과정과 같은 이유는

같은 연산을 적용해나가면서 값을 찾아주기 위함이다.

 

이걸 적용해볼만한 문제를 보게 된다면 아래 덧붙이도록 해보도록 노력해보도록... 해보겟슴미다.

 

반응형

이번에는 '-'라고 하는 파일 안에 비밀번호가 숨겨져있다.

역시 파일이 보인다.

그런데 cat을 이용해 까볼랬는데, 응답이 없다.

왜냐면 '-'로 시작하는 파일은 바로 열 수가 없기 때문이다.

따라서 

요렇게 해주어야 한다.

참고로, 리눅스 터미널에서 '.'(점)은 참 요긴하게 쓰인다.

점이 한개 쓰이면 현재 디렉토리, 두 개 쓰이면 이전 디렉토리 라는 뜻이다.

일단 알아만 두자.

다음레벨 렛츠고~

반응형

문제를 보니 readme파일에 비밀번호가 저장되어있다고 한다. 그리고 그 파일은 home디렉토리에 저장되어있다고 한다.

이 비밀번호로 bandit1에 접속하는가보다.

<명령어 설명>

pwd : 현재 사용자가 위치한 경로를 나타내줌

ls : 현재 디렉토리 내에 있는 파일 및 디렉토리에 대한 정보를 보여줌.

cat : car readme : readme 파일을 화면에 출력시켜줌.

 

이렇게 했더니 정답이 나왔다. 이제 이걸 이용해서 다음 단계로 넘어가보도록 하자. 

 

 

반응형

리눅스 명령어 공부를 위한 wargame 맛보기.

처음엔 가상머신에 우분투 깔아서 하다가 점점 뒤로 갈수록 wsl만 사용합니다.

 

ssh명령어를 이용해서

ssh bandit0@bandit.labs.overthewire.org -p 2220 를 치고

bandit0에 접속해주었음.

 

Password : bandit0

 

ssh : secure shell. 원격 호스트에 접속하기 위한 보안 프로토콜.

이 명령어를 어떻게 사용하느냐?

 

ssh [Username]@[hostname] –p [port number]

 

간단하게 설명하자면, 리눅스에서는(모든 리눅스가 다 그러진 않을수도 있긴해요) 

user가 있고, 그 유저가 속한 group이 있음. 이제 여기서는 [hostname]이라는 호스트가 가리키는 [username] 으로 [port number] 포트를 이용해 접속하겠다는 뜻.

 

이렇게 나오면 성공.

일반적으로 뭐 설정한게 아니라면 비밀번호는 입력을 해도 화면상에 보이지 않을거에요

반응형

42서울 온라인 테스트 후기!!

시험기간에 딴짓하는게 제일 집중이 잘되는지라 42서울 테스트를 한번 봤음 ㅋ

사실 혼자한건 아니고 옆에있던 동기 한명이랑 같이 하긴 했는데 이게 뤼얼 집단지성의 힘이라는걸 깨달았음

일단 맨처음 혼자 했을때는 기억력테스트 15단계, 논리력테스트 17단계까지 갔고 

한 10시간 뒤? 그쯤 합격 통보 메일 와서 합격 후 어제 체크인미팅 광클까지 성공해서 이제 라피신 신청만 남은 상황.

그리고 도전 욕구 생겨서 가계정 판다음 동기 한명이랑 뤼얼 개빡세게 풀어본 결과.. 20단계까지 갔습니당 ㅎㅎㅎ 

20단계를 자기 눈으로 직접 본 사람이 얼마나 될지..? ㅎㅎㅎ

 

8월 22일날 봅셰댜 여러분~ ㅋㅋㅎㅎ

 

1. 기억력테스트

기억력테스트는 뭐 그냥 화면에 나오는거 열심히 기억하면 되는건디

  색칠  
     
     

     
    색칠
     

     
     
색칠    

 

대충 이렇게 순서대로 색칠된 타일의 위치가 바뀌는데 이 순서를 기억하고있다가 이 다음에 나오는 비어있는 시트에 순서에 맞게 클릭클릭하면 클리어.

단계가 올라갈수록 단계당 색칠되는 타일의 개수가 바뀌거나 전체 타일의 개수(3곱3 -> 4곱4)가 늘어나면서 점점 어려워짐.  내가 못풀은 15단계가 아마 5곱5 배경에 바뀌는 횟수가 9번이었나?(8번일수도) 그정도 돼서 쫌 까다롭긴 했음요 ㅋㅋ 

 

2. 논리력테스트 

이 논리력테스트 이놈이 진짜 야무진놈인데 2시간동안 계속 풀어도 집중력이 안끊기는 체험을 할 수가 있어요 ㅋㅋㅋㅎ

규칙은 뭐 필드 안에 있는 별표를 전부 다 먹으면 되는데, 그 별표를 먹기 위해서 예전에 어렸을 때 하던 Scratch 하는것마냥 블록들 조합해서 코딩 비슷한거 하면 됩니다.

뭐 저는 요즘 C언어 공부하고 있으니까 C언어 가지고 설명을 좀 드리자면,

대충 이런 식의 블록들이 있다고 칩시다. 그러면 왼쪽 화살표는 왼쪽 턴 명령어, 오른쪽도 같은 개념이고, 위쪽 화살표는 현재 바라보고 있는 방향으로 한 칸 전진을 하는 명령어입니다.

그리고 게임을 진행하다보면  밑에 있는 F0, F1, F2 블록은 C언어로 치면 goto문과 같다고 볼 수 있을 것 같네요. 더 이상 힌트를 주면 스스로 알아내서 깨는 재미가 없을 것 같으니까(사실 글로 설명하기 힘들...) 넘어가보고,

오른쪽에 있는 색깔 블록들은 if문으로 보면 될 것같아요. 내가 있는 필드가 빨간색 필드라면..? A명령 실행. 이런 느낌으로 해보시면 될 것 같습니당~ ㅎㅎ

 

자 이제 이 글을 쓰게 된 목적이라고도 할 수 있지요? 바로 20단계(제 생각에는 test의 엔딩..)의 아름다운 자태나 한번 구경하고 갑시다! ㅋㅋㅋㅋ

 

키야아아아아

이게 바로 (본인 피셜) ecole42 논리력 테스트의 엔딩인데요! 위에 보시면 아시겠지만 이걸 봤을 때는 이미 시간이 5분남짓 남아있어서 클리어에는 실패했습니다... 그런데 이걸 진짜 본인 눈으로 이 단계까지 온 사람이 전국에 몇명이나 될련지 궁금하네요? ㅎㅎㅎ 이거 봤을떄 주변에서 구경하는 친구들도 다같이 소리지르면서.... 하 ... 그날의 감동이 아직까지 남아있습니다... ㅎ

 

그럼 이만 오늘의 글은 마치도록 할게욤 

한 열흘 전에 썼어야 했던 글인데 귀찮아서 미루고 미루다가 시험 끝나고 썼어용 ㅎ ㅎ

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts