Autor Beitrag
stiftmaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Fr 16.09.05 19:22 
Hallo Leute,

für eine Programm möchte ich plink verwenden, um einen Tunnel zu einem Server aufzubauen. Dazu kann ich in der Kommandozeile (cmd.exe) folgendes eingeben, damit es klappt:

plink -ssh -l testuser -pw test -L 3306:127.0.0.1:3306 -batch HOST-P PORT

Dann erscheint im der Kommandoeingabe folgendes:

Using username "testuser".
Using keyboard-interactive authentication.
Last login: Fri Sep 16 20:08:41 2005 from 172.17.6.1
Have a lot of fun...
testuser@SERVER:~>

Solange ich die Kommandoeingabe nicht schließe, besteht der Tunnel zum Server.

Jetzt möchte ich das ganze in ein Delphi-Programm einbinden - und man soll von dem ganzen nix mitkriegen, soll heißen: Ich starte das Programm, klicke auf "Verbindung herstellen" und es wird eine Verbindung hergestellt. Klicke ich dann auf "Verbindung beenden" wird die Verbindung beendet.

Ich habe das mal mit meinem Wissen versucht umzusetzen, doch mit ShellExecute komme ich nicht wirklich weiter:

ShellExecute(0, 'open', 'd:\plink.exe', -ssh -l testuser -pw test -L 3306:127.0.0.1:3306 -batch SERVER -P 22"', '', SW_Hide);

auch

ShellExecute(0, 'open', 'cmd.exe', '/c "d:\plink.exe -ssh -l testuser -pw test -L 3306:127.0.0.1:3306 -batch SERVER -P 22"', '', SW_Normal);

führt nicht zum erfolgt. Beim ersten Beispiel wird zwar die Verbindung aufgebaut, dann das Fenster aber geschlossen und die Verbindung beendet sich. Beim zweiten Beispiel bleibt zwar die Verbindung bestehen, aber dafür hab ich so n' beschissenes Kommandozeilen-Fenster auf dem Monitor :-)

Weiß jemand von euch, wie ich das gebacken kriege?

Dankend

Stefan
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Fr 16.09.05 20:13 
Vielleicht hilft Dir das weiter: www.dsdt.info/tipps/?id=637

Indem Du das DOS selbst in die Hand nimmst... Weiss aber nicht, ob eine EINGABEAUFFORDERUNG erscheint. Sag Bescheid ob es funzt...
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 16.09.05 20:47 
Hm. ich hatte da mal ein Programm, das den kompletten konsolenoutput in eine TStringList schreibt, sobald shellexecute (war glaub ein anderer Befehl) fertig ist. Nicht von mir, gg aber... ich hab mal dashier gefunden:

www.delphi-forum.de/...light=console+output

Aber verdammt... warum ist dieses Programm nicht mehr da?! -.-

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.09.05 22:59 
user profile iconstiftmaster hat folgendes geschrieben:
und man soll von dem ganzen nix mitkriegen, soll heißen: Ich starte das Programm, klicke auf "Verbindung herstellen" und es wird eine Verbindung hergestellt. Klicke ich dann auf "Verbindung beenden" wird die Verbindung beendet.

Also mich macht das ziemlich misstrauisch. Warum darf ioch als Benutzer, der das ja irgnedwie selber und bewußt in Gang setzt nichts mitbekommen? Hinzukommt, dass du hier von tunneln sprichst. Also ich würde äußerst ungehalten reagieren, wen ich merken würde, dass du da eine versteckte Verbindung ins Internet hinter meinen Rücken aufbaust.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Fr 16.09.05 23:06 
da muss ich luckie ausnahmsweise ma recht geben. hört sich an wie nen key logger oder trojaner oder so was in der richtung.
stell bitte dein projekt richtig vor dass man sicher gehn kann dass du keine hintergedanken hast.
sorry wenn ich dir hier irgendwas unterstelle aber selbst wenn du nicht solche hintergedanken hast könnten andere auf die idee kommen das ganze für was nicht so schönes zu benutzen

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Fr 16.09.05 23:17 
Das wär natürlich noch nen Ding, er fragt uns Profis wie er ANDERE hacken kann... - Ja gutgläubig soll der Mensch sein - an das Gute denken
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 17.09.05 00:25 
Hallo!

Ich bin auch erst davon ausgegangen, dass hier irgendwas "böses" gemacht werden sollte. user profile iconKlabautermann hat mich aber überzeugt, dass das hier nur ein Missverständnis ist. Im Posting von user profile iconstiftmaster steht ja, dass der Nutzer erst einen Button klicken soll, um die Verbindung aufzubauen. Auch will er nur das Konsolenfenster verstecken, nicht das Fenster seines Programmes. Und zu guter leztzt würde man wahrscheinlich, wenn man was "böses" will, die Daten nicht per SSH übertragen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Sa 17.09.05 03:19 
Was Du suchst heißt RedicetConsole.

_________________
Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 17.09.05 03:22 
user profile iconHarry M. hat folgendes geschrieben:
Was Du suchst heißt RedicetConsole.

Hm, bist du sicher, dass du nicht RedirectConsole meinst? :-? Findet sich aber beides nicht im PSDK. Was soll das also sein?
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 17.09.05 10:18 
schreib das doch in ne batch datei und führe die dann mit shellexecute aus, das kannst auch temporär von deinem programm aus machen 8)
stiftmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Sa 17.09.05 10:36 
Hi,

das soll auf keinen Fall was böses sein - aber ich muss euch recht geben, dass man damit böse Sachen machen kann.

Hier zu meinem Projekt:

Meine Datenbank liegt hinter einer Firewall. Auf die DB habe ich nur per SSH Zugriff. Ich habe hier schon viele Vorschläge gelesen, dass man die DB-Abfragen über PHP auswerten lassen könnte - aber die Möglichkeit gefällt mir nicht. Daher mein Plan:

Ich baue (nachdem ich auf einen Button geklickt habe) eine SSH-Verbindung zu meinem Server auf, dann wird ein Tunnel zum DB-Server aufgebaut und darüber kann ich dann direkt meine DB-Abfragen regeln.

Da ich das Programm öfters am Tag starten muss, habe ich keine Lust, immer die Batch-Datei auszuführen oder aber beim Programm-Start immer ein Kommandozeilen-Fenster auf meinem Monitor zu haben => Daher soll das ganze nach einem Button-Klick verschwinden und ich will von dem ganzen nix sehen.

Ich habe mir da jetzt schon einiges zusammengecodet - soll ich das, wenn es fertig ist, hier veröffentlichen oder ist die Gefahr des Missbrauches zu groß? Nachdem ich hier jetzt sowas angezettelt habe, bin ich da lieber was vorsichtiger!!! :-)

Stefan
j-a-n@gmx.de
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 84


Delphi 7
BeitragVerfasst: Mo 02.04.07 10:56 
Ich nehme die Diskussion einfach mal wieder auf, da ich vor dem gleichen Thema stehe.

Meine MySQL ist einfach auf einem Webserver hinter der Firewall und lässt (gottseidank) keine direkte Verbindung zu. Also muss ich eine SSH-Verbindung zu dem Server mit einem Tunnel aufbauen, durch die dann auf die MySQL zugreifen und die Verbindung hinterher zumachen.

Erste Lösung meiner Wahl wäre natürlich eine Delphi-Kompo oder deine DLL die ich direkt ansprechen kann. Meine Suche danach war aber ziemlich erfolglos.

Also eröffnet sich meine zweite Möglichkeit, Putty (oder der Abkömmling ohne GUI Plink) zu benutzen. Also der Weg, der hier angesprochen wurde.

Gibt es dazu nun eine praktikable Lösung, also ohne CMD-Fenster und dass die Verbindung ordnungsgemäß wieder beendet wird? Ein kleiner Code-Schnipsel wäre schon Klasse.....

jan

_________________
--
Dieses Werk ist unter einer Creative Commons 3.0 Lizenz lizenziert und darf unter Namensnennung kopiert, weitergegeben, veröffentlicht und verändert werden.
stiftmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Mo 02.04.07 11:00 
Hi,

es gibt eine viel schönere Lösung: www.eldos.com/

Dies ist eine SSH-Komponente, die direkt in Delphi geschrieben ist. Diese lässt sich sehr gut in den Griff kriegen und der Support ist 1a. Darauf haben wir unsere gesamte Applikation umgestellt - macht schon Spaß.

Vielleicht hilft dir das ja weiter.

Bis dann

Stefan