bool CGuildMarkUploader::__LoginState_RecvPhase() { TPacketGCPhase kPacketPhase; if (!Recv(sizeof(kPacketPhase), &kPacketPhase)) return false; if (kPacketPhase.phase==PHASE_LOGIN) { #ifndef _IMPROVED_PACKET_ENCRYPTION_ const char* key = LocaleService_GetSecurityKey(); SetSecurityMode(true, key); #endif if (SEND_TYPE_MARK == m_dwSendType) { if (!__SendMarkPacket()) return false; } else if (SEND_TYPE_SYMBOL == m_dwSendType) { if (!__SendSymbolPacket()) return false; } } return true; }
// Select Character --------------------------------------------------------------------------- void CPythonNetworkStream::SetSelectPhase() { if ("Select" != m_strPhase) m_phaseLeaveFunc.Run(); Tracen(""); Tracen("## Network - Select Phase ##"); Tracen(""); m_strPhase = "Select"; #ifndef _IMPROVED_PACKET_ENCRYPTION_ SetSecurityMode(true, (const char *) g_adwEncryptKey, (const char *) g_adwDecryptKey); #endif m_dwChangingPhaseTime = ELTimer_GetMSec(); m_phaseProcessFunc.Set(this, &CPythonNetworkStream::SelectPhase); m_phaseLeaveFunc.Set(this, &CPythonNetworkStream::__LeaveSelectPhase); if (__DirectEnterMode_IsSet()) { PyCallClassMemberFunc(m_poHandler, "SetLoadingPhase", Py_BuildValue("()")); } else { if (IsSelectedEmpire()) PyCallClassMemberFunc(m_poHandler, "SetSelectCharacterPhase", Py_BuildValue("()")); else PyCallClassMemberFunc(m_poHandler, "SetSelectEmpirePhase", Py_BuildValue("()")); } }
bool CAccountConnector::__AuthState_RecvPhase() { TPacketGCPhase kPacketPhase; if (!Recv(sizeof(kPacketPhase), &kPacketPhase)) return false; if (kPacketPhase.phase == PHASE_HANDSHAKE) { __HandshakeState_Set(); } else if (kPacketPhase.phase == PHASE_AUTH) { #ifndef _IMPROVED_PACKET_ENCRYPTION_ const char* key = LocaleService_GetSecurityKey(); SetSecurityMode(true, key); #endif #ifdef USE_OPENID if (!openid_test) { //2012.07.19 OpenID : 김용욱 //Ongoing : 오픈 아이디 경우-> TPacketCGLogin5 //클라가 가지고 있는 인증키만을 서버에 보내도록. //const char* tempAuthKey = "d4025bc1f752b64fe5d51ae575ec4730"; //하드코딩 길이 32 TPacketCGLogin5 LoginPacket; LoginPacket.header = HEADER_CG_LOGIN5_OPENID; strncpy(LoginPacket.authKey, LocaleService_GetOpenIDAuthKey(), OPENID_AUTHKEY_LEN); LoginPacket.authKey[OPENID_AUTHKEY_LEN] = '\0'; for (DWORD i = 0; i < 4; ++i) LoginPacket.adwClientKey[i] = g_adwEncryptKey[i]; if (!Send(sizeof(LoginPacket), &LoginPacket)) { Tracen(" CAccountConnector::__AuthState_RecvPhase - SendLogin5 Error"); return false; } if (!SendSequence()) { return false; } } else { TPacketCGLogin3 LoginPacket; LoginPacket.header = HEADER_CG_LOGIN3; strncpy(LoginPacket.name, m_strID.c_str(), ID_MAX_NUM); strncpy(LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM); LoginPacket.name[ID_MAX_NUM] = '\0'; LoginPacket.pwd[PASS_MAX_NUM] = '\0'; // 비밀번호를 메모리에 계속 갖고 있는 문제가 있어서, 사용 즉시 날리는 것으로 변경 ClearLoginInfo(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.ClearLoginInfo(); m_strPassword = ""; for (DWORD i = 0; i < 4; ++i) LoginPacket.adwClientKey[i] = g_adwEncryptKey[i]; if (!Send(sizeof(LoginPacket), &LoginPacket)) { Tracen(" CAccountConnector::__AuthState_RecvPhase - SendLogin3 Error"); return false; } if (!SendSequence()) { return false; } } #else /* USE_OPENID */ #ifdef USE_AHNLAB_HACKSHIELD HackShield_SetUserInfo(m_strID.c_str()); #endif #ifdef XTRAP_CLIENT_ENABLE XTrap_SetUserInfo(m_strID.c_str(), NULL, NULL, NULL, NULL); #endif TPacketCGLogin3 LoginPacket; LoginPacket.header = HEADER_CG_LOGIN3; strncpy(LoginPacket.name, m_strID.c_str(), ID_MAX_NUM); strncpy(LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM); LoginPacket.name[ID_MAX_NUM] = '\0'; LoginPacket.pwd[PASS_MAX_NUM] = '\0'; // 비밀번호를 메모리에 계속 갖고 있는 문제가 있어서, 사용 즉시 날리는 것으로 변경 ClearLoginInfo(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.ClearLoginInfo(); m_strPassword = ""; for (DWORD i = 0; i < 4; ++i) LoginPacket.adwClientKey[i] = g_adwEncryptKey[i]; if (!Send(sizeof(LoginPacket), &LoginPacket)) { Tracen(" CAccountConnector::__AuthState_RecvPhase - SendLogin3 Error"); return false; } if (!SendSequence()) { return false; } #endif /* USE_OPENID */ __AuthState_Set(); } return true; }