كونكر عرب

كونكر عرب (https://conquer-arab.com/index.php)
-   تطوير سيرفرات كونكر (https://conquer-arab.com/forumdisplay.php?f=11)
-   -   بخصوص السورس بتاع احمد فتحي بكتات الدخول (https://conquer-arab.com/showthread.php?t=3018)

midoazoz 2019-11-19 04:37 PM

بخصوص السورس بتاع احمد فتحي بكتات الدخول
 
يا جدعان انا مليش في الثري دي ولا البروتتو ولا الجو ده
بس انا حلتلكم الايرورات الي بتجيلكم

وياريت حد يجرب ويقلي هيشتغل ولا لا

ولو لا هعدل الموضوع وانزلكم حل تاني بس نجرب ده الاول

اولا

هتفتح

كود PHP:

Auth.cs 

وتمسح الي فيه وتضيف دول

كود PHP:

using SomailProject.Network.Cryptography;
using System;
using System.IO;
using System.Text;

namespace 
SomailProject.Network.AuthPackets
{
    public 
unsafe class Authentication : Interfaces.IPacket
    
{
        public 
string Username;
        public 
string Password;
        public 
string Server;
        public 
string MacAddress;

        public 
Authentication()
        {
        }
        public 
void Deserialize(byte[] buffer)
        {
            if (
buffer.Length == 312)
            {
                
ushort length = BitConverter.ToUInt16(buffer, 0);

                if (
length == 312)
                {

                    
ushort type = BitConverter.ToUInt16(buffer, 2);
                    
byte[] temp = new byte[16];
                    if (
type == 1636)
                    {
                        
MemoryStream MS = new MemoryStream(buffer);
                        
BinaryReader BR = new BinaryReader(MS);
                        
BR.ReadUInt16();
                        
BR.ReadUInt16();
                        
Username = Encoding.Default.GetString(BR.ReadBytes(32)).Replace("\0", "");
                        
BR.ReadBytes(36);
                        var 
PasswordArray = BR.ReadBytes(32);
                        
LoaderEncryption.Decrypt(PasswordArray, 32);
                        
Password = Username;
                        
BR.ReadBytes(32);
                        
Server = Encoding.Default.GetString(BR.ReadBytes(16)).Replace("\0", ""); ;
                       
MacAddress = Encoding.Default.GetString(BR.ReadBytes(12)).Replace("\0", "");
                        
BR.Close();
                        
MS.Close();
                    }
                }
            }
            
//   Password ==  Username
            //    
        
}
        public 
byte[] ToArray()
        {
            throw new 
NotImplementedException();
        }
        public 
void Send(Client.GameState client)
        {
            throw new 
NotImplementedException();
        }
    }

}


namespace 
SomailProject.Network.Cryptography
{
    public class 
LoaderEncryption
    
{
        private static 
byte[] Key = 
        { 
            
180,
            
152, 
            
187, 
            
196,
            
231, 
            
208, 
            
204, 
            
120, 
            
177,
            
164,
            
184,
            
77, 
            
9,
            
125, 
            
114,
            
49,
            
9, 
            
191,
            
20, 
            
122,
            
9, 
            
39,
            
123,
            
17, 
            
115,
            
222, 
            
188, 
            
120, 
            
109, 
            
9, 
            
65,
            
206,
            
85, 
            
10, 
            
29, 
            
215, 
            
143, 
            
108, 
            
231,
            
114 
        
};
        public static 
void Encrypt(byte[] arr)
        {
            
int length = Key.Length;
            for (
int i = 0; i < arr.Length; i++)
            {
                
arr[i] ^= Key[i % length];
                
arr[i] ^= Key[(i + 1) % length];

            }
        }
        public static 
void Decrypt(byte[] arr, int size)
        {
            
int length = Key.Length;
            for (
int i = 0; i < size; i++)
            {
                
arr[i] ^= Key[(i + 1) % length];
                
arr[i] ^= Key[i % length];

            }
        }
    }
} 

بعدين

كود PHP:

LoaderEncryption.cs 

امسح الي فيه وضيف دول

كود PHP:

//  Created by MeGo
//  Copyright © 2018 - 2019 TQ Digital
//  XMeGo - Project
//  XMeGo - 01285338963 // 01068255178
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
XMeGoAntiHackLoR.Packets.Cryptography// متغيرش اسم البروجيكت
{
    public class 
LoaderEncryption
    
{

        private static 
byte[] Key =
{
    
4 ,
    
5 ,
    
1 ,
    
3 ,
    
66 ,
    
7 ,
    
77 ,
    
44 ,
    
100 ,
    
228 ,
    
21 ,
    
254 ,
    
234 ,
    
212 ,
    
114 ,
    
141 ,
    
214 ,
    
12 ,
    
55 ,
    
99 ,
    
100 ,
    
7 ,
    
98 ,
    
187 ,
    
190 ,
    
77 ,
    
65 ,
    
55 ,
    
44 ,
    
43 ,
    
21 ,
    
99
}; // idb
        
private static byte[] Key2 =
{
  
6,
  
4,
  
1,
  
7,
  
2,
  
33,
  
77,
  
66,
  
65,
  
44,
  
21,
  
254,
  
43,
  
212,
  
90,
  
44,
  
214,
  
12,
  
56,
  
99,
  
67,
  
7,
  
87,
  
99,
  
0,
  
77,
  
43,
  
11,
  
44,
  
22,
  
21,
  
99
}; // idb

        
public static void Encrypt(byte[] arr)
        {
            
int length = Key.Length;
            for (
int i = 0; i < arr.Length; i++)
            {
                
arr[i] ^= Key[i % length];
                
arr[i] ^= Key[(i + 1) % length];
            }
        }
        public static 
void Decrypt(byte[] arr)
        {
            var 
len = Encoding.Default.GetString(arr).Replace("\0", "").Length;
            for (
int i = 0; i < len; ++i)
            {
                
arr[i] ^= Key2[88 * i & 0x1F];
                
arr[i] ^= Key[32 * i & 0x1C];
            }
        }
    }
}
namespace 
XMeGoAntiHackLoRx2.Network.Cryptography//متغيرش اسم البروجيكت
{
    public class 
LoaderEncryption
    
{
        private static 
byte[] Key = { 12, 12, 215, 10, 20, 11, 60, 193, 11, 96, 53, 157, 71, 37, 150, 225, 86, 224, 178, 184, 230, 147, 79, 194, 160, 0, 99, 239, 218, 134, 179, 13, 247, 155, 237, 245, 165, 245, 128, 144 };
        public static 
void Encrypt(byte[] arr)
        {
            
int length = Key.Length;
            for (
int i = 0; i < arr.Length; i++)
            {
                
arr[i] ^= Key[i % length];
                
arr[i] ^= Key[(i + 1) % length];

            }
        }
        public static 
void Decrypt(byte[] arr, int size)
        {
            
int length = Key.Length;
            for (
int i = 0; i < size; i++)
            {
                
arr[i] ^= Key[(i + 1) % length];
                
arr[i] ^= Key[i % length];

            }
        }
    }
} 

ملف Forward زي مهو زي ما احمد منزله

بالنسبه ل program

هتبحث عن ده قبل متحطوا حاجه

كود PHP:

static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3) 

اقفله وبدل بده

كود PHP:

public static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3)
        {
            var 
player = arg3.Connector as Client.AuthClient;
            
AuthClient authClient = arg3.Connector as AuthClient;
            
player.Cryptographer.Decrypt(buffer, length);
            
player.Queue.Enqueue(buffer, length);
            while (
player.Queue.CanDequeue())
            {
                
byte[] packet = player.Queue.Dequeue();
                
ushort len = BitConverter.ToUInt16(packet, 0);
                if (
len == 312)
                {
                    
player.Info = new Authentication();
                    
player.Info.Deserialize(packet);
                    
player.Account = new AccountTable(player.Info.Username);
                    if (!
LoginBruteForce.AcceptJoin(arg3.IP))
                    {
                        
Console.WriteLine(string.Concat(new string[] { "Client > ", player.Info.Username, "was blocked address", arg3.IP, "!" }));
                        
arg3.Disconnect();
                        break;
                    }
                    
Forward Fw = new Forward();
                    
System.Console.WriteLine("UserName: {0} Password: {1} ServerName: {2} Online", player.Info.Username, player.Info.Password, player.Info.Server);
                    if (
player.Account.Username == player.Info.Username && player.Account.exists)
                    {
                        if (
player.Account.Password == player.Info.Password && player.Account.exists)
                        {
                            
Fw.Identifier = player.Account.GenerateKey();
                            
Kernel.AwaitingPool[Fw.Identifier] = player.Account;
                            
Fw.IP = GameIP;
                            
Fw.Port = GamePort;
                        }
                        else
                        {
                            
LoginBruteForce.ClientRegistred(arg3.IP);
                            
Fw.Type = Forward.ForwardType.InvalidInfo;
                        }
                    }
                    else
                    {
                        
Fw.Type = Forward.ForwardType.WrongAccount;
                    }
                    
player.Send(Fw);
                }
            }
        } 

وتبحث عن

كود PHP:

static void GameServer_OnClientReceive(byte[] buffer, int length, ClientWrapper obj) 


كود PHP:

private static void GameServer_OnClientReceive(byte[] buffer, int length, ClientWrapper obj)
        {
            if (
obj.Connector == null)
            {
                
obj.Disconnect();
            }
            else
            {
                
GameState connector = obj.Connector as GameState;
                if (
connector.Exchange)
                {
                    
connector.Exchange = false;
                    
connector.Action = (byte)1;
                    
SomailProject.Network.Cryptography.GameCryptography gameCryptography = new SomailProject.Network.Cryptography.GameCryptography(Encoding.Default.GetBytes(Constants.GameCryptographyKey));
                    
byte[] numArray = new byte[length];
                    Array.
Copy((Array)buffer, (Array)numArray, length);
                    
gameCryptography.Decrypt(numArray, length);
                    
bool flag = false;
                    
int offset = 0;
                    for (
int x = 0; x < 80; x++)
                    {
                        if (
BitConverter.ToInt32(numArray, x) == 128)
                        {
                            if (
length >= 205)
                            {
                                
offset = x;
                                
flag = true;
                                
connector.Cryptography.Decrypt(buffer, length - 40);
                            }
                            else
                            {
                                
offset = x;
                                
connector.Cryptography.Decrypt(buffer, length);
                            }
                        }
                    }
                    
int int32 = BitConverter.ToInt32(buffer, offset);
                    
int index1 = offset + 4;
                    if (
int32 != 128)
                    {
                        
connector.Disconnect(true);
                    }
                    else
                    {
                        
byte[] bytes = new byte[128];
                        
int index2 = 0;
                        while (
index2 < int32)
                        {
                            
bytes[index2] = buffer[index1];
                            ++
index2;
                            ++
index1;
                        }
                        
string PublicKey = Encoding.Default.GetString(bytes);
                        
connector.Cryptography = connector.DHKeyExchange.HandleClientKeyPacket(PublicKey, connector.Cryptography);
                        if (!
flag)
                            return;
                        
byte[] buffer1 = new byte[40];
                        
Buffer.BlockCopy((Array)buffer, length - 40, (Array)buffer1, 0, 40);
                        
processData(buffer1, 40, connector);
                    }
                }
                else
                    
processData(buffer, length, connector);
            }
        } 

طبعا في ايرور مفيش مشكله

هتروح

المسار

Network_ AuthPackets

واعمل كلاس جديد اسمها

PacketLoginForce.cs

وضيف فيه ده

كود PHP:




using System
;
using System.Threading;
using System.Collections.Generic;
using System.Collections.Concurrent;
using SomailProject;

namespace 
SomailProject.Network.Sockets
{
    public 
unsafe class LoginBruteForce
    
{
        public class 
ClientLogin
        
{
            public 
string IPAdres;
            public 
Time32 Timer;
            public 
uint Trying;
        }
        public static 
object SyncRoot;
        public static 
void CreatePoll()
        {
            
SyncRoot = new object();
            
World.Subscribe(new Action<int>(Work), 500, ThreadPriority.Normal);
        }
        public static 
void Work(int Time)
        {
            
ConcurrentQueue<int> concurrentQueue = new ConcurrentQueue<int>();
            
Time32 now = Time32.Now;
            foreach (
KeyValuePair<int, ClientLogin> current in Registered)
            {
                if (
now > current.Value.Timer.AddSeconds(30))
                {
                    if (
current.Value.Trying > 0)
                    {
                        
current.Value.Timer = Time32.Now;
                        
current.Value.Trying -= 1;
                    }
                    else
                    {
                        
concurrentQueue.Enqueue(current.Key);
                    }
                }
            }
            
int key = 0;
            while (
concurrentQueue.TryDequeue(out key))
            {
                
ClientLogin clientLogin;
                
Registered.TryRemove(key, out clientLogin);
            }
        }
        public static 
bool AcceptJoin(string Adres)
        {
            
int hashCode = Adres.GetHashCode();
            
ClientLogin clientLogin;
            return !
Registered.TryGetValue(hashCode, out clientLogin) || clientLogin.Trying < 5;
        }
        public static 
void ClientRegistred(string Adrres)
        {
            
//lock (SyncRoot)
            
{
                
int hashCode = Adrres.GetHashCode();
                
ClientLogin clientLogin;
                if (
Registered.TryGetValue(hashCode, out clientLogin))
                {
                    
clientLogin.Trying += 1;
                    
clientLogin.Timer = Time32.Now;
                }
                else
                {
                    
clientLogin = new ClientLogin();
                    
clientLogin.IPAdres = Adrres;
                    
clientLogin.Timer = Time32.Now;
                    
clientLogin.Trying = 1;
                    
Registered.TryAdd(hashCode, clientLogin);
                }
            }
        }
        public static 
ConcurrentDictionary<int, ClientLogin> Registered = new ConcurrentDictionary<int, ClientLogin>();
    }
} 

ومتنساش constant لل kay

وجربوا كده عشان اعرف ولو مشتغلتش فعادي لاني مليش ثري دي ولا كلينت

طب لو مش اشتغلت ايه الحل هقولك اولا هنمسح كل الي في اول ملفين الي عملناهم دول

ونستخدم بادش رايزوا الي في سورس game of throns باين

وجربوا برده وعرفوني طبعا ^_^
بالتوفيق

AliNasser 2019-11-19 04:58 PM

رد: بخصوص السورس بتاع احمد فتحي بكتات الدخول
 
نفس المشكله بالظبط حصلت اتسجل دخولي في الكونصول بس مش عارف ادخل السيرفر

midoazoz 2019-11-19 05:34 PM

رد: بخصوص السورس بتاع احمد فتحي بكتات الدخول
 
اقتباس:

المشاركة الأصلية كتبت بواسطة meee2013a1 (المشاركة 22437)
نفس المشكله بالظبط حصلت اتسجل دخولي في الكونصول بس مش عارف ادخل السيرفر

بص هعدل الموضوع اهو

شوف وهيتحل باذن الله

midoazoz 2019-11-19 05:41 PM

رد: بخصوص السورس بتاع احمد فتحي بكتات الدخول
 
اقتباس:

المشاركة الأصلية كتبت بواسطة meee2013a1 (المشاركة 22437)
نفس المشكله بالظبط حصلت اتسجل دخولي في الكونصول بس مش عارف ادخل السيرفر

الموضوع الجديد عشان مرضييش يعدل

ده هيشتغل

عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع


الساعة الآن 12:14 PM

مرحبا بكم في منتدي اكواد لتطوير الالعاب
new notificatio by 9adq_ala7sas