OVH Cloud OVH Cloud

Recherche nom de l'utilisateur

3 réponses
Avatar
Roland Roger
Bonjour

Comment puis je retrouver par une commande simple le nom de l'utilisateur
par rapport a son adresse IP sur le reseau.

Merci pour vos reponses

3 réponses

Avatar
Jean-Claude BELLAMY
Dans le message :ejs1he$jlu$,
Roland Roger a pris la peine d'écrire ce
qui suit :
Bonjour

Comment puis je retrouver par une commande simple le nom de
l'utilisateur par rapport a son adresse IP sur le reseau.


Il n'y a rien de prévu par défaut pour faire cela.

Il faut programmer un peu.
En VBS faisant appel à WMI par exemple

Voici un script que je viens d'écrire à l'instant, (il est donc "brut de
décoffrage"! )
"GetSessionUser.vbs"

Son principe est le suivant :
J'énumère les processus "explorer.exe" sur la machine distante.
En effet, si une session est ouverte, il y a forcément comme processus actif
au moins le "shell", c'ets à dire "explorer.exe".

NB: J'ai exclu le cas où Windows aurait été configuré avec un autre shell,
car là on passe dans l'exotisme!!!
Cela peut néanmoins se résoudre, en testant au préalable le contenu de la
clef de la BDR
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows
NTCurrentVersionWinlogonShell
et on remplace dans le script "explorer.exe" par cette valeur

Ensuite, à partir de l'objet processus lié à "explorer.exe", je recueille à
l'aide de la méthode "GetOwner" la propriété "user", laquelle, comme son nom
l'indique, contient le nom du compte qui a lancé le processus.

----------- couper ici -----------
Set Args = WScript.Arguments
Set Network = WScript.CreateObject("WScript.Network")
nbargs=args.count
If nbargs > 0 Then Computer = UCase(Args(0)) else Computer =
Network.ComputerName
Set objWMIService = GetObject("winmgmts:" & Computer & "rootcimv2")
Set objProcess = objWMIService.ExecQuery ("select * from Win32_Process where
name='explorer.exe'")
For each Process in objProcess
Process.GetOwner user,domain
wscript.echo "Session sur " & Computer & " ouverte par " & user
Next
----------- couper ici -----------

On passe en paramètre à ce script le nom ou l'adresse IP de la machine
distante



PS: cette méthode n'est pas "parfaite" !
Si la machine distante a désactivé l'accès distant au registre + a utilisé
un autre shell, on aura du mal a avoir l'info (il faudrait alors redémarrer
ce service à distance, ...)
De même, si l'OS est du niveau de XP PRO ou Media Center, donc permettant le
"Remote Desktop" , on aura le compte distant et non le compte local initial
Et si l'utilisateur a effectué un basculement rapide d'utilisateur, on aura
plusieurs réponses.

Mais il est possible que cela te suffise, suivant ta config ..



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Jean-Luc
Voici la méthode la + simple :

en ligne de commande :

nbtstat -A 192.168.1.1

Affiche les statistiques du protocole et les connexions TCP/IP
actuelles utilisant NBT (NetBIOS sur TCP/IP).


code <03> nom compte qui ouvert une session






Bonjour

Comment puis je retrouver par une commande simple le nom de l'utilisateur
par rapport a son adresse IP sur le reseau.

Merci pour vos reponses


Avatar
Jean-Claude BELLAMY
Dans le message :,
Jean-Luc a pris la peine d'écrire ce qui suit :
Voici la méthode la + simple :


Mais certainement pas la plus fiable !!!!!!

en ligne de commande :
nbtstat -A 192.168.1.1
Affiche les statistiques du protocole et les connexions TCP/IP
actuelles utilisant NBT (NetBIOS sur TCP/IP).

code <03> nom compte qui ouvert une session


NANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN !!!
Tu effectues là un raccourci un peu trop rapide !

Le code <03> désigne le "service messagerie ordinateur" ET le "service
messagerie utilisateur", et non pas le compte ayant ouvert une session
interactive.

Pour info, je redonne la signification de ces codes :
_________________________________________
Noms de type "Unique"

Numéro(h) Description
---------------------------------------------------------------------
00 Service station de travail
00 Microsoft Internet Information Services (<IS~nom_d_ordinateur>
01 Service Messagerie
03 Service Messagerie (ordinateur)
03 Service Messagerie (utilisateur)
06 Service Serveur RAS
1B Contrôleur de domaine principal
1D Maître explorateur
1F Service NetDDE
20 Service Serveur de fichiers
20 Service serveur passerelle DCA IrmaLan (<Forte_$ND800ZA>)
21 Service client RAS
22 Microsoft Exchange Interchange
23 Microsoft Exchange Store
24 Microsoft Exchange Directory
2B Service serveur Lotus Notes
30 Service serveur partage de modem
31 Service client partage de modem
43 SMS Contrôle distant Clients
44 SMS Contrôle distant Administrateurs
45 SMS Conversation distante Clients
46 SMS Transfert distant Clients
4C Service DEC Pathworks TCPIP Windows NT
52 Service DEC Pathworks TCPIP Windows NT
87 Microsoft Exchange MTA
6A Microsoft Exchange IMC
BE Agent du Moniteur réseau
BF Application Moniteur réseau


Noms de type "Group"

Numéro(h) Description
---------------------------------------------------------------------
00 Nom de domaine
01 Maître explorateur (<_MSBROWSE_>)
1C Contrôleurs de domaine (25 PDC et BDC au maximum)
1C Microsoft Internet Information Services (<INet~Services>)
1E Service d'élections d'explorateur
2F Lotus Notes (<IRISMULTICAST>)
33 Lotus Notes (<IRISNAMESERVER>)
_________________________________________




Donc ce code 03 correspond d'assez loin au compte qui a ouvert une session !
En effet, il dépend de l'état du service "Affichage des messages"
("Messenger"), lequel est désactivé par défaut (pour des questions de
sécurité) à présent sous XP SP2 et aussi sous W2K3 !

D'où des résultats très aléatoires et non garantis, et je le prouve :
J'ai effectué des tests à l'instant dans mon LAN, depuis ma machine
192.168.0.102 :

------------------------------------------------------------------
I:>nbtstat -A 192.168.0.99
LAN:
Adresse IP du noeud : [192.168.0.102] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
SEATTLE <00> UNIQUE Inscrit
JCB <00> Groupe Inscrit
JCB <1C> Groupe Inscrit
SEATTLE <20> UNIQUE Inscrit
JCB <1B> UNIQUE Inscrit
SEATTLE <03> UNIQUE Inscrit
BELLAMY <03> UNIQUE Inscrit
JCB <1E> Groupe Inscrit
JCB <1D> UNIQUE Inscrit
..__MSBROWSE__.<01> Groupe Inscrit

SEATTLE (192.168.0.99) est un serveur du domaine (W2K3) "JCB" sur lequel il
y a en ce moment une session ouverte sous le compte "BELLAMY"
------------------------------------------------------------------
I:>nbtstat -A 192.168.0.240
LAN:
Adresse IP du noeud : [192.168.0.102] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
ALEXANDRIE <00> UNIQUE Inscrit
ALEXANDRIE <20> UNIQUE Inscrit
JCBNT4 <00> Groupe Inscrit
JCBNT4 <1C> Groupe Inscrit
JCBNT4 <1B> UNIQUE Inscrit
JCBNT4 <1E> Groupe Inscrit
ALEXANDRIE <03> UNIQUE Inscrit
JCBNT4 <1D> UNIQUE Inscrit
INet~Services <1C> Groupe Inscrit
..__MSBROWSE__.<01> Groupe Inscrit
IS~ALEXANDRIE..<00> UNIQUE Inscrit

ALEXANDRIE (192.168.0.240) est un serveur du domaine (NT4) "JCBNT4" sur
lequel il y a en ce moment une session ouverte sous le compte "BELLAMY"
------------------------------------------------------------------
I:>nbtstat -A 192.168.0.107
LAN:
Adresse IP du noeud : [192.168.0.102] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
YEELEN <00> UNIQUE Inscrit
YEELEN <20> UNIQUE Inscrit
MAPLENET <00> Groupe Inscrit
MAPLENET <1E> Groupe Inscrit

YEELEN (192.168.0.107) est une station sous XP PRO du workgroup "MAPLENET"
sur lequel il y a en ce moment une session ouverte sous le compte "MARGE"
------------------------------------------------------------------
I:>nbtstat -A 192.168.0.121
LAN:
Adresse IP du noeud : [192.168.0.102] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
NIAMEY <00> UNIQUE Inscrit
JCB <00> Groupe Inscrit
NIAMEY <03> UNIQUE Inscrit
NIAMEY <20> UNIQUE Inscrit
NIAMEY$ <03> UNIQUE Inscrit
JCB <1E> Groupe Inscrit
INet~Services <1C> Groupe Inscrit
IS~NIAMEY......<00> UNIQUE Inscrit
HOMER <03> UNIQUE Inscrit

NIAMEY (192.168.0.121) est une station sous W2K PRO du domaine "JCB" sur
lequel il y a en ce moment une session ouverte sous le compte "HOMER"
------------------------------------------------------------------
I:>nbtstat -A 192.168.0.104
LAN:
Adresse IP du noeud : [192.168.0.102] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
DALOA <00> UNIQUE Inscrit
DALOA <20> UNIQUE Inscrit
MAPLENET <00> Groupe Inscrit
MAPLENET <1E> Groupe Inscrit
MAPLENET <1D> UNIQUE Inscrit
..__MSBROWSE__.<01> Groupe Inscrit

DALOA (192.168.0.104) est une station sous XP PRO du workgroup "MAPLEENT"
sur lequel il y a en ce moment une session ouverte sous le compte "BART"


__________________________________________________

Donc tu peux constater que sur 5 machines, seules 2 ont donné un résultat
positif (et à la condition d'éliminer les codes 03 pointant vers le nom de
machine).

C'est pourquoi il est HORS DE QUESTION hors de question d'utiliser NBTSTAT
pour déterminer le nom du compte qui a ouvert une session, c'est beaucoup
trop INCERTAIN ...


Ma méthode, utilisant WMI, (cf. mon message du 20/11/06 à 16h57) est
nettement plus rigoureuse, mais elle aussi n'est pas d'une fiabilité
garantie à 100% car elle dépend du service d'accès distant au registre, du
type de shell utilisé, ...
Si l'ordinateur distant est configuré de façon standard (le service
"RemoteRegistry" est toujours démarré par défaut, et le shell est toujorus
"explorer" par défaut), il n'y a aucun problème, mon script donnera le
résultat EXACT et dans tous les cas.

Par contre en cas "d'exotisme", ce peut être aléatoire.

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr