TA STRONA UŻYWA COOKIE. Dowiedz się więcej o celu ich używania. Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.

Od dnia 25.05.2018 r. na terenie Unii Europejskiej wchodzi w życie Rozporządzenie Parlamentu Europejskiego w sprawie ochrony danych osobowych. Prosimy o zapoznanie się z polityką prywatności oraz regulaminem serwisu [X]
Windows 7 Forum

Protokół GG8.0

Protokół GG8.0
« dnia: 03 Styczeń 2011, 09:01:42 »
Witam

Kiedyś zacząłem pisać komunikator w oparciu o bibliotekę ggsharp jednakże była ona oparta o protokół 7.0 wiec wpadłem na pomysł napisania własnej obsługi nowszego.
Mój problem wygląda tak że po wysłaniu całej struktury dotyczącej logowania nie dostaje od serwera żadnego komunikatu.
            Reciver = new BinaryReader(Stream);
            Writer = new BinaryWriter(Stream);
            Int32 Header;
            while (connect.Connected)
            {
                Header = Reciver.ReadInt32();
                switch (Header)
                {
                    case Headers.WelcomeHeder:
                        {
                            MessageBox.Show(Reciver.ReadInt32().ToString());
                            Int32 seed;
                            seed = Reciver.ReadInt32();
                            login80 loginstr = new login80();
                            loginstr.uin = (Int32)number;
                            loginstr.language = new char[2];
                            loginstr.language = "pl".ToCharArray();
                            loginstr.hash_type = (byte)0x02;
                            var passwordBytes = Encoding.UTF8.GetBytes(password);
                            var seedBytes = BitConverter.GetBytes(seed);
                            var bytes = new byte[passwordBytes.Length + seedBytes.Length];
                            passwordBytes.CopyTo(bytes, 0);
                            seedBytes.CopyTo(bytes, passwordBytes.Length);
                            var sha1Hash = System.Security.Cryptography.SHA1Managed.Create();
                            sha1Hash.ComputeHash(bytes);
                            loginstr.hash = bytes.ToString().ToCharArray();
                            loginstr.status = (byte)0x0002;
                            loginstr.flags = (byte)0x00000001;
                            loginstr.features = (byte)0x00000007;
                            loginstr.external_ip = 0;
                            loginstr.external_port = 0;
                            loginstr.local_ip = 0;
                            loginstr.local_port = 0;
                            loginstr.image_size = (char)241;
                            loginstr.unknown1 = (byte)0x64;
                            loginstr.version_len = 35;
                            loginstr.version = new char[loginstr.version_len];
                            loginstr.version = "Gadu-Gadu Client build 10.0.0.10450".ToCharArray();
                            loginstr.description_size = 1;
                            loginstr.description = new char[loginstr.description_size];
                            loginstr.description[0] = 'A';
                            Writer.Write((Int32)0x0031);
                            Writer.Write((Int32)139);
                            Writer.Write(loginstr.uin);
                            Writer.Write(loginstr.language);
                            Writer.Write((byte)loginstr.hash_type);
                            Writer.Write(bytes);
                            for (int i = 0; i < 64 - bytes.Length; i++)
                                Writer.Write((byte)0);
                            Writer.Write(loginstr.status);
                            Writer.Write(loginstr.flags);
                            Writer.Write(loginstr.features);
                            Writer.Write(loginstr.external_ip);
                            Writer.Write(loginstr.external_port);
                            Writer.Write(loginstr.local_ip);
                            Writer.Write(loginstr.local_port);
                            Writer.Write(loginstr.image_size);
                            Writer.Write(loginstr.unknown1);
                            Writer.Write(loginstr.version_len);
                            Writer.Write(loginstr.version);
                            Writer.Write(loginstr.description_size);
                                Writer.Write(loginstr.description);
                        } break;
                }
Gdy zmienię typ pakietu na 0x0019(ten od gg7.0) to dostaje przynajmniej pakiet o niepowodzeniu logowania natomiast tutaj nie dostaje nic. Na razie wielkość jest ustalona na sztywno ale zostanie to zmienione. Proszę o pomoc ponieważ nie wiem jak rozwiązać ten problem.