디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[스압]포켓몬스터 선물서버 개발기 - 1

manatails갤로그로 이동합니다. 2016.02.06 19:59:03
조회 23111 추천 34 댓글 12
														

1편 https://gall.dcinside.com/board/view/?id=pokemon&no=3094527

2편 https://gall.dcinside.com/board/view/?id=pokemon&no=3094529

3편 https://gall.dcinside.com/board/view/?id=pokemon&no=3094530

4편 https://gall.dcinside.com/board/view/?id=pokemon&no=3094532



이번에는 포켓몬스터 XY/오루알사의 선물서버를 한번 재현해보고 싶었습니다.


의외로 해외 포럼 어디에서도 선물에 관련된 연구나 개발은 전혀 정보가 없던것도 신기했습니다.
GBATemp나 프로젝트 포켓몬에서도 그냥 암호화된 연결에서 더이상 정보를 캐내지 못하더군요.

그래서 제가 직접 해보기로 했습니다.


우선 리눅스 노트북을 이용해서 무선 AP를 만든 후 패킷캡쳐부터 시작했습니다.

viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffcc6de1cf96025dea7b7c4c92dc6dde1b68159fddbf3c11c727218



가장 먼저 들어온건 3ds1-fushigi.pokemon-gl.com 서버였습니다.
ORAS는 3ds2, X/Y는 3ds1 서버를 이용합니다. 둘의 차이는 딱히 없고 그냥 이름만 다른듯 보입니다.



하지만 패킷 캡쳐 화면에서 보이다시피 TLS로 보호되어 있어 내용은 알 수 없습니다.

닌텐도 클래스 2 인증서로 서버 인증을 하고 있는것을 확인했습니다.

그래서 MITM 공격을 시도해보기로 했습니다.

우선 인증서가 닌텐도 자체서명 체인을 사용한 것으로 보아 아마도 게임파일 안에 루트인증서를 내장한 것으로 간주하고 열심히 게임파일 분해에 들어갔습니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a39928c7b5c628e7bc859b9c41



파일을 죄다 압축해제하고 복호화시킨 다음 grep 를 사용하여 인증서나 여타 접속에 관계된 키워드를 검색해 보았으나

아무것도 검색되지 않았습니다. 이것때문에 거의 하루 삽질했네요

그리고 3DS의 펌웨어에 대해 알아보니 시스템 구성 요소들이 모듈화되어있다는 것을 알아냈습니다.

암호화 SSL 모듈을 공략해보기로 했습니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3cf24c6b574d85e8e871008f2


0004013000002F02 가 SSL 모듈이므로 업데이트 서버에서 해당 cia 파일을 추출했습니다.

하지만 업데이트 파일 자체는 3DS 공통키로 암호화가 되어 있으므로 3DS에서 직접 복호화를 해줘야 합니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3cc29c7e75c82ac92db5212c9


Decrypt9를 이용해서 3DS상에서 복호화를 하였습니다.

이제 ctrtool을 사용하여 cia 껍데기를 벗겨내고 내부의 데이터를 손대봅니다.

시스템 모듈 CIA 파일은 다시 NCCH라는 이미지 형식을 가지고 있고
NCCH는 다시 CXI와 CFA형식으로 나뉘는데 시스템 모듈은 실행파일을 포함하는 CXI입니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3cc7bc2ba59f48728fb359dc0



CXI 파일을 추출했습니다.

이제 CXI파일을 다시 분해해서 실행파일 영역과 헤더영역, 기타영역을 나눠줘야 합니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3cc7b93bafe8f1ffb395aeabb



실행파일 영역의 롬파일을 추출하고

그걸 다시 헤더영역과 실제 파일로 나눴습니다.

그리고 대망의 실행파일을 여니


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3cb7bc0e045e19581ff519159



또 암호화가 되어있는 짜증나는 상황이 발생했습니다.

다행히 변조된 LZ77을 사용했다는 것을 찾을 수 있었고 복호화/암호화가 가능했습니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a3992ac3e3e1b9d893991f78fe



