Récupérer le nom de session windows du client dans un réseau local

Récupérer le nom de session windows du client dans un réseau local - PHP - Programmation

Marsh Posté le 04-08-2005 à 12:24:21    

Bonjour;
J'ai développé une application sous php/MySQL (en intranet); Je voudrais réstreindre l'accés à qlq persones, pour cela je dois récupérer le nom de session des postes client qui demande à afficher la page (si il existe dans ma table des user, je lui donne accés) sans passer par une authentification.
J'ai trouvé un script php qui peut faire ca mais avec la version NT de windows, actuellement mon serveur est sous win2003server et les postes clients tous sous 2000pro.
 
Ou peut etre utiliser les htaccess pour réstreindre l'accés mais je sais pas comment le faire Si qlq a une idée, merci

Reply

Marsh Posté le 04-08-2005 à 12:24:21   

Reply

Marsh Posté le 04-08-2005 à 13:00:44    

up

Reply

Marsh Posté le 04-08-2005 à 13:09:55    

Avec un .htaccess tu peux restreindre l'accès par IP, sans avoir à demander une authentification:
 
order deny,allow
deny from all
allow from 192.168.0.1, 192.168.0.2, 192.168.0.3
 


---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 13:16:44    

Vu que les persones peuvent ouvrir leur session depuis n'importe quel poste, le htaccess ne me servira pas a grande chose

Reply

Marsh Posté le 04-08-2005 à 13:22:48    

mmmmmm
Où peut on télecharger l'ancien script PHP pour NT ? Peut être qu'on peut l'adapter.
Jusqu'à aujourd'hui, je ne pensais pas que l'on pouvais récupérer le nom de l'utilisateur...
net users sous cmd.exe par exemple te retourne la liste de tous les utilisateurs de la machine, mais pas celui qui est actif.
De même, aucune valeur te retourne le nom de la session par SNMP.


---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 14:10:10    

J'ai trouvé un moyen de récup le nom d'utilisateur en JavaScript, et donc POSTable à une page PHP par exemple, MAIS, il requiert Internet Explorer car il utilise un object ActiveX:
 

Code :
  1. <script type="text/javascript">
  2.       <!--
  3.         var obj = new ActiveXObject('WScript.Network');
  4.         alert(obj.UserName);
  5.       -->
  6.     </script>



---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 14:19:51    

utilise  
$nbtstat = "nbtstat -A ".$_SERVER['REMOTE_ADDR'];
moi c se que j'ai fais a partir de l'adresse ip du client on peut recuperer la variable username apres moi je teste dans base si l'utilisateur existe et j'ouvra sa page et ainsi il peut se connecter de n'importe ou

Reply

Marsh Posté le 04-08-2005 à 14:22:05    

exec ($nbtstat,$result);
          foreach ($result as $row)
          {
          if (strpos($row,"<03>" ))
          {
          $nom = strtok($row," " );
          }
          }
 
dsl voila la suite du code

Reply

Marsh Posté le 04-08-2005 à 14:22:27    

et sa marche sur tous les navigateurs

Reply

Marsh Posté le 04-08-2005 à 15:44:24    

Ce sujet m'interesse également, mais j'ai pas de colonne contenant <03>, j'en déduis que c'est un identifiant hexadecimal, ce n'est peut-être pas le même pour tous les ordinateurs et/ou utilisateur en cours.
D'ailleurs dans la liste ci-dessous n'apparaît pas mon nom d'utilisateur, mais uniquement le nom de la machine et le groupe de travail auquel il appartient.
 

Code :
  1. Table de noms NetBIOS des ordinateurs distants
  2.        Nom                Type         État
  3.     ---------------------------------------------
  4.     HOME           <00>  UNIQUE      Inscrit
  5.     HOME           <20>  UNIQUE      Inscrit
  6.     DOTFX          <00>  GROUP       Inscrit
  7.     DOTFX          <1E>  GROUP       Inscrit
  8.     DOTFX          <1D>  UNIQUE      Inscrit
  9.     ..__MSBROWSE__.<01>  GROUP       Inscrit
  10.     Adresse MAC = 00-05-1C-01-E6-70


Message édité par dotfx le 04-08-2005 à 16:23:20

---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 15:44:24   

Reply

Marsh Posté le 04-08-2005 à 16:28:02    

Selon la doc de Microsoft, tu as raison, <03> est l'utilisateur loggé...
 
J'ai installé puis désinstallé IPX/SPX/NetBIOS pour voir, toujours aucun <03>  :??:


Message édité par dotfx le 04-08-2005 à 16:28:45

---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 16:28:52    

La réponse a été postée y'a pas longtemps ici :o


