Listboxeintrag mit passwort schützen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Listboxeintrag mit passwort schützen

    Moin
    Ich habe eine Listbox mit einträgen, die als Navigation für eine Textbox dient.
    Gearbeitet wird mit txt dateien.

    Nun möchte ich einen Textboxeintrag mit privaten infos erstellen.
    Dieser eintrag soll in der textbox nur angezeigt werden, wenn man in einer inputbox das richtige passwort eingibt.

    Soweit so gut, dies würde ich gebastelt bekommen.

    Was aber wenn ein Fuchs die Datei über windows manuell sucht?

    Auch da kann man ja dateien und ordner über passwort schützen.

    Frage: wenn ich die datei über windows mit passwort schütze, kann ich die dann überhaupt über c# noch beschreiben und aufrufen?
    Ps: kann man in visual studio strings verschlüsseln, dass sie auch im code nicht zu finden sind?

    Danke LG

    Visual_Prog schrieb:

    wenn ich die datei über windows mit passwort schütze, kann ich die dann überhaupt über c# noch beschreiben und aufrufen?
    Wie genau willst Du unter Windows eine Textdatei mit Passwort schützen?

    Visual_Prog schrieb:

    kann man in visual studio strings verschlüsseln, dass sie auch im code nicht zu finden sind?
    Sicherheitskritische Daten wie Passwörter gehören einfach nicht in den Code. Du kannst sie xfach verschlüsselt in einer Datei speichern. Aber Ver- und Entschlüsseldaten müssen immer nur direkt oder indirekt durch die Eingabe von Daten durch den User erhältlich sein. Ohne diese Vorgabe hast Du immer eine Situation, die es anderen erlaubt, auf Deine Daten zuzugreifen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Visual_Prog Du hast da wohl einen Denkfehler drin. Wenn das nur angezeigt werden soll wenn der Nutzer das richtige Passwort eingegeben hat, warum willst du das Passwort dann im Code haben? Wenn du nun sagst zum vergleichen, dann sage ich, nimm VeraCrypt oder normale mit Passwort geschützte Archive und lass solche Sicherheitsrelevanten Sachen sein, bist du das wirklich verstehst, so kannst du nicht mal was annähernd sicheres hinbekommen.
    @Visual_Prog Nimm zwei DataSources, die sich in diesem Eintrag unterscheiden, die Du der ListBox entsprechend zuweist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VaporiZed ja da hast du einen guten Einwand gebracht, das geht gar nicht einfach so über Windows^^

    @BitBrösel danke für den Hinweis werde mir evtl. VeraCrypt auf dem Rechner ziehen

    @RodFromGermany würdest du mir evtl näher beschreiben, wie dein Vorhaben umzusetzen wäre? Ich habe noch nie eine Datasource angelegt, geschweige den diese an eine listbox zugewiesen :/ hoffe dass es trotzdem für das Vorhaben reicht mit den Kenntnissen^^

    das habe ich bis jetzt (Ziel ist das der String "findewort" entweder verschlüsselt oder versteckt wird oder einfach nicht kenntlich ist).

    C#-Quellcode

    1. public void LadeTextBoxen()
    2. {
    3. string eintrag;
    4. eintrag = listBox1.GetItemText(listBox1.SelectedItem);
    5. if (eintrag.ToLower() == "persönliches")
    6. {
    7. string boxprüft = Interaction.InputBox("Bitte geben Sie das Passwort ein: ", "Wort suchen");
    8. if (boxprüft != "findewort")
    9. {
    10. return;
    11. }
    12. }
    Nein, das geht nicht. Du kannst findewort - in welcher Form auch immer - nicht im Code belassen, ohne dass jemand Unbefugtes an die Daten kommt.
    Der nächste Punkt ist: Was kommt ab Zeile#19? Wenn dort geheime Sachen im Code stehen, dann braucht man noch nicht mal das Passwort. Man zerlegt die EXE mit ILSpy und hat die Infos, die geheim sind.
    Wir wissen zwar nicht, wie das Ganze am Ende aussehen soll, aber @SpaceyX hat n kleines Video zum Thema Gefahrenquelle Quellcode gemacht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @VaporiZed okey schade, dann kann ich das so lösen, dass ich den code einfach nicht zugreifbar mache und entferne die sln datei und belasse einfach nur die exe, dann kann keiner in den code schauen^^

    ab Zeile 19 kommt:

    C#-Quellcode

    1. textBox2.Text = File.ReadAllText(Path.Combine(_pfadtextbox02, listBox1.GetItemText(listBox1.SelectedItem) + ".txt"));


    Das klappt auch soweit, wenn das "findewort" nicht in der Inputbox eingegeben wird, wird die Textbox dann auch einfach nicht geladen, wegen der return Anweisung.

    PS: Wie ich deinem Post entnehme, wäre mein obiger Ansatz auch wieder für die Katz. Verstehe ich richtig, dass man die Exe auslesen kann?

    Gegen neugierige Füchse, die über WIndows dran wollen, würd ich jetzt einfach mit 7zip den Ordner verschlüsseln und gut ist.

    Visual_Prog schrieb:

    PS: Wie ich deinem Post entnehme, wäre mein obiger Ansatz auch wieder für die Katz. Verstehe ich richtig, dass man die Exe auslesen kann?



    Alles was der Computer lesen kann, kann auch ein Mensch lesen. IlSpy hatte VaporiZed schon erwähnt, damit kannst du .net Anwendungen und DLLs wieder zu fast kompilierfähigen Code machen. Gibt aber noch effektivere Werkzeuge, das zeigt mir z.B. alle referenzierten Strings an, da muss ich nicht mal alle String selbst suchen.
    Wie wäre es denn mit einem verschlüßeltem DataSet ? War hier leztens erst ein Thema, mußte mal suchen.
    @FormFollowsFunction: Das ist ein guter Ansatz. Der Knackpunkt bleibt natürlich, aber das dürfte @Visual_Prog hoffentlich klar sein: Der User muss das Zugangspasswort zumindest bei jedem Programmstart selber eintippen. Verstecken im Code oder woanders auf dem PC bedeutet keinerlei Sicherheit.
    Man könnte das Ganze noch so machen, dass man das Ganze nur bei Anschluss eines bestimmten USB-Sticks lesen kann. Quasi eine Art selbstgemachter Dongle. Dabei könnte die Hardware-ID das Passwort sein. Naja, Schuss aus der Hüfte …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Visual_Prog schrieb:

    Ich habe noch nie eine Datasource angelegt, geschweige den diese an eine listbox zugewiesen
    Dann lass das sein und beschäftige Dich zunächst mit einfacheren Sachen:
    [Sammelthread] Programmieren, aber was? (Programmideen)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany: Kannst Du (mir) kurz erklären, was Dein Gedanke dazu wäre? Was hat es mit ListBox und DataSource in diesem konkreten Fall auf sich?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Eine Source mit dem geheimen Eintrag, eine Source ohne den geheimen Eintrag.
    Umschaltung per Freigabe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!