Connaitre l'username qui est loggé sur une machine à partir de son IP
8 réponses
Technicatome
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the =
cited author.]
Bonsoir,
J'aimerais retrouve dans un r=E9seau Windows et par programme (en c++) le=
=20
nom de l'utilisateur qui est logg=E9 sur une machine dont je connais=20
l'adresse IP.
Y a-t-il une m=E9thode, cette information est elle stock=E9e quelquepart=20
dans AD, DNS...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alni
Bonjour,
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
En utilisant la commande NCBSSTAT (session status) dans une structure NCB utilisée en argument d'une fonction Netbios().
C'est l'équivalent d'une commande : nbtstat -A adresse_ip en invite de commande. Si tu fouilles un peu le msdn sur les structures NCB, SESSION_HEADER et SESSION_BUFFER tu devrais t'en sortir en C. J'avais fait un truc semblable il y a un peu plus de 10 ans pour récuperer toutes les infos d'une machine qui se connecte sur un des serveurs (NT à l'époque).
Avec l'AD, il doit y avoir plus simple, mais je ne me suis pas penché sur le truc.
Bonjour,
[This followup was posted to fr.comp.reseaux.ip and a copy was sent
to the cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++)
le
nom de l'utilisateur qui est loggé sur une machine dont je connais
l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart
dans AD, DNS...
En utilisant la commande NCBSSTAT (session status) dans une structure
NCB utilisée en argument d'une fonction Netbios().
C'est l'équivalent d'une commande : nbtstat -A adresse_ip en invite de
commande.
Si tu fouilles un peu le msdn sur les structures NCB, SESSION_HEADER et
SESSION_BUFFER tu devrais t'en sortir en C. J'avais fait un truc
semblable il y a un peu plus de 10 ans pour récuperer toutes les infos
d'une machine qui se connecte sur un des serveurs (NT à l'époque).
Avec l'AD, il doit y avoir plus simple, mais je ne me suis pas penché
sur le truc.
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
En utilisant la commande NCBSSTAT (session status) dans une structure NCB utilisée en argument d'une fonction Netbios().
C'est l'équivalent d'une commande : nbtstat -A adresse_ip en invite de commande. Si tu fouilles un peu le msdn sur les structures NCB, SESSION_HEADER et SESSION_BUFFER tu devrais t'en sortir en C. J'avais fait un truc semblable il y a un peu plus de 10 ans pour récuperer toutes les infos d'une machine qui se connecte sur un des serveurs (NT à l'époque).
Avec l'AD, il doit y avoir plus simple, mais je ne me suis pas penché sur le truc.
Patrick_91
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Amicalement
-- Patrick Dept 91
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the
[cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le
nom de l'utilisateur qui est loggé sur une machine dont je connais
l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart
dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom
d'utilisateur ? un "user" se signale en general en tant qu'utilisateur
d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers
le host concerne ..
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Amicalement
-- Patrick Dept 91
Alni
Bonjour,
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il n'y a pas de firewall sur les machines. Alors le port netbios des machines Windows est certainement accessible, donc l'API netbios est utilisable. On peut donc concevoir facilement un prg c++ qui interroge l'API netbios de la machine distante en envoyant à son adresse IP une commande netbios "session status". Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en traiter le résultat. La dernière ligne indique le nom du user connecté.
Bonjour,
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent
to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++)
le nom de l'utilisateur qui est loggé sur une machine dont je connais
l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart
dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom
d'utilisateur ? un "user" se signale en general en tant qu'utilisateur
d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au
routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il
n'y a pas de firewall sur les machines. Alors le port netbios des
machines Windows est certainement accessible, donc l'API netbios est
utilisable. On peut donc concevoir facilement un prg c++ qui interroge
l'API netbios de la machine distante en envoyant à son adresse IP une
commande netbios "session status".
Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en
traiter le résultat. La dernière ligne indique le nom du user connecté.
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il n'y a pas de firewall sur les machines. Alors le port netbios des machines Windows est certainement accessible, donc l'API netbios est utilisable. On peut donc concevoir facilement un prg c++ qui interroge l'API netbios de la machine distante en envoyant à son adresse IP une commande netbios "session status". Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en traiter le résultat. La dernière ligne indique le nom du user connecté.
Patrick_91
Alni wrote:
Bonjour,
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il n'y a pas de firewall sur les machines. Alors le port netbios des machines Windows est certainement accessible, donc l'API netbios est utilisable. On peut donc concevoir facilement un prg c++ qui interroge l'API netbios de la machine distante en envoyant à son adresse IP une commande netbios "session status". Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en traiter le résultat. La dernière ligne indique le nom du user connecté.
Hello ,
Non il y a confusion , seule une application peut recueillir le nom d'un utilisateur (login , password ou tout autre systeme d'identification) . Quant a netbios (hors sujet ici) c'est aussi un nom de machine et non pas d'utilisateur ...
Amicalement
-- Patrick Dept 91
Alni wrote:
Bonjour,
Technicatome wrote:
[This followup was posted to fr.comp.reseaux.ip and a copy was sent
to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++)
le nom de l'utilisateur qui est loggé sur une machine dont je connais
l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart
dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom
d'utilisateur ? un "user" se signale en general en tant qu'utilisateur
d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au
routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il
n'y a pas de firewall sur les machines. Alors le port netbios des
machines Windows est certainement accessible, donc l'API netbios est
utilisable. On peut donc concevoir facilement un prg c++ qui interroge
l'API netbios de la machine distante en envoyant à son adresse IP une
commande netbios "session status".
Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en
traiter le résultat. La dernière ligne indique le nom du user connecté.
Hello ,
Non il y a confusion , seule une application peut recueillir le nom d'un
utilisateur (login , password ou tout autre systeme d'identification) .
Quant a netbios (hors sujet ici) c'est aussi un nom de machine et non pas
d'utilisateur ...
[This followup was posted to fr.comp.reseaux.ip and a copy was sent to the [cited author.]
Bonsoir,
J'aimerais retrouve dans un réseau Windows et par programme (en c++) le nom de l'utilisateur qui est loggé sur une machine dont je connais l'adresse IP.
Y a-t-il une méthode, cette information est elle stockée quelquepart dans AD, DNS...
Hello ,
Non nulle part l'adresse ip d'un host n'a aucune relation avec le nom d'utilisateur ? un "user" se signale en general en tant qu'utilisateur d'une application (couche 5 tcp/ip) l'adresse ip ne sert qu'au routage vers le host concerne ..
Oui, mais s'il s'agit comme je le pense d'un réseau d'entreprise ou il n'y a pas de firewall sur les machines. Alors le port netbios des machines Windows est certainement accessible, donc l'API netbios est utilisable. On peut donc concevoir facilement un prg c++ qui interroge l'API netbios de la machine distante en envoyant à son adresse IP une commande netbios "session status". Ou tout simplement utiliser la commande nbtstat -A <adresse IP> et en traiter le résultat. La dernière ligne indique le nom du user connecté.
Hello ,
Non il y a confusion , seule une application peut recueillir le nom d'un utilisateur (login , password ou tout autre systeme d'identification) . Quant a netbios (hors sujet ici) c'est aussi un nom de machine et non pas d'utilisateur ...
Amicalement
-- Patrick Dept 91
Patrick MATHEVON
: Bonsoir, : : J'aimerais retrouve dans un réseau Windows et par programme (en c++) : le : nom de l'utilisateur qui est loggé sur une machine dont je connais : l'adresse IP. : : Y a-t-il une méthode, cette information est elle stockée quelquepart : dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer : j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Patrick
: Bonsoir,
:
: J'aimerais retrouve dans un réseau Windows et par programme (en c++)
: le
: nom de l'utilisateur qui est loggé sur une machine dont je connais
: l'adresse IP.
:
: Y a-t-il une méthode, cette information est elle stockée quelquepart
: dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer :
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs
à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger)
dont le Record Name est le login du compte utilisé...
: Bonsoir, : : J'aimerais retrouve dans un réseau Windows et par programme (en c++) : le : nom de l'utilisateur qui est loggé sur une machine dont je connais : l'adresse IP. : : Y a-t-il une méthode, cette information est elle stockée quelquepart : dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer : j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Patrick
Annie D.
Patrick MATHEVON wrote:
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Utilisé pour quoi faire ? Ne me dites pas qu'une station Windows a besoin qu'un utilisateur ouvre une session pour être enregistrée dans le WINS ? Et quid d'une station sur laquelle plusieurs sessions d'utilisateurs distincts sont ouvertes simultanément ?
Patrick MATHEVON wrote:
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs
à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger)
dont le Record Name est le login du compte utilisé...
Utilisé pour quoi faire ?
Ne me dites pas qu'une station Windows a besoin qu'un utilisateur ouvre
une session pour être enregistrée dans le WINS ? Et quid d'une station
sur laquelle plusieurs sessions d'utilisateurs distincts sont ouvertes
simultanément ?
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Utilisé pour quoi faire ? Ne me dites pas qu'une station Windows a besoin qu'un utilisateur ouvre une session pour être enregistrée dans le WINS ? Et quid d'une station sur laquelle plusieurs sessions d'utilisateurs distincts sont ouvertes simultanément ?
holespaces
"Patrick MATHEVON" wrote in message news:<bv8r7m$97m$...
: Bonsoir, : : J'aimerais retrouve dans un réseau Windows et par programme (en c++) : le : nom de l'utilisateur qui est loggé sur une machine dont je connais : l'adresse IP. : : Y a-t-il une méthode, cette information est elle stockée quelquepart : dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer : j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Patrick
Salut,
Tu peux également utiliser le protocole netbios avec nbtstat -A <IP> et tu récupère le nom de l'utilisateur connecté <03> (utilisé par Winpopup).
En espérant t'élaircir. Fluxy
"Patrick MATHEVON" <patrick.mathevon@businessinteractif.fr> wrote in message news:<bv8r7m$97m$1@reader1.imaginet.fr>...
: Bonsoir,
:
: J'aimerais retrouve dans un réseau Windows et par programme (en c++)
: le
: nom de l'utilisateur qui est loggé sur une machine dont je connais
: l'adresse IP.
:
: Y a-t-il une méthode, cette information est elle stockée quelquepart
: dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer :
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs
à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger)
dont le Record Name est le login du compte utilisé...
Patrick
Salut,
Tu peux également utiliser le protocole netbios avec nbtstat -A <IP>
et tu récupère le nom de l'utilisateur connecté <03> (utilisé par
Winpopup).
"Patrick MATHEVON" wrote in message news:<bv8r7m$97m$...
: Bonsoir, : : J'aimerais retrouve dans un réseau Windows et par programme (en c++) : le : nom de l'utilisateur qui est loggé sur une machine dont je connais : l'adresse IP. : : Y a-t-il une méthode, cette information est elle stockée quelquepart : dans AD, DNS...
Solution manuelle que j'utilise mais qui doit pouvoir se programmer : j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Patrick
Salut,
Tu peux également utiliser le protocole netbios avec nbtstat -A <IP> et tu récupère le nom de l'utilisateur connecté <03> (utilisé par Winpopup).
En espérant t'élaircir. Fluxy
Alni
Bonjour,
Patrick MATHEVON wrote:
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Utilisé pour quoi faire ? Ne me dites pas qu'une station Windows a besoin qu'un utilisateur ouvre une session pour être enregistrée dans le WINS ? Et quid d'une station sur laquelle plusieurs sessions d'utilisateurs distincts sont ouvertes simultanément ?
Dans ce cas, je vois dans la base WINS les différents utilisateurs connectés associés à la même adresse IP. Jusqu'a ce que je me connecte avec ce même utilisateur sur une autre machine, auquel cas l'adresse IP de cette machine se trouve associée à ce nom d'utilisateur.
Si je fais un nbtstat -A sur une machine sur laquelle plusieurs utilisateurs soint connectés (console + terminal server par exemple) alors le nbtstat me renvoie 1 ligne en ID 03h pour chacun des utilisateurs connectés.
L'ID 03h est identifiée dans la base WINS comme correspondant au service d'affichage des messages. Je suppose que c'est sur cette ID que le sevice d'affichage des messages se base pour trouver l'IP sur laquelle se trouve un user lorsque l'on s'en sert comme argument d'un net send plutôt que de cibler un nom de machine. Je constate aussi que la base WINS ne tiens pas vraiment compte de la déconnexion d'un USER. Je me suis connecté à un moment "administrateur" sur une des machines, et son adresse IP reste associée au nom "administrateur" dans la base WINS bien que j'ai fermée cette session et réouvert avec un user normal. Par contre le nbtstat -A, qui s'adresse aussi bien au serveur WINS quand il y en a un, qu'a la station retrouve bien le nom d'un user qui est connecté sur plusieurs machines sur toutes les machines ou il est connecté et non pas seulement la dernière comme ce qui apparait dans la bas WINS.
exemple station ayant 2 users connectés 1 en console, l'autre en TS : C:>nbtstat -A 192.168.x.y Connexion au réseau local: Adresse IP du noeud : [192.168.x.z ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État --------------------------------------------- STATION <00> UNIQUE Inscrit STATION <20> UNIQUE Inscrit WORKGROUP <00> Groupe Inscrit WORKGROUP <1E> Groupe Inscrit WORKGROUP <1D> UNIQUE Inscrit ..__MSBROWSE__.<01> Groupe Inscrit STATION <03> UNIQUE Inscrit USER1 <03> UNIQUE Conflit USER2 <03> UNIQUE Conflit
Adresse MAC = 00-XX-XX-XX-XX-XX
Les 2 users apparaissent en conflit certainement car ils sont aussi connectés sur d'autres machines à cet instant, et que, comme ils se sont connectés en dernier sur les autres machines, c'est l'IP des autres machines qui apparait dans la base WINS pour ces 2 users.
Si ça peut faire avancer le schmilblick.
Sinon, la solution que j'avais utilisée il y a une dizaine d'années pour glaner ce genre de renseignements, consiste à écrire un petit prg en C (20-30ko il me semble) que l'on glisse dans le script de netlogon qui va collecter tout un tas d'infos sur la machine et qui va les écrire dans un fichier sur un serveur à chaque ouverture de session sur le domaine. La plupart des infos réseau comme le nom machine et le nom user sont récupérables en API netbios.
Je pouvais récuperer de cette façon : heure date de cnx, nom machine, nom user, adresse IP (il n'y avait pas de DHCP à cette époque sur ce réseau), taille ram installée, espace disque restant, adresse MAC de la station (utile pour retrouver la station qui a une IP dupliquée quand une autre station affiche "conflit d'adresse IP avec l'adresse 00:60:25:12:34:56") Tout ça sur une ligne dans un fichier, permettait de garder trace de toutes les connexions sur toutes les machines et de faire un peu de préventif quand à la saturation des disques durs. Facile à exploiter par la suite avec n'importe quel viewer de fichiers textes capable de faire des recherches en partant du bas pour retrouver les dernières connexions.
Bonjour,
Patrick MATHEVON wrote:
j'interroge le serveur WINS pour connaitre TOUS les enregistrements
relatifs à une adresse IP. Et la, on trouve un enregistrmeent de
type 03h (Messenger) dont le Record Name est le login du compte
utilisé...
Utilisé pour quoi faire ?
Ne me dites pas qu'une station Windows a besoin qu'un utilisateur
ouvre une session pour être enregistrée dans le WINS ? Et quid d'une
station sur laquelle plusieurs sessions d'utilisateurs distincts sont
ouvertes simultanément ?
Dans ce cas, je vois dans la base WINS les différents utilisateurs
connectés associés à la même adresse IP. Jusqu'a ce que je me connecte
avec ce même utilisateur sur une autre machine, auquel cas l'adresse IP
de cette machine se trouve associée à ce nom d'utilisateur.
Si je fais un nbtstat -A sur une machine sur laquelle plusieurs
utilisateurs soint connectés (console + terminal server par exemple)
alors le nbtstat me renvoie 1 ligne en ID 03h pour chacun des
utilisateurs connectés.
L'ID 03h est identifiée dans la base WINS comme correspondant au service
d'affichage des messages. Je suppose que c'est sur cette ID que le
sevice d'affichage des messages se base pour trouver l'IP sur laquelle
se trouve un user lorsque l'on s'en sert comme argument d'un net send
plutôt que de cibler un nom de machine.
Je constate aussi que la base WINS ne tiens pas vraiment compte de la
déconnexion d'un USER. Je me suis connecté à un moment "administrateur"
sur une des machines, et son adresse IP reste associée au nom
"administrateur" dans la base WINS bien que j'ai fermée cette session et
réouvert avec un user normal. Par contre le nbtstat -A, qui s'adresse
aussi bien au serveur WINS quand il y en a un, qu'a la station retrouve
bien le nom d'un user qui est connecté sur plusieurs machines sur toutes
les machines ou il est connecté et non pas seulement la dernière comme
ce qui apparait dans la bas WINS.
exemple station ayant 2 users connectés 1 en console, l'autre en TS :
C:>nbtstat -A 192.168.x.y
Connexion au réseau local:
Adresse IP du noeud : [192.168.x.z ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
STATION <00> UNIQUE Inscrit
STATION <20> UNIQUE Inscrit
WORKGROUP <00> Groupe Inscrit
WORKGROUP <1E> Groupe Inscrit
WORKGROUP <1D> UNIQUE Inscrit
..__MSBROWSE__.<01> Groupe Inscrit
STATION <03> UNIQUE Inscrit
USER1 <03> UNIQUE Conflit
USER2 <03> UNIQUE Conflit
Adresse MAC = 00-XX-XX-XX-XX-XX
Les 2 users apparaissent en conflit certainement car ils sont aussi
connectés sur d'autres machines à cet instant, et que, comme ils se sont
connectés en dernier sur les autres machines, c'est l'IP des autres
machines qui apparait dans la base WINS pour ces 2 users.
Si ça peut faire avancer le schmilblick.
Sinon, la solution que j'avais utilisée il y a une dizaine d'années pour
glaner ce genre de renseignements, consiste à écrire un petit prg en C
(20-30ko il me semble) que l'on glisse dans le script de netlogon qui va
collecter tout un tas d'infos sur la machine et qui va les écrire dans
un fichier sur un serveur à chaque ouverture de session sur le domaine.
La plupart des infos réseau comme le nom machine et le nom user sont
récupérables en API netbios.
Je pouvais récuperer de cette façon :
heure date de cnx, nom machine, nom user, adresse IP (il n'y avait pas
de DHCP à cette époque sur ce réseau), taille ram installée, espace
disque restant, adresse MAC de la station (utile pour retrouver la
station qui a une IP dupliquée quand une autre station affiche "conflit
d'adresse IP avec l'adresse 00:60:25:12:34:56")
Tout ça sur une ligne dans un fichier, permettait de garder trace de
toutes les connexions sur toutes les machines et de faire un peu de
préventif quand à la saturation des disques durs.
Facile à exploiter par la suite avec n'importe quel viewer de fichiers
textes capable de faire des recherches en partant du bas pour retrouver
les dernières connexions.
j'interroge le serveur WINS pour connaitre TOUS les enregistrements relatifs à une adresse IP. Et la, on trouve un enregistrmeent de type 03h (Messenger) dont le Record Name est le login du compte utilisé...
Utilisé pour quoi faire ? Ne me dites pas qu'une station Windows a besoin qu'un utilisateur ouvre une session pour être enregistrée dans le WINS ? Et quid d'une station sur laquelle plusieurs sessions d'utilisateurs distincts sont ouvertes simultanément ?
Dans ce cas, je vois dans la base WINS les différents utilisateurs connectés associés à la même adresse IP. Jusqu'a ce que je me connecte avec ce même utilisateur sur une autre machine, auquel cas l'adresse IP de cette machine se trouve associée à ce nom d'utilisateur.
Si je fais un nbtstat -A sur une machine sur laquelle plusieurs utilisateurs soint connectés (console + terminal server par exemple) alors le nbtstat me renvoie 1 ligne en ID 03h pour chacun des utilisateurs connectés.
L'ID 03h est identifiée dans la base WINS comme correspondant au service d'affichage des messages. Je suppose que c'est sur cette ID que le sevice d'affichage des messages se base pour trouver l'IP sur laquelle se trouve un user lorsque l'on s'en sert comme argument d'un net send plutôt que de cibler un nom de machine. Je constate aussi que la base WINS ne tiens pas vraiment compte de la déconnexion d'un USER. Je me suis connecté à un moment "administrateur" sur une des machines, et son adresse IP reste associée au nom "administrateur" dans la base WINS bien que j'ai fermée cette session et réouvert avec un user normal. Par contre le nbtstat -A, qui s'adresse aussi bien au serveur WINS quand il y en a un, qu'a la station retrouve bien le nom d'un user qui est connecté sur plusieurs machines sur toutes les machines ou il est connecté et non pas seulement la dernière comme ce qui apparait dans la bas WINS.
exemple station ayant 2 users connectés 1 en console, l'autre en TS : C:>nbtstat -A 192.168.x.y Connexion au réseau local: Adresse IP du noeud : [192.168.x.z ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État --------------------------------------------- STATION <00> UNIQUE Inscrit STATION <20> UNIQUE Inscrit WORKGROUP <00> Groupe Inscrit WORKGROUP <1E> Groupe Inscrit WORKGROUP <1D> UNIQUE Inscrit ..__MSBROWSE__.<01> Groupe Inscrit STATION <03> UNIQUE Inscrit USER1 <03> UNIQUE Conflit USER2 <03> UNIQUE Conflit
Adresse MAC = 00-XX-XX-XX-XX-XX
Les 2 users apparaissent en conflit certainement car ils sont aussi connectés sur d'autres machines à cet instant, et que, comme ils se sont connectés en dernier sur les autres machines, c'est l'IP des autres machines qui apparait dans la base WINS pour ces 2 users.
Si ça peut faire avancer le schmilblick.
Sinon, la solution que j'avais utilisée il y a une dizaine d'années pour glaner ce genre de renseignements, consiste à écrire un petit prg en C (20-30ko il me semble) que l'on glisse dans le script de netlogon qui va collecter tout un tas d'infos sur la machine et qui va les écrire dans un fichier sur un serveur à chaque ouverture de session sur le domaine. La plupart des infos réseau comme le nom machine et le nom user sont récupérables en API netbios.
Je pouvais récuperer de cette façon : heure date de cnx, nom machine, nom user, adresse IP (il n'y avait pas de DHCP à cette époque sur ce réseau), taille ram installée, espace disque restant, adresse MAC de la station (utile pour retrouver la station qui a une IP dupliquée quand une autre station affiche "conflit d'adresse IP avec l'adresse 00:60:25:12:34:56") Tout ça sur une ligne dans un fichier, permettait de garder trace de toutes les connexions sur toutes les machines et de faire un peu de préventif quand à la saturation des disques durs. Facile à exploiter par la suite avec n'importe quel viewer de fichiers textes capable de faire des recherches en partant du bas pour retrouver les dernières connexions.