Steve: Systeminfo des Client? Mit Perl, ASP, PHP,ASP, ActiveX möglich?

Hallo zusammen,

ich möchte für eine Intranet-Anwendung folgendes realisieren:
Der User soll eine Link aufrufen und dann folgende Daten seines(!) Systems, nicht des Servers, angezeigt bekommen, wie:

1.) IP-Adresse
2.) Betriebssystem
3.) Browser
3.) Hostname
4.) Netzwerkkennung (Subnetzmaske)
5.) HW-Info: CPU, RAM
5.) Hersteller des Rechners und Typ

Mit ist klar, das es schon zig-Tools dafür gibt, die das können. Dies soll aber eine Anwendung sein, die diese Info ausgibt, ohne das auf dem Client erst was installiert werden muss und die einfach im Handling ist.

Folgende Lösungen mit Perl habe ich schon:
1.) $ENV{'REMOTE_ADDR'}
2.) $ENV{'HTTP_USER_AGENT'}
3.) $ENV{'HTTP_USER_AGENT'}

Aber wie kann man die "Restdaten" des Clients auslesen? Mit Perl, ASP, PHP oder ActiveX?

Danke schon mal für die Antworten,

Steve

  1. Hallo Steve

    Aber wie kann man die "Restdaten" des Clients auslesen? Mit Perl, ASP, PHP oder ActiveX?

    1. Wenn beim Apache HostnameLookups aktiviert ist, kann man bei PHP auf die Variable $_SERVER['REMOTE_HOST'] zugreifen. Ich denke mal, dass so etwas auch mit Perl gehen, würde vielleicht $ENV{'REMOTE_HOST'}?
      Ansonsten most du selbst die IP-Adresse nach einem Hostnamen auflösen.

    4.) Weiß ich nicht.

    5.) und 6.) Wirst du wohl per HTTP nicht rauskriegen, da ich keinen Webbrowser kenne, der Hardwaredaten ohne Konfigurationsänderung an den Server sendet.

    Schöne Grüße

    Johannes

    --
    This posting comes with ABSOLUTELY NO WARRANTY, to the extend permitted by applicable law.
    ss:| zu:) ls:[ fo:) de:] va:) ch:? sh:( n4:& rl:( br:< js:| ie:{ fl:( mo:}
    Selfcode? Was ist denn das? http://emmanuel.dammerer.at/selfcode.html
    1. Hi Johannes,

      danke für die Info.

      Vielleicht kann man 4.) 5.) mit WSH lösen. Bei MS ist doch alles möglich :-)

      Bye,

      Steve

      4.) Weiß ich nicht.

      5.) und 6.) Wirst du wohl per HTTP nicht rauskriegen, da ich keinen Webbrowser kenne, der Hardwaredaten ohne Konfigurationsänderung an den Server sendet.

      Schöne Grüße

      Johannes

  2. Moin!

    1.) IP-Adresse

    Die IP-Adresse weiß der Server, weil es dorthin die Request-Antwort schicken muß. Aber "dorthin" ist flexibel. Das kann auch ein Proxy-Server sein, oder ein Masquerading-Gateway. Du erhälst hier nur dann korrekte Ergebnisse, wenn du ausschließen kannst, dass sowas verwendet wird.

    2.) Betriebssystem

    Das Betriebssystem kann in der Angabe "User-Agent" des Browsers angegeben sein. Da diese Angabe aber mehr oder weniger freiwillig und beliebig änderbar ist, erhälst du auch hier nur dann ordentliche Ergebnisse, wenn du Manipulationen mehr oder weniger ausschließen kannst.

    3.) Browser

    Die Browser-Angabe steht ebenfalls im User-Agent. Siehe Punkt 2.

    3.) Hostname

    Basierend auf der IP-Adresse kannst du eine umgekehrte Namensauflösung machen, um einen Namen zur IP zu erhalten. Das muß nicht zwingend funktionieren, weil IP-Adressen nicht immer in Namen auflösbar sind und außerdem nur in einen von vielen Namen auflösbar sind, die alle auf die IP-Adresse verweisen.

    4.) Netzwerkkennung (Subnetzmaske)

    Die Subnetzmaske ist für einen Webserver irrelevant und außerdem nur ermittelbar, wenn der Client im gleichen Netzwerksegment angeschlossen ist, wie der Server. Dann kann der Server einfach seine eigene Subnetzmaske annehmen. Aber auch hier gilt: Man kann ohne Probleme unterschiedliche Subnetzmasken im gleichen Netzwerksegment verwenden. Wenn der Server seine eigene Subnetzmaske annimmt, muß die nicht zwingend etwas mit der tatsächlichen Einstellung auf dem Server zu tun haben. Außerdem wird in größeren Netzwerken auch der zentrale Switch gewisse Einflüsse haben, indem er virtuelle LANs bildet etc.

    5.) HW-Info: CPU, RAM

    Diese Informationen gibt der Client mit Sicherheit nicht preis.

    5.) Hersteller des Rechners und Typ

    Nochmal 5.? Egal, die Antwort ich auch dieselbe.

    Mit ist klar, das es schon zig-Tools dafür gibt, die das können. Dies soll aber eine Anwendung sein, die diese Info ausgibt, ohne das auf dem Client erst was installiert werden muss und die einfach im Handling ist.

    Du willst also ein Programm schreiben, welches man ohne Installation benutzen kann. Dann mach das doch einfach.

    Folgende Lösungen mit Perl habe ich schon:
    1.) $ENV{'REMOTE_ADDR'}
    2.) $ENV{'HTTP_USER_AGENT'}
    3.) $ENV{'HTTP_USER_AGENT'}

    Aber wie kann man die "Restdaten" des Clients auslesen? Mit Perl, ASP, PHP oder ActiveX?

    ActiveX wäre noch der geeignetste Kandidat, weil er auf dem Client läuft. Aber bedenke: Zugriff auf Systeminformationen erfordert möglicherweise ein signiertes ActiveX-Applet oder eine niedrige (und damit für das restliche Surfen gefährliche) Sicherheitsstufe, und es funktioniert nur mit dem IE. Und nur unter Windows.

    Wenn du eine etwas flexiblere Lösung haben willst, hast du clientseitig aber leider das Problem, dass du im Prinzip für jedes System eigene Methoden wissen mußt, um an die Informationen zu gelangen. Das ist ja auch das Attraktive an Webbrowserlösungen: Man muß nur HTML ausgeben, und das funktioniert auf allen Systemen. Nur kriegst du damit eben nicht alle Informationen, die du willst. Und das ist auch gut so.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hi Sven,

      ich habe gerade ein paar GetObject-Befehle in eine VBS-Datei definiert und diese gibt mir alle die gewünschte Info.

      Nun muss ich nur testen, das auch wirklich die Client Daten geliefert werden. Vielleicht ist vorher ein Upload des Skripts notwendig?

      Vielleicht kann ich diese Befehle ja nach ASP portieren!

      Wie gesagt, die Anwendung soll nur im Intranet laufen. Win und IE sind Standard.

      Bye,

      Steve

      ActiveX wäre noch der geeignetste Kandidat, weil er auf dem Client läuft. Aber bedenke: Zugriff auf Systeminformationen erfordert möglicherweise ein signiertes ActiveX-Applet oder eine niedrige (und damit für das restliche Surfen gefährliche) Sicherheitsstufe, und es funktioniert nur mit dem IE. Und nur unter Windows.

      Wenn du eine etwas flexiblere Lösung haben willst, hast du clientseitig aber leider das Problem, dass du im Prinzip für jedes System eigene Methoden wissen mußt, um an die Informationen zu gelangen. Das ist ja auch das Attraktive an Webbrowserlösungen: Man muß nur HTML ausgeben, und das funktioniert auf allen Systemen. Nur kriegst du damit eben nicht alle Informationen, die du willst. Und das ist auch gut so.

      - Sven Rautenberg

      1. Hi Steve,

        Wie gesagt, die Anwendung soll nur im Intranet laufen. Win und IE sind Standard.

        ... und Einfluß auf entsprechende Sicherheitseinstellungen des IE hast Du ebenfalls?

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
         => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.