29.01.10, 17:40
|
#1 (permalink)
|
|
Mitglied Bronze
Registriert seit: Nov 2009
Beiträge: 43
Renommee-Modifikator: 1
|
Verschlüsselter FTP-Upload
Hi Leute!
Ich kann nun eine Datei ganz einfach auf einen FTP-Server hochladen mit folgendem Befehl:
|
Code:
|
My.Computer.Network.UploadFile( _
"test.txt", _
"ftp://ftp-server/test.txt", "user", "password", False, 25000)
|
Nun kann man aber mit Programmen wie SniffPass (loggt Netzwerkverkehr mit) ganz einfach den Benutzernamen bzw. das Passwort des FTP-Server herausfinden, auf den die Datei hochgeladen wird. So könnten fremde Benutzer meines Programmes die FTP-Daten meines FTP-Servers herausfinden.
Nun wollte ich fragen, wie man Benutzername und Passwort so verschlüsseln kann, dass die Datei ohne Probleme hochgeladen wird und gleichzeitig via z.B. SniffPass niemand das Passwort herausfinden kann...
MfG
Markus
|
01.02.10, 18:12
|
#2 (permalink)
|
|
admin | crazy-weasel
Registriert seit: Aug 2001
Ort: Österreich, Stmk, Graz
Beiträge: 2.626
|
AW: Verschlüsselter FTP-Upload
Bei FTP allein wirst kein Glück haben, da dieses Protokol nunmal unverschlüsselt ist. Eine Alternative wäre zum Beispiel FTP über SSL
Statt der von dir verwendeten Methode schau dir mal die FtpWebRequest Klasse an. Dort kannst du EnableSsl auf True setzen, und schon ist deine Verbindung gesichert.
Der FTP Server muss dies jedoch auch unterstützen.
lg,..
__________________
[SC:10] tutorials.de Skihasen - User auf der Piste! - Aktuelle Platzierungen
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet.
Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // BlogEngine.net Extensions
|
|
Folgender User bedankt sich bei Alexander Schuc:
|
|
02.02.10, 09:18
|
#3 (permalink)
|
|
Mitglied Platin
Registriert seit: Sep 2003
Ort: Kassel (Hessen)
Beiträge: 705
Renommee-Modifikator: 16
|
AW: Verschlüsselter FTP-Upload
Hey,
nur mal am Rande, auch wenn du die Tipps vom Alex beherzigst, kann der Benutzer deines Programmes trotzdem das Passwort rausbekommen!
Schau dir den .NET Reflector an.
Btw:
Hallo weasel =)
|
|
Folgender User bedankt sich bei Konstantin Gross:
|
|
02.02.10, 20:34
|
#4 (permalink)
|
|
Mitglied Bronze
Registriert seit: Nov 2009
Beiträge: 43
Renommee-Modifikator: 1
|
AW: Verschlüsselter FTP-Upload
Vielen Dank erstmal für die schnellen Antworten!
Ich habe nun FtpWebRequest verwendet (falls es das is, denke schon):
|
Code:
|
Dim clsRequest As System.Net.FtpWebRequest = _
DirectCast(System.Net.WebRequest.Create("ftp://server/test.txt"), System.Net.FtpWebRequest)
clsRequest.Credentials = New System.Net.NetworkCredential("user", "password")
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Dim bFile() As Byte = System.IO.File.ReadAllBytes("test.txt")
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
|
Ich verstehe aber leider nicht, wie ich das auf EnableSSL stelle (FTP-Daten lassen sich mit der obigen Version weiterhin herausfinden). Außerdem ist mir nicht ganz klar, was der .NET Reflector damit zu tun hat. Sry für meine Dämlichkeit was Visual Basic anbelangt 
|
02.02.10, 20:50
|
#5 (permalink)
|
|
admin | crazy-weasel
Registriert seit: Aug 2001
Ort: Österreich, Stmk, Graz
Beiträge: 2.626
|
AW: Verschlüsselter FTP-Upload
Wenn du auf EnableSsl klickt, hast ein Beispiel damit.
Konstantin meinte, dass sich das Passwort mit Reflector rausfinden lässt, da es in deiner Assembly (deinem kompilierten Programm) unverschlüsselt steht.
Wenn du das Programm nicht weitergibst, ist das jedoch kein Problem.
Hi Konstantin. Gratulation zum Sonderpreis bei den dotnet-snippets 
__________________
[SC:10] tutorials.de Skihasen - User auf der Piste! - Aktuelle Platzierungen
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet.
Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // BlogEngine.net Extensions
|
02.02.10, 21:31
|
#6 (permalink)
|
|
Mitglied Bronze
Registriert seit: Nov 2009
Beiträge: 43
Renommee-Modifikator: 1
|
AW: Verschlüsselter FTP-Upload
Ich habe den Einbau dieses EnableSSL in jeglichen Varianten ausprobiert, doch zeigt es mir bei der Ausführung des Programmes immer sofort einen Fehler an, obwohl in Visual Studio kein Fehler gefunden wurde.
Hier meine Version:
|
Code:
|
Dim instance As Net.FtpWebRequest
Dim value As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
value = instance.EnableSsl
instance.EnableSsl = value
Dim clsRequest As System.Net.FtpWebRequest = _
DirectCast(System.Net.WebRequest.Create("ftp://server/test.txt"), System.Net.FtpWebRequest)
clsRequest.Credentials = New System.Net.NetworkCredential("user", "password")
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Dim bFile() As Byte = System.IO.File.ReadAllBytes("test.txt")
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
End Sub
|
Folgender Fehler (beim Zugreifen auf "value = instance.EnableSsl"):
|
Code:
|
NullReferenceException wurde nicht behandelt.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
|
Ok, mit Programmen wie .NET Reflector tut sich da ein zweites großes Problem auf, da ich sehr wohl vorhabe, das Programm weiterzugeben. Es wird in Zukunft wahrscheinlich von einigen Tausend Leuten verwendet werden... Und ich übertreibe nicht. Würde mir also am Herzen liegen, wenn das Passwort auch mit .NET Reflector nicht herausgefunden werden kann, aber dafür muss ich wohl ein neues Thema aufmachen, oder? 
Vielen Dank einstweil
Geändert von Afritus (02.02.10 um 21:46 Uhr).
|
03.02.10, 15:56
|
#7 (permalink)
|
|
Mitglied Diamant
Registriert seit: May 2004
Ort: Europa
Beiträge: 1.602
Renommee-Modifikator: 19 
|
AW: Verschlüsselter FTP-Upload
Naja du hast noch kein FtpWebRequest-Objekt erzeugt, deswegen kommt der Fehler. Du musst das New-Keyword verwenden um eine Instanz zu erstellen! (oder System.Net.WebRequest.Create)
|
vbnet Code:
|
-
| clsRequest.EnableSsl = True
|
|
könnte funktionieren.
|
03.02.10, 18:00
|
#8 (permalink)
|
|
Mitglied Bronze
Registriert seit: Nov 2009
Beiträge: 43
Renommee-Modifikator: 1
|
AW: Verschlüsselter FTP-Upload
Hab das clsRequest.EnableSsl = True nun zur Sicherheit sogar mehrmals eingebaut. Wenn ich ein "New" vor instance.EnableSsl oder vor Value setze, zeigt er mir an, dass der jeweilige Typ nicht definiert ist. Und System.Net.WebRequest.Create ist doch schon drinnen:
|
Code:
|
Public Class Form1
Dim instance As Net.FtpWebRequest
Dim value As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
value = instance.EnableSsl
instance.EnableSsl = value
Dim clsRequest As System.Net.FtpWebRequest = _
DirectCast(System.Net.WebRequest.Create("ftp://server/test.txt"), System.Net.FtpWebRequest)
clsRequest.EnableSsl = True
clsRequest.Credentials = New System.Net.NetworkCredential("user", "password")
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
clsRequest.EnableSsl = True
' read in file...
Dim bFile() As Byte = System.IO.File.ReadAllBytes("test.txt")
clsRequest.EnableSsl = True
' upload file...
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
End Class
|
Danke
|
03.02.10, 18:38
|
#9 (permalink)
|
|
admin | crazy-weasel
Registriert seit: Aug 2001
Ort: Österreich, Stmk, Graz
Beiträge: 2.626
|
AW: Verschlüsselter FTP-Upload
|
Code:
|
value = instance.EnableSsl
instance.EnableSsl = value
|
Diese 2 Zeilen gehen aber erst nach dem du mit Create das Objekt erstellt hast, kannst aber auch ganz weglassen. 
__________________
[SC:10] tutorials.de Skihasen - User auf der Piste! - Aktuelle Platzierungen
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet.
Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // BlogEngine.net Extensions
|
|
Folgender User bedankt sich bei Alexander Schuc:
|
|
10.02.10, 09:45
|
#10 (permalink)
|
|
Mitglied Bronze
Registriert seit: Nov 2009
Beiträge: 43
Renommee-Modifikator: 1
|
AW: Verschlüsselter FTP-Upload
Eine Frage hätte ich noch, ist es möglich, ohne eine teure Library mit SFTP hochzuladen?
Also ein VB.NET-Code der eine Datei via SFTP hochlädt?
Vielen Dank
EDIT: Habs jetz doch hinbekommen. Falls es wen interessiert, es klappt sehr gut mit der kostenlosen Library SharpSSH.
Geändert von Afritus (10.02.10 um 12:28 Uhr).
|
|