remotezugriff
lima-city → Forum → Programmiersprachen → Basic
anfang
bild
code
datum
frage
freund
http
maus
netzwerk
problem
programm
rechner
server
stehen
tastatur
url
verbinden
verbindung
versenden
verwenden
-
Hi
also leider finde ich im Internet nix über das Verbinden von rechnern über die ip-adresse und wenn, dann nur weil einer fragt wie man den pc eines "Freundes" hacken kann und darauf natürlich keine Antwort bekommt.
Was ich machen möchte, ist ein Programm zu schreiben, was mich mit einem anderen Rechner verbindet und mir dann zugriff auf die Steuerung (also diesen remotezugriff) gibt. Auf diesem anderen Rechner soll dazu das Programm natürlich installiert sein.
Die verbindung soll auch nur aufgebaut werden, wenn der angefragte einverstanden ist. Doch das lässt sich ja kinderleicht realisieren.
Ich möchte also nur von meinem Rechner aus einen anderen steuern können.
Der Zweck der sache ist (und bitte kommt mir nicht mit ich wäre ein Hacker und wenn dann schon Cracker), dass ich meinem Freund der nicht gerade um die ecke wohnt am Computer sachen zeigen bzw direkt für ihn übernehmen kann, da dieser mich häufig wegen irgendetwas fragen muss und ichs ihm am Telefon schlecht erklären kann und es einfach eim einfachsten so wäre.
Klar gibts dafür Proggies aber ich möchte das unbedingt selber machen weil ich einfach den Spaß am Programmieren liebe und keine Lust hab fertige Proggs zu nutzen.
Das ganze wollte ich gerne in VB6 oder Phyton oder beidem machen.
Ich hoffe ihr könnt mir da ein paar Ansätze geben.
MVG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
An deiner Stelle würde ich das innerhalb deines Netzwerks zu Hause (also meist 192.168.0.xx) an zwei Rechnern testen. Wenn das funktioniert, dann kannst du es über das Internet genauso machen und musst auf dem "fremden" Router Port forwarding einschalten + evtl. dyndns verwenden, da sich dessen IP nach außen ja ständig ändert.
Grüße,
Prog -
Du willst also ein Programm schreiben, mit
1 ) Einer Funktion, um das System zu steuern
2 ) Soll das ganze über das Netzwerk laufen.
Der erste Punkt lässt sich gliedern in
1.) Maussteuerung
2.) Tastatursteuerung
3.) "Screenshots" schießen
Wenn du nach diesen Punkten Googlest, wirst du da schon etwas finden. Da du leider keine spezifischen Angaben gemacht hast, welchen BASIC-Dialekt du verwenden willst, kann man dir da nicht pauschal weiterhelfen.
In VB6 solltest du dich da mit Winsock beschäftigen - erstmal kleine Programme erstellen, wie einen kleinen Chat, um zu begreifen, wie das mit dem Datenverkehr funktioniert.
Danach kannst du dich mal mit Sendkeys beschäftigen und dich danach vielleicht mal daran setzen, erste kleine Programme zu schreiben, welche über das Netzwerk eine Tastatur fernsteuern.
Das mit der Maus kannst du dann über die API
machen. Damit ließe sich dann auch eine Maussteuerung über das Netzwerk realisieren.Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Wie du Screenshots erstellst, findest du hier.
Ansonsten bleibt nur noch zu sagen: Ich kann den Reiz verstehen, etwas "selbst" zu machen, aber es gibt - wie du schon richtig sagtest - diverse Software für solche Zwecke. Deine Software wird nicht annähernd an den Umfang dieser Projekte heran kommen. Beispielsweise musst du für solche Projekte erst eine Freigabe in der Firewall erteilen, eventuell den Router konfigurieren... Teamviewer umgeht all diese Probleme, bietet eine Bandbreitenoptimierung an und so weiter.
Falls du jedoch entgegen deiner Aussagen dies für illegale Zwecke verwenden willst, sei dir gesagt: Das ist kein Kavalliersdelikt. Für sowas wandert man schnell mal ein paar Jahre zum Gruppenduschen. -
Vielen Dank schonmal
Also Sendkeys und so hab ich relativ im Griff und wie ich eine Maus steuere weiss ich auch. Das Problem ist nur 1. Auf den anderen Rechner zuzugreifen und 2. Die Kontrolle über dessen Geräte zu übernemen, also alle Mausbewegungen die ich ausführe an meinem Rechner ungültig zu lassen und an seinem ausführen. Auf meinem Desktop sehe ich dann natürlich die Screenshots (wie ich sowas mache weiss ich auch schon) das Problem liegt nur in dem Verbinden mit dem anderen PC und dem Zugriff auf desen Maus und Tastatur über meine.
Nochmal im Klartext
- Ich muss die Rechner verbinden (1.Problem)
- es werden laufend Screenshots gesendet und bei mir im Vollbildmodus angezeigt. Zuvor wierd die auflösung des anderen Rechners ermittelt und bei mir angepasst (sollte kein Problem für mich darstellen)
- mmeine Maus und Tastatur werden auf meinem Rechner gesperrt, aber auf seinem Rechner ausgeführt (2.Problem)*
- MAus und Tastatur auf seinem Rechner werden gesperrt (kein Problem)
*Ich kann Maus und Tastatur auf meinem Rechner problemlos sperren, aber ich muss die Aktionen ja noch auslesen und weitersenden. Da liegt das Problem. Gleichzeitig muss auch seine Tastatur und Maus gesperrt sein, aber meine Befehle ausgeführt werden.
Das ganze möchte ich in vb6 machen.
Ich hoffe ihr könnt mir da weiterhelfen
MVG -
Fein, also:
SendKeys ist keineswegs das ultima ratio - aber halt ein Anfang. Am Ende solltest du dich da mit den jeweiligen Api's auseinender setzen. Aber gut - kommen wir zum Verbinden zum Rechner deines Freundes, was die ersten Schwierigkeiten darstellt.
Erstmal kannst du natürlich die einfachere Variante nahmen, dir eine dynamische dns bei dyndns besorgen zu dem der PC deines Freundes dann immer verbindet - dies würde zumindest die Konfiguration des Routers bei allen anderen Leuten entfallen lassen - du müsstest nur ein mal deinen router konfigurieren.
Dann gäbe es noch die Möglichkeit (um von DynDNS weg zu kommen) dass jedes Programm (also das bei dir und das bei deinem Freund) sich automatisch auf einer Webseite authentifiziert - also du praktisch eine art "Anmeldung" schreibst, der User eine bestimmte ID bekommt - das Programm authentifiziert sich dann bei der Webseite und hinterlegt so díe IP des Nutzers und ggf. ein Passwort. Dann braucht der Anwender nur noch die ID des Nutzers zu dem er verbinden will eingeben - das Programm verbindet dann wieder zu der Website, fragt ab, zu welcher ID welche IP gehört (ggf. falls das Passwort stimmt bekommt er dann auch eine Antwort) und verbindet dann zu der jeweiligen IP.
Zum verbinden: Am einfachsten geht das ganze über das Winsock steuerelement. In jedem Programm sollten davon zwei vorhanden sein.
Winsock1 wird beispielsweise auf "listen" gestellt, um eingehende Verbindungen zu überprüfen, dient also als "Server-Control". Winsock2 wird dann als "Client-Control" verwendet - es ist also fähig, zum Servercontroll eine Verbindung aufzubauen. Mehr zur Steuerung der Winsock-Controlls findet man in den tollen tutorials zum Thema "Chat", was ich weiter oben gepostet habe. Aber hier ein mal die Grundlagen. Initialisierung eines Server-Controlls:
Einfach, oder?winsock1.localpost = "12345" winsock1.listen
Dann die Verbindung vom Client zum Server:
winsock1.connect $ip, "12345"
Darauf folgt beim Server ein Connection-Request, welches schlicht "angenommen" wird. Dafür wird beim Server-Control(Winsock1) das Event "ConnectionRequest" ausgelöst.
Auch nicht sonderlich schwer.Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Winsock1.Accept requestID End Sub
Als nächstes sollen Daten hin und her gesendet werden, was auch einfach ist. Dafür modifizieren wir beispielsweise einfach die aktionen im ConnectionRequest-Event.
Welche Daten da versendet werden, sollte intuitiv zu begreifen sein.Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Winsock1.Accept requestID Winsock1.SendData "OK" End Sub
Nun geht beim Client nach einem ConnectionRequest ein Datenverkehr ein. Dadurch wird das Event DataArrival ausgelöst. Hier können die Daten dann via "getData variable" eingelesen und ggf. gleich verarbeitet werden. Beispielsweise könnte dann eijne authentifizierung mit einem passwort folgen.
Auch nicht die Hölle der Programmierwelt.Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) Dim daten As String Winsock2.GetData daten Select Case daten Case "OK": Winsock2.SendData "AUTH " & pass End Select End Sub
Danach wird dann der Datenverkehr fortgesetzt - je nach eigenen Ansprüchen.
Am besten fängst du damit an, dir ein Protokoll zu überlegen - also wie sollen die Daten übermittelt werden? Dabei kann man sich beispielsweise viel von bereits bestehenden Protokollen abschauen. beispielsweise könnte zuerst ein Statuscode übertragen werden, wie bei HTTP. Dabei überlegst du dir dann halt "100" könnte für "Request Angenommen" stehen. (Was prinzipiell nicht zwingend notwendig ist, aber der einfachheit halber hier ein mal aufgeführt) Ein "101" am Anfang könnte dafür stehen, dass die Authentifizierung angenommen wurde, ein "102" dafür, dass die Authentifizierung fehlgeschlagen ist und so weiter. Ein "200" könnte dann dafür stehen, dass nun die Daten eines Screenshots folgen, ein 201 könnte dafür stehen. dass Mausposition etc. übermittelt werden.
Wie du nun die Mausposition an den Client übermittelst sollte auch relativ einfach sein. Beispielsweise könntest du da mit einer Picturebox und dem Event "MouseMove" arbeiten. Hier werden dir X- und Y-Koordinaten der Maus auf der Picturebox übermittelt, sowie sogar welche Taste gerade gedrückt wird.
Ob du das Programm dann im Vollbild laufen lassen willst, würde ich mir noch einmal überdenken. Einfacher wäre beispielsweise, wenn du ganz einfach die Größe der Form (mit der Picturebox) an die Auflösung deines gegenüber anpasst. Dann musst du beispielsweise nicht gleich mit gruseligen Auflösungen von 800x600 arbeiten, nur weil dein Gegenüber das macht - sondern du arbeitest praktisch einfach im Window-Mode.Natürlich kannst du dein Programm auch in den Vollbildmodus strecken und dann immer eine ganze menge an der Mausposition rumrechnen, wenn sie übermittelt wird.
Hierzu sind mächtig viele Tutorials und Snippets im Netz unterwegs. Wenn du nicht einfach googlest nach "Wie mache ich ein Remote-Programm mit vb6?", sondern beispielsweise "vb6 picturebox über winsock versenden" findest du viele kleine snippets, welche du dann nur noch durcharbeiten, verstehen und deinen Wünschen anpassen musst.
Beitrag zuletzt geändert: 21.3.2010 9:47:03 von nerdinator -
Super!
Vielen dank für diese sehr sehr ausführliche Hilfe! Ich werde mich mal dransetzen und versuchen, ob ichs hinbekomme. Allerdings verstehe ich noch nicht ganz, an welcher Stelle ich diese Statuszahlen (100, 101, 102...) versenden muss. Ich werd mich nochmal über winstoc und so informieren und falls dann noch Fragen sind schreib ich wieder! Nochmal vielen dank für die intensieve Beschäftigung mit meinem Problem!!
MVG -
programtools schrieb:
Du "musst" gar keine Statuszahlen verwenden. Aber es vereinfacht beispielsweise die Interpretation von Daten. Beispielsweise sagst du, dass die ersten 3 gesendeten Byte für den Status zuständig sind. Dann sendest du nur noch "101[bilddaten]" und der empfänger weiss sofort: Jetzt kommt ein Bild. Oder du sendest "102[mausx][mausy]" und der empfänger weiss sofort, dass es sich dabei um Mauspositionen handelt. Du könntest auch das Prinzip von SMTP verwenden und beispielsweise 4 Buchstaben an den Anfang setzen - ist für den Anfang vielleicht einfacher zu durchschauen. Aber das Prinzip bleibt praktisch das gleiche: "AUTHpasswort" heisst dann gleich: Hier kommt ein Passwort. Oder "BILD[bilddaten]" zeigt ihm an, dass alles nach dem "Header" dann ein Bild ist. Damit ersparst du dir halt unnötig viel arbeit mit der interpretation der Daten. Du könntest auch einfach nur einen Byte reservieren, welcher ja bis zu 256 "Zustände" anzeigen kann.
Super!
Vielen dank für diese sehr sehr ausführliche Hilfe! Ich werde mich mal dransetzen und versuchen, ob ichs hinbekomme. Allerdings verstehe ich noch nicht ganz, an welcher Stelle ich diese Statuszahlen (100, 101, 102...) versenden muss. Ich werd mich nochmal über winstoc und so informieren und falls dann noch Fragen sind schreib ich wieder! Nochmal vielen dank für die intensieve Beschäftigung mit meinem Problem!!
MVG
Welches Prinzip du nehmen willst, ist natürlich dir selbst überlassen. Aber über sowas solltest du dir halt gedanken machen. -
Ok alles klar!
Doch wie nutze ich das winsock controll auf Vista richtig?? Ich kann es nicht auf meinem Vistarechner initialisieren und ich habe den Verweis auf den gleichen Pfad gemacht. Ist das falsch??
MVG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage