Passwort Abfrage - Problem mit char und wörtern
-
bloz du sagtest das Thema währe im falschen forum..
-
vielen dank für die Seite mit dem Tutorial..
AnsiString eingabe = Edit1->Text; AnsiString passw = "Test"; if(eingabe == passw) { Label1->Caption = " Passwort OK! Terminal bereit!"; Edit1->Text =""; z++; if(z>=2) { Label1->Caption = " Terminal Server ist schon Bereit"; } }else { Label1->Caption = " Das Passwort ist Falsch. Wiederholen!"; Edit1->Text =""; q++; if(q==3) { Label1->Caption = "Terminal wurde gespert"; } }
-
Sunday schrieb:
AnsiString EingetipptesPasswort = Edit1->Text; AnsiString HochgeheimesPasswort = "Hallo"; if (EingetipptesPasswort == HochgeheimesPasswort) { // ... richtig }Würde ich nie machen, da jeder, der auch nur ein bisschen Ahnung hat, keine drei Minuten brauchen würde, um die Abfrage zu umgehen!
Nene, eine verschlüsselung muss schon sein...
EDIT:
@cheesburger
ICh würde das echt nicht verwenden! Es ist einfach zu unsicher!
-
also das war nur ein Programm was ich in der Schule machen muss!! dafür reicht es

-
Hallo Reyx,
jetzt hast Du mich aber neugierig gemacht, was genau würdest Du denn ändern und wie umgeht man eine solche Abfrage?
-
Selbst gebraucht habe ich das bisher noch nicht

Aber afaik kann so eine, doch relativ einfache Abfrage, ohne Schwierigkeiten umgangen werden (da gibt's die verschiedensten Techniken... Speichermanipulation, HEX-Editoren und viele andere tolle Dinge :-)). Natürlich kannst du i.d.R. davon ausgehen, dass die Programme die du privat entwickeltst oder meinetwegen auch kommerziell nicht gerade einem Cracker in die Hände fallen, aber wenn dein Programm berühmter wird...

Man siehe dazu Windoof XP -> Da waren die Key-Algorithmen schon gecrackt bevor das OS öffentlich released war!Naja, eine Möglichkeit währe z.B. diverse Funktionen oder Bestandteile des Programms auf andere Medien (z.B. eine DLL) auszulagern. Dieses Medium kann man dann mit einem eigenen Algorithmus verschlüsselt. Dann muss der Anwender beim Programmstart ein Passwort angeben, anhand dessen die Datei temporär vom Programm entschlüsselt wird (und sei es nur eine Kopie :-)). Wenn der Anwender dann ein falsches Passwort eingibt, dann bekommt er halt Datenmüll und ein nicht lauffähiges Programm.
OK, das war jetzt eher ein Beispiel für einen Kopierschutz, aber das Prinzip sollte sich, so oder ähnlich, eigentlich auch für ein Passwort übertragen lassen.
Ist natürlich nur eine Möglichkeit und vielleicht auch nicht die beste, aber besser als ein einfaches if - else auf jeden Fall...
Wobei aber trotzdem gesagt sei, dass man so etwas auch wirklich nur bei arg kritischen Dingen benötigt!
-
Also ich habe das ganze Skript verbessert. Habe noch einen benutzernamen hinzugefügt!!
Klappt auch alles Wunderbar!!
So aber wenn ich das PW und Benutz angegeben habe soll sich eine Neue Seite öffnen wo ich z.b ihrgend etwas anderes berechnen kann!!
Meine frage ist nun wie ich soetwas mache!Das Prinziep:
Das Prinziep was ich meine ist so wie das bei eienr Installation unter Windows.
Im ersten Fenster sind dann die AGBs und dann klickt man auf weiter..dasnn öffnet sich das nächste Feld.
Bloß bei mir ist es nciht Weiter sondern Login ..?!?!
verstanden hoffe ja !!
gruß Cheesy
-
Wo ist denn dein Problem?
Ungetestet (hab' grade keinen Builder zur Hand):
AnsiString UserName = "Reyx", UserPwd = "Wasweissich"; if(UserName == "Reyx" && UserPwd == "Wasweissich") { TForm *SecretForm = new TForm(NULL); SecretForm->ShowModal(); delete SecretForm; } else { MessageBeep(0); ShowMessage("Die angegebenen Daten sind falsch!"); return; }
-
ja so habe ich das auch schon gemacht..
aber es kommt immer eine Fehlermeldung:
AnsiString eingabepw = Edit2->Text; AnsiString eingabebenutz = Edit1->Text; AnsiString passw = "Test"; AnsiString benutz = "Marcel"; if((eingabebenutz == benutz) & (eingabepw == passw)) { TForm *SecretForm = new TForm(NULL); SecretForm->ShowModal(); delete SecretForm; } }else { if((eingabebenutz >= benutz) & (eingabepw >= passw)) { Label6->Caption = "Dein Benutzername und dein Passwort sind Falsch!"; } }
-
Warum testest du noch auf die Länge der Strings? Wenn du in der ersten Bedingung auf die Korrektheit der angegebenen Werte prüfst, dann kannst du in der else-Anweisung deren Negation vorraussetzen!
Ansonsten: Wie lautet denn die Fehlermeldung?
PS: Mach mal statt
if((eingabebenutz == benutz) & (eingabepw == passw))folgendes:
[cpp] if((eingabebenutz == benutz) && (eingabepw == passw))[/cpp]
-
[C++ Error] benutzpw.cpp(24): Ambiguity between '_fastcall Forms:TForm::TForm(Classes::TComponent*)'and'_fastcall Forms::TForm::TForm(void*)'.
-
Dann versuch mal
TForm *SecretForm = new TForm(0);
oder
TForm *SecretForm = new TForm(Application);Der Fehler, den ich oben beschrieben habe, den solltest du aber auch noch beheben!
-
Geil es funzt danke..
so aber ich möchte das sich das fenster nicht _Blank öffnet sondern _top also genau in dem was offen ist ein neues Fenster sprich das alte ersetzen..
und wie kann ich dann in das Fenster etwas hineinschreiben?!
gru0ß cheesy
-
Wenn du das ganze nur Laufzeit erstellen willst, dann erstellst due VCL-Komponenten genau wie das Form, also z.B.
TLabel *SecretLabel = new TLabel(/*Hier bin ich mir nicht sicher, einfach ausprobieren*/); SecretLabel->Parent = SecretForm; SecretLabel->Text = "Das ist ein geheimer Text";Und wenn du das alte Fenster ersetzt haben willst, dann musst du einfach das neue auf die Größe des alten skalieren:
SecretForm->Left = Form1->Left; SecretForm->Top = Form1->Top; SecretForm->Width = Form1->Width; SecretForm->Height = Form1->Height;
-
gibt es auch einen Befehl der eine Andere datei.cpp öffnet sprich
Ich habe Benutzpwprojekt.cpp und Seite2.cpp
kann ich dann wenn ich auf Benutzpwprojekt den Befehl angebe damit die Seite2.cpp öffnen?!?!?
gruß Cheesy
-
Hallo
du kannst aber gleich zur Entwurfszeit ein weiteres Form erstellen und designen. Dann brauchst du nur noch mit Show() oder ShowModal() arbeiten.
Da du aber anscheinend kein neues Fenster anzeigen, sondern das bestehende verändern willst. ist das nicht das passende. Wenn es nur um eine handvoll Controls geht, die ausgetauscht werden sollen, kannst du mit den Eigenschaften Visible und Enabled arbeiten, mit denen du die Controls ein- und ausblenden kannst.
Werden es mehr Controls mit unterschiedlichen Funktionen, kannst du auch Frames nehmen, die du zur Entwurfszeit erstellst, und passend in das eigentliche Fenster zuweist.bis bald
akari
-
Wenn der seine Formulare zur Entwurfszeit erstellt und lediglich aufruft, brauche ich nur noch fünf Mausklicks und ich habe das angeblich so geheime Formular auf'm Desktop!
-
Ich lese aus der Frage nicht so direkt heraus, daß die neue Form so geheim ist. Falls sie es nicht ist, kann man so etwas zur Entwurfszeit auch in der selben Form mit PageControl realisieren, du setzt im Konstruktor die folgenden Pages visible =false. Und beim weiterblättern nach korrekter Abfrage die akutuelle Page auf false und die nächste auf true.
Danke Reyx für deine Antwort. Hast Du vielleicht Hinweise zu weiterführender Literatur oder Tutorials. Klar ist die Wahrscheinlichkeit daß meine Programme ein Cracker bekommt unwahrescheinlich, sowieso wenn ich sie nur selber nutze. Aber wenn man etwas macht, dann will man es ja auch richtig machen (Lerneffekt).
Gruß Alex
-
Naja, wie gesagt: Ich habe es selbst noch nicht gebraucht, daher kann ich dir auch keine Literatur dazu nennen (die es aber mit Sicherheit gibt :-)).
Aber das Prinzip ist ja einfach: Schau dich mal Verschlüsselungsalgorithmen um (bzw. nach Tutorials, wie man selbst so einen macht). Der Rest ergibt sich dann ja, wenn du die Datei erst einmal Verschlüsselt hast.
Du schreibst dann halt einfach ein Programm, mit welchem du die Datei(en) einmal verschlüsselst (und dass auch niemand sonst in die Finger bekommen sollte), und integrierst dann halt eine Entschlüsselungs-Methode in dein Programm.
Schau ansonsten mal bei Google oder ähnlichem Nach; Einen 100%igen Schutz gibt es einem zwar nicht, aber man lernt wohl doch ordentlich dazu, wie du schon sagtest

---------
Noch mal zum Topic:
Wenn schon, würde ich dann aber doch das Fenster nehmen, denn das anzugeigen erfordert noch mehr Arbeit, als einmal im ResourceHacker das Formular auszuwählen und die Eigenschaft Visible auf true zu setzen