Message édité par FlorentG le 04-08-2005 à 16:29:02
Reply

Marsh Posté le 04-08-2005 à 16:43:26    

FlorentG a écrit :

La réponse a été postée y'a pas longtemps ici :o


 
Plus pratique: tu pourrais coller l'adresse du post... J'ai cherché nbtstat, il y a effectivement des résultats mais ils ne résolvent pas ce problème...


---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 16:47:16    

Sans passer par nbtstat. En passant par un machin PHP tout bête. Bon, ça marche qu'avec IIS en serveur web, mais bon...

Reply

Marsh Posté le 04-08-2005 à 17:10:11    

effectivement tu peut récupérer le nom de session mais dés que j'ouvre ma session sur un poste (réseau local) ça marche pas et c'est le nom du pc qui apparait!!!

Reply

Marsh Posté le 04-08-2005 à 17:16:11    

Je viens d'essayer sur plusieurs machines, les résultats sont assez aléatoires...
Les utilisateurs sont loggés. Certaines machines sont sous XP d'autres sous 2000 Pro.
 
<03> correspond des fois au nom de la machine, d'autres fois à l'utilisateur, ou alors <03> n'apparaît pas... que ce soit pour les PC XP ou 2000...
 


---------------
www.renderfarm.online
Reply

Marsh Posté le 04-08-2005 à 17:53:11    


J'ai pas trés bien saisi la méthode de l'objet ActiveX. si c'est possible d'avoir plus de détail.
Merci

Reply

Marsh Posté le 04-08-2005 à 18:23:19    

maya19811 a écrit :

J'ai pas trés bien saisi la méthode de l'objet ActiveX. si c'est possible d'avoir plus de détail.
Merci


 
Pour l'ActiveX: obligation d'utiliser Internet Explorer  :(  
 
Pour récup le nom d'utilisateur, il faut deux étapes:
La première, on charge une page où l'on va découvrir ce nom d'utilisateur grace à l'ActiveX, puis deuxième étage on redigire à une nouvelle page avec un POST ou un GET contenant le nom d'utilisateur.
Exemple (je passe les standard (X)HTML pour simplifier l'exemple):
 

Code :
  1. <html>
  2.   <head>
  3.     <title>Obtention du nom d'utilisateur en cours...</title>
  4.     <script type="text/javascript">
  5.       <!--
  6.         function redirect() {
  7.           var obj = new ActiveXObject('WScript.Network');
  8.           var url = 'http://ton_intranet/page.php?utilisateur=' + obj.UserName;
  9.           window.location.href = url;
  10.         }
  11.         window.onload = redirect();
  12.       -->
  13.     </script>
  14.   </head>
  15.   <body>
  16.   </body>
  17. </html>


 
Ensuite, page.php contiendra un $_GET['utilisateur'] avec le nom de l'utilisateur.
La seule emmerde, c'est que l'utilisateur devra permettre dans les options de Sécurité, la demande d'execution d'ActiveX, et aura une alerte de sécurité, où il devra autoriser ou refuser l'execution de l'ActiveX.
L'ActiveX, c'est vraiment un trou de sécurité... c'est une solution à éviter si possible.


Message édité par dotfx le 04-08-2005 à 18:35:14

---------------
www.renderfarm.online
Reply

Marsh Posté le 07-08-2005 à 11:29:24    


Je te remercie infiniment, ça marche trés bien; vu que tous les utilisateurs du réseau utilisent IE, j'ai pas eu de pb
Merci

Reply

Marsh Posté le 18-06-2008 à 11:30:43    

maya19811 a écrit :


Je voudrais réstreindre l'accés à qlq persones, pour cela je dois récupérer le nom de session des postes client qui demande à afficher la page sans passer par une authentification.
J'ai trouvé un script php qui peut faire ca mais avec la version NT de windows


 
Je suis moi aussi intéressé par ce script sous pour NT si tu pouvais le poster ici ou me le faire parvenir par message privé je te serais très reconnaissant :)
 
D'avance merci

Reply

Marsh Posté le 02-06-2009 à 12:34:04    

Un petit up pour la soluce de lebilien que j utilise aussi mais pour recuperer le nom de la machine

 

Seule correction à faire:

 

$nom = strtok($row,"<" );

 

A la place de strtok($row," " )

 

Car si le nom est trop long, la ligne du tableau accole le nom et <xx....

 

Donc on se retrouve avec $nom=MACHINEBIDULE<xx>

 


edit : et rajouter si on veut virer l'espace qui se crée a la fin de $nom (dans le cas ou le nom est trop court pour accoler <XX> ) :

 

$nom=str_replace(' ','',$nom);


Message édité par micky78 le 02-06-2009 à 12:44:32
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed