Windows User ermitteln
Andreas
- programmiertechnik
0 Christian Seiler0 Andreas0 Christian Seiler0 Andreas
0 Christian
0 Andreas0 Thomas Schmieder0 Martin Speiser
Hallo!
Ich weiß, da gab es schon viele Threads und alle sagen das ist unmöglich. Mit geht es ausschließlich um Win2000 und WinXP user, das sollte das ganze schonmal vereinfachen. Der User steht natürlich auch ein keiner Umgebungsvariable des Webservers, aber es muß doch möglich sein über die Kommandozeile den User zu ermitteln, oder?
vielleichtz ein etwas außergewöhnlicher Weg, aber es gibt ja Variablen für bestimmte Sytempfade, so wie %systemroot%. Gibt es keinen Pfad zu den eigenen Dateien? Wenn der jetzt c:\Dokumente und Einstellunegn\Administrator\ lautet, dann ist es ja nicht ganz so schwer daraus den Benutzernamen zu extrahieren, oder? Weiß jemand ob es so eine Variable gibt und wie die lautet? Es geht doch auch garantiert über irgendeinen blöden Kommandozeilenbefehl!
Wenn alle Stricke reißen muß ich das halt manuell mit einem Cookie machen, aber das ist irgendwie keine gute Lösung.
Kennt sich da jemand mit aus?
Grüße
Andreas
Hallo,
Ich weiß, da gab es schon viele Threads und alle sagen das ist unmöglich. Mit geht es ausschließlich um Win2000 und WinXP user, das sollte das ganze schonmal vereinfachen. Der User steht natürlich auch ein keiner Umgebungsvariable des Webservers, aber es muß doch möglich sein über die Kommandozeile den User zu ermitteln, oder?
1. Selbst wenn das möglich wäre (Kommandozeile), müsstest Du erst Zugriff auf die Kommandozeile haben. Was Du brauchst, sind der IE und ActiveX (die kompilierte Sicherheitslücke ;) ) - die sind so unsicher, dass jedes ActiveX-Control auf die WinAPI-Funktionen zugreifen darf. Mit der WinAPI geht das sicherlich irgendwie (wenn Du Glück hast, kommst Du mit 10 Zeilen Code aus, aber nur, wenn Du Glück hast)
2. Alternative wäre, sofern der Webserver auf dem gleichen Server läuft, wie der Filesharing-Server und das zufällig auch noch Samba ist: Du patched Samba, damit es Deinem Webserver (bzw. CGI/Perl/PHP-Script) sagen kann, wer unter dieser IP einen Share verbunden hat, das ist dann auch der Benutzer, der eingeloggt ist.
Grüße,
Christian
Hi!
- Selbst wenn das möglich wäre (Kommandozeile), müsstest Du erst Zugriff auf die Kommandozeile haben. Was Du brauchst, sind der IE und ActiveX (die kompilierte Sicherheitslücke ;) ) - die sind so unsicher, dass jedes ActiveX-Control auf die WinAPI-Funktionen zugreifen darf. Mit der WinAPI geht das sicherlich irgendwie (wenn Du Glück hast, kommst Du mit 10 Zeilen Code aus, aber nur, wenn Du Glück hast)
Das lieber nicht.
- Alternative wäre, sofern der Webserver auf dem gleichen Server läuft, wie der Filesharing-Server und das zufällig auch noch Samba ist: Du patched Samba, damit es Deinem Webserver (bzw. CGI/Perl/PHP-Script) sagen kann, wer unter dieser IP einen Share verbunden hat, das ist dann auch der Benutzer, der eingeloggt ist.
Vielleicht eine Option für später, aber zur Zeit haben wir noch den Windows-Server. Aber ich habe ein wenig probiert und siehe da, der Benutzername steht - man mag es kaum glauben - in der Win2000 Umgebungsvariable %USERNAME%
Jetzt brauch ich nur noch einen weg, wie ich die Variabele dem Webserver übermittle, und dabei noch sicher stelle das eine Verknüpfung zwischen dem übertragenen Username und dem HTTP-Request besteht. Ich könnte das alles über eine Verknüpfung, oder eine Batch-Datei starten, nur ist mir nich nicht ganz klar, wie ich das zusammen übermittlen kann, vor allem das es dabei nicht so einfach manipulierbar ist, wie wenn ich es einfach in den Get-Request schreibe!
Das muß irgendwie unbemerkt passieren.
Jemand ne Idee?
Grüße
Andreas
Hallo,
Jetzt brauch ich nur noch einen weg, wie ich die Variabele dem Webserver übermittle, und dabei noch sicher stelle das eine Verknüpfung zwischen dem übertragenen Username und dem HTTP-Request besteht. Ich könnte das alles über eine Verknüpfung, oder eine Batch-Datei starten, nur ist mir nich nicht ganz klar, wie ich das zusammen übermittlen kann, vor allem das es dabei nicht so einfach manipulierbar ist, wie wenn ich es einfach in den Get-Request schreibe!
Das muß irgendwie unbemerkt passieren.
Es sei denn, Du kannst es Servertechnisch feststellen, ist der einzig wirklich _sichere_ Weg ein Programm mit verschlüsseltem Übermittlungskanal (und die Hoffnung, dass der User keinen Decompiler hat ;-)) Ach ja: Du _musst_ die WinAPI nehmen, da Umgebungsvariablen gefläscht werden können.
Grüße,
Christian
Hi!
Es sei denn, Du kannst es Servertechnisch feststellen, ist der einzig wirklich _sichere_ Weg ein Programm mit verschlüsseltem Übermittlungskanal (und die Hoffnung, dass der User keinen Decompiler hat ;-)) Ach ja: Du _musst_ die WinAPI nehmen, da Umgebungsvariablen gefläscht werden können.
Naja, leider kenne ich mich damit überheupt nicht aus, weiß noch nichtmal wo ich was dazu finde, dacht halt es gäbe eine einfachere Möglichkeit, was ich halt gerne vermeiden würde ist eine dopptelte Datenhaltung der Zugangsdaten.Und die Variante mit den Cookies ist auch alles andere als sicher!
Muß mal gucken ob sich der Aufwand lohnt!
Grüße
Andreas
Hi,
wenn das ganze im Intranet läuft und die User in der Domäne angemeldet werden (beim Login) und wenn Du die Winmdows-Authentifizierung für das Web verwendest, kannst Du das ja mit ASP lösen, der User steht dann in request.ServerVariables("LOGON_USER")
Gruss
Christian
Hallo!
kleiner Denkfdhler von mir, Client-Server... ich wollte gerade schreiben das ich die Lösung gefunden habe:
und zwar kann man einfach SET in die Kommandozeile eingeben, da bekommt man unter anderem den aktuellen USER angezeigt. Nur - natürlich ist das dann immer der User des Servers ;-) Also gehen auch die anderen angedachten Vrianten nicht.
Es sein denn - da es sich ja um eine Intranet handelt - ich stricke mir irgend ein kleines Tool, welches anhand der IP den Netzwerknamen ermittelt, und dann vielleicht remote den Kommandozeilenbefehl ausführt, und ich so an die Daten komme - oder sollte ich in der Richtung lieber nicht weiterdenken? Oder ich starte bei jedem Start des IE ein batch-Script welches besagten Usernamen auslist und mit der IP und Uhrzeit in eine Tabelle schreibt, denn leider haben wir einen DHCP Server, was zumindest diese Sache etwas verkompliziert ;-)
Das mit den Cookies ist nur immer so doof, die kann man löschen, die kann man vergessen zu verstellen, die kann man "klauen"...
Grüße
Andreas
Hallo Andreas,
da gibt es selbstverständlich einen erweiterten System-Interrupt der Netzwerkshell, mit dem man die aktuelle Connection-Number feststellen kann. Es gibt einen weiteren, mit dem man dann fragen kann, welcher Username mit der aktuellen Connection-Number verbunden ist. USW.
Nun frag mich aber bitte nicht, wie der bei Windows-Netzen heißt.
Außerdem musst du ein mehr oder weniger vollständiges Programm drum herumschreiben, damit dir das Betriebssystem nicht auf die Finger klopft.
Google doch mal unter "Networkinterrupts". So hießen die Bücher von Brown und Kyle
Obs ein fertiges Tool gibt, weiß ich auch nicht
Grüße
Tom
Hallo Andreas,
meinst du jetzt den User, dessen HTTP-Request gerade bearbeitet wird? Da der IIS immer unter dem Account IUSR_<Machinename> läuft, sofern du nix anderes angegeben hast, wirst du wohl keine Chance haben. Ausser mit Authentifizierung.
Gruß,
Martin