복호화를 하니 드디어 3ds-fushigi 서버를 인증하던 루트 인증서 Nintendo Class 2 CA가 나왔습니다.

대충 생긴거보고 DER 형식이라고 여기고 해당 바이트들을 추출해 보았습니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a39e2ec7e687a9c4ea45069bc4



다행히 인증서가 딱 튀어나왔습니다.

이제 저것과 똑같은 인증서를 만든 다음 저의 개인키로 직접 인증하고 다시 모듈로 집어 넣을겁니다.

그러면 게임에서 마치 진짜 3ds-fushigi 서버를 접속하는듯 한 행세를 할 수 있습니다.


viewimage.php?id=3db2db23e8dd36&no=29bcc427b38677a16fb3dab004c86b6fcffb4afa74a8d106219a53075e30e88a1ffc878d4c956e2bd9a4b9a39a79c8e7f148256310de51bd




리눅스에서 OpenSSL을 이용하여 2048 비트의 키를 생성합니다.
그리고 추출한 인증서와 똑같은 정보로 인증서를 생성하고 루트 인증서로 자기 서명을 합니다.
서명된 인증서는 다시 DER형식으로 변환합니다.


--------2편에서 계속-------


추천 비추천

34

고정닉 1

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 모태 솔로도 구제해 줄 것 같은 연애 고수 스타는? 운영자 25/07/21 - -
뉴스 천만 관중 시대, 게임사 마케팅 핫 키워드 ‘KBO’ 게임메카갤로그로 이동합니다. 25.07.25 16 0
공지 DLC 남청의원반 백과사전 1판 [69] 무우우마갤로그로 이동합니다. 23.12.18 72824 148
공지 DLC 벽록의가면 백과사전 2판 [19] 무우우마갤로그로 이동합니다. 23.10.02 34127 11
공지 스칼렛/바이올렛 실전 배틀 백과사전! 1판 [40] 무우우마갤로그로 이동합니다. 22.12.02 67661 35
공지 테라 레이드배틀 완전 공략! 1판 [45] 무우우마갤로그로 이동합니다. 22.12.02 79036 43
공지 스칼렛 & 바이올렛 大 백과사전 2판 [59] 무우우마갤로그로 이동합니다. 22.12.02 77381 62
공지 스칼렛 & 바이올렛 大 백과사전 1판 [102] 무우우마갤로그로 이동합니다. 22.11.21 168500 114
공지 스칼렛바이올렛 자주묻는 질문 QnA. 1판 [92] 무우우마갤로그로 이동합니다. 22.11.16 62216 63
공지 포켓몬스터 갤러리 통합 공지 - 대 백과사전 모음 [122] 무우우마갤로그로 이동합니다. 22.11.02 54272 40
공지 포켓몬스터 갤러리 이용 안내 [8526/1] 운영자 13.10.01 250623 576
11965242 오 님들 ㅎㅇ요? 오로갤로그로 이동합니다. 04:17 9 0
11965238 가디안 X꼬 [1] ㅇㅇ(211.36) 04:15 20 0
11965231 우가단 일.도.양.단. 민티갤로그로 이동합니다. 04:06 13 0
11965214 레드 잡았다 [1] 포갤러(39.120) 03:40 27 0
11965212 지금 사흉수 테라레이드중임? [1] 포갤러(182.216) 03:39 25 0
11965211 스바 dlc 합본 궁금한거있음 포갤러(221.152) 03:36 19 0
11965208 Za에도 인라인 시스템 나오려나 [1] ㅇㅈㄹ갤로그로 이동합니다. 03:31 36 0
11965184 졸려 [1] 턱도으리갤로그로 이동합니다. 02:58 20 0
11965182 포애니갤 좀 레전드군요? [3] RaidL갤로그로 이동합니다. 02:50 89 0
11965181 만약 10세대 랭겜 삭제되고 포챔스로 넘어간다고 가정했을 때 [1] 포갤러(125.185) 02:50 49 1
11965180 스위치2 이거 개쩌는걸 [3] 쉐이미갤로그로 이동합니다. 02:49 55 0
11965179 8세대 입문 하골 끝냈어요 [2] 포갤러(211.208) 02:48 42 0
11965175 뭐야 얘 [3] 방순마리갤로그로 이동합니다. 02:39 63 1
11965174 토요일에도 출근해아한다니 이게무슨소리야 V제너레이트갤로그로 이동합니다. 02:39 30 0
11965168 <<씨발>> 인간 제발 나무에 오줌 싸지 마라 [1] 브이젤갤로그로 이동합니다. 02:30 52 0
11965166 어떻게 싱글 더블 1위가 코라 미라지 [3] Ai갤로그로 이동합니다. 02:22 68 0
11965160 아 ㅈㄴ 심심한데 [1] Ai갤로그로 이동합니다. 02:20 19 0
11965152 포켓몬 겜 입문하는데 스바로 입문해도 됨? [2] 포갤러(58.76) 02:05 41 2
11965149 원시회귀 <- 발음 너무 어렵네요 [6] 강햬원갤로그로 이동합니다. 02:00 78 1
11965147 초밥사먹는거 비싸서 재료샀어 [1] 모바기갤로그로 이동합니다. 01:55 38 0
11965144 망나뇽 스바에서 범부됐다며? [1] ㅇㅇ(121.165) 01:52 37 0
11965143 카라스바 시유카지 애비설이 확률 높은게 [5] ㅇㅇ갤로그로 이동합니다. 01:50 73 0
11965142 친구 여친 바람 피워서 헤어졌대요 [3] 아니오갤로그로 이동합니다. 01:48 86 0
11965137 흑마템ㅊㅊ좀 [3] 민티갤로그로 이동합니다. 01:40 53 0
11965136 마리망좆같은점 [10] 적폐츄갤로그로 이동합니다. 01:31 73 0
11965135 포갤멸망 [3] 펠리슈.갤로그로 이동합니다. 01:28 53 0
11965132 중고리코더 팔아줄 피추분 있나요 [8] 다꼬리갤로그로 이동합니다. 01:24 64 0
11965130 총지엔 잡았는데 테라스탈굴에서 안나가지고 멈춰있음 [1] 설탕물갤로그로 이동합니다. 01:21 37 0
11965115 여기 오면 굽이치는물결 얻을수 있다는데 적펼귀갤로그로 이동합니다. 01:04 63 0
11965112 님들 블화 일본어판으로 즐기고싶은데 ds따로사야해요? [2] .김안욱.갤로그로 이동합니다. 00:58 35 0
11965111 파이어레드 포캣몬 3마리중 뭐고르냐 에케갤로그로 이동합니다. 00:58 19 1
11965110 포켓몬 진짜 ㅈ도 모르고 예전에 디아루가 펄기아만 해봤는데 [4] 포갤러(221.150) 00:57 42 0
11965109 레이팅이야기 하실분 구함여 [7] 와들부들코알라갤로그로 이동합니다. 00:52 146 6
11965106 포켓몬 실전 배틀 역사상 제일 사기 포켓몬이 뭐임? [8] ㅇㅇ(211.234) 00:51 129 1
11965102 하리뭉 키울만하냐 ㅇㅇ갤로그로 이동합니다. 00:46 16 0
11965101 스위치2 개선판 언제나오려나 ㅇㅇ갤로그로 이동합니다. 00:45 34 0
11965100 이벤트 레이드 돌때 레이드 파워 음식 해먹음? 포갤러(211.235) 00:44 14 0
11965099 포알못이라 그런데 6세대 스타팅들은 왜 메가진화를 못받았음? [6] ㅇㅇ(211.234) 00:43 96 1
11965098 초전설의 몸으로 당당하게 싱글 1위 차지한 코라가 ㅇㅇ(211.235) 00:42 42 3
11965097 메가아쿠스타가 너무 기대돼 ㅇㅇ(118.235) 00:40 24 0
뉴스 케이지(Kei.G), 버벌진트 대표곡 '좋아보여' 리메이크…30일 하이칼라 프로젝트 음원 공개 디시트렌드 07.24
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2