[2100] OTP ile login altyapısı

  • HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

ReaLDoğrulanmış Profil

Cüce Lopper
Cuce Master
Katılım
8 Mart 2012
Mesajlar
22,408
Reaction score
371
Puanları
83
Yaş
36
OTP(One Time Password) sanırım google ın yazdığı bir algoritma olarak biliyorum yanlış bilmiyorsam. Mantığı bir key anahtarı ile her iki tarafın bildiği Server ve telefon uygulamanızda otp üretmek için kullandığınız program. Normal login olduğunuzda eğer accontun otp özelliği açıldı ise WIZ_LOGIN de 0x10(16) değeri döndürüyor. Bu değer dönünce login olmak yerine direk bir kutucuk çıkıyor ve oraya telefonunuzda uygulamadan(Google Authenticator) gösterdiği kodu giriyoruz. Bu kodu 2 şekilde üretiyor biri zaman ile diğeri de bölgesel olarak sizin belirlediğiniz keyi baz alarak. Sonra OTP kodunu yazdıktan sonra servera yeniden bir login packeti gidiyor bunun opcodeside 0xFA(250) bu packetin içerisinde sırayla 2 bytelık string uzunluğu şeklinde AccountID + Password + OTP olarak geliyor OTP string şeklinde geliyor. Buradan gelen veriyi alıyoruz ve sizin db account için ürettiğiniz key ile OTP algoritmasını kullanarak OTP üretiyoruz ve karşılaştırıyoruz eğer eşit ise giriş için packeti gönderiyoruz değil ise giriş başarısız packeti gönderiyoruz.





ylbpg.jpg






kS8up5H.png




Kod:
[HIDE]

enum LogonOpcodes

{

    LS_VERSION_REQ                = 0x01,

    LS_DOWNLOADINFO_REQ            = 0x02,

    LS_CRYPTION                    = 0xF2,

    LS_LOGIN_REQ                = 0xF3,

    LS_MGAME_LOGIN                = 0xF4,

    LS_SERVERLIST                = 0xF5,

    LS_NEWS                        = 0xF6,

    LS_UNKF7                    = 0xF7,

    LS_OTP_LOGIN                = 0xFA,

    LS_UNKFD                    = 0xFD,





    NUM_LS_OPCODES

};

[/HIDE]





Kod:
[HIDE]

PacketHandlers[LS_OTP_LOGIN] = &LoginSession::HandleOTPLogin;

[/HIDE]





Kod:
[HIDE]

void LoginSession::HandleOTPLogin(Packet & pkt)

{

    Packet result(pkt.GetOpcode());





    string AccountName, Password, OTPCode;

    // Database üzerinden otp kontrolü yapılacak ve giriş sağlanacak.

    pkt >> AccountName >> Password >> OTPCode;

   

    pkt.SByte();

    result << uint16(1) << OTPCode;

    Send(&result);

}

[/HIDE]





Kontrol mekanizması OTP kodu oluşturmak için gerekli algoritmaları daha oluşturmadım. Tamamladıktan sonra konuyu güncellerim ama ben tamamlayana kadar kendi sistemlerinizi de oluşturabilirsiniz. Bu arada opt logindeki return opcodesini denemedim 1 başarılı demek diğerlerini de deneye deneye 1 2 3 4 5 diye bakarsınız. Kalın sağlıcakla. :heart:
 
Cevap: [2100] OTP ile login altyapısı



eyw kardeşş de bakalım çalışacakmı
 
Cevap: [2100] OTP ile login altyapısı



eyw kardşeimm​



 
Cevap: [2100] OTP ile login altyapısı



tyyyy
 
Cevap: [2100] OTP ile login altyapısı



gracias
 
Cevap: [2100] OTP ile login altyapısı



Çok güzel
 
Cevap: [2100] OTP ile login altyapısı



teşekkürler
 
Cevap: [2100] OTP ile login altyapısı



Teşekkür ederim
 
Cevap: [2100] OTP ile login altyapısı



teekkurler
 
Cevap: [2100] OTP ile login altyapısı



gracias
 
Cevap: [2100] OTP ile login altyapısı



thanks
 
Cevap: [2100] OTP ile login altyapısı



teşekkürler
 
Cevap: [2100] OTP ile login altyapısı



bak bu güzelmiş
 
Cevap: [2100] OTP ile login altyapısı



teşekkürler
 
Cevap: [2100] OTP ile login altyapısı



teşekkürler
 
Cevap: [2100] OTP ile login altyapısı



Teşekkürler
 
Cevap: [2100] OTP ile login altyapısı



Teşekkürlerr
 
Geri
Üst Alt
Reklam
Reklam