Connaitre l'adresse d'un serveur auquel se connecte un .exe

Résolu
Dart-WoD - Modifié par Dart-WoD le 13/10/2014 à 10:53
 dart wod - 23 oct. 2014 à 00:12
Bonjour, je vais tenter de vous exposer mon problème aussi bien que possible (possible que je ne soit même pas dans la bonne catégorie ^^' dans ce cas je m'excuse d'avance) !

Donc, commençons par la base, un petit projet sur mon forum

Créer un petit script (ça c'est fait) qui check si le serveur de jeu sur lequel nous jouons (nous jouons sur la plateforme GGPO pour ceux qui connaîtraient ) est online ou down

Hors, le site web -GGPO.net- et le serveur de jeu ne sont pas lié, en effet par exemple là je ne peut pas me connecter à la plateforme de jeu via GGPO.exe (ça me dit impossible de se connecter à GGPO.net mais le site lui même est connecté pourtant)

J'aimerais donc pouvoir trouver cette adresse vicieusement cachée afin de mettre mon script sur celle ci et non sur l'adresse du site (qui parfois plante aussi mais pas à chaque fois)

Comment faire ?

Merci d'avance !

Ps : lien du logiciel si jamais vous voulez bidouillez dedans pour voir la bête : http://ggpo.net/ggpo-build-030.zip

-Dart

23 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 13/10/2014 à 11:54
Bonjour.

Si j'ai bien compris:
- Tu veux savoir si le serveur de jeu est down ou non.
- Ton script, au lieu de pointer sur le serveur de jeu, pointe sur le site web (ce qui n'a rien à voir).
- Tu veux connaître l'adresse ip du serveur de jeu.

Pour répondre à ta question:
Attention, il y a peut être un loadbalancing ou des failovers (comprends par là: possiblité qu'il y ait plusieurs adresses ip).
Néanmoins, pour connaître l'adresse ip, deux solutions:
- Tu décompiles le binaire, à la recherche d'une adresse ip, via IDA, OllyDBG (ou un outil plus moderne, ça fait longtemps que je n'en ai pas fait :p).
- Tu "observes" les paquets réseaux, et tu regardes où se connecte ton binaire (Tu peux le faire via "wireshark"). Cette solution est à mon avis plus aisée.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Merci beaucoup je tenterais ça et reviendrais ici pour annoncer les résultats ^^
0
Houla j'ai essayé Wireshark et IDA et je comprend juste rien à ce qui se passe à l'écran, trop d'info à la seconde pour wireshark et je comprend vraiment rien à IDA :(
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
16 oct. 2014 à 10:35
Ok. Laisse tomber IDA pour le moment.
Dans Wireshark tu peux filtrer l'application cible (sinon, tu as toute la machine, ce qui n'est effectivement pas pratique).

Une autre solution, serait d'utiliser "netstat". Tu ouvres un terminal, et tu tapes "netstat -a".
De la doc ici:
http://www.wikihow.com/See-Active-Network-Connections-%28Windows%29

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Comment on fait pour le filtre ?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
16 oct. 2014 à 13:42
Fais déjà du netstat, c'est plus simple, et ça devrait résoudre ton souci.

Pour le filtre, tu regardes un tutoriel sur le net, comme par exemple (premier pris au hasard):
http://openmaniak.com/fr/wireshark_filters.php

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Pour le netstat, je lance la cmd, je fait la commande puis je lance l'exe et je vois ce que ça donne c'est ça ? (car c'est pareil j'ai plein d'ip qui apparaissent)
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 16/10/2014 à 14:59
Tu lances l'exe, et tu fais un "netstat". Ton application va apparaître dans la liste, avec la liste de ses connexions ouvertes. Tu vois alors vers "où" il se connecte. Regarde bien la doc que je t'ai mise en lien sur "netstat" pour comprendre comment il fonctionne.

Je précise aussi, que tu ne verras pas que ton application, mais aussi toutes les autres. À toi donc de filtrer uniquement ton application. Une solution serait de mettre le résultat de la commande "netstat" dans un fichier. Ex: "netstat -a > toto.txt". Ensuite, tu fais un CTRL + F dans ce fichier pour trouver ton application.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Alors j'ai fait le netstat -b

J'ai plein de resultat pour GGPO.exe

en adresse locale ils sont tous en TCP, ils commencent tous par 127.0.0.1:23401

et sont tous en profil TIME_WAIT

Sauf 1 qui est 127.0.0.1:49161 et ETABLISHED


L'adresse distante change à chaque fois "nomdemonpc":"suite de nombres"

Qu'est-ce que je doit prendre pour l'adresse du serveur du coup ?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 18/10/2014 à 20:13
en adresse locale ils sont tous en TCP, ils commencent tous par 127.0.0.1:23401

"127.0.0.1" c'est "localhost", donc ta propre machine (ce qui est logique, on te montre d'où part la connexion).
Ce n'est pas l'adresse distante.

et sont tous en profil TIME_WAIT
Sauf 1 qui est 127.0.0.1:49161 et ETABLISHED

TIME_WAIT, veut dire que la connexion a été fermée sur ta machine, mais que ta machine attends "un peu" pour être sur qu'il ne reste pas des paquets qui auraient été envoyés après la fermeture de la connexion de ton côté. C'est normal, et tu peux l'interpréter comme un CLOSE.
ESTABLISHED veut dire que tu as établi la connexion avec le serveur et que tu dialogues avec lui (C'est le statut qui va t'intéresser).
LISTENING veut dire que tu "écoutes" sur un port (généralement ce que tu vois quand tu héberges le serveur, ce qui n'est ici pas ton cas).

L'adresse distante change à chaque fois "nomdemonpc":"suite de nombres"

Le numéro après le ":" est le numéro de port, ce qui n'est pas utile pour un ping qui n'utilise pas la notion de port. Tu peux ignorer cette information.
(Hors-sujet, mais juste pour que tu comprennes: Un port est numéro d'identifiant qui associe un binaire à une connexion. Par exemple, si sur ta machine tu lances plusieurs serveurs, comment les clients pourront choisir à quelle serveur de ta machine se connecter ? C'est à ça que sert le port. Dire au client qui arrive: "Ok, tu es arrivé sur la machine, et maintenant avec quel binaire veut tu te connecter ?").

Qu'est-ce que je doit prendre pour l'adresse du serveur du coup ?

Il faut vraiment que tu trouves une connexion dont l'ip n'est pas ta machine (et ignorer les ports). Ca sera normalement celle du serveur distant. Pour éviter d'avoir "trop" d'information, lance le moins d'application possible (autre que ton binaire, GGPO.exe) pendant que tu fais ton "netstat" (ferme ton navigateur par exemple, car il établit des connexions distantes).

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 19/10/2014 à 12:08
J'ai jeté un coup d'oeil par curiosité. J'ai fait un "netstat" et un "netstat -n" (pour voir l'ip). Ton binaire semble se connecter à "naturalhealthcollege.com" sur le port 7000, dont l'ip est 69.10.128.134. J'ai lancé une capture dans wireshark sur cette ip (dans le champs "filter", j'ai mis "ip.addr == 69.10.128.134"). Lorsque je parle dans le chat, wireshark m'affiche ce que j'envoi. Ce qui me fait dire que je suis bien sur la bonne ip. En revanche, je ne sais pas si le serveur de chat et le serveur de jeu sont les mêmes (je n'ai pas de rom). J'ai en tout cas l'impression que le site est hébergé sur 69.10.128.134:80 et le serveur de chat sur 69.10.128.134:7000.

Je t'invite à réaliser la même opération pendant le jeu ("netstat" et "netstat -n"), pour vérifier que celui-ci est bien le même (si ce n'est pas le cas, il faudra trouver l'ip du serveur de jeu).

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
J'ai lancé une partie (j'ai regardé un match) et j'ai fermé GGPO (un fois connecté à une partie on peut fermé la plateforme) et j'ai eu 2 fois l'ip 69.10.128.134:7000 qui est revenue je suppose donc que c'est la bonne, j'arrive pas à la mettre dans mon script (avec ou sans le ":7000" je ne comprend pas pourquoi il dit tout le temps que c'est down alors que isitup.org le voit bien en ligne (et il est bien en ligne)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
20 oct. 2014 à 08:43
Bonjour
Ton script. ...il fonctionne comment ? Via un ping ?
Car il est possible de désactiver la réponse au ping sur les serveurs. ...
0
Voila le code :

<!-- Début Script java pour le check GGPO Down ou UP -->
<center><span id="verif" class="label">Vérification du statut de GGPO</span>
<style>
 
.label {
background: orange;
color: #fff;
padding: 5px;
border-radius: 3px;
display: inline-block;
text-shadow: 0px -1px 0px #555;
}
 
.label-success {
background: green;
color: #fff;
padding: 5px;
border-radius: 3px;
display: inline-block;
text-shadow: 0px -1px 0px #555;
}
 
.label-error {
background: red;
color: #fff;
padding: 5px;
border-radius: 3px;
display: inline-block;
text-shadow: 0px -1px 0px #555;
}
</style>
 
<script>
function testifonline(url) {
var script = document.body.appendChild(document.createElement("script"));
    script.onload = function()
    {
        $('#verif').attr('class', 'label-success').text('GGPO est en ligne');
    };
    script.onerror = function()
    {
        $('#verif').attr('class', 'label-error').text('GGPO est hors ligne');
    };
    script.src = url;
 
 
}
 
$(function(){
  testifonline('69.10.128.134');
  setInterval("testifonline('69.10.128.134');", 10000);
});
  </script></center>
<!-- Fin de script GGPO up ou down -->
0
Après comme je l'ai dit Isitup.org arrive à "ping" l'ip donc je pense que ça doit venir de mon script, autant il capte si je met GGPO.NET en cible, mais pas l'ip
0
C'est bon, il fallait que je mette http://69.10.128.134 pour que ça marche ;)

Suffit d'attendre le prochain crash pour vérifié si l'ip est la bonne !
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
20 oct. 2014 à 10:28
Salut.

Oui c'est normal. Un ping n'utilise pas de port. C'est un call icmp (spécial). Il ne fallait donc pas l'indiquer.
Maintenant, je pense que c'est l'ip du site et peut être pas celle du serveur de jeu (si ça se peut, le serveur de jeu est hébergé sur la même machine que le site, c'est pas impossible du tout).

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
20 oct. 2014 à 13:40
Sans oublier que ce n'est pas parce que le serveur (la machine) est UP que le serveur du jeux ( l'appli) est ok.....
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
20 oct. 2014 à 20:49
@Jordane45: C'est une excellente remarque.

Pour cela, on préfère utiliser nmap, et regarder les ports en écoute:

shell>$ nmap 69.10.128.134

PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
53/tcp open domain
80/tcp open http
106/tcp open pop3pw
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
443/tcp open https
465/tcp open smtps
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
7000/tcp open afs3-fileserver
7001/tcp open afs3-callback
8443/tcp open https-alt


Le mieux serait sans doute de faire un "nmap 69.10.128.134 -p 7000" et vérifier si le "state" est bien open. Pas sur en revanche que ce soit faisable en javascript. L'astuce consisterait à interroger en javascript une page php de ton serveur qui se chargerait de faire cela. (Pour vérifier si un port est ouvert en php: http://stackoverflow.com/questions/10127691/how-can-i-check-if-ports-465-and-587-are-open-with-php).

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Houla je pige pas grand chose je vais regarder ça sur internet ^^

De mon côté grace à vous j'ai pigé un peu plus les netstat

Il s'avère que GGPOFBA (à savoir la fenetre du jeu en lui même) se connecte à l'ip "88.225.141.177:53809" (sur -b j'ai ggpo fba sur *mon ip*:45405 et dans -n lorsque je regarde *monip*:45405 je vois 88.225.141.177:53809 (donc j'ai tout compris j'espère ^^')

Je regarde un match là, et cette IP serait down d'après is it up et mon script :s

Je vais chercher le nmap du coup (je peux utiliser tout sorte de code normalement sur ma page, j'ai pris java car c'est ce qu'on m'a donné quand j'ai demandé de l'aide ^^)
0
Rejoignez-nous