[python]process-->ip

cyrillius Messages postés 1 Statut Membre -  
 bacchus -
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
A voir également:

10 réponses

1ace Messages postés 4 Statut Membre
 
merci beaucoup :)
je posterais ici ma solution (quand j'en aurais trouvé une ^^)
1
bacchus
 
où en es tu dans tes recherches ?
0
cyrillius
 
non nous avons pas essayer cette méthode et apparemment ca marche merci.
0
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
As-tu essayé avec netstat -ab

Le -a va forcer netstat à afficher toutes les connexions.
-1
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
De rien :-)
-1

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

Posez votre question
1ace Messages postés 4 Statut Membre
 
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 33415 Statut Modérateur 15 663
 
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 Statut Membre
 
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 33415 Statut Modérateur 15 663
 
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 Statut Membre
 
tu saurais m'expliquer comment faire, ou me donner des liens (anglais->np) ?
merci d'avance :)
-1
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
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