Vielen Dank erstmal für dieses Forum. Ich habe als totaler Neuling in der Socket-Programmierung schon einige sehr gute Tipps hier gefunden und so manche Anregung für spätere Programmieraufgaben aufgetan.
Nun aber zu meinem Problem:
Ich will von der XBOX aus mit einem Python-Skript die Windows-Software PowerOff 3.0.1.3 ( http://users.pandora.be/jbosman/poweroff/poweroff.htm ) fernsteuern, die es erlaubt Rechner über ein Netzwerk herunterzufahren, in den Standby zu schicken und etliches mehr. Für mich ist der Standby interessant, daher dieses Skript.
Zu diesem Zweck habe ich mir erstmal mit Ethereal die Datenpakete angesehen, die zwischen zwei Windows-Hosts mit PowerOff beim Ausführen eines Remote-Events ausgetauscht werden. Daraus ergab sich der Inhalt (a-j), der unten im Skript angegeben ist. Beim sniffen der Pakete, die mein Skript erzeugt, stellte sich leider heraus, dass mein Skript wohl etwas zu simpel angedacht ist, da die TCP-Options leider nicht mit denen übereinstimmen, die PowerOff erwartet. Hier erstmal mein code:
Code: Alles auswählen
from socket import *
# Server IP-Adresse und Port
myServer = '192.168.1.20'
myServerPort = 5556
# Data der 10 Pakete für PowerOff 3.0.1.3
a = "VERSION"
b = "PASSWORD Luxor"
c = "ACTION STANDBY"
d = "WHO LOCAL"
e = "WHEN IMMEDIATE"
f = "SIMULATE OFF"
g = "RUNPRG OFF"
h = "FORCE OFF"
i = "CANCEL OFF"
j = "DO IT"
clientsocket = socket(AF_INET, SOCK_STREAM)
clientsocket.connect((myServer, myServerPort))
clientsocket.send(a)
clientsocket.recv(1024)
clientsocket.send(b)
clientsocket.recv(1024)
clientsocket.send(c)
clientsocket.recv(1024)
clientsocket.send(d)
clientsocket.recv(1024)
clientsocket.send(e)
clientsocket.recv(1024)
clientsocket.send(f)
clientsocket.recv(1024)
clientsocket.send(g)
clientsocket.recv(1024)
clientsocket.send(h)
clientsocket.recv(1024)
clientsocket.send(i)
clientsocket.recv(1024)
clientsocket.send(j)
clientsocket.recv(1024)
clientsocket.close()
Die Originale von PowerOff aber zusätzlich noch
"01 01 04 02" für "NOP NOP SACK permitted", weshalb PowerOff bereits mein erstes Paket ablehnt, keine Kommunikation zustande kommt und die gewünschte Aktion nicht ausgeführt wird.
Weiss vielleicht jemand, wie ich die TCP-Options in meinem Skript entsprechend verändern kann?
Für Hilfe wäre ich sehr dankbar, da Google und die Hilfe hier im Forum mir bisher nicht wirklich weitergeholfen haben.
Rayman[/url]