Aller au contenu

Scan de serveur


sweet

Sujets conseillés

Bonjour a tous,

Voici quelques temps que je cherche sans trouver, j'ai un probléme on va dire assez difficile, et comme d'habitude je pense que ca doit pas etre sorcier, mais je dois me compliquer surement :)

Je m'eplique:

Comment scanner un serveur de jeu par exemple, dans mon cas un serveur counter strike, par exemple 87.98.194.21:27035

J'avais concocté un petit script mais trop peu puissant, voir meme nul lol et si le serveur etait down, le site ne repondait plus, durée du scan trop long , donc si quelqun pouvait m'eclairer ca m'arrangerais :)

Merci d'avance !

Lien vers le commentaire
Partager sur d’autres sites

?

Scanner un serveur de jeux ?

Si le site ne répond pas, tu ne peux y accéder, ca c'est certain.

Si le scann est trop long, ca n'est pas un problème par contre.

Mais j'ai du mal à comprendre ta requète... :(

Lien vers le commentaire
Partager sur d’autres sites

Désolé pour ma question, mais ça sert à quoi de scanner un serveur de jeux ??

Alors pour les serveurs de jeux, savoir le temps restants, la liste des joueurs, la prochaine map etc etc etc , ya enormenet d'informations, ca permet de voir sur le site qui est sur le serveur

Il y a aussi par exemple les serveurs TeamSpeak, on peut voir qui est connecté dessus etc...

Si le scann est trop long, ca n'est pas un problème par contre.

Avec le script que j'avais, le site mettait autant de temps a repondre que le serveur, et si serveur timeout ou plutot HS , site planted !

Pour ma requete:

Par exemple, pour un site ou autre, on fait fopen('http://www.site.com');

Bin moi je cherche la methode pour scanner un seveur quelquonque, y recuperer son hostname etc.

Voici un bout de script que j'ai trouvé et essayé de decoder:

$host = "87.98.194.21";
$port = "27035";

function getstr($sock_hnd)
{
   $data = " ";
   while (ord($char = fgetc($sock_hnd)))
   {
       $data .= $char;
   }
   return $data;
}

$sock_hnd = fsockopen("udp://$host", $port, $errno, $errstr);
fwrite($sock_hnd, "ÿÿÿÿinfo");

if (fread($sock_hnd, 5) == 'ÿÿÿÿC')
{
   $server["ip"] = getstr($sock_hnd);                                // Server IP
   $server["hostname"] = getstr($sock_hnd);                            // Server Host
   $server["map"] = getstr($sock_hnd);                                // Server Map
   $server["mod"] = getstr($sock_hnd);                                // Server Mod
   $server["desc"] = getstr($sock_hnd);                                // Server desc
   $sinfo = unpack("cactive/cmax/cver", fread($sock_hnd, 3));
   $server["users"] = $sinfo['active'] . "/" . $sinfo['max'];        // Server users
}

echo $server["map"];
echo '<br>';
echo $server["mod"];
echo '<br>';
echo $server["desc"];
echo '<br>';
echo $server["users"];
fclose($sock_hnd);

Ou bien si quelqun connait un site qui explique le fonctionnement pas a pas :)

M'avez vous compris, sinon jessayerais de re reexpliker ^^

Lien vers le commentaire
Partager sur d’autres sites

J'ai il y a quelque temps cherché un script du même genre, mais pour un serveur unreal tournament 2004.

Je suis certain que tu peux trouver des scripts complets pour intérroger le serveur sans se soucier du protocole (avec des classes par exemple).

Par contre là je trouve pas sur google mais j'ai pas vraiment le temps désolé :-#

Sinon, la raison pour laquelle ton script plantait si le serveur ne répondait pas:

http://fr.php.net/manual/fr/function.stream-set-timeout.php

Il vaut mieux régler une limite de temps pour la connexion ce qui évite ces mésaventures ...

(utilises la commande set_time_out avant la commande fsockopen ;) )

$sock_hnd = fsockopen("udp://$host", $port, $errno, $errstr);

Ca démarre une conversation udp avec le serveur et port choisi. (en fait si on rentre dans les détails, c'est pas très vrai car le protocole udp n'a pas de connexion, ce sont juste des packets qui s'envoient sans que l'emmetteur soit certains que l'information est arrivée à bon port).

fwrite($sock_hnd, "ÿÿÿÿinfo");

Ca envoie une information au serveur, c'est là que ça commence à se corcer car ÿÿÿÿinfo ne veut pas dire grand chose... il faudrait que tu cherches sur le net une page qui décrit ce que signifie ces "ÿÿÿÿ" ( regarde plutot en mode hexa ça correspond à quoi ...).

Idem pour tout ce qui se trouve dans le if, le plus dur dans un script de ce genre est de décrypter les informations envoyés par le serveur.

J'ai trouvé ça vite fait comme documentation sur le protocole mais c'est en anglais et pas détaillé du tout.

http://dev.kquery.com/index.php?article=31

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...