Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Получения базовый информации о сервере(CS/WOW/HON)

-

Школа Читера

- Основы основ - начинаем писать статьи для начинающих с целью создания полноценного раздела

Ответ
 
Опции темы
Старый 05.01.2012, 13:35   #1
Заблокирован
 Капитан
Аватар для TeedI
 
TeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака Норриса
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
Отправить сообщение для TeedI с помощью ICQ
 
По умолчанию Получения базовый информации о сервере(CS/WOW/HON)

Добрый день дорогие пользователи Zhyk.ru сегодня мы научимся получать информация о сервере использующий UDP протокол с помощью языка c#
Для примера я возьму сервер Counter-Strike.

Для этого нам понадобится MVS n-версии,я использую 2008.
Точные действия по гайду.

Создаем новый проект ConsoleApplication.

В пространства имен добавим нужные нам
Было -
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Стало -
Код:
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
В теле метода main -
Код:
static void Main(string[] args)
        {
           //Тело метода...
        }
Добавим -
Код:
Socket Sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Тем самым инициализируем новый сокет на протоколе UDP.

Теперь нам нужно найти любой сервер. Я возьму - 212.76.142.82:27077
Вернемся в метод main и напишем следующие.

Код:
try { Sock.Connect("77.220.182.153", 27015); }
            catch (Exception ex) { Console.WriteLine(ex.Message); }
В блоке try/catch мы пытаемся подключится к серверу для дальнейшых действий. Если же мы не подключились на консоль выведется причина.

Далее нам нужно узнать какой пакет отвечает за получение информации.
Я воспользовался WPE и нашел нужный нам пакет.
Его значения в 16-тиричной системе -
Код:
FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00
В строковом значении -
Код:
....TSource Engine Query.
Теперь нам нужно отправить данный пакет,у нас есть два варианта действий: перевести "....TSource Engine Query" в 16-тиричной систему и отправить.
Либо использовать уже готовый пакет
А именно -
Код:
FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00
поскольку тело пакет статично.

В блоке try пишем -
Код:
byte[] Send = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x53, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00 };
Наш пакет готов к отправке
Все в том же блоке try пишем -
Код:
Sock.Send(Send);
Тем самым отправляем пакет.

Далее нужно получить ответ.
Все в том же блоке try пишем -
Код:
byte[] Response = new byte[256];
                int packetLen = 0;
                packetLen = Sock.Receive(Response);
                Array.Resize(ref Response, packetLen);
Инициализируем массив(byte) с кол-во 256-ти сегментов.
Инициализируем переменную для хранения длинны пакета.
Получам ответ.
Изменяем размер массив если длинна пакета меньше кол-во сегментов.

Далее переводим наш ответ в понятный нам вид
Все тот же блок try -
Код:
string enc_Response = Encoding.ASCII.GetString(Response);
Инициализируем переменную, записываем перекодированный пакет из byte в string.

Далее отпарсим ответ и выведем его не консоль -
Все тот же блок try -
Код:
[string[] split = enc_Response.Split('\0');
                Console.WriteLine("Имя сервера - " + split[1]+"\n");
                Console.WriteLine("Карта  - " + split[2] + "\n");
Как видно мы получили Имя сервера и текущую карту
Для того что бы получить список игроков нам будет нужен несколько иной пакет -
Код:
byte[] Player = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, (byte)'p', (byte)'i', (byte)'n', (byte)'g', 0x00 };
Я думаю что вам не составит труда получить список распарсить и вывести
Полный код программы -
Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket Sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            try 
            {
                Sock.Connect("212.76.142.82", 27077);
                byte[] Send = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x53, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00 };
                Sock.Send(Send);

                byte[] Response = new byte[256];
                int packetLen = 0;
                packetLen =  Sock.Receive(Response);
                Array.Resize(ref Response, packetLen);
                string enc_Response = Encoding.ASCII.GetString(Response);

                string[] split = enc_Response.Split('\0');
                Console.WriteLine("Имя сервера - " + split[1]+"\n");
                Console.WriteLine("Карта  - " + split[2] + "\n");
                byte[] Player = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, (byte)'p', (byte)'i', (byte)'n', (byte)'g', 0x00 };
                Console.ReadLine();
            }
            catch (Exception ex) { Console.WriteLine(ex.Message); }
        }
    }
}
зы Ответ от сервера не статичен по этому для каждого сервера метод парсинга ответа может быть разным
За все время прибывания на Жуке это мой первый гайд
Спасибо за внимание

Последний раз редактировалось TeedI; 05.01.2012 в 13:42. Причина: наб /dgs
  Ответить с цитированием
Пользователь сказал cпасибо:
object (07.01.2012)
Старый 07.01.2012, 22:03   #2
Читер-спонсор
 Старший сержант
Аватар для Rawwwwr
 
Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(Rawwwwr сломал счётчик популярности :(
Регистрация: 19.01.2011
Сообщений: 203
Популярность: 25789
Сказал(а) спасибо: 518
Поблагодарили 710 раз(а) в 402 сообщениях
Отправить сообщение для Rawwwwr с помощью ICQ
 
По умолчанию Re: Получения базовый информации о сервере(CS/WOW/HON)

совсем не интересно
________________
в чужом глазу соринку видишь, а в своём педаль от самосвала.
  Ответить с цитированием
Старый 07.01.2012, 22:31   #3
обжигающий
 Главнокомандующий
Аватар для object
 
object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(
Регистрация: 17.11.2009
Сообщений: 1,062
Популярность: 64819
Золото Zhyk.Ru: 170
Сказал(а) спасибо: 1,456
Поблагодарили 2,062 раз(а) в 822 сообщениях
 
По умолчанию Re: Получения базовый информации о сервере(CS/WOW/HON)

Лучше бы подробнее про wpe расписал
________________
Полные взломы игрулек VK:
Качок | Баббла Кадабра | Академия монстров | Клуб Искателей(?fix) | [HOT-NEW] Толстая птица онлайн
  Ответить с цитированием
Старый 07.01.2012, 22:38   #4
Заблокирован
 Капитан
Аватар для TeedI
 
TeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака Норриса
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
Отправить сообщение для TeedI с помощью ICQ
 
По умолчанию Re: Получения базовый информации о сервере(CS/WOW/HON)

Цитата:
Сообщение от objectПосмотреть сообщение
Лучше бы подробнее про wpe расписал

А что там расписывать то

Запускаем кс.
Находим сервер пкм по нему -> View server info.
Запускаем wpe ставим перехват на hl.exe,переходим в кс и нажимаем Refresh,возвращаемся в wpe нажимает стоп и вуаля нужный нам пакет первый в списке
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 05:41.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net