tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Afritus Afritus ist offline Mitglied Silber Afritus hat eine blütenweiße Weste
    Registriert seit
    Nov 2009
    Beiträge
    51
    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
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    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,..
    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

  3. #3
    Benutzerbild von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin Konstantin Gross ist ein sehr geschätzer Mensch
    Registriert seit
    Sep 2003
    Ort
    Kassel (Hessen)
    Beiträge
    702
    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 =)
    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 Afritus hat eine blütenweiße Weste
    Registriert seit
    Nov 2009
    Beiträge
    51
    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
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    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.
    Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // BlogEngine.net Extensions

  6. #6
    Afritus Afritus ist offline Mitglied Silber Afritus hat eine blütenweiße Weste
    Registriert seit
    Nov 2009
    Beiträge
    51
    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
    Benutzerbild von Shakie
    Shakie Shakie ist offline Mitglied Diamant Shakie ist einfach richtig nett Shakie ist einfach richtig nett
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    1.684
    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.

  8. #8
    Afritus Afritus ist offline Mitglied Silber Afritus hat eine blütenweiße Weste
    Registriert seit
    Nov 2009
    Beiträge
    51
    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
    Benutzerbild von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen Alexander Schuc genießt hohes Ansehen
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.729
    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.
    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

  10. #10
    Afritus Afritus ist offline Mitglied Silber Afritus hat eine blütenweiße Weste
    Registriert seit
    Nov 2009
    Beiträge
    51
    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. Antworten: 0
    Letzter Beitrag: 26.06.09, 19:36
  2. Verschlüsselter Webservice
    Von BillaBong im Forum PHP
    Antworten: 3
    Letzter Beitrag: 21.08.08, 10:22
  3. Hilfe! Kopieren verschlüsselter Unterverzeichnisse?
    Von Quiddle im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 16.05.08, 09:20
  4. Problem mit verschlüsselter Verbindung und Post-Php Scripten
    Von cameeel im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 08.03.07, 22:15
  5. upload über upload.aspx
    Von NightPain im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 25.07.06, 18:19

Lesezeichen

Lesezeichen