Vollständige Version anzeigen : Anwendung mit php starten
Hallo!
Ich weis, in letzter Zeit stell ich viele OT-Fragen, aber habe wohl zur Zeit mein kreatives Tief :rolleyes:... Hoffe, dass mir das neue Jahr mal wieder einige Ideen bringen wird ;)...
Egal, ich hoffe ihr könnt und wollt mir trotzdem Helfen :) Also ich habe mir als nächstes Projekt zum Coden ein Web-Computerprogramm als Ziel gesetzt, mit dem man den eigenen PC von einem anderen PC aus überwachen kann. Das ganze soll für Leute dienen, die ihren eigenen PC als Server zur verfügung stellen wollen. Das Programm soll in php sein und ein Unterordner des für das Web freigegebenen Verzeichnisses sein. Natürlich passwortgeschützt, da ja sonst jeder darauf zugreifen könnte. Nun zu meinem eigentlichen Problem: Nur mit Php komme ich da nicht sehr weit: Die Infos, die ich brauche, kann man zum Großteil nur mit einem auf dem PC ausführbarem Programm bewerkstelligen: In meinem Fall (soll für Windows sein) einer .exe-Datei. Es soll dann in etwa so funktionieren: php ruft das Programm auf und wartet einige Sekunden. Das Programm wird ausgeführt und liest z.B. CPU-Temperatur aus. Diese schreibt es in eine Datei und beendet sich wieder. Das ganze sollte nicht länger als 3-4 Sekunden dauern. Solange wartet das php-Script. Dann leitet es auf die eigentliche Seite weiter, die dann die Temperatur aus der Datei ausliest und anzeigt. Das ganze habe ich auch mal in einer Grafik im Anhang niedergebracht.
Nun ist das einzige Problem: Ist es möglich, über PHP eine .exe-Anwendung zu starten? Um Safe-Mode und sowas braucht man sich keine Gedanken machen, ist ja nur für eigene Server gedacht und da können ja sämtliche Servervariablen beliebig geändert werden. Danke schonmal für eure Hilfe :)
Jonathan
Madman-Maniac
31.12.2007, 00:26
ähm.... eine PHP-Datei kann keine EXE aufrufen... Nur zum Download, aber das bringt nix...
Warum benutzt du nicht ganz einfach ein Remote-Control-Programm? und dazu Lavalys Everest Home ;) Dann kannst du dir das PHP-Script sparen :)
Aber Du könntest mit einer Art cron, Trigger, Semaphore, Flag etc. arbeiten.
Das heißt, Du hast auf Deinem Server einen (schlafenden) Dauerläufer,
der auf ein Ereignis wartet.
Das Ereignis kann zum Beispiel die Existenz einer Datei sein,
die Du ja mit php anlegen kannst.
Gruß
Micha
Verstehe, zum Beispiel ein Programm, dass ungefähr jede Sekunde überprüft, ob z.B. der Wert in einer Datei von 0 auf 1 geändert wird und dann ausgeführt wird... Daran hatte ich für den Notfall auch schon gedacht... Und es gibt sicher keine anderen Lösungen um das Programm direkt auszuführen? Bzw. eine bessere alternativ Lösung als die schon genannte?
Madman-Maniac
31.12.2007, 02:54
Es ist nunmal einfacher, etwas auf dem Client auszuführen, was sich auf den Server auswirkt, als anders herum.
Hmmm... mit nem Trojaner würde es evtl. klappen ^^ Aber davon rate ich ab ;)
Wäre ja noch schöner, wenn jeder von seinem Server aus unbemerkt auf den Clients Programme installieren und ausführen könnte.
Ja, ich weiß, du willst das nicht unbemerkt machen, aber vom Prinzip her ist's doch sehr ähnlich...
Nein, nein, du missverstehst mich. Ich will das Programm nicht auf dem Clientpc ausführen sondern auf dem Serverpc! Also Wenn ich meinen PC als Server freigebe, soll man von überall per Browser und Passwort diesen Serverpc verwalten können. Der Clientpc spielt im Grunde nur als "Fernbedienung" eine Rolle...
Aurgelmir
31.12.2007, 11:25
also wenn ich sowas vpr hätte würde ich folgendes tun
die benötigten Programme die das was du da machen willst in java schreiben ...diese java datein kannst du nämlich tollerweise auch über php steuern
das wird denke ich auch mit die einzige möglichkeit sein den ansonsten müsstest du am source der jeweiligen orginal progs fuschen um die gewünschten daten auslesen zu können so das du sie weiterverarbeiten kannst ...und dann musst du die daten ja noch irgendwie verarbeiten und das größte prob wird der sourcecode bei diversen MS progs sein
mfg
PS du kannst das ja mal versuchen
<?
exec('do.bat');
?>
///////do.bat//////////
@ECHO OFF
set var= [daten von php übergeben??]
cd c:\programme\fop
fop -xml 1.xml -xsl template1.xslt -pdf %var%.pdf
cd c:\programme\imagemagick
convert %var%.pdf %var%.jpg
///////end//////////
ist zwar für ein anderes problem aber evtl lässt sich das ja umbasteln
Vielleicht versteh ich Dich gerade falsch, aber ist alles was Du erreichen willst, den Inhalt einer txt per php auszulesen? Das ansich ist ja nicht schwer zu bewerkstelligen. Und die exe, welche die Datei füllt kannst Du doch einfach laufen lassen. Die überschreibt alle 5 sec die alte und gut. Das sollte nicht all zu viel ressourcen fressen. Falls die originale exe das nicht kann kloppst Du Dir halt n kleines script zusammen, daß die exe alle 5 sec aufruft.
Und wenn es um richtige Fernsteuerung geht würd ich mir mal VNC ansehen oder logmein.com ...
peter-seth
31.12.2007, 12:25
hallo Mefisto,
klar geht das, was du willst. einfach "exec" in php benutzen. details dazu in der online-hilfe: http://es2.php.net/manual/de/function.exec.php
aus den benutzerkommentaren zu der angegebenen seite geht hervor, dass das auch für windows funktioniert.
trotzdem halte ich die lösung mit dem cron-job (wie oben von Micha angeregt) für "besser" - du brauchst dann nämlich nicht "warten", bis das .exe-programm ausgeführt ist.
beispielsweise würdest du - sagen wir mal - alle halbe stunde das exe ausführen lassen. die datei mit den ergebnissen wird dann von deinem php-skript sofort gelesen und verarbeitet, ohne dass du warten musst.
damit sind deine ergebnisse immer höchstens eine halbe stunde alt. natürlich könntest du das auch alle 15 minuten oder so machen ...
unter windows benutzt du dafür die "aufgabenplanung" - allerdings habe ich eben beim testen auf meinem vista-system gesehen, dass man da als kleinstes intervall "täglich" einstellen kann ... das wäre für deine belange nicht das richtige ...
viel glück damit, peter.
So, nachdem ich mir über all eure Vorschläge hier Gedanken gemacht habe, habe ich ein denk ich fertiges Konzept auf die Beine gestellt. Es würde mich sehr freuen, wenn ihr mir eure Meinungen und Verbesserungsvorschläge unterbreiten könntet, damit ich dann in meinen verbleibenden zwei Wochen Ferien das Script auf die Beine stellen kann (durch das ganze Pogrammiergedingse werd ich mich wohl mehr schlecht als recht durchhangeln müssen :rolleyes:).
Der Benutzer tätigt auf der Seite in einer Art CMD bzw. (für alle Linux-Benutzer) Shell eine Eingabe. Diese Eingabe wird per PHP-Script in die Datei Befehl.txt gespeichert.
Auf dem PC überprüft eine Anwendung jede Sekunden, ob der Inhalt der Datei "Befehl.txt" ungleich "leer" ist. Sollte dies eintreten (was ja nach dem Speichern von PHP der Eingabe in dieser Datei logisch ist), liest die Anwendung den Text aus der Datei aus und überprüft, ob es sich dabei um einen validen Befehl handelt.
Durch diese Schritte wird effizient ein Befehl bzw. Text aus dem Client an die Anwendung auf dem Serverpc übergeben.
Im Fall, dass der Benutzer einen validen Befehl eingegeben hat, wird nun die mit diesem Befehl verknüpfte Funktion ausgeführt, wie z.B. das Auslesen der CPU-Temperatur. Diesen Wert schreibt die Anwendung nun in die Datei "Wert.txt".
Ein PHP-Script prüft ebenfalls jede Sekunde den Inhalt der Datei "Wert.txt". Sobald die Anwendung auf dem Serverpc mit der Aufgabe fertig ist und das Resultat in die Datei "Wert.txt" geschrieben hat, sollte dem zu folge das PHP-Script erkennen, dass die Datei "Wert.txt" nun einen Wert enthält und diesen Ausgeben.
Ein Anwendungsbeispiel (CPU-Temperatur):
Der Benutzer gibt "sv_cpu_temperature" ein. Dieser Wert wird mittels PHP in die Datei "Befehl.txt" geschrieben. Die Anwendung auf dem Serverpc erkennt in der sekündlichen Überprüfung, dass sich der Inhalt der Datei "Befehl.txt" geändert hat. Sie liest nun den Wert aus und überprüft, ob es sich um einen validen Befehl handelt. Es handelt sich hierbei um einen korrekt eingegebenen Befehl. Es wird also von der Anwendung die Temperatur des CPU ausgelesen. Nun schreibt diese diesen Wert in die Datei "Wert.txt". Das PHP-Script wartet seit der Benutzereingabe auf das Ergebnis der Anfrage, indem sekündlich der Inhalt der Datei "Wert.txt" überprüft wird. Nachdem die Anwendung auf dem Serverpc also die CPU-Temperatur in die "Wert.txt" geschrieben hat, erkennt das PHP-Script, dass nun ein Wert in der Datei steht und gibt diesen im Clientpc aus. Danach wird der Inhalt der "Wert.txt" vom PHP-Script gelöscht, um verwirrung bei der nächsten Befehlseingabe zu vermeiden.So, das wars mit dem Konzept :)
peter-seth
31.12.2007, 19:10
ich würd so was auf meinem computer nicht machen ... du öffnest ja tür und tor für jeden hacker, der das passwort knackt ...
gruss, peter
Naja, aber mein 12-Stelliges Passwort per MD5 verschlüsselt... MD% kannst du höchstens mit Bruteforce knacken und das dauert bei 12 Stellen keine Ahnung wie viele hundert Jahre, wenn du den besten Rechner der Weöt hättest selbst noch weit über deine Lebzeit...
Kurz zur Deffinition, auch wenn es OT wird: Bruteforce meinst, dass du sämtliche Möglichen Passwörter durchprobierst, z.B. aaa,aab,aac,...,baa,bab,...,bba,bbb,bbc, etc.
Die Berechnung für Möglichkeiten sieht dabei so aus:
Bei einer Stelle und 62 Möglichen Zeichen (abc..., ABC..., 123...):
1^62
Bei zwei Stellen:
1^62 + 2^62
usw. Da dies ganze sich expotentiell ausdehnt, verringert sich die Zahl z.B. von Stelle 7 auf Stelle 8 nicht etwa um das doppelte wie bei 7^62, sondern nimmt schon ungeheure Dimensionen an.
Hier mal die Möglichkeiten bei eienr Anzahl von 12 Stellen:
1^62 + 2^62 + 3^62 + 4^62 + 5^62 + 6^62 + 7^62 + 8^62 + 9^62 + 10^62 + 11^62 + 12^62
ergibt folgende Anzahl an Möglichkeiten: 81509844908964700000000000000000000000000000000000 00000000000000000
Also würde ich diese Sicherheitslücke einfach mal getrost ausschließen.
P.S.: Frooohes neues Jahr euch allen, hoffe ihr habt gestern schön gefeiert :D
Aurgelmir
02.01.2008, 11:52
dennoch bleibt das risiko das er mit glück gesegnet ist und es gleich beim ersten versuch schafft ^^
ich mein es gibt menschen die hacken die börse das pentagon etc .okay die werden das auf deinen rechner nciht abgesehen haben aber es geht ja auch nur darum das es machbar ist nichwa ^^
und so wie ich das jetzt verstanden habe willst du auch nur daten auslesen von deinem rechner zuhause (ka wofür) und keine programme ausführen und benutzen wie auf einem richtigen server oder? also wofür dann= willst du im urlaub gucken ob dein rechner zu hause zu heiss wird oder die hdd vol ist ? ändern kanste das ja dan eh nicht
Naja mit meiner Idee habe ich ja auch die Möglichkeit, Befehle zu implementieren, die das ändern, also Befehle, die aktiv etwasan meinem PC konfigurieren. Z.B. Das Offline-Schalten des Servers oder das Löschen von Dateien. Davon war aber auch von Anfang an die Rede, nur dass ich solche Dinge halt nicht als Beispiel genutzt habe ;)
peter-seth
02.01.2008, 13:37
und das passwort wird per SSL (also auf einem verschlüsselten kanal) übertragen?
sonst kann ein hacker dein passwort unterwegs abfangen ... ;)
und hat dein rechner "zu hause" immer eine feste IP-adresse? oder wie findest du den rechner im internet?
gruss, peter.
Naja ich habe eine dynamische IP, das heist, wenn ich das Internet neustarte wechselt sie... Aber solange der Server läuft habe ich logischerweise immer die selbe IP. Nur "Remote Neustart" wird also wohl nicht gehen, weil ich danach keine Kontrolle mehr hätte bzw. es ein fröhliches Ratespiel nach der IP wird ^^
Wobei dafür hätte ich auch eine Möglichkeit: Ein Programm, dass automatisch nach einem neustart die IP ermittelt und an einen externen Server überträgt, von welchem ich diese dann abrufen kann... Aber warum nicht gleich DynDNS ^^
peter-seth
02.01.2008, 13:46
Naja ich habe eine dynamische IP, das heist, wenn ich das Internet neustarte wechselt sie... Aber solange der Server läuft habe ich logischerweise immer die selbe IP.
das ist nicht logisch ;) das hängt nämlich vom provider ab.
einige wechseln die IPs nach einer gewissen zeit.
andere hängen dich einmal am tag für eine zehntel sekunde "ab" - danach hast du eine neue IP (und hast es kaum gemerkt ... ;))
und für das "fernsteuern von rechnern" gibt es doch genug fertige software - oder ... ;) :)
:rose: :rose:
vBulletin® v3.8.2, Copyright ©2000-2013, Jelsoft Enterprises Ltd.