[python]process-->ip

Fermé
cyrillius Messages postés 1 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 31 juillet 2007 - 31 juil. 2007 à 00:38
 bacchus - 23 mai 2009 à 21:35
bonjour,

Avec un ami nous sommes en train de faire un programme en python qui pourrait envoyer des infos sur une page web comme : quel jeux est executer et sur quel adresse ip nous sommes en train de jouer et aussi d'autres infos.

tout d'abord nous nous sommes penché sur netstat -b mais nous avons vite remarqué que cette commande ne detecte ni hl2.exe ni bf2142.exe alors nous nous sommes penchez vers le module win32process mais nous arrivons pas a trouvez a quel adresse ip le processus se connecte.

Avez-vous la solution ?

merci d'avance

10 réponses

1ace Messages postés 4 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 5 août 2007
5 août 2007 à 18:35
merci beaucoup :)
je posterais ici ma solution (quand j'en aurais trouvé une ^^)
1
où en es tu dans tes recherches ?
0
non nous avons pas essayer cette méthode et apparemment ca marche merci.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
31 juil. 2007 à 09:38
As-tu essayé avec netstat -ab

Le -a va forcer netstat à afficher toutes les connexions.
-1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
31 juil. 2007 à 11:59
De rien :-)
-1

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

Posez votre question
1ace Messages postés 4 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 5 août 2007
31 juil. 2007 à 14:07
merci Seb, mais Cyrillius s'est mal exprimé:
d'une part, on a essayé avec netstat -a ou -b, et ni l'un ni l'autre n'affichait ce qu'on voulais (les IP où sont connectés nos process)
d'autre part, on voudrait arriver à récuperer ces infos directement dans python, parce que je n'arrive pas à récuperer correctement la sortie d'une commande dos, et c'est moins propre...

je suis tombé (sur ton site ^^) sur la class wmi qui semble offrir pas mal d'info, mais j'ai pas trouvé ce que je cherche, alors j'ai cherché ailleur, et j'ai trouvé win32process.EnumProcesses() et win32pdh (expliqué sur cette page: http://python-forum.org/py/viewtopic.php?t=4852 qui me permettent de récuperer la liste des process qui tournent et de trouver leurs exe.

il me faudrait trouver maintenant un moyen de detecter sur quel IP(:port si possible) de connecte un process (par son PID j'imagine)

merci d'avance ;)

Edit: netstat -ab n'affiche pas non-plus ces infos de manière complète... je ne sais pas quels sont les critères pour qu'une connection soit affichée dans cette liste, mais visiblement une connection active à un serveur de jeu ou vocal (CounterStrike:Source et Teamspeak pour mes test) n'est pas reconnue...
-1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
31 juil. 2007 à 14:53
mais visiblement une connection active à un serveur de jeu ou vocal (CounterStrike:Source et Teamspeak pour mes test) n'est pas reconnue..

C'est normal.

Les jeux en ligne utilisent UDP et non TCP.
UDP n'est pas un protocole en mode connecté, il ne sera donc jamais détectable quel que soit la méthode que tu utilises.


La "connexion" tels que l'entendent ces programmes sont au niveau du protocole utilisé par le jeu, par au niveau de la touche TCP/UDP/IP.
Tu ne pourra donc jamais obtenir ces informations en passant par WMI, ou toute autre méthode du genre.

Il faudra plonger directement dans le code client du jeu pour voir les sessions "connectées".

C'est exactement le même problème que savoir si un utilisateur est connecté (logué) sur un forum:
ça ne peut pas se voir au niveau TCP/UPD/IP, mais à un niveau plus haut (cookies spécifiques au forum).
-1
1ace Messages postés 4 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 5 août 2007
31 juil. 2007 à 15:13
mais pourtant, pleins de programmes (le seul qui me vienne à l'esprit est Xfire) sont capable de détecter à quel IP est connecté le jeu, donc ça doit être fesable...?

et je n'ai pas bien compris ta phrase: 'Il faudra plonger directement dans le code client du jeu pour voir les sessions "connectées". '...
-1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
31 juil. 2007 à 15:47
Comme tu aura pu le remarquer, XFire connaît plus de 200 jeux différents.
Il a donc dû être spécifiquement adapté aux différents protocole de ces jeux.

Je présume que XFire "sniffe" les paquets UDP pour trouver de quels jeux il s'agit et à quels serveurs ils sont connectés.


Soit tu "sniff" (genre Ethereal) les paquets (et il faudra que tu décortique les protocoles utilisés par le jeu), soit tu accède aux objets du jeu (mais bon, la plupart sont à source fermés, donc c'est impossible).

Un "client", c'est par exemple le jeu que tu aura lancé sur ton ordinateur et qui ira se connecter sur un serveur de jeu.
Le client demande à se connecter au serveur pour jouer, et le serveur l'autorise ou non.


En fait ce que tu veux faire, c'est examiner les accès réseau d'un logiciel dont tu n'as pas le code source.
C'est pas spécialement simple.
-1
1ace Messages postés 4 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 5 août 2007
31 juil. 2007 à 18:53
tu saurais m'expliquer comment faire, ou me donner des liens (anglais->np) ?
merci d'avance :)
-1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
31 juil. 2007 à 21:22
Regarde du côté des modules Python qui permettent d'accéder à libpcap/winpcap.

Après, il faudra décortiquer le protocole de chaque jeu. Là, je ne pourrai pas te guider.
-1