Angemeldeten Windows Benutzer herausfinden.

Alles, was PHP betrifft, kann hier besprochen werden.

Angemeldeten Windows Benutzer herausfinden.

Postby H0MER » 04. January 2006 12:36

Hi Leute.
Ich habe eine Frage:

Ich möchte gerne auf dem Server (win2k mit apache als webserver und php als modul laufend), auf dem die PHP-Skripte laufen herausfinden, wie der Benutzername des gerade zugreifenden Windows Benutzers ist.

Ich habe das unter W2k mit hilfe von nbtstat -a [IP] gemacht und dann mit Hilfe eines regulären Ausdruckes den Benutzernamen herausgefiltert.

Jetzt haben wir auf WXP umgestellt und die Funktion nbtstat gibt (aus mir unerklärlichen Gründen) nicht mehr den Benutzer zurück.

Hat jemand von Euch einen Lösungsvorschlag?

Ich habe mich auch schon durch einige WMI-Klassen gelesen, habe aber das Gefühl, dass ich damit nicht weiterkommen werde.

Für jeden Tip bin ich Euch sehr dankbar.

mfg
H0MER
H0MER
 
Posts: 53
Joined: 11. June 2003 17:30

Postby Wiedmann » 04. January 2006 13:51

a) du könntest am Apachen eine NTLM-Anmeldung einrichten. (Die funktioniert zumindest mit dem IE transparent)

b) Sofern dein Apache soviel Rechte hat, könntest du das auch über WMI machen (bei mir könnte der Apache nicht mal nbtstat benutzen ;-).

z.B.
Code: Select all
<?php
    $hostname = $_SERVER['REMOTE_ADDR'];
    $wmiservice = new COM('WinMgmts:{impersonationLevel=impersonate}//'.$hostname.'/root/cimv2');
    $computerinfo = $wmiservice->ExecQuery('Select UserName from Win32_ComputerSystem');

    foreach ($computerinfo as $user) {
        echo 'Angemeldeter Benutzer: '.trim($user->UserName);
    }
?>
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby H0MER » 04. January 2006 14:36

Hi ...
vielen Dank für die schnelle Antwort.

zu a)
Ich habe mal ein bisschen Gegoogelt und den modntln für Apache 2.0 gefunden.
http://modntlm.sourceforge.net/

Wenn ich das richtig Verstehe, ist dieser Mod nur für Apache Server, die unter einer Unix umgebung laufen.
Ich habe aber einen Windows 2k Rechner als Webserver laufen.

zu b)
Wenn ich den Code so eins zu eins kopiere und speicher und laufen lasse, bekomme ich folgenden Fehler:

Code: Select all
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WinMgmts:{impersonationLevel=impersonate}//130.143.196.16/root/cimv2': The RPC server is unavailable. ' in c:\program files\apache group\Apache\htdocs\test\benutzer.php:3 Stack trace: #0 c:\program files\apache group\Apache\htdocs\test\benutzer.php(3): com->com('WinMgmts:{imper...') #1 {main} thrown in c:\program files\apache group\Apache\htdocs\test\benutzer.php on line 3

Durch Googel bin ich dadrauf gestoßen worden, dass ich in der PHP.ini
unter dem Bereich [com] die Einstellungen auskommentieren soll.

Code: Select all
[com]
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
;com.typelib_file =
; allow Distributed-COM calls
com.allow_dcom = true
; autoregister constants of a components typlib on com_load()
com.autoregister_typelib = true
; register constants casesensitive
com.autoregister_casesensitive = false
; show warnings on duplicate constat registrations
com.autoregister_verbose = true

Den Pfad habe ich nicht auskommentiert, da ich nicht weiß, was ich dort eingeben soll.

Nachdem ich den Webserver neugestartet habe, habe ich immer noch den gleichen Fehler.
Ich stehe dort auch ein bisschen auf dem Schlauch, da ich noch nie mit WMI-Objekten unter PHP gearbeitet habe.

mfg
H0MER
H0MER
 
Posts: 53
Joined: 11. June 2003 17:30

Postby Wiedmann » 04. January 2006 14:57

zu a)
Ich habe mal ein bisschen Gegoogelt und den modntln für Apache 2.0 gefunden.
http://modntlm.sourceforge.net/

Du musst nach mod_auth_sspi suchen. Das Modul selbst ist aber beim XAMPP direkt dabei.


Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WinMgmts:{impersonationLevel=impersonate}//130.143.196.16/root/cimv2': The RPC server is unavailable. ' in c:\program files\apache

Da fehlt wohl ein Dienst...

Durch Googel bin ich dadrauf gestoßen worden, dass ich in der PHP.ini
unter dem Bereich [com] die Einstellungen auskommentieren soll.

Muss man eigentlich nichts ändern. Der Code läuft auch schon bei einem standard XAMPP ohne Anpassungen (PHP default INI).

Ich stehe dort auch ein bisschen auf dem Schlauch, da ich noch nie mit WMI-Objekten unter PHP gearbeitet habe.

Dann kannst es ja erstmal standardmässig mit VBS versuchen:
Code: Select all
Option Explicit
Dim objWMIService, objUser, colComputerInfo, strHostname

strHostname = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strHostname & "\root\cimv2")
Set colComputerInfo = objWMIService.ExecQuery ("Select UserName from Win32_ComputerSystem")

For Each objUser in colComputerInfo
    Wscript.Echo "Angemeldeter Benutzer: " & objUser.UserName
Next
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby H0MER » 04. January 2006 16:27

Hi ... vielen Dank noch einmal!

Habe jetzt herausgefunden, dass die Fehlermeldung von b) daher kommt, dass der Server Rechner sich nicht auf die Client Rechner connecten kann.

Habe jetzt den Apache Dienst mit Admin Rechten laufen lassen und es läuft perfekt.

Muss mich jetzt nur noch mal dadrum kümmern, einen Account zu bekommen, der genügen Rechte hat um sich auf die Client Rechner zu connecten und im Falle eines Falles nicht zu viele Rechte hat.

An dieser Stelle noch einmal VIELEN DANK für die SUPER HILFE!!

mfg
H0MER
H0MER
 
Posts: 53
Joined: 11. June 2003 17:30


Return to PHP

Who is online

Users browsing this forum: No registered users and 4 guests