Seite 1 von 1

FTP Upload (server) Password sichtbar

Verfasst: 26. August 2006 11:47
von patrik08
Mit network sniffer habe ich gesehen dass ftp upload password sichtbar sind.... und in keine weise codiert werden....
( IMO hingegen imap , smtp-auth immer codiert sind... )

Gibt es eine variante zum server zu uploaden ohne dass pass zu zeigen?

Ich lade mit libcurl zum server ..... in einen "console" programm dass nur einen slot hat ( QTimer::singleShot(5000, this, SLOT(ShowTimer())); ) da dass programm immer aktiv ist .... wie ein cron job...

UploadFileServer("c:\image.jpg","ftp://user:pass@domain.ex:21/tmp/image.jpg");

Code: Alles auswählen

bool Qjobs::UploadFileServer( QString ftpfile , QString remotefile )
{
    
    curl_global_init( CURL_GLOBAL_ALL ) ;
    CURL *curl_handle = curl_easy_init() ;
    
    if( NULL == curl_handle ){
		return false;
	}
    QFileInfo QuoInfo(ftpfile);
    long fzize = QuoInfo.size();   /* file size */
    /* url =  ftp:{ftpfile} UploadFileServer function based on config  */
    /* url =  ftp:{login}:{password}@{host}:21{dated dir}{data remotefile}  */
    QByteArray lop = ftpfile.toAscii();
    QByteArray ba = remotefile.toAscii();
    char *localfile = lop.data();
    FILE *putfile;
    putfile = fopen(localfile, "rb");  /* binary image! */
    char *url = ba.data();
    /*
    qDebug() << "### localfile " << localfile;
    qDebug() << "### Puturl " << url;
    */
    /* handy for debugging: see *everything* that goes on */
    /* curl_easy_setopt( curl_handle , CURLOPT_VERBOSE, 1 ) ; */    /* open to debug to sea actions */
	// target url:
	curl_easy_setopt( curl_handle , CURLOPT_URL,  url ) ;
	// no progress bar:
	curl_easy_setopt(curl_handle,CURLOPT_NOPROGRESS , 1 ) ;
	// use passive FTP, if it's available
	curl_easy_setopt(curl_handle,CURLOPT_FTP_USE_EPSV , 1 ) ;
    curl_easy_setopt(curl_handle,CURLOPT_TIMEOUT , 10 );    /* put on server config qwidget */
    curl_easy_setopt(curl_handle,CURLOPT_UPLOAD , 1 );
	curl_easy_setopt(curl_handle,CURLOPT_INFILE , putfile );
    curl_easy_setopt(curl_handle,CURLOPT_INFILESIZE , fzize );
    /* make action */
    if (curl_easy_perform(curl_handle)==CURLE_OK) {
        curl_easy_cleanup( curl_handle );
	    curl_global_cleanup();
        return true;  
    } else {
        return false;  
    }
}


Verfasst: 26. August 2006 11:59
von BartSimpson
Mit network sniffer habe ich gesehen dass ftp upload password sichtbar sind.... und in keine weise codiert werden....
( IMO hingegen imap , smtp-auth immer codiert sind... )
Das ist aber witzlos, das es keine Sicherheit bietet, da es nur deswegen codert ist, um auch Zeichen zu übertragen, die nicht im 7 Bit Zeichensatz vorkommen. Schau mal in die RFC's das ist glaube ich Base64 kodiert.
Da muste denn schon was mit SSL machen:)

Verfasst: 26. August 2006 13:01
von caligano
BartSimpson hat geschrieben:[...]
Da muste denn schon was mit SSL machen:)
entweder FTP over SSL (komplette Verschlüsselung), Secure FTP (nur Authentifizierung verschlüsselt), oder gleich SFTP (eigenes, von FTP verschiedenes Protokoll); was du verwenden kannst, hängt auch davon ab, was dein Server unterstützt!

Verfasst: 26. August 2006 18:36
von patrik08
caligano hat geschrieben:
BartSimpson hat geschrieben:[...]
Da muste denn schon was mit SSL machen:)
entweder FTP over SSL (komplette Verschlüsselung), Secure FTP (nur Authentifizierung verschlüsselt), oder gleich SFTP (eigenes, von FTP verschiedenes Protokoll); was du verwenden kannst, hängt auch davon ab, was dein Server unterstützt!

SFTP / SSH ist super ....

Hast du ein beispiel .... wie man ein bild ... zum entfernten host bringt im SCP? oder ein ansatz wie? .... c++ qt4

IMO wie scp (shell) auf linux/mac geht kenne ich .... aber zu qt als console zu bringen ist sicher nicht das selbe....

Verfasst: 26. August 2006 18:57
von caligano
Ein ganz banaler Ansatz wäre QProcess;
Qt Documentation hat geschrieben: The QProcess class is used to start external programs and to communicate with them.

To start a process, pass the name and command line arguments of the program you want to run as arguments to start(). For example:

Code: Alles auswählen

        QObject *parent;
        ...
        QString program = "./path/to/Qt/examples/widgets/analogclock";
        QStringList arguments;
        arguments << "-style" << "motif";

        QProcess *myProcess = new QProcess(parent);
        myProcess->start(program, arguments);
QProcess then enters the Starting state, and when the program has started, QProcess enters the Running state and emits started().
Schau dir einfach mal die Docu an!

gleiche Frage, ähnliche Antworten in der Mailingliste:

http://lists.trolltech.com/qt-interest/ ... 047-0.html

Verfasst: 27. August 2006 00:06
von patrik08
caligano hat geschrieben:Ein ganz banaler Ansatz wäre QProcess;

l
Mit Linux / Mac "scp" QProcess; kann gehen .... um remote file zu transferieren......

Und Wie mache ich es mit der Window OS Kiste? eine neues console programm schreiben scp.exe?

IMO .... Banal ist Window! der immer eine extra wurst will um an die Microsoft Sekte noch mehr zu geld bringen!...Leider... Und Wir Arme Kerle mussen immer mehr Geld verlangen dass es auf diesem OS Gut Funktioniert...

Verfasst: 27. August 2006 09:52
von caligano
patrik08 hat geschrieben: Und Wie mache ich es mit der Window OS Kiste? eine neues console programm schreiben scp.exe?
naja, ein neues Programm musst net schreiben, gibt's ja schon :)

---> http://www.chiark.greenend.org.uk/~sgta ... nload.html (pscp.exe)
patrik08 hat geschrieben:IMO .... Banal ist Window! der immer eine extra wurst will um an die Microsoft Sekte noch mehr zu geld bringen!...
http://de.wiktionary.org/wiki/banal hat geschrieben: Bedeutungen:

[1] einfach, leicht

Gegenwörter:

[1] schwierig zu verstehen, kompliziert, schwer
:)