|
|
| 플랫폼 ID |
|---|
| Intel x86 = IX86 |
| MacOS Power = PMAC |
| MacOS X = XMAC |
| Num CDkeys |
|---|
| SSHR = 0 |
| JSTR = 1 |
| STAR = 1 |
| SEXP = 1 |
| DSHR = 0 |
| DRTL = 0 |
| D2DV = 1 |
| D2XP = 2 |
| W2BN = 1 |
| WAR3 = 1 |
| W3XP = 2 |
| 결과 ID (0x51) | 정보 |
|---|---|
| 0x00 | 버젼체크 성공. |
| 0x100 | 버젼체크 실패. (최신버전이 아닐경우) |
| 0x101 | 버젼체크 실패. (존재하지 않는 버젼.) |
| 0x102 | 버젼체크 실패. (게임버젼이 낮다. |
| 0x200 | 버젼체크 실패. (존재하지 않는 시디키.) |
| 0x201 | 버젼체크 실패.(이미 다른사용자가 접속하고있는 시디키.) |
| 0x202 | 버젼체크 실패. (사용이 금지된 시디키.) |
| 0x203 | 버젼체크 실패. (다른제품의 시디키) |
| Packet ID | Format | Information |
|---|---|---|
C->S 0x50 (SID_AUTH_INFO) | (DWORD) 0 (DWORD) 플랫폼 ID (ex: IX86) (DWORD) 클라이언트 ID (ex: RATS (스타)) (DWORD) 버젼바이트 (ex: 0xD3(스타)) (DWORD) 클라이언트 언어. (ex: 0) (DWORD) 0 (DWORD) 현재 시간대. (DWORD) 장소 ID (api : ) (GetSystemDefaultLCID) (DWORD) 언어 ID (api : ) (GetSystemDefaultLangID) (STRING) 국가명 (ex: KOR) (STRING) 국가명 (ex: Korea) | 클라이언트 정보가 들어있는 패킷. 배틀넷에 로그인하기 위한 첫번째 패킷이다. |
S->C 0x50 (SID_AUTH_INFO) | (DWORD) 로그인 스타일 (ex: Broken SHA-1) (DWORD) Server Token (DWORD) UDP Token (FILETIME) MPQ 파일 타임. (DWORD[2]) (STRING) MPQ 파일 이름 (ex: IX86-ver#.mpq) (STRING) 데이터 (체크섬을 계산하기 위해 필요한 데이터) | 배틀넷 로그인 스타일과 Server Token , UDP Token MPQ 파일 타임 MPQ 파일 이름, 데이터를 받아온다. |
C->S |
(배틀넷은 Broken SHA-1 해싱을 사용한다. 해쉬데이터에 순서는 [DWORD] Client Token [DWORD] 시디키의 프로덕트 (첫번째값) [DWORD] 시디키의 퍼블릭 (두번째값) [DWORD] NULL (0) [DWORD] 시디키의 프리베이트 (세번째값) 마지막 SHA-1 해싱을 해준다.)
| 클라이언트의 버젼과 시디키 에 관한 정보가 들어있는 패킷 이다. 배틀넷에 로그인하기위해 보내는 패킷중 3번째 패킷이다. |
S->C 0x51 (SID_AUTH_CHECK) | (DWORD) 결과(성공여부) (위에 표 참조) (STRING) 추가정보(시디키 사용자이름 등) | 버젼체크가 성공했는지 에 관한 정보가 들어있는 패킷이다. |
C->S (S->C) |
(그냥 배틀넷에서 받은 값을 똑같이 보내주면 된다) | 핑의 값이 들어있는 패킷. 핑값을 조작하면 핑스풋이 가능하다. (0x50패킷을 보낼때 같이보낸다) |
C-S 0x3A (SID_LOGONRESPONSE2) | (DWORD) Client Token (DWORD) Server Token (VOID(STRING)) Hash Data (해쉬 데이터 순서 [DWORD] Client Token [DWORD] Server Token [DWORD[5]] Password(소문자) (위와 마찬가지로 SHA-1 해싱을 한 패스워드 값)
[STRING] 배틀넷 아이디 | |
C-S 0x3D (SID_CREATEACCOUNT2) | [DWORD[5]] 패스워드(소문자) (SHA-1 해싱을 해준다) [STRING] 배틀넷 아이디 |
첫댓글 MPQ 파일 이름이라는 것은 패치할 때 받는 SEXP_IX86_1151_1152.MPQ같은 것을 뜻하나요?
아뇨 버젼체크를 할때 필요한 MPQ 파일이름 입니다. (스타 워2 등은 lockdown-IX86-#.mpq) 버젼체크를 할때에는 받아온 파일이름에 해당하는 첵섬으로 계산을하고 버젼체크 패킷 (0x51)을 보냅니다. (글에 MPQ를 첨부했습니다.)
으음 첨부했는데 파일이 없네 지금보니.. --..;
스타크래프트는 배틀넷 접속할 때 보내는 패킷에서 시디키 정보를 빼내는 식으로 추출해야 되지만, 디아블로2의 경우는 바로 알 수 있도록 되어 있던데 그것은 무엇 때문인가요? StarDat.mpq의 내부 파일에서 아직도 알려지지 않은 unknown파일이 4갠가 있는데 그것 중에서 시디키 관련 정보가 있는 것인가요? 만약 맞다면 알려지지 않은 것이 아니라 알리지 않은 것이 되겠네요.
0x51패킷안에 (DWORD) 시디키의 첫번째 값 (DWORD) 시디키의 두번째 값 (DWORD) [5] 시디키 해쉬 데이터. 말하시는건가요?
맞다면 아닙니다. 기존의 시디키를 해독하고 넘겨줍니다. 시디키 해쉬데이터는 또 계산을합니다.
다음.. 계속 표 넓이가 계속 바끼네요 --; 에디터 너무 안좋네.. 네이버가 훨씬 낫네요..
표 넓이는 HTML 편집기로 바꾸고 width=#px 이렇게 table에 넣으면 됩니다. 그냥 width=#% 하셔도 되지만 이렇게 하면 창 크기에 따라 달라지니...