Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Like Tree3Danke
  • 1 Beitrag von Alexander Schuc
  • 1 Beitrag von Konstantin Gross
  • 1 Beitrag von Alexander Schuc
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
906
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    Hi Leute!
    Ich kann nun eine Datei ganz einfach auf einen FTP-Server hochladen mit folgendem Befehl:
    Code :
    1
    2
    3
    
    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
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    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,..
    Afritus bedankt sich. 
    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. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    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 =)
    Afritus bedankt sich. 
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

  4. #4
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    Vielen Dank erstmal für die schnellen Antworten!

    Ich habe nun FtpWebRequest verwendet (falls es das is, denke schon):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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
     

  5. #5
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    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
     
    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. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  6. #6
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    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 :
    1
    2
    
    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)
     

  7. #7
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    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)
    Code vbnet:
    1
    
    clsRequest.EnableSsl = True
    könnte funktionieren.
     
    hihi = -h²

  8. #8
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    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
     

  9. #9
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Code :
    1
    2
    3
    
    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.
    Afritus bedankt sich. 
    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. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  10. #10
    Afritus Afritus ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    54
    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)
     

Ähnliche Themen

  1. Upload Script - JPG KEIN Upload möglich
    Von Radanua im Forum PHP
    Antworten: 12
    Letzter Beitrag: 12.09.10, 21:32
  2. Antworten: 0
    Letzter Beitrag: 26.06.09, 19:36
  3. Verschlüsselter Webservice
    Von BillaBong im Forum PHP
    Antworten: 3
    Letzter Beitrag: 21.08.08, 10:22
  4. Hilfe! Kopieren verschlüsselter Unterverzeichnisse?
    Von Quiddle im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 16.05.08, 09:20
  5. Problem mit verschlüsselter Verbindung und Post-Php Scripten
    Von cameeel im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 08.03.07, 22:15