![]() |
Netzwerk mit Delphi
HI
Ich hab folgendes Problem: Eine Delphi 5-Anwendung soll ein auf einem anderen PC installiertes Program aufrufen (also auf dem anderen PC starten), auf dass das Programm dann eine bestimmte Meldung zurückgibt, die auch an meinen PC verschickt wird. Ist des irgendwie möglich? (Eigentlich eine doofe Frage denn bei dem tausenden Trojanern, die es gibt, muss des einfach funzen) Und wenn JA: wie? ?: MfG doc ---- PS: Sch**** habs ins falsche Forum gepostet ( :oops: ; könnte des ein Mod verschieben, wenns net zu viel ausmacht?) [edit=FuckRacism]Verschoben in Inet; Hast es ja selber schon bemerkt :wink: [/edit] |
Hi
also eine Anwendung auf einem Anderen PC zu starten ist meineswissens nicht möglich ... aber wenn das Program schon installiert ist könntest du doch einfach im Hintergrund auf den Befehl per TCP/IP warten und dann wir das proggy aktiv! Und die Message zurück zu deinem PC kannst du dann ja auch wieder per TCP/IP machen Falls ich mich irre, von wegen starten auf anderem PC, dann belehrt mich eines besseren!! :oops: |
Hi doc,
es ist einfach so nicht möglich, dass ein Programm auf einem anderem Rechner zu starten. Das Prinzip eines Trojaners ist, dass er aus zwei Teilen beteht: der Server läuft auf dem Rechner, wo das Programm ausgeführt wird und der Client, der den Befehl zum Ausführen schickt. Du müsstest also ein zweites Programm schreiben, dass auf dem Zielrechner als Server fungiert. Wenn es z.B. einen String 'exec AnExecutable.exe' zugeschickt bekommt, dann startet es ShellExecute oder CreateProcess oder was auch immer und erhält den Rückgabewert, den du haben willst. Daraufhin sendet der Server wieder an den Client einen String, z.B. 'return exec AnExecutable.exe 1234567890'. Der wertet das dann aus. MfG, d3g |
des triffts ziemlich genau.
ich will zu einem programm des auf dem anderen rechner installiert ist und des aktiv ist, Verbindung aufnehmen, und des irgendein anderes Programm starten lassen, Die Frage ist: Wie kann ich des Quellcodmäßig machen (des Prinzip hab ich ja) MfG doc und danke für die schnellen Antwworten |
hm mit VB habe ich sowas mal mit der winsock komponente gemacht, allerdings konnte ich diese jetzt auf die schnelle unter delphi 5 nicht finden. Mit VB waren das nur wenige zeilen code solange du nur UDP und nicht TCP benutzt. Allerdings ist das nicht ganz ohne was du vorhast. Sowas kann schnell als trojaner enden und fals eine Firewall vorhanden ist wird dein Programm nicht laufen wenn du den Port den du benutzten willst nicht vorher von der Firewall freigeschalted wird
|
|
Hallo,
das Starten eines Programmes auf einem anderen Rechner demonstriert u.A. eine Anwendung von ![]() ![]() Der Austausch von Daten wiederum ist eine andere Angelegenheit :-) - dies wird ja zum Beispiel in dem von Thurgen zizierten Link bechrieben. |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Ich hab des jetzt mit dem Verbinden übers Netzwerk probiert, aber nach kurzem kommt ne Fehlermeldung (s.h. Bild.) und ich hab keine Ahnung woran des liegen könnte (wahrscheinlich mach ich grad einen typischen Anfängerfehler auf dem Gebiet aber sei´s drum...) Des mit dem psexec probier ich auch noch, aber erst muss ich mal ne gescheite netzwerkverbindung herstellen... MfG doc Ach übrigens: Ich hab noch gar nicht gesagtm, wozu ich des programm verwenden will, wenns fertig ist... Des soll mal sowas wie ein Netzwerk-Scanner werden, also kein Port-Scanner, sondern ein Programm, das den Scanner auf dem anderen Pc "bedient" und die Bilddateien gleich auf meinen Pc transferiert. PPS: Ich aberbeite mit Windows ME........ |
Moin Doc,
Fehler 11001 besagt: WSAHOST_NOT_FOUND Mit anderen Worten: Der angegebene Host ist unbekannt. (Originalmeldung von Windows (2000)) Wie sprichst Du denn den Rechner an? |
Moin Thurgen,
ich hab' mir mal Dein Tut angesehen: Es wäre besser das deaktivieren der Sockets jeweils im OnDestroy zu machen, da das OnClose nicht immer aufgerufen wird (z.B. bei Application.Terminate) |
Hi Christian
Na ich nehm einfach die IP im Netzwerk (in meinem Fall "192.168.0.1" die stimmt au) Des müsste duoch eigentlich gehen aber ich kanns auch mal über die Internet IP versuchen. das Dumme ist nur, die ändert sich dauernd... ... :coder:... :cry: geht au net(wär aber auch doof gewesen...) Ich hab grad wirklich keinen Plan, woran des liegen könnte :( . MfG doc --- Danke für die Hilfe!!! |
Hi doc,
zum testen eines Netzwerk Programmes würde ich den Client und den Server auf einem Rechner ausführen. Die IP des Rechners ist dann immer "localhost" also 127.0.0.1 Mfg Salomon |
Moin Zusammen,
ja, die 127.0.0.1 ist die Loopback Adresse. Wenn man Client und Server lokal testet, geht's allerdings auch mit der "normalen" IP-Adresse, oder, so man eine Namensauflösung eingerichtet hat, auch mit dem Namen des Rechners. (Zumindest bei der Verwendung von TClientSocket/TServerSocket). |
Mit 127.0.0.1 gehts aber eben net mit sowas wie 192.168.0.1 (o.ä.).....
MfG doc |
Moin Doc,
also bei mir geht's mit einer nicht öffentlichen Adresse. Könnte daran liegen, dass Du 192.168.0.1 hast. Wenn es geht, versuch's mal mit 192.168.1.1 |
Kann ich probieren aber:
Ne andere Möglichkeit wär mir lieber, da ich sonst unser gesamtes Netzwerk umkrempeln müsste.Und: 127.0.0.1 hat auch Nullen... Über andere Möglichkeiten "wär ich also erfreut". MfG doc |
Hi,
Zitat:
Gruß Hansa |
:shock:
Du aber au net (auf jeden Fall kapier ich net so richtig, was du meinst... MfG doc |
Hi,
wird bei Dir eigentlich automatisch eine IP-Adresse vergeben oder nicht ? Da würde ich mal anfangen zu suchen. Die 192.168....er IP-Adressen dienen dazu, diese MANUELL einzutragen !! Gruß Hansa |
Nene die lokal. Netzwerk 192.168.... hab ich schon manuell eingetragen...
Die Internet IP´s sind nat. dynamisch. MfG doc |
Moin Hansa,
Zitat:
Das zeigt nur ein Class C Netz mit privaten Adressen an. Ob ich die nun per DHCP verteile oder statisch spielt dabei doch keine Rolle. |
Hi Ihr alle!
Also ich hab mal das Tut ausprobiert, welches hier in diesem Thread gelinkt wurde, und das hat auch alles einwandfrei geklappt, auch über LAN, nicht nur über localhost. Jetzt hab ich also so ne kleine Anwendung geschrieben und hab eine simple Frage: 1. ich möchte nicht, dass die ip fest im Programm verankert ist, weil ich dann jedesmal, wenn sich die ip vom server ändert auch die ip umprogrammieren muss => umständlich. Jetzt habe ich natürlich schon statt einem fest einprogrammierten Wert eine text-input-zeile gemacht, und das klappt auch wunderbar, ABER! ich möchte, dass das Programm bei einer falsch eingegebenen IP, oder einem fehlgeschlagenen Connect-Versuch eine showmessage ausgibt, anstatt zu siffen, so dass man es erneut Probieren kann. Ich hab das dann mal mit try/except versucht, das Problem ist nur, dass das nicht funkioniert, weil die Anweisungen alle durchgeführt werden, während versucht wird die Verbindung aufzubauen, welches bedeutet, dass die Verbindung keinen Einfluss auf try/except hat. |
Weiteres Problem:
Für die Kommunikation zwischen den Programmen im Dialog, nicht nur im Monolog ist es ja auch von Nöten, dass ich vom server aus Daten an den Client schicke, was ja einfach wäre, wenn ich mit festen IPs arbeiten würde. Was ich mir vorstelle ist ein Tool, was gleichzeitig server und client ist und seine eigene ip beim connecten mitschickt. D.h. dass auf dem anderen PC auch das Tool läuft, ich schicke an dieses Tool meine eigene ip und baue eine Verbindung auf, woraufhin das Tool auf dem anderen PC eine Verbindung zu mir aufbaut. So, 1.: Geht das? 2.: Wie geht es? 3.: Ist das sinnvoll, oder geht es besser? 4.: Wie lese ich meine IP aus? Gruss Jan |
Hier beschreibt Mathias Simmack, wie man das IP-Adress-Eingebefeld benutz:
![]() Dann brauchst du dich schon mal nicht um die Kontrolle der Eingabe zu kümmern. |
zu Punkt 4. Deine momentane Internet IP liest du so aus:
Code:
Mfg Salomon
function GetLocalIPs: String;
type PPInAddr= ^PInAddr; var wsaData : TWSAData; HostInfo : PHostEnt; HostName : Array[0..255] of Char; Addr : PPInAddr; begin if WSAStartup($0102, wsaData) <> 0 then Exit; try if GetHostName(HostName, SizeOf(HostName)) <> 0 then begin result:=''; Exit; end; HostInfo:= GetHostByName(HostName); if HostInfo=nil then begin result:=''; Exit; end; Addr:=Pointer(HostInfo^.h_addr_list); if (Addr=nil) or (Addr^=nil) then begin result:=''; Exit; end; if not (copy(strpas(inet_ntoa(addr^^)),1,7) = '192.168') then begin result:=StrPas(inet_ntoa(Addr^^)); inc(Addr); end else begin inc(addr); while Addr^ <> nil do begin result:=StrPas(inet_ntoa(Addr^^)); inc(Addr); end; end; finally WSACleanup; end; end; |
Guten Tag,
@luckie: Das ist ja schön und gut, aber ist eigentlich nicht was ich suche, denn ob die ip Addresse von der Grammattik her richtig eingegeben ist garantiert ja noch lange nicht, dass es unter der ip auch einen server zu finden gibt, daher wollte ich das einfach so machen: der client probiert einfach aus, was immer er eingegeben bekommt, egal ob das nun eine ip Addresse ist, oder nicht, und checkt, ob er unter dem string zu einem server conn. kann, wenn nicht so gibt er eine "Connection failed" message aus. @Salomon thx, ist ja ne Menge aufwendiger als ich gedacht hätte, gleich mal ausprobieren. thx Jan |
@ Jan
Was für ne IP hast du denn in deinem Lokalen Netzwerk (um auf Christian´s Posting zurücktzukommen)? MfG doc |
Zitat:
Dann sende doch einen Ping an die Adresse. Wenn was zurückkommt, dann kanst du weitermachen im Text. Ansonsten brichst du ab. |
Moin Zusammen,
da man ja als Host auch den Rechnernamen angeben kann (entsprechende Namensauflösung über DNS Server oder LMHOST/HOSTS vorausgesetzt) könnte man auch an zwei Eingabefelder denken. Eines nur für IP Adresse, eines für Rechnernamen. |
Hi alle,
also das mit der Fehlerquelle reduzieren is ja schön und gut, aber dadurch kann es ja immernoch passieren, dass das Programm sifft, also müsste ich trotzdem den gegeneben Fall programmieren, dass der server nicht vorhanden ist. Zitat:
Zitat:
@ Salomon: Welche units muss ich einbinden, um bei deiner ip-Funktion nicht 1000 "Bezeichner Unbekannt"-Fehler zu bekommen? thx für alle Antworten bleibt mir gewogen :] Jan |
@ Jan: Sorry, hatte ich auf die Schnelle vergessen. Du musst noch die Unit "winsock" einbinden.
Mfg Salomon |
Ich glaub ich hab grad jemand getroffen , der so richtig genial ist...
Der nennt sich "Christian Seehase"... Naja auf jeden Fall hat das mit der IP 192.168.0.1 funktioniert... :bounce1: :dancer: :bounce2: :dancer2: :bouncing4: ---> Dankeschön MfG doc -------- *freu* |
Zitat:
auch schon gemerkt?!? :wink: :mrgreen: :hello: Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz