Опрос CS сервера

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by what?, 6 Jan 2013.

  1. what?

    what? New Member

    Joined:
    25 Feb 2011
    Messages:
    24
    Likes Received:
    1
    Reputations:
    1
    Кто нибудь знает как составить UDP пакет, что запросить у сервера counter strike информацию типа карты, количества игроков, пинг и т.д.

    Снифферами UDP пользоваться пока не научился.
     
  2. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ну так научись - иначе как ты хочешь запросы составлять?
    Качай любой сниффер, читай доку, снифай запросы.
    А как будут конкретно вопросы по работоспособности кода - пиши.
     
  3. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    http://forum.xakep.ru/m_1689785/tm.htm
     
  4. what?

    what? New Member

    Joined:
    25 Feb 2011
    Messages:
    24
    Likes Received:
    1
    Reputations:
    1
    Да пробовал я. Но там какие то каракули, особенно в wireshark. Нету что то похожево на HTTP Analyzer, только для UDP?

    Там на PHP, а я его не знаю. Хотелось бы просто пример UPD пакета. Как вот здесь например:
    Code:
    GET / HTTP/1.1[CRLF]
    Host: google.com[CRLF] 
    Connection: close[CRLF]
    User-Agent: Web-sniffer/1.0.44 (+http://web-sniffer.net/)[CRLF]
    Accept-Encoding: gzip[CRLF] 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF]
    Accept-Language: en-US,en;q=0.8,nb;q=0.6[CRLF]
    Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
    Cache-Control: no-cache[CRLF] [CRLF]
     
    #4 what?, 7 Jan 2013
    Last edited: 7 Jan 2013
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    И какой пример ты ждешь? UDP не стандартизирует формат пользовательских данных, там может пересылаться что угодно в любом формате.
    Тем более сервер отдает данные в сжатом виде, если верить сорцу на пхп. Так что кроме каракулей в пакетах ты ничего и не увидишь.
     
    _________________________
  6. what?

    what? New Member

    Joined:
    25 Feb 2011
    Messages:
    24
    Likes Received:
    1
    Reputations:
    1
    Примерно такой :)
    Спасибо, думао что там тоже что то типа GET & post
     
  7. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Там - бинарный протокол.
     
  8. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    GET and POST )) Они в протоколе HTTP.
    Ничего подобного в запросе к cs серверу нету. Как написали выше, здесь запросы идут в бинарном формате. В PHP скрипте можно посмотреть, как формируются пакеты. Если тебя интересует описание формата, смотри ту самую тему на хакере, там давали ссылку.
     
  9. DYUMON

    DYUMON New Member

    Joined:
    15 Sep 2010
    Messages:
    68
    Likes Received:
    2
    Reputations:
    0
    В гугле забанили ?
    PHP:
    procedure TForm1.btnInfoClick(SenderTObject);
    var
      
    tempS:string[255];
      
    Reply,count,maxCount:string;
      
    listReply:TStringList;
      
    i:Integer;
    begin
      Memo1
    .Lines.Clear;
      
    UdpSocket1.BlockMode:=bmNonBlocking;//неблокирующий режим
      
    UdpSocket1.RemoteHost:=edtIp.Text;
      
    UdpSocket1.RemotePort:=edtPort.Text;
      
    listReply:=TStringList.Create;
      try
        
    UdpSocket1.Open;
        
    UdpSocket1.Sendln('яяяяTSource Engine Query',' ');
        
    UdpSocket1.ReceiveBuf(tempS,255);
        
    UdpSocket1.WaitForData(1000);//сколько ждать данные
        
    Reply:=Reply+tempS;
        
    UdpSocket1.ReceiveBuf(tempS,255);
        
    Reply:=Reply+tempS;
        
    UdpSocket1.ReceiveBuf(tempS,255);
        
    Reply:=Reply+tempS;
        if 
    Reply='' then
        begin
          Memo1
    .Lines.Add('Сервер недоступен!!!');
          
    UdpSocket1.Close;
          Exit;
        
    end;
        
    Delete(Reply,1,4);
        for 
    := 0 to Length(Reply)-do
        
    begin
          
    if Reply=#0 then
            
    Reply:=#13; //#6
        
    end;
    //    Reply:=StringReplace(Reply,#6,#13#10,[rfReplaceAll,rfIgnoreCase]);
        
    listReply.text:=Reply;
        
    Memo1.Lines.Add('IP адрес сервера: '+listReply.Strings[0]);
        
    Memo1.Lines.Add('Название сервера: '+listReply.Strings[1]);
        
    Memo1.Lines.Add('Текущая карта: '+listReply.Strings[2]);
        
    Memo1.Lines.Add('Директория игры: '+listReply.Strings[3]);
        
    Memo1.Lines.Add('Описание: '+listReply.Strings[4]);
        
    tempS:=listReply.Strings[5];//hex
        
    count:=Copy(tempS,1,1);//Кол-во игроков на сервере
        
    maxCount:=Copy(tempS,2,1);//Максимальное кол-во игроков
        
    Memo1.Lines.Add('Кол-во игроков на сервере: '+IntToStr(HexToInt(count)));
        
    Memo1.Lines.Add('Максимальное кол-во игроков: '+IntToStr(HexToInt(maxCount)));
      finally
          
    listReply.Free;
      
    end;
    end;
    Данные все были в "нормальном" виде кроме значений кол-ва игроков которые были в hex
    для того
    чтобы их перевести в integer использовал

    function 
    HexToInt(sstring): integer;
    label
      gte
    ;
    var
      
    temptstring;
      
    iinteger;
    begin
      tempt 
    := '';
      if 
    '' then
      begin
        HexToInt 
    := 0;
        goto 
    gte;
      
    end;
      for 
    := 1 to Length(s) do
      
    begin
        tempt 
    := tempt IntToHex(Ord(s), 2);
      
    end;
      
    HexToInt := StrToInt('$' tempt);
      
    gte:
    end;
     
    1 person likes this.
  10. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    DYUMON, лучше бы ты ссылку на код скинул, а не копировал сюда. Видимо не все скопировалось.
    Но в Гугле легко находиться.
     
  11. what?

    what? New Member

    Joined:
    25 Feb 2011
    Messages:
    24
    Likes Received:
    1
    Reputations:
    1
    Все заработало :)
    Оказывается нужно было всего лишь отправить "'яяяяTSource Engine Query'"
    DYUMON,Chrome~ спасибо за код!