C# Passwort für FTP-Server

UID0

Lt. Commander
Registriert
Juli 2010
Beiträge
1.050
Ich stehe im Moment vor einem mehr oder weniger schweren Problem:
Ich habe in C# ein kleines Program geschrieben, was auf meinen FTP Server zugreift. Dieser ist jedoch mit einem Passwort geschützt.
Wenn ich nun mein Passwort als einfachen String übergebe, kann man das Passwort, wenn man die EXE mit dem Editor öffnet einfach auslesen.
Auch wenn ich es so Aufbaue:
PASS = PASS + "B";
PASS = PASS + "e";
PASS = PASS + "i";
PASS = PASS + "s";
PASS = PASS + "p";
PASS = PASS + "i";
PASS = PASS + "e";
PASS = PASS + "l";
Kann man das Passwort einfach lesen. :(

Wie kann ich das Passwort sicher machen, also dass keiner der die exe besitzt auch auf meinen Server zugreifen kann?:)

PS: Möglichst Framework 2
 
Wird das Password nicht sowieso in Klartext gesendet?
 
Ist bei FTP standard wenn nich keine Vershlüsselung verwendet wird. Von daher ist es wurscht obs in der Exe drinnen steht. Wer eine Exe ließt kann auch einen Sniffer bedienen.
 
NiCut unbedingt. Man kann SSL verwenden. Mir geht es eigendlich um die Datei selbst. Securestrings kann man ja nicht in Framework 2 nutzen.

SRy, binm mit IPod online.
 
Chriss000 schrieb:
Ich stehe im Moment vor einem mehr oder weniger schweren Problem:
Ich habe in C# ein kleines Program geschrieben, was auf meinen FTP Server zugreift. Dieser ist jedoch mit einem Passwort geschützt.
Wenn ich nun mein Passwort als einfachen String übergebe, kann man das Passwort, wenn man die EXE mit dem Editor öffnet einfach auslesen.
Auch wenn ich es so Aufbaue:
PASS = PASS + "B";
PASS = PASS + "e";
PASS = PASS + "i";
PASS = PASS + "s";
PASS = PASS + "p";
PASS = PASS + "i";
PASS = PASS + "e";
PASS = PASS + "l";
Kann man das Passwort einfach lesen. :(

Wie kann ich das Passwort sicher machen, also dass keiner der die exe besitzt auch auf meinen Server zugreifen kann?:)

PS: Möglichst Framework 2

Beschäftige dich mal mit Dotfuscator.
 
Zuletzt bearbeitet:
Blitzmerker schrieb:
Sonst wie wärs mit verschlüsseln?
Sollte mit .Net ja einfach gehen und dann nur die Binärdaten als Array ablegen und die wieder zruückentschlüsseln.

Wenn der Schlüssel im Quelltext steht bringt ihm das auch nichts. Solange er den MSIL-Code nicht obfuskiert kann mit jedem Reflector-Tool der Quelltext wiederhergestellt werden.

Ich hab mir zu diesem Zwecke eine einfache VB6-DLL zur Stringverschlüsselung geschrieben, die alten DLLs können nicht einfach so reflektiert werden.
 
Zuletzt bearbeitet:
Na ja, aber ein Obfuskator hilft auch nicht, das ist Mathematik.
Mal ne Frage, warum besitzt jemand ne exe, darf aber das PW nicht wissen? Ist ja wie ein Kopierschutz und die wurden alle geknackt.

Was mir in den Sinn kommt:
- Das PW von einem HTTPS Server abrufen.
- Das PW als Algorithmus definieren.
- Die exe nicht weitergeben.
- exe selbst als PW verwenden (SHA1 Hash).
 
Um euch erst einmal über den Sinn des Tools aufzuklären, es ist für ein Paar Freunde gedacht, zum Abgleich von mehreren Ordnern.
Das mit der vb6 dll ist gar keine so schlechte Idee. Leider kann ich jedoch kein Vb6. Wie erstelle ich eine, wie binde ich sie ein und könntest du mir das Grundgerüsst geben? :)

Achso und danke für die vielen Antworten! ;)
 
VB6 dlls zu benutzen halte ich für alles andere als ne kluge Idee, afaik hat MS den Support für ganzen Runtime-Kram aus den 64-bit Versionen von Win7 und folgenden gestrichen.

@topic:
speicher irgendwas als "pw" in ne Textdatei und lass das Programm das einlesen und davon nen hash als ftp-pw benutzen. ;)
 
Guter Einwand, Blutschlumpf. Auch deine Idee mit dem Hash ist nicht übel. Grundsätzlich halte ich es aber immer für sinnvoll Quelltext zu obfuskieren sobald vertrauenswürdige Daten über das Programm laufen.
 
Mal angenommen du machst folgendes:

1. Das Passwort für den FTP Server verschlüsselst du mit einem Hash eines 2. Passworts. Den verschlüsselten Text kompilierst du in deine EXE Datei.

2. Das 2. Passwort fragst du bei Programmstart ab, bildest den Hash und verwendest den Hash um das FTP Passwort zu entschlüsseln.

Den Hash kompilierst du nicht in die EXE, das FTP Passwort liegt verschlüsselt in der EXE. Somit wirds nur für den möglich das FTP Passwort rauszufinden, der das 2. Passwort kennt, was ja deine Freunde sind denen du zumindest etwas vertrauen kannst.
 
Lege auf deinem FTP Server verschiedene Benutzerkonten an und frage die Daten vor dem Verbinden ab.
 
Wenn ich das mit den Hash mache, verändert sich doch der bei jeder Quellcode Änderung, oder? Wie soll ich den dann als Passwort für den Server festlegen?:rolleyes:
 
Kann man das Automatisieren?

Andere frage, mir ist gerade aufgefallen, dass ich nicht außerhalb meines Netzwerkes auf den Server zugreifen kann. Warum? Kann mir jemand eventuell ne Anleitung dafür schicken?;)
 
Vermutlich wegen NAT. Ich würde empfehlen, dir Grundlagen anzueignen, bevor du das umsetzt, was du vorhast.
Auch solltest du, anders als die anderen hier sagen vernünftige Benutzerkonten anlegen und keinen Murks
daherfrickeln, den du selbst nicht verstehst.

€:
Und noch was. Du schreibst oben "Ja wenn das Passwort ausgelesen werden kann, nehm ich einfach SSL".
Diese leichtfertigkeit, mit der du das sagst, lässt vermuten, dass du dich mit SSL noch nie richtig befasst
hast.

Dein SSL-Fähiger Client muss verifizieren, dass das Zertifikat, das der Server anbietet gültig und vertrauens-
würdig ist. Es mag sein, dass .NET da irgend einen Murks anbietet, der vortäuscht, das zu tun, aber es ist
höchstwahrscheinlich nicht der Fall und du musst das selbst bauen. Nur weil .NET ein Zertifikat vertrauens-
würdig findet mag, heißt das noch lange nicht, dass es das auch ist.

Außerdem musst du natürlich auch erst einmal ein gültiges und vertrauenswürdiges Zertifikat bekommen,
was in der Regel nicht gerade billig ist. Auch kann man, ohne sich viel damit beschäftigt zu haben, nicht ohne
Weiteres sagen, ob das Zertifikat den Ansprüchen genügt, die man hat.

Für Näheres empfehle ich dieses lustige Filmchen, nach dessen Konsum ich SSL wirklich nicht mehr gern
verwenden möchte. Egal wofür. Es ist haarsträubend.
http://media.ccc.de/browse/congress/2010/27c3-4121-en-is_the_ssliverse_a_safe_place.html
 
Zuletzt bearbeitet:
und wie bekomme ich das mit dem NAT gerade gebogen? Im moment habe ich einen USER mit einem PASSWORT. Habe bei meiner Firewall alle Ports sowohl bei Eingehende als auch Ausgehende Verbindungen eingetragen. In meiner FritzBox 7390 steht auch bei Portfreigabe alle Ports drin.:)
 
Zurück
Oben