Forum: PC-Programmierung Remotezugriff mit Python(? )erkennen und darauf reagieren.


von Eric (Gast)


Lesenswert?

Guten Morgen,
ich würde gerne wissen ob euch eine Möglichkeit einfällt wie ich, 
beispielsweise mittels einem Pythonscript, überwachen kann ob sich ein 
Benutzer per Remotedesktopverbindung auf eine Maschine (Windows7/10) 
eingeloggt hat?

Ich gehe davon aus ich müsste einen Port überwachen der wenn niemand 
eingeloggt ist, aktiv ist. Aber diese Ports "lauschen" ja auch die ganze 
Zeit ob da jemand anklopft.

Wenn das Script dann einen Remotezugriff erkannt hat, möchte ich 
(vermutlich über einen Arduino etc.) einfach nur eine Lampe einschalten, 
so dass man von außen erkennen kann ob bereits jemand eingeloggt ist.

Ich würde mich über eine Antwort freuen und bedanke mich im Voraus.
Eric

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Mit dem "netstat"-Kommando kann man sich aktive Verbindungen anzeigen 
lassen. Eventuell könnte die Ausgabe des Kommandos helfen.

von Eva (Gast)


Lesenswert?

RDP ist Port 3389

von funker1 (Gast)


Lesenswert?

Windows RDP sollte niemals offen im Internet erreichbar sein. Immer mit 
VPN.

von Eva (Gast)


Lesenswert?

funker1 schrieb:
> Windows RDP sollte niemals offen im Internet erreichbar sein.
> Immer mit
> VPN.

Man kann RDP auch durch SSH tunneln, hat den Vorteil, dass man das 
Public-Key-Verfahren nutzen kann

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Eric schrieb:
> ich würde gerne wissen ob euch eine Möglichkeit einfällt wie ich,
> beispielsweise mittels einem Pythonscript, überwachen kann ob

Remote oder lokal?

Check das: http://woshub.com/rdp-connection-logs-forensics-windows/

: Bearbeitet durch User
von Eric (Gast)


Lesenswert?

Hallo,
ich habe es jetzt so gelöst:

          ergebnis=os.system('netstat -n | find "3389"')

Das "ergebnis", sprich ob der Port offen ist, ist entweder 0 oder 1 und 
wenn er 0 ist mache ich dieses und wenn er eins ist mache ich das andere 
:-)

Vielen Dank für eure Hilfe.

von Imonbln (Gast)


Lesenswert?

Eric schrieb:
> ich würde gerne wissen ob euch eine Möglichkeit einfällt wie ich,
> beispielsweise mittels einem Pythonscript, überwachen kann ob sich ein
> Benutzer per Remotedesktopverbindung auf eine Maschine (Windows7/10)
> eingeloggt hat?

Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das 
Kommando "who -T" unter Windows gibt es sicher was Ähnliches. Das 
Internet sagt: "query user" sollte das können.
Vielleicht macht es mehr Sinn sich das Kommando anzusehen. Statt mit 
os.system andauert netstat aufzurufen.

Ansonsten, wenn es deine Python/Netstat Lösung sein soll. os.system ist 
meistens das falsche, besser subprocess.popen benutzen.

Wenn du eine reine Python Implementierung willst das PIP Module psutils 
behauptet, auch unter Windows alle offenen Ports zurückgeben zu können.

von Karl (Gast)


Lesenswert?

Imonbln schrieb:
> Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das
> Kommando "who -T" unter Windows gibt es sicher was Ähnliches.

Es ist aber nicht gefragt, wer angemeldet ist, sondern ob jemand remote 
angemeldet ist.

Imonbln schrieb:
> os.system ist
> meistens das falsche, besser subprocess.popen benutzen.

Begründung? Meist? Vielleicht hier doch das richtige?

von Nur_ein_Typ (Gast)


Lesenswert?

Karl schrieb:
> Imonbln schrieb:
>> Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das
>> Kommando "who -T" unter Windows gibt es sicher was Ähnliches.

...oder w(1)...

> Es ist aber nicht gefragt, wer angemeldet ist, sondern ob jemand remote
> angemeldet ist.

Das läßt sich unter Linux mit den ausgegebenen Daten von w(1) oder 
who(1) recht einfach herausfinden, wenn man denn so unelegant sein will, 
ein externes Programm aufzurufen. Wesentlich eleganter, weil pythonisch 
und plattformunabhängig, ist natürlich so etwas wie
1
import psutil
2
connected_users = filter(lambda x: x.host != 'localhost', psutil.users())

Dabei ist allerdings zu beachten, daß "psutil" kein Standardmodul ist, 
sondern separat installiert werden muß, etwa mit pip -- und das 
natürlich idealerweise isoliert von der systemweiten Installation in 
einer virtuellen Umgebung, wie sie mit "virtualenv" oder "venv" erstellt 
werden kann.

> Imonbln schrieb:
>> os.system ist
>> meistens das falsche, besser subprocess.popen benutzen.
>
> Begründung? Meist? Vielleicht hier doch das richtige?

Die Dokumentation von os.system: "The subprocess module provides more 
powerful facilities for spawning new processes and retrieving their 
results; using that module is preferable to using this function."

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.