728x90

이번에 일이 있어서 딥러닝에 대해 본격적으로 공부하고 구현해야 될 일이 생겼다. 그래서 공부를 하면서 알게 된 것들을 적으려고 한다. 일단 가장 많이 알려지고 쓰는 tensorflow로 공부를 했다.

 

Tensorflow의 동작원리

  • 일단 기본적으로 연산은 그래프로 표현한다. (그래프란 노드(점)와 엣지(선)로 이루어진 수학적인 구조)
  • 그래프는 세션내에서 실행된다. (세션은 그래프의 operation을 CPU나 GPU같은 device에 배정하고 실행을 위한 메소드를 제공)
  • 데이터는 tensor로 표현한다. (tensor는 정형화된 다차원 배열)
  • 변수는 여러 그래프들이 작동할때도 그 상태를 유지한다.
  • Operation에서 데이터를 입출력 할 때 feed와 fetch를 사용할수있다.

 

그래프 만들기

그래프를 만들때는 상수와 같이 아무 입력값이 필요없는 operation(이하 op)을 정의하는 것에서부터 시작한다. 이 op를 연산이 필요한 다른 op들에게 입력값으로 제공한다.

 

 

 

위의 코드는 tensorflow문서에 있는 예제코드이다. 보면 Session을 닫아주어야된다. 저 과정을 쉽게 할수있는 코드가 있다.

 

 

이렇게 간단하게 바꿀수도 있다.

728x90

 

문제의 첫 화면은 또 저렇게 되어있다. 그럼 다운받아보자.

 

 

엑셀파일이 하나 보인다. 그럼 저걸 열어보자.

 

 

암호가 걸려있다. 제목 그대로 브포를 하면 될것같다. 그럼 구글에서 툴을 찾아보자.

 

 

나는 free word excel이라는 툴을 이용하였다. 그랬더니 저렇게 바로 나왔다. 저걸 엑셀에 쳐보자.

 

 

 

그랬더니 키가 나왔다. 그냥 툴을 소개하는 느낌인 문제였다.

728x90

 

문제를 보면 저런 사진이 나와있다. 그리고 저기 중간쯤에 뭔가 이상한게 있다. 다운받고 그림판으로 열어보자.

 

 

요렇게 여러가지 색들이 있다. 저 색들을 일일이 그림판의 스포이드를 이용하여 추출해보자.

 

 

 

그러면 113처럼 숫자가 뽑힌다. 일일이 다 해주면 113, 145, 171, 40, 151, 163, 40, 143, 157, 154, 60, 122, 103, 60, 114, 50, 51, 162이 나온다. 아스키값에 넣으려고 하는데 뭔가 이상하다. 하다보니 8진수로 생각하면 딱 맞았다. 그렇게 하면 Key is col0RC0L()r가 나온다.

 

 

728x90

 

오랜만에 설명이 있었다. 일단 파일을 다운받아보자.

 

 

 

5개의 사진으로 된 압축파일이였다. 그럼 저 사진들을 구글 이미지 검색을 해보자.

 

첫번째 사진은 저렇게 나왔다.

 

 

두번째 사진은 이렇게 나왔다.

 

세번째는 screenshot이라고 나온다.

 

 

네번째는 diagram이다.

 

 

마지막은 smalltalk로 나온다. 보통 단어를 찾으라고 했으므로 일단 하나씩 다 넣어보자.

 

 

SMALLTALK가 flag였다. 이건 간단히 구글 이미지 검색을 할수있는지 물어보는 문제같다.

 

 

 

 

728x90

 

또 이렇게 다운로드받게 파일을 주었다. 다운로드 해보자.

 

 

이렇게 확장자가 eps인 파일을 주었다. 이것은 처음보는 확장자 같다. 구글신에게 물어보니 EPS Viewer로 열어라고한다.

 

 

이렇게 QR코드가 나온다.

 

 

컴퓨터로 하기 귀찮아서 그냥 휴대폰에 QR Scanner라는 앱을 이용해서 저렇게 flag를 알아내었다. 아주 간단한 문제였다.

 

728x90

또 이렇게 다운을 받아라고 한다. 다운받아보자.

 

 

이런 파일을 준다. 저건 내가 옛날에 많이 했던 스타 유즈맵 확장자이다. 일단 그럼 오랜만에 스타 맵 에디터를 깔아봐야겠다.

 

 

 

트리거를 들어가보면 저렇게 나온다. 그럼 저 밑에 문자열들을 조합해보자.

 

 

이렇게 나온다. 오랜만에 스1을 보게한 문제였다.

 

728x90

 

역시 문제의 첫 화면은 이것이다. 다운받아보자.

 

 

 

apk파일이 나온다. 이걸 분석하는것은 간단하다. 일단 저것의 확장자를 zip로 바꾸어서 압축을 풀어준다.

 

 

그러면 저렇게 나오는데 저기서 dex를 jar로 바꾸어주면 된다. 나는 주로 dex2jar을 사용한다.

 

 

폴더에 저것을 붙여넣고 cmd를 켠다.

 

 

cmd에서 cd C:\dex2jar-2.0를 쳐서 이동해주고 d2j-dex2jar.bat classes.dex를 했는데 오류가 뜬다. 이것이 dex가 아니라는 것이다. 어떻게 된것인지 hxd로 헥스값을 보자.

 

 

classes.dex가 아니라 resources.arsc가 dex였다. 그럼 저것의 확장자를 dex로 바꾸고 다시 dex2jar폴더에 넣고 똑같이 해보자.

 

 

성공했다. 그럼 나온 저것을 Java Decompiler를 이용해서 열어보자.

 

 

ProbActivity.class를 보면 flag가 나와있다. 이건 한번 우회한 간단한 문제였다.

 

 

 

 

728x90

 

문제의 첫 화면은 이거다. 일단 다운받아보자.

 

압축을 푸니 avd라는 폴더명으로 폴더가 생기고 안에 저렇게 들어있다. 그럼 ini파일을 읽어보자.

 

 

일단 config.ini를 보면 저렇게 나와있다. 보면 cpu타입이 arm이고, 플랫폼은 안드로이드-10임을 알수있다. 그리고 abi타입이 armeabi인것도 알수있다.

 

 

그리고 emulator-user.ini를 보자. 이건 크기를 나타내는것같다.

 

 

마지막으로 hardware-qemu.ini를 보면 이렇게 나와있다. 나중에 필요하면 다시 보도록하고 길어서 그냥 넘기자.

 

 

 

나는 android studio를 이용해서 avd를 만들어줄것이다. 지금 커서를 올린 AVD Manager를 들어가보자.

 

 

Create Virtual Device를 눌려서 아무 기종이나 선택해주자. 나는 Nexus One을 선택해주었다.

 

 

그리고 아까 봤던것과 같이 API Level은 10으로 ABI는 armabi로 되어있는 Gingerbread를 선택해주었다. 여기서 많이 막혔었는데 저게 Download버튼이 없었고 다운로드되어있지 않은것같았다.

 

 

그래서 사진을 보면 커서가 올려져있는 SDK Manager가 있다. 저기를 들어갔다.

 

 

그리고 밑에 보이듯이 Gingerbread를 체크해주었다. 그러면 아주 잘 동작한다.

 

그렇게 만들고나서 저기 Show on Disk를 클릭하여 폴더를 들어간다.

 

그리고 이미지 파일 3개를 덮어쓰기해준다.

 

 

 

그다음 아까 만든것을 저기 커서가 올라가있는 Launch this AVD in the emulator를 클릭해서 연다.

 

 

그러면 이렇게 잠금화면이 뜨게된다. 저기 뒷쪽에 보이는 배경화면이 flag인 것 같다. 그럼 여기서 adb를 쓰도록 하자.

 

 

나는 이렇게 adb를 따로 설치하여 주었다. 이것을 사용해서 풀어보자.

 

 

cd C:\adb를 통해서 adb를 실행할수있게 해주고 adb pull /data/data/com.android.settings/files/wallpaper D:\aaa를 통해 배경화면을 추출해준다. 뒤에 D:\aaa는 자신이 임의로 만들면 된다.

 

 

그렇게 아까 파일을 들어가보면 저렇게 배경화면이 추출되어져 있다.

 

 

그림판으로 들어가보면 저렇게 키가 나오게 된다. 플레그에서도 알수있듯이 adb사용을 물어보는 문제였다. 나한테는 굉장히 어렵고 도전적인 문제라서 시간이 많이 걸리기는 했지만 익히고나서보니 쉬운 문제인것같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts