R 1
Roksam
farkmt2official 1
farkmt2official
TuZaKK 1
TuZaKK
sermin 1
sermin
berkmenoo 1
berkmenoo
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
[DEV]AB 1
[DEV]AB
kaptanmikro1 1
kaptanmikro1
Hikaye Ekle

[C ++] Yeni Şifre Güvenlik

  • Konuyu başlatan Konuyu başlatan Kirici44
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 19
  • Görüntüleme Görüntüleme 3K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

1. db.cpp aç:
KOD:
Kod:
#include "auth_brazil.h"
ekle:
KOD:
Kod:
#include "cryptopp/sha.h"
#include "cryptopp/filters.h"
#include "cryptopp/hex.h"
#include "boost/algorithm/string.hpp"
Kod:
[COLOR=#333333][FONT=Tahoma]
void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)[/FONT][/COLOR]
[/CODE]ve daha sonra bu fonksiyon bloğu bakarak:

Kod:
[COLOR=#333333][FONT=Tahoma][B]KOD: [/B]
case QID_AUTH_LOGIN:
[...]
                  sys_log(0, "QID_AUTH_LOGIN: SUCCESS %s", pinfo->login);
               }
            }
         }
         break;[/FONT][/COLOR]
ve tüm değiştirin:
Kod:
[B]KOD: [/B]
      case QID_AUTH_LOGIN:
         {
            TPacketCGLogin3 * pinfo = (TPacketCGLogin3 *) qi->pvData;
            LPDESC d = DESC_MANAGER::instance().FindByLoginKey(qi->dwIdent);

            if (!d) {
               M2_DELETE(pinfo);
               break;
            }
            d->SetLogin(pinfo->login);

            sys_log(0, "QID_AUTH_LOGIN: START %u %p", qi->dwIdent, get_pointer(d));

Kod:
if (pMsg->Get()->uiNumRows == 0) {
               sys_log(0, "   NOID");
               LoginFailure(d, "NOID");
               M2_DELETE(pinfo);
            }
            else if (!pinfo->passwd){
               LoginFailure(d, "WRONGPWD");
               sys_log(0, "   WRONGPWD");
               M2_DELETE(pinfo);
            }
            else
            {
               MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
               int col = 0;

               DWORD dwID = 0;
               char szEncrytPassword[64];
               char szPassword[64 + 1];
               char szMatrixCode[192 + 1];
               char szSocialID[SOCIAL_ID_MAX_LEN + 1];
               char szStatus[ACCOUNT_STATUS_MAX_LEN + 1];
               std::string szEncryptedPassword;
               char cSHAPassword[64+1];

               if (!row[col])
               {
                  sys_err("error column %d", col);
                  M2_DELETE(pinfo);
                     break;
               }

               strlcpy(szEncrytPassword, row[col++], sizeof(szEncrytPassword));

               CryptoPP::SHA256 hash;
               CryptoPP::StringSource(pinfo->passwd, true, new CryptoPP::HashFilter(hash, new CryptoPP::HexEncoder(new CryptoPP::StringSink(szEncryptedPassword))));
               szEncryptedPassword.resize(64);
               sprintf(cSHAPassword, "%s", szEncryptedPassword.c_str());

               if (!row[col])
               {
                     sys_err("error column %d", col);
                  M2_DELETE(pinfo);
                     break;
                  }

               strlcpy(szPassword, row[col++], sizeof(szPassword));

               if (!row[col])
               {
                  *szMatrixCode = '\0';
                  col++;
               }
               else
               {
                  strlcpy(szMatrixCode, row[col++], sizeof(szMatrixCode));
               }

               if (!row[col])
                  {
                  sys_err("error column %d", col);
                  M2_DELETE(pinfo);
                  break;
                  }

               strlcpy(szSocialID, row[col++], sizeof(szSocialID));

               if (!row[col])
                  {
                     sys_err("error column %d", col);
                  M2_DELETE(pinfo);
                     break;
                  }

               str_to_number(dwID, row[col++]);

               if (!row[col])
               {
                     sys_err("error column %d", col);
                  M2_DELETE(pinfo);
                  break;
                  }

               strlcpy(szStatus, row[col++], sizeof(szStatus));

               BYTE bNotAvail = 0;
               str_to_number(bNotAvail, row[col++]);

               int aiPremiumTimes[PREMIUM_MAX_NUM];
               memset(&aiPremiumTimes, 0, sizeof(aiPremiumTimes));

               char szCreateDate[256] = "00000000";

               {
                  str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]);
                  str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]);

                  {
                     long retValue = 0;
                     str_to_number(retValue, row[col]);

                     time_t create_time = retValue;
                     struct tm * tm1;
                     tm1 = localtime(&create_time);
                     strftime(szCreateDate, 255, "%Y%m%d", tm1);

                     sys_log(0, "Create_Time %d %s", retValue, szCreateDate);
                     sys_log(0, "Block Time %d ", strncmp(szCreateDate, g_stBlockDate.c_str(), 8));
                  }
               }

               int nPasswordDiff = strcmp(szEncrytPassword, szPassword);

               int nPasswordDiff2;
               boost::to_upper(szPassword);
               nPasswordDiff2 = strcmp(cSHAPassword, szPassword);

               if (nPasswordDiff && nPasswordDiff2)
               {
                  LoginFailure(d, "WRONGPWD");
                  sys_log(0, "   WRONGPWD");
                  M2_DELETE(pinfo);
               }
               else if (bNotAvail)
               {
                  LoginFailure(d, "NOTAVAIL");
                  sys_log(0, "   NOTAVAIL");
                  M2_DELETE(pinfo);
               }
               else if (DESC_MANAGER::instance().FindByLoginName(pinfo->login))
               {
                  LoginFailure(d, "ALREADY");
                  sys_log(0, "   ALREADY");
                  M2_DELETE(pinfo);
               }
               else if (strcmp(szStatus, "OK"))
               {
                  LoginFailure(d, szStatus);
                  sys_log(0, "   STATUS: %s", szStatus);
                  M2_DELETE(pinfo);
               }
               else
               {
                  if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0)
                  {
                     LoginFailure(d, "BLKLOGIN");
                     sys_log(0, "   BLKLOGIN");
                     M2_DELETE(pinfo);
                     break;
                  }

                  char szQuery[1024];
                  snprintf(szQuery, sizeof(szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID);
                  std::auto_ptr<SQLMsg> msg( DBManager::instance().DirectQuery(szQuery) );

                  TAccountTable & r = d->GetAccountTable();

                  r.id = dwID;
                  trim_and_lower(pinfo->login, r.login, sizeof(r.login));
                  strlcpy(r.passwd, pinfo->passwd, sizeof(r.passwd));
                  strlcpy(r.social_id, szSocialID, sizeof(r.social_id));
                  DESC_MANAGER::instance().ConnectAccount(r.login, d);

                  if (!g_bBilling)
                  {
                     LoginPrepare(BILLING_FREE, 0, 0, d, pinfo->adwClientKey, aiPremiumTimes);
                     //By SeMinZ
                     M2_DELETE(pinfo);
                     break;
                  }

                  sys_log(0, "QID_AUTH_LOGIN: SUCCESS %s", pinfo->login);
               }
            }
         }
         break;

Bilgi:
- algoritmasını kullanarak yeni şifre: SHA256
- Uzunluk: 64
- PHP Kodu: $ hash = hash ( 'SHA256', 'text');

3vyOB0.png



MD5 Artık Çok Kolay Kırılabilir Oldu. Başka Şifreleyicilere Yönelmek Gerekiyor, PHP İle MD5 Converter Yazılabilirse MD5 Olarak Alınan Kodu Navicat Sha Olarak Gönderebilirsek Efsane Olur, Konu İçin Teşekkürler.
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst