[SuNiNaTaS(써니나타스)] 26번 문제 풀이


오늘은 오랜만에 써니나타스 문제를 풀어보았다.

26번 문제는 아래와 같다

26번 문제

 

제목 비슷한 곳을 보니 "Frequency analysis(빈도분석)"라고 적혀있다.

 

암호학에서 빈도분석이란?

 평문과 암호문에 사용되는 문자 또는 문자열의 출현빈도를 단서로 이용하는 암호해독법을 말한다.

(출처: 위키백과)

 

정확하게 이해한지 모르겠지만, 문자의 출현빈도에 따라서 단어 또는 언어가 바뀌는 것 같았다. 

 

그래서 나는 빈도분석을 자동으로 해주는 사이트를 이용해서 문제를 풀어냈다.

https://quipqiup.com/

 

quipqiup - cryptoquip and cryptogram solver

 

quipqiup.com

 

 

해당 사이트에 들어가서 문제에 있던 글을 옮겨 넣었다.

(문제 사이트)

 

 

"Solve"을 눌러주면 아래와 같이 변환되는 것을 알 수 있다.

(해석된 결과)

 

 

정답(kimyuna)을 집어 넣으니 아래와 같이 문제가 풀렸다!

(정답!)

 

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

 

[SuNiNaTaS(써니나타스)] 24번 문제 미해결


이번 문제는 24번 문제이다. 풀었던 것까지 해설해보고자 한다.

 

24번 문제는 아래와 같다.

(24번 문제)

 

 

문제를 다운로드하면 'suninatas.zip'으로 다운로드가 된다. 

(suninatas.zip)

 

그래서 zip 파일을 풀게 되면 아래의 파일(모르는 파일)을 얻을 수 있다.

(모르는 파일)

 

 

해당 파일이 무엇인지 모르겠으니 'Exeinfo PE'을 이용해 확인해 본다. 확인해본 결과 zip 파일로 그 안에 내용은 Android 관련된 파일인 것 같았다.

(파일 분석)

 

 

그래서 나는 모르는 파일의 확장자명을 zip으로 바꿨다.

(zip 파일)

 

그 다음 압축을 풀어서 아래와 같은 폴더를 얻을 수 있었다.

(폴더!)

 

 

아래 화면은 압축을 풀었던 폴더의 내용물이다. 안드로이드와 관련된 파일 같아서 'classes.dex'파일을 분석하기로 했다.

(폴더의 내용)

 

 

*.dex 파일을 분석하기 위해선 'dex2jar' 도구를 이용해야 한다.

도구 사용법은 아래 링크를 이용해서 확인해보면 된다!

https://200301.tistory.com/32

 

 

'dex2jar'도구를 이용해서 jar 파일을 얻어냈다.

(jar 파일 추출)

 

 

그다음 JD-GUI 도구를 이용해서 jar 파일을 JAVA 코드로 확인해봤다.

도구 사용법은 아래 링크를 이용해서 확인해보면 된다!

https://200301.tistory.com/32

(JD-GUI 툴 이용)

 

 

MainActivity파일에서 소스코드를 확인할 수 있었다. 

 

 

해당 소스코드를 확인하면 될 것 같다. 하지만 java 공부를 하지 않아서 코드 분석이 원활하게 이루어지지 않았다. JAVA공부를 조금 더 하고 문제를 다시 풀어야겠다.

 

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 17번 문제 풀이


오늘은 17번 문제를 풀었다. 해당 문제는 많은 노력이 필요했다....

아래의 화면이 17번 문제이다. 'QR코드가 망가졌으니 고쳐라' 라고 문제가 주어졌다. 아마도 빨간색으로 칠해진 부분을 수정하는 문제인 듯하다.

(17번 문제)

 

 

포토샵을 한 번도 사용해본 적이 없어서 그림판을 이용해서 최대한 QR코드를 복구해보았다.

(멋있게 포토샵을 이용해서 하고 싶으나.... 프로그램도 없고, 사용해본 적도 없어서 그림판을 이용했다...)

(그림판을 이용한 QR코드 복구)

 

 

최대한 복구한 QR코드는 처음에는 인식을 하지 못했다. 그래서 주변 색상(흰색)과 QR선을 비슷하게 만들어 놓고 QR코드를 인식되게 만들었다.

 

휴대폰으로 QR코드를 인식했더니 아래와 같이 키값을 얻을 수 있었다.

"Good Job! Congraturation! AuthKey is YouAreQRCodeMaster~!"

 

 

키값을 그대로 들고 가 정답에 넣으니 아래와 같이 축하한다는 팝업창과 함께 문제가 풀리는 것을 알 수 있다.

(정답!)

 

 

점수도 조금씩 향상되는 것을 알 수 있다!

(점수 향상!)

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 19번 문제 풀이


오늘은 19번 문제를 풀어봤다. 문제를 풀 때 한참을 고민해서 풀었던 문제였지만, 정답을 알고 보니 쉽게 해결할 수 있는 문제였다.

 

아래의 화면은 19번 문제이다.

19번 문제를 보면 이진수로 이루어져있는 것을 볼 수 있다. 그러면 이진수를 텍스트로 바꿔야 하는 것을 알 수 있다. 

(19번 문제)

 

 

그래서 나는 binary를 string으로 바꿔주는 사이트를 이용하기로 했다.

http://www.unit-conversion.info/texttools/convert-text-to-binary/

 

Convert text to binary - Converters

About Convert text to binary tool Convert text into binary. Computers store all characters as numbers stored as binary data. Binary code uses the digits of 0 and 1 (binary numbers) to represent computer instructions or text. Each instruction or symbol gets

www.unit-conversion.info

 

 

아래 사이트는 19번 문제에 있는 binary를 그대로 복사해서 붙여 넣기 한 모습이다. 그리고 변환한 모습을 보인 것이다.

(string으로 변환한 모습)

 

 

이진수를 텍스트로 변환하니 아래와 같은 문자로 바뀌었다. 해당 문자를 보고 쉽게 문제에 접근할 수가 없었다. 왜냐하면 무슨 문자인지 모르게 나타냈기 때문이다.

" NVCTFDV KF JLEZERKRJ REU KFURP ZJ R XFFU URP REU RLKYBVP ZJ GCRZUTKWZJMVIPYRIU "

 

 

나는 이상하게 나열되어있는 문자열을 보고 일정한 법칙에 의해 치환되었다는 것을 감지했다. 

(사실 이 사실을 알기까지 꽤 오랜 시간이 있었다.)

그래서 '치환 암호'라는 개념을 적용해서 문제를 풀기로 했다.

 

 

치환 암호란?
일정한 법칙에 따라 평문의 문자 단위를 다른 문자 단위로 치환하는 암호화 방식.

(출처: 위키백과)

 

 

아래의 사진은 치환 암호가 어떻게 이루어지는 간략하게 보여주는 사진이다.

평문 A -> D, B -> E, C -> F 으로 변환해서 서로 약속을 한 사람만 평문을 읽을 수 있게 치환하는 것이다.

(출처: https://starlibrary.org/ecollection/infogudIemList.do?id=GUD00000000000001082 )

 

 

그래서 자동으로 치환 암호를 평문으로 바꿔주는 사이트를 이용하기로 했다.

http://theblob.org/rot.cgi

 

ROT encoder/decoder

 

theblob.org

 

 

치환암호 사이트를 이용해서 아래의 화면처럼 처음에 문자열로 바꾼 값을 넣어준다.

 

 

값을 넣어주면 총 25가지의 평문이 나오게 되는데 그중에서 우리가 알아볼 수 있는 평문은 9번째에 있는 값이다. 

(평문 변환 값)

 

 

9번째 열을 보게 되면 키값을 발견할 수 있다.

" WELCOME TO SUNINATAS AND TODAY IS A GOOD DAY AND AUTHKEY IS PLAIDCTFISVERYHARD "

 

 

키 값을 그래도 들고 가서 정답에 넣어주면 아래와 같이 축하한다는 팝업창을 볼게 된다.

(축하한다는 팝업창)

 

 

물론 점수도 향상됐다!

(점수향상)

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 9번 문제 풀이


오늘은 9번 문제를 풀었다. 리버싱에 대한 개념을 잘 몰라서 문제를 풀기가 매번 꺼려진다. 그런데 이번 9번 문제는 잘 얻어걸린 문제였다. 

 

9번 문제를 들어가 보면 아래와 같은 창을 보게 된다. 'Download' 표시가 있고 밑에 비밀번호가 있으니, 파일을 다운로드한 후 비밀번호를 입력하면 될듯하다.

(9번 문제)

 

 

파일을 다운로드하고, 압축을 풀면 아래와 같은 파일을 얻을 수 있다.

 

 

항상 문제를 풀 때는 실행파일이 무엇인지에 대해 알아봐야 한다. 문제에서는 exe 파일이 사실 zip 파일일 수도 있기 때문이다.

그래서 나는 'Exeinfo PE' 툴을 이용해서 해당 실행파일이 무엇인가 확인해봤다. 확인해보면 해당 파일은 'OllyDbg'를 이용하면 된다고 한다.

(Exeinfo PE)

 

 

'OllyDbg'는 아래의 폴더에서 실행시켜주면 된다!

(없으신 분들은 설치를 권장합니다!)

(OllyDbg 파일 폴더)

 

 

사실 'OllyDbg'의 사용에 대해 익숙하지가 않다. 대략적으로 설명하면 4 분할되어있는 왼쪽 위부터 시계방향으로 '어셈블리 코드' , '레지스터', '스택', 'DUMP(덤프)' 이다. 

 

 

'OllyDbg'에 다운로드한 실행파일을 옮겨 놓고, 아래의 네모 박스 칠해져 있는 실행 표시를 눌렀다.

('OllyDbg' 메뉴바)

 

 

그다음, '어셈블리 코드' 부분에서 조금만 위로 올려보니 Text 부분에 Congratulation 이라는 문구가 있었다. 아마 이쪽 부분에서 확인을 해보면 정답을 얻을 수 있을 것 같았다. 

바로 위쪽에 ASCII "913465" 가 있어서 이 값을 실행시켜본 프로그램에다가 넣어보기로 했다.

(실행파일을 'OllyDbg'에 넣은 모습)

 

 

사실 실행 버튼을 누르면 아래와 같이 프로그램이 실행된다.

(실행된 모습)

 

 

913465를 넣어보니 Congratulation!이라는 문구를 출력하는 것을 볼 수 있다.

 

 

그래서 이 값이 키값으로 인지하고 바로 정답에 넣어봤더니, 아래와 같이 축하한다는 문구를 볼 수 있는 팝업창을 볼 수 있다.

(문제해결!)

 

 

점수도 차곡차곡 쌓여간다!

(점수향상!)

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 10번 문제 풀이


오늘은 10번 문제를 풀었다. 10번 문제를 들어가 보면 달랑 'Download'밖에 없었다. 그 외에는 아무것도 존재하지 않았다.

(10번 문제)

 

 

 

그래서 페이지 소스코드를 들어가봐서 확인해봤다. 힌트를 얻기 위해서!

소스코드를 확인해보면 아래의 화면처럼 'Reversing'이라고 적혀있었다. 이 부분이 힌트인 것 같았다.

(10번 페이지 소스코드)

 

 

리버싱 하라는 것임을 인지하고 파일을 다운로드하였다. 파일 이름도 'reversing.exe'이다.

(reversing.exe)

 

 

파일을 실행시켜보면 아래와 같은 화면처럼 입력창과 'OK', 'QUIT' 이렇게 밖에 없었다. 이게 뭘 하라는 건지 모르겠다. 

(실행화면)

 

 

그래서 일단 아무 값이나 넣어봤는데, 그러면 'Try again!' 이라는 팝업창이 뜨게 된다. 아마 정확한 값을 넣어야지 문제가 풀리는 것 같다.

(Try again!)

 

 

그래도 일단 파일이 정확하게 무엇인지 판단하기 위해 'Exenfo PE'로 확인해보았다. 확인해보니. NET Reflector를 이용해서 문제를 풀면 되는 것 같다.

(분석 결과 : .NET Reflector)

 

 

.NET Reflector의 정확한 기능을 모르겠지만 위키백과에서 확인해보니, 

.NET Framework로 작성된 소프트웨어 용 클래스 브라우저, 디컴파일러 및 정적 분석기

라고 한다. 여기서 내가 주목해야하는 것은 디컴파일러 기능을 사용해야 할 듯하다.

 

 

그래서 적당한 툴을 다운 받기로 했다. 아래의 링크를 보면 내가 다운로드한 툴 이외에도 많은 종류가 나와있다. 사용자들이 원하는 툴을 다운로드하면 될 듯하다.

http://freealt.selfhow.com/net-reflector/

 

무료 .NET 반사경(.NET Reflector) 대체 프로그램 10개 | 무료 대안 소프트웨어

.NET 반사경(.NET Reflector) 소개 설명 .NET Reflector는 .NET 용 클래스 브라우저 및 분석 도구입니다 개발자는 .NET 구성 요소를 탐색, 검색, 분해 및 분석 할 수 있습니다. 공식 홈페이지 플랫폼. Windows,.NET Framework, 지원사양 analyzer,decompiling,disassembler,net-framework, 무료 .NET 반사경(.NET Reflector) 대체 프로그램 10개 1. Explo

freealt.selfhow.com

 

 

나는 'dotPeek' 라는 툴을 다운로드하였다. 해당 툴을 다운로드하고 다운로드한 파일(reversing.exe)을 dotPeek에 옮겼다. 

옮기면 아래와 같이 'WindowsFormsApplication3'가 뜰 것이다.

(dotPeek 분석)

 

 

그래서 나는 하나하나 확인해보았는데, 그중 'Metadta' -> '#US' 에 들어가 봤다. 들어가 보니 키 값이 그대로 나와있었다.

(키 값)

 

 

키 값을 그대로 정답을 넣었더니 아래와 같이 축하한다는 팝업창과 함께 문제가 풀렸다.

(문제 해결!)

 

 

그리고 점수도 향상되는 것을 볼 수 있다!

(점수 향상!)

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 21번 문제 풀이


오늘은 21번 문제를 풀었다. 저번에 CODEGATE_LOL 문제와 정말 같은 문제였다. 그래서 어렵지 않게 문제를 풀어냈다.

아래의 화면은 21번 문제이다. "What is a Solution key? Is it a Puzzle"이라고 한다. 사진을 보면 키 값이 자 때문에 보인다. 저 자를 치우면 쉽게 키값을 얻어 낼 수 있을 것이다.

(21번 문제)

 

 

처음에는 어떻게 접근하는 지 몰라서 바로 페이지 소스코드를 확인해보았다. 딱히 특별하거나 문제를 풀만한 힌트가 존재하지 않았다. 그래서 해당 문제의 이미지를 다운로드하여 보았다.

(페이지 소스코드)

 

 

이미지를 다운받아보니 아래와 같이 다운로드된 jpg 파일이 보일 것이다.

(jpg 파일!)

 

 

파일 한장 밖에 없는 게 이상해서 파일의 속성을 들어가 보기로 했다. 아래의 화면을 확인해보면 사진 한 장이 가지고 있는 파일 크기보다 엄청 큰 것을 알 수 있다.

(너무 큰 이미지 파일)

 

 

그래서 "WinHex" 툴을 이용하기로 했다. 해당 툴에는 파일을 쪼갤 수 있는 기능이 있었기에 사용했다.

(WinHex 툴)

 

 

사용법은 'Tools' -> 'Disk Tools' -> 'File Recovery by Type' 순으로 해주면 된다.

(문제풀이!)

 

 

그다음 아래의 화면처럼 'Pictures'에 클릭되어있는 상태에서 'OK'를 누르면 끝이다.

(문제 풀이!)

 

 

위의 있는 과정이 끝나면 아래와 같이 jpg 파일 안에 숨겨져있던 다른 jpg 파일들이 등장하게 된다!

(다른 파일들!)

 

 

아래의 화면처럼 숨겨져있던 파일을 들어가 보면 자의 위치만 달라져서 키값이 무엇인지 유추가 가능하게 된다. 파일들을 하나하나 확인해봐서 키값을 조합하면 21번 문제의 키값을 찾을 수 있다.

(jpg 파일들)

 

 

찾은 키 값을 정답으로 넣으면 아래의 팝업창처럼 축하한다는 말과 함께 문제가 풀리게 된다!

(문제 해결!)

 

 

물론 점수도 향상되는 걸 볼 수 있다!

(점수 향상!)

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 18번 문제 풀이


오늘은 18번 문제를 풀기로 했다. 문제를 들어가 보면 아래와 같은 화면인데, 느낌상 아스키 코드일 것 같다. 

(18번 문제)

 

아스키 코드란?
American Standard Code for Information Interchange 의 준말로 ASCII 라고 한다.

다시 말해, 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.

 

 

그래서 아스크 코드를 문자로 바꿔주는 파이썬 코드를 짜 봤다. 사실 아스키 코드가 몇개 없으면 수작업으로 진행하려고 했으나, 양이 너무 많은 관계로 코드를 짜봤다.

(아스키 코드 변환 코드)

 

 

아스키 코드를 문자로 바꾸는 코드는 쉽다.

ascii = [86, 71, 57, 107, 89, 88, 107, 103, 97, 88,77, 103, 89, 83, 66, 110, 98, 50, 57, 107, 73, 71, 82, 104, 101, 83, 52, 103, 86, 71, 104, 108, 73, 69, 70, 49, 100, 71, 104, 76, 90, 88, 107, 103,
   97, 88, 77, 103, 86, 109, 86, 121, 101, 86, 90, 108, 99, 110, 108, 85, 98, 50, 53, 110, 86, 71, 57, 117, 90, 48, 100, 49, 99, 109, 107, 104]

result = []

for i in ascii:
  result += chr(i)  

result = "".join(result)

print(result)

 

간단하게 소스코드를 해석해보자면 

1. ascii 란 배열에 18번 문제의 숫자들을 넣는다.

2. result 란 배열을 만들어준다.(아스키코드가 문자로 변환된 값을 넣어주기 위해 만들었다.)

3. for문을 ascii 배열만큼 돌려준다.

4. chr(숫자) : 숫자에 맞는 아스키 코드를 반환해준다.

5. join 함수를 이용해서 문자를 문자열로 바꿔준다.

6. print 함수를 이용해서 문자열로 바뀐 값을 출력한다.

 

 

파이썬으로 코드를 돌리면 아래와 같은 값을 출력하게 된다.

(아스키 코드 변환 값)

 

 

만약 join 함수를 이용하지 않으면 아래와 같은 값이 출력된다.

 

 

이제 이 값이 키값인 줄 알았지만 여기서 'Decode'를 한번 더 취해줘야 한다. 그래서 써니나타스 자체에 있는 툴을 이용하기로 했다.

(사실 아스키 코드를 문자로 변환한 값이 키값인 줄 알았지만 아니라고 해서 'Decode'를 한 것이다.)

(Base64 Decode 준비)

 

 

바로 Base64 Decode를 이용하면 원하는 키값을 찾을 수 있다.

(디코더 변환!)

 

 

키값을 넣으면 아래와 같이 문제가 풀린 것을 알 수 있다!

(문제 해결!)

 

 

물론 점수도 오르고 말이다!

(점수 향상!)

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

+ Recent posts