![]() |
Overbyte FTPS und Datachannel
Hi,
ich versuche eine Datei mit Overbyte und FtpClient.PUT hochzuladen. Die Verbindung wird mit TLS aufgebaut. Ich kann auch Direcotrys erstellen. Aber nix hochladen. Es kommt immer 522 SSL/TLS required on the data channel. Ich habe schon ChatGPT bemüht aber da kommt nur Mist. Und bei google finde ich nicht wie ich den Daten Kanal Protecten kann. Ich hoffe jemand von euch weiß das. Vielen Dank im voraus |
AW: Overbyte FTPS und Datachannel
Hast du PBSZSize auf 0 gesetzt und PbszAsync ausgeführt sowie ProtLevel auf P gesetzt und ProtAsync ausgeführt?
Siehe Kommentar im Quelltext: Zitat:
|
AW: Overbyte FTPS und Datachannel
Hi, erstmal danke für die Antwort. Wenn ich ehrlich bin habe ich diesen Text nicht verstanden.
Ich möchte mal meinen Quelltext zeigen. Vielleicht kann dann jemand sagen (oder du) wo das rein muss. Erzeugen des FTPClient:
Delphi-Quellcode:
Upload:
function CreateFTPClient(Host,Port,User,Pass:String):Boolean;
begin Result:=True; try FTPClient:=TSslFtpClient.Create(nil); FtpClient.HostName :=Host; FTPClient.Port:=Port; FtpClient.UserName:=User; FtpClient.PassWord:=Pass; FtpClient.SslType:=sslTypeAuthTls; FtpClient.SslContext:=TSslContext.Create(nil); FtpClient.SslContext.SslVerifyPeer := False; // Kein Zertifikatscheck FTPClient.Passive:=True; FTPClient.Connect; except Result:=False; end; end;
Delphi-Quellcode:
function FTPUpload(FName:String):Boolean;
begin Result:=True; FTPClient.Binary:=True; FTPClient.LocalFileName:=FName; FTPClient.HostFileName:=FTPFName; if ( not FTPClient.Put ) then begin WriteLn(FTPClient.LastResponse); end; end; |
AW: Overbyte FTPS und Datachannel
Ich habe das mal eingebaut, so wie ich das meine. Kommt eine Execption ProtAsync.
Hier mal der Quellcodeteil:
Delphi-Quellcode:
Was mach ich nun wieder falsch?!?
FtpClient.Connect;
FtpClient.PBSZSize:=0; FtpClient.PbszAsync; Writeln(FtpClient.LastResponse); Sleep(1000); FtpClient.ProtLevel:='P'; FtpClient.ProtAsync; //<-- Hier kommt 'FTP component not ready, state Waiting Response' Writeln(FtpClient.LastResponse); |
AW: Overbyte FTPS und Datachannel
Async heißt async. ICS ist eventbasiert. Du musst auf die Antwort reagieren (nicht warten) statt direkt den Wert in LastResponse anzuzeigen und 1 Sekunde fest zu warten, während du den Thread blockierst.
Stattdessen musst du auf OnRequestDone reagieren. Dort bekommst du den ausgeführten Befehl übergeben und kannst bei RqType = ftpPbsz den Prot Befehl ausführen. |
AW: Overbyte FTPS und Datachannel
Hi,
erstmal danke für deine Hilfe. Ich habe das nun wie folgt eingebaut, aber im FTPLog steht immer noch: 2025-03-12 11:41:55,676 mod_tls/2.9.2[4886]: unable to open data connection: TLS negotiation failed Ich habe das wie folgt eingebunden:
Delphi-Quellcode:
Und im FtpClientRequestDone:
FtpClient.HostName := 'pc238.lan'; // FTP-Server-Adresse
FtpClient.UserName := 'ftpusr'; // FTP-Benutzername FtpClient.PassWord := '123456'; // FTP-Passwort FtpClient.SslType:= sslTypeAuthTls; FtpClient.SslContext:= TSslContext.Create(nil); FtpClient.SslContext.SslVerifyPeer := False; // Kein Zertifikatscheck FTPClient.Passive:=True; writeln('Verbinde mit FTP-Server...'); FtpClient.Connect; writeln('Verbunden!'); ReqDone:=False; FtpClient.PBSZSize:=0; FtpClient.PbszAsync; while ( not ReqDone ) do begin Application.ProcessMessages; Sleep(100); end;
Delphi-Quellcode:
Damit müsste ja sicher gestellt sein das die 2 sachen durch sind. Naja und beim FtpClient.Put kommt immer noch 425 (siehe FTPLog). Ist Falsch was ich gemacht habe? Oder fehlt noch etwas?
if ( RqType=ftpPbszAsync ) then begin
FtpClient.ProtLevel:='P'; FtpClient.ProtAsync; end else if ( RqType=ftpProtAsync ) then begin ReqDone:=True; end; Edit: Ich gehe über mitm und kann sehen das die eigenglich Verbindung über TLS läuft. Aber die Daten werden im Klartext gesendet. |
AW: Overbyte FTPS und Datachannel
Hallo,
ich mache es sehr ungern. Aber ich möchte doch nochmal nach fragen ob wirklich keiner eine Idee hat, was ich Falsch mache? Ich bekomme den Datenkanal nicht dicht. Bei Indy weiß ich das man nur ein Flag setzen muss. Aber weder bei ICS noch Synapse bekomme ich das hin. Es kommt beim versuch eine uploads immer:
Code:
Es wird dann eine 0 Byte Datei auf dem FTP angelegt und das war es. :(
425 Unable to build data connection: Die Operation ist nicht erlaubt
|
AW: Overbyte FTPS und Datachannel
Hier noch ein Log mit ICSLogger gemacht.
Code:
11:27:21:556 ! HighLevelAsync 0
11:27:21:601 Control DNS Lookup Done - 192.168.0.238 11:27:21:615 Control Socket Connect, error=0 to 192.168.0.238:ftp 11:27:21:668 >|220 ProFTPD Server (Debian) [192.168.0.238]| 11:27:21:668 ! HighLevelAsync 0 11:27:21:668 Start command, Req=AuthAsync - AUTH TLS 11:27:21:670 >|234 AUTH TLS successful| 11:27:21:702 ! HighLevelAsync 0 11:27:21:702 Start command, Req=UserAsync - USER ftpusr 11:27:21:703 >|331 Password required for ftpusr| 11:27:21:704 ! HighLevelAsync 0 11:27:21:704 Start command, Req=PassAsync - PASS 123456 11:27:21:776 >|230 User ftpusr logged in| 11:27:21:776 ! HighLevelAsync 0 11:27:21:776 ! HighLevelAsync done 11:27:26:432 Start command, Req=PbszAsync - PBSZ 0 11:27:26:577 >|200 PBSZ 0 successful| 11:27:26:579 Start command, Req=ProtAsync - PROT P 11:27:26:701 >|200 Protection set to Private| 11:27:26:702 Start command, Req=TypeSetAsync - TYPE I 11:27:26:860 >|200 Type set to I| 11:27:27:022 ! HighLevelAsync 0 11:27:27:022 Start command, Req=PortAsync - PASV 11:27:27:023 >|227 Entering Passive Mode (192,168,0,238,179,33).| 11:27:27:023 ! HighLevelAsync 0 11:27:27:023 Start command, Req=Put/Append - libssl-1_1.zip 11:27:27:025 ! Data Session opened (Put) 11:27:27:027 >|150 Opening BINARY mode data connection for file.zip| 11:27:27:028 ! Send first block 11:27:27:028 DataSocketPutDataSent 65536 11:27:27:032 ! Data Session closed 11:27:27:032 ! Next3PutAsync 11:27:27:033 >|425 Unable to build data connection: Die Operation ist nicht erlaubt| 11:27:27:034 Start command, Req=QuitAsync - QUIT 11:27:27:036 >|221 Goodbye.| 11:27:27:038 Control Socket Closed, error=0 |
AW: Overbyte FTPS und Datachannel
Kannst du das Log nicht mal mit Filezilla oder so vergleichen? Das gibt die Befehle ja auch aus.
Ich muss mal schauen, dass ich einen FTPS Server zum Testen aufsetze. Das sollte ja schnell gehen... |
AW: Overbyte FTPS und Datachannel
Hui,
danke erstmal. Ich hab ProFTP unter Debian genommen. Filezilla muss ich erst besorgen. Werde ich dir morgen bescheid sagen. Gruß und danke schonmal...:thumb: PS.: Emails scheinen immer noch nicht zu gehen, sonst hätte ich schneller geantwortet. |
AW: Overbyte FTPS und Datachannel
Welches Tool ist ja egal solange es die Befehle anzeigt.
|
AW: Overbyte FTPS und Datachannel
Hi,
tut mir leid das ich erst jetzt das log schicke.... Ich hoffe das Hilft weiter.
Code:
13:09:23 Status: Auflösen der IP-Adresse für pc238.lan
13:09:23 Status: Verbinde mit 192.168.0.238:21... 13:09:23 Status: Verbindung hergestellt, warte auf Willkommensnachricht... 13:09:23 Antwort: 220 ProFTPD Server (Debian) [192.168.0.238] 13:09:23 Befehl: AUTH TLS 13:09:23 Antwort: 234 AUTH TLS successful 13:09:23 Status: Initialisiere TLS... 13:09:23 Trace: TLS Handshake successful 13:09:23 Trace: Protocol: TLS1.2, Key exchange: ECDHE-X25519-RSA-PSS-RSAE-SHA256, Cipher: AES-256-GCM, MAC: AEAD, ALPN: ftp 13:09:23 Trace: Hostname does not match certificate SANs 13:09:23 Status: TLS-Verbindung hergestellt. 13:09:23 Befehl: USER ftpusr 13:09:23 Antwort: 331 Password required for ftpusr 13:09:23 Befehl: PASS ****** 13:09:23 Antwort: 230 User ftpusr logged in 13:09:23 Befehl: CLNT FileZilla 13:09:23 Antwort: 200 OK 13:09:23 Befehl: OPTS UTF8 ON 13:09:23 Antwort: 200 UTF8 set to on 13:09:23 Befehl: PBSZ 0 13:09:23 Antwort: 200 PBSZ 0 successful 13:09:23 Befehl: PROT P 13:09:23 Antwort: 200 Protection set to Private 13:09:23 Status: Angemeldet 13:09:23 Trace: Measured latency of 9 ms 13:09:23 Status: Starte Upload von C:\tmp\win32openssl-3_4_0.exe 13:09:23 Befehl: CWD / 13:09:23 Antwort: 250 CWD command successful 13:09:23 Befehl: TYPE I 13:09:23 Antwort: 200 Type set to I 13:09:23 Befehl: PASV 13:09:23 Antwort: 227 Entering Passive Mode (192,168,0,238,183,13). 13:09:23 Trace: Binding data connection source IP to control connection source IP 192.168.0.21 13:09:23 Trace: Trying to resume existing TLS session. 13:09:23 Befehl: STOR win32openssl-3_4_0.exe 13:09:23 Antwort: 150 Opening BINARY mode data connection for win32openssl-3_4_0.exe 13:09:23 Trace: TLS Handshake successful 13:09:23 Trace: TLS Session resumed 13:09:23 Trace: Protocol: TLS1.2, Key exchange: ECDHE-X25519, Cipher: AES-256-GCM, MAC: AEAD, ALPN: 13:09:25 Antwort: 226 Transfer complete 13:09:25 Status: Dateiübertragung erfolgreich, 188.459.949 Bytes in 1 Sekunde übertragen 13:09:25 Status: Empfange Verzeichnisinhalt für "/"... 13:09:25 Befehl: PASV 13:09:25 Antwort: 227 Entering Passive Mode (192,168,0,238,173,151). 13:09:25 Trace: Binding data connection source IP to control connection source IP 192.168.0.21 13:09:25 Trace: Trying to resume existing TLS session. 13:09:25 Befehl: MLSD 13:09:25 Antwort: 150 Opening BINARY mode data connection for MLSD 13:09:25 Trace: TLS Handshake successful 13:09:25 Trace: TLS Session resumed 13:09:25 Trace: Protocol: TLS1.2, Key exchange: ECDHE-X25519, Cipher: AES-256-GCM, MAC: AEAD, ALPN: 13:09:25 Antwort: 226 Transfer complete 13:09:25 Status: Anzeigen des Verzeichnisinhalts für "/" abgeschlossen 13:09:29 Status: Verbindung zum Server getrennt |
AW: Overbyte FTPS und Datachannel
Geht es vielleicht, wenn du SslContext.SslSessionCacheModes auf [sslSESS_CACHE_CLIENT] setzt?
Außerdem könntest du einstellen, dass der Logger mehr Details loggen soll. Man kann da den kompletten Handshake usw. loggen lassen. |
AW: Overbyte FTPS und Datachannel
Liste der Anhänge anzeigen (Anzahl: 1)
:(
Zitat:
Hier erstmal das Log. Ich wollte es nicht Posten weil es doch etwas länger ist. |
AW: Overbyte FTPS und Datachannel
Ah, Entschuldigung, das war ein Missverständnis, ich meinte die ICS Logs, um dort Fehlerdetails zu sehen. Dort kann man das Log auch so detailliert bekommen.
|
AW: Overbyte FTPS und Datachannel
Liste der Anhänge anzeigen (Anzahl: 1)
Kein Grund dich zu Entschuldigen. Ich hätte ja auch nachfragen können. :)
Hier nun das Log von ICS. Da ich nicht weiß wonach du suchst habe ich alle auf True gesetzt. Das ist wesentlich länger deswegen wieder als Anhang. Ich möchte mich schonmal im Vorfeld für deine Hilfe bedanken. |
AW: Overbyte FTPS und Datachannel
Hi, nach langem suche, ich wusste ja nicht wonach, habe ich es gefunden. Man muss das Commando EPSV schicken, dann bekommt man vom FTPServer einen Port der verschlüsselt ist und wo man die Daten hochladen soll.
Das ist ![]() |
AW: Overbyte FTPS und Datachannel
ICS verwendet für IPv6 wohl auch automatisch EPSV. Du solltest das mit SendCommand manuell schicken können.
Das erklärt aber auch, warum es bei mir keine Probleme gab, als ich es getestet habe. Das braucht man ja nicht immer. Ich wollte noch einen anderen Server versuchen. |
AW: Overbyte FTPS und Datachannel
Zitat:
|
AW: Overbyte FTPS und Datachannel
Ein solcher Unterschied in den gesendeten Befehlen wäre mir auch aufgefallen.
Hast du es einmal mit den Demos von ICS versucht, z.B. OverbyteIcsXferTst? |
AW: Overbyte FTPS und Datachannel
Zitat:
Aber es muss ja ohne gehen. Nur wie? |
AW: Overbyte FTPS und Datachannel
Hat wirklich keiner eine Idee was ich falsch mache? Ein Bug im Proftpd kann es eigentlich ja nicht sein, da sonst die anderen Clients (Filezilla, FlashFXP) auch nicht gehen würden.
Ich bin total ratlos und wäre für jede Hilfe dankbar. |
AW: Overbyte FTPS und Datachannel
Noch ein Nachtrag, vielleicht Hilft es. Unter Debian 10 laufen alle Clients (Synapse,ICS...) einwandfrei. So richtig verstehe ich das alles nicht. Von den Kommandos her machen die alle das gleiche. Genau wie Filezilla, FlashFXP. Die laufen ja auf Debian 10 UND Debian 12.
Debian 10 = ProFTPD Version 1.3.6 Debian 12 = ProFTPD Version 1.3.8 |
AW: Overbyte FTPS und Datachannel
Bei mir funktioniert es ohne weitere Befehle. Insofern kann ich den Fehler leider schlecht genauer anschauen. Ob das am Server oder deiner Umgebung liegt, weiß ich nicht.
:cry: |
AW: Overbyte FTPS und Datachannel
Ich glaube wir vergessen das und ich bedanke mich recht herzlich für deine Hilfe bei dem komischen verhalten. Ich habe mir gestern die aktuellen Proftpd Source gezogen und erstellt. Damit läuft es wieder.
Version: ProFTPD Version 1.3.10rc1 (gleich konfiguriert wie 1.3.8 und 1.3.6) Was halt nur so komisch ist, ist das es mit Filezilla/FlshFXP geht. Das hat "uns" wohl so ins stolpern gebracht. Ich weiß leider auch nicht welchen Server du versucht hast. Würde mich interessieren. Wenn es nicht der ProFTPd 1.3.8 war, der mit Debian 12 geliefert wird, läuft es und du kannst wirklich keinen Fehler finden. Ich sehe halt nur ein Problem wenn man einen Server bei einem Provider hat, und der wird wohl Debian 12 haben, das man per FTP nix machen kann. Sollte es dich trotzdem Interessieren kann ich die mal Zugang zu so einem FTP geben. Dann kannst du sehen das es nicht geht. Lass es mich wissen. Noch mal, vielen dank für deine Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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