älteres .NET Programm mit Visual Studio 2022 bearbeiten

Reinhard77

Lieutenant
Registriert
Feb. 2019
Beiträge
900
Hallo,

ich will meinen Passwort Generator weiter entwickeln, den ich auf einer älteren .NET Version programmiert habe. Nun meckert Visual Studio 2022 rum und ich kann das Programm nicht ausführen, da ich eine neuere .NET Version habe bzw. die Projektmappe auf die neue Version verweist, das Programm aber in einer älteren Version entwickelt wurde.

Was muss ich einstellen, um solche Probleme zu beheben. Sprich: der Kram ist nicht Abwärtskompatibel bzw. ich muss es Visual Studio erst beibringen, wie es geht!

Bei MS habe ich was zu dem Thema gefunden, aber diese Anleitung finde hilft mir nicht weiter.
 
madmax2010 schrieb:
https://github.com/dotnet/upgrade-assistant
sammlung an tools, mit denen dui auf .net6 portieren kannst.. Was du exakt tun musst, haengt davon ab was du alles im Code hsat und was deprecated wurde.

madmax2010 schrieb:
Wo liegt der Code?
Wie machst du Zufall?

Der Code liegt nur auf meiner Festplatte, wurde nie veröffentlicht von mir (sind noch Fehler drin!).

Müsste ich gleich mal hereinschauen. Auswendig weiß ich das leider nicht mehr (schon zu lange her). Ist auch die Frage, ob ich meinen eigenen Code noch auf Anhieb lesen kann, da ich auch nicht besonders großzügig mit Kommentaren im Projekt war.
 
Zuletzt bearbeitet:
Reinhard77 schrieb:
Gibt es dazu eine Anleitung wie das installiert wird?
Auf der Github Seite,
PowerShell:
dotnet tool install -g --add-source https://api.nuget.org/v3/index.json --ignore-failed-sources upgrade-assistant
 
Ja Danke. hatte ich grade eben auch gefunden..
Ergänzung ()

madmax2010 schrieb:
Was du exakt tun musst, haengt davon ab was du alles im Code hsat und was deprecated wurde.

Habe einen kurzen Test gemacht (ohne Optionen) und hat sofort funktioniert. Danke!

Wegen dem Zufall generieren schaue ich gleich.
 
Zuletzt bearbeitet:
madmax2010 schrieb:
Wie machst du Zufall?

Sorry, aber ich finde die Stelle grade auf die schnelle nicht. Ich muss mich in den Code erst wieder reinlesen. Kann was dauern, bis ich durch meinen eigenen Code wieder durchblicke. Ich schreibe den Code dann hier, wenn ich die Stelle gefunden habe.
Ergänzung ()

madmax2010 schrieb:
passt scho - war nur ein check ob du ueber sowas nachgedacht hast.
Ist die groesste Schwachstelle vieler Passwortgeneratoren

Meiner ist ähnlich wie dieser hier:

Passwort Generator

Meiner ist aber keine Webanwendung und hat noch mehrere Funktionen, die ich nicht fertig programmiert habe. Diese Funktionen sind im Prinzip auch nicht alle unbedingt notwendig und die werde ich evtl. herausschmeißen.

Aber von den Ideen her könnte man fast denken, da hat einer von mir abgeguckt (was anderes darf ich hier wahrscheinlich nicht behaupten), da die Grundidee mit dem Feld für die Sonderzeichen genau so ist wie bei mir: Man kann die Sonderzeichen mit einer Checkbox anwählen und dann in dem Feld ausschließen (so sollte es jedenfalls werden), in dem sie mit der Backspace Tast ausgeschlossen werden (aus dem Zeichenvorrat). Ich habe die Sache nur nicht zu Ende gedacht bzw. gebracht und ein wenig zu viel Schnickschnack hereingebracht, was den Code auch unnötig komplizierter gemacht hat.

Ich habe z.B. eine Funktion, wo man einen Satz eingeben kann (oder was auch immer) und daraus ein Passwort generieren kann (funktioniert noch nicht). Dann kann man noch ein Passwort eingeben und überprüfen lassen auf Bit stärke und einigen weiteren Kriterien für ein gutes Passwort (funktioniert, zeigt aber nicht die Jahre an, bis das Passwort geknackt werden kann sondern wie gesagt die Bit stärke mit einem nicht richtig funktionierenden Prozent Balken). Diese Funktion ist nicht direkt mit der Ausgabe der Passwörter verknüpft, was auch unlogisch ist bzw. noch nicht besser durchdacht war.

Aber das Grundgerüst ist im Prinzip das gleiche: Man kann die Länge, die Anzahl angeben und mit Checkboxen die gewünschten Angaben über Kleinbuchstaben, Großbuchstaben, Sonderzeichen usw. anwählen und dann werden die Passwörter in einer Liste ausgeben.

Ich könnte glatt denken, da hat einer meinen Code genommen, alles was noch nicht funktionierte rausgeworfen und hat ein paar Veränderungen vorgenommen, damit es nicht so auffält.
 
Zuletzt bearbeitet:
madmax2010 schrieb:
Wie machst du Zufall?

Mit Random!

C#:
            string possibleChars = chars;

            //zum Aufbewahren der Zeichenkette wird die Klasse StringBuilder benutzt
            StringBuilder sb = new StringBuilder(length);

            Random rnd = new Random();

            //die for-schleife wird Anhand der eingebenen Länge (length) x mal abgearbeitet, bei jedem Durchlauf ermittelt rnd.next() einen neuen Zufallswert.
            // die Zufallszahl dient als Index
            for (int i2 = 0; i2 < number; i2++)
            {
                int i;
                for (i = 0; i < length; i++)
                {
                    int idx = rnd.Next(possibleChars.Length);
                    //sb.Append hängt den so ausgewählten Zufallswert an den Kennwort Zwischenspeicher
                    try
                    {
                        sb.Append(possibleChars[idx] );
                    }
                    catch
                    {
                        MessageBox.Show("Es können keine Zufallswerte erzeugt werden.");
                    }
                }
 
Über was für eine alter .net Version reden wir denn? Normal kann man einige ältere Varianten über den VS Installer > Ändern > Einzelne Komponenten hinzufügen wenn man die braucht.
 
Ranayna schrieb:
Dann hau ich hier mal rein:
random ist nicht fuer kryptographisch sicheren Zufall.

Dazu weiter: https://learn.microsoft.com/en-us/dotnet/api/system.random?view=net-7.0

Das ist vermutlich worauf @madmax2010 hinaus wollte ;)

Ich weiß nicht wo ich das damals her hatte. Ist schon lange her. Gab es zu der Zeit die abstrakte Klasse "RandomNumberGenerator" überhaupt schon?

Wenn du es besser kannst, dann zeig doch mal ein Beispiel wie die abstrakte Klasse "RandomNumberGenerator" angewendet wird, übertragen auf den Code den ich hier gepostet habe!
 
Reinhard77 schrieb:
Gab es zu der Zeit die abstrakte Klasse "RandomNumberGenerator" überhaupt schon?

Ich bin jetzt kein C# Experte, aber das hier wuerde ich interepretieren das es von Anfang an drin war:
https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.randomnumbergenerator?view=net-7.0 schrieb:

Applies to​


ProductVersions
.NETCore 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard1.3, 1.4, 1.6, 2.0, 2.1
Xamarin.iOS10.8
Xamarin.Mac3.0


Ich hab deinen Code oben mal ueberflogen, und irgendwo fehlt mir da was um zu verstehen was du da genau machst.
Ich interpretiere mal das chars ein Array mit moeglichen Passwortzeichen ist. Wenn ja, dann kannst du RandomNumberGenerator.GetInt32(possibleChars.Length + 1) benutzen.
 
Zuletzt bearbeitet:
morcego schrieb:
Über was für eine alter .net Version reden wir denn? Normal kann man einige ältere Varianten über den VS Installer > Ändern > Einzelne Komponenten hinzufügen wenn man die braucht.

Der Code ist von 2009. Ich weiß nicht mehr welche .NET Version zu der Zeit aktuell war.
Ergänzung ()

Ranayna schrieb:
Ich hab deinen Code oben mal ueberflogen, und irgendwo fehlt mir da was um zu verstehen was du da genau machst.

Das geht mir mit den ganzen Beispielen im Netz genauso, deswegen die Frage nach einem Beispiel, übertragen auf meinen Code.

Ranayna schrieb:
Ich interpretiere mal das chars ein Array mit moeglichen Passwortzeichen ist. Wenn ja, dann kannst du RandomNumberGenerator.GetInt32(possibleChars.Length + 1) benutzen.

Ja genau: "chars" ist ein Array, wo das Passwort drin steht.
 
Zuletzt bearbeitet:
https://en.wikipedia.org/wiki/.NET_Framework_version_history#.NET_Framework_1.1

Ok, es war nicht von "Anfang an" dabei, es kam erst 2003, also vor jetz 20 Jahren dazu. Verdammt, ich werde alt :freak:

Mach dir aber nicht zu viel draus das du da nicht die richtigen Zufallszahlen verwendet hast. Wie @madmax2010 angedeutet hat, ist das ein extrem haeufiges Problem. Und es ist mit hoher Wahrscheinlichkeit nicht das einzige Sicherheitsproblem, welches dein Code hat.

Es ist schwer kryptographisch sicheren Code zu schreiben, und es gilt ein Grundsatz: "Do not build your own Crypto", "Baue nicht deine eigene Kryptopgraphie".

Solange du die Sachen ausschliesslich fuer dich selbst verwendest ist das aber eh nicht ganz so kritisch.
 
Ranayna schrieb:
Es ist schwer kryptographisch sicheren Code zu schreiben, und es gilt ein Grundsatz: "Do not build your own Crypto", "Baue nicht deine eigene Kryptopgraphie".

Solange du die Sachen ausschliesslich fuer dich selbst verwendest ist das aber eh nicht ganz so kritisch.

Ich hatte mich damals mit dem Thema auch mehr oder weniger beschäftigt und die Frage ist, ob es in der Informatik überhaupt so etwas wie Zufall gibt?! Kannst du beweisen, dass es Zufall in der Informatik gibt?
 
Reinhard77 schrieb:
Der Code ist von 2009. Ich weiß nicht mehr welche .NET Version zu der Zeit aktuell war.
Dann würd ich mal 3.5 unterstellen, vielleicht auch 4.0 - das sollte aber in der csproj drinstehen.
3.5 könnte man aber immernoch aktivieren.
 

Anhänge

  • netComponents.png
    netComponents.png
    19,6 KB · Aufrufe: 147
Reinhard77 schrieb:
Kannst du beweisen, dass es Zufall in der Informatik gibt?
Ich kann schonmal garnix beweisen :D
Ich bin auch eher ein noob beim Programmieren. Ich weiss nur genug, das ich nicht genug weiss, um irgendwas kryptographisch sicher zu bauen.
Und wenn ich was baue wo sowas gebraucht wird, muss ich mich auf die von anderen implementierten Funktionen verlassen.

Was ich aber weiss: Es gibt tatsaechlich Mittel und Wege echten Zufall zu erzeugen. Es gibt zB weisses Rauschen ueber Quanteneffekte von Halbleitern. Damals als ich mich damit beschaeftig habe war das eher was spezielles und recht theoretisches, aber seit einer ganzen Weile gibt es sowas in gaengigen CPUs: https://en.wikipedia.org/wiki/RDRAND
Etwas absurder: Es gab mal einen Webdienst (leider finde ich den nicht mehr) der echte Wuerfel mit einer Webcam beobachtet hat, und so einen Zufallswert erzeugt hat.
 
Ranayna schrieb:
Es gab mal einen Webdienst (leider finde ich den nicht mehr) der echte Wuerfel mit einer Webcam beobachtet hat, und so einen Zufallswert erzeugt hat.

Ach in der Realität gibt es sowas wie Zufall? Lässt sich auch nicht beweisen..
 
Wieso ist doch so: Moslems z.B. glauben an Schicksal usw. In der westlichen Welt sieht es da relativ ähnlich aus, je nachdem auf welche Quellen sich berufen wird...würde ich behaupten.
 
Zurück
Oben