Passwortschutz für C Programm
-
Ich habe ein kleines Konsolenprogramm geschrieben. Nun möchte ich, dass dieses Programm mit einem Passwort geschützt wird. Die Funktion mit dem Vergleichen der Strings ist mir bekannt. Nur weiss ich nicht, wie ich dann machen kann, dass der Benützer ein Passwort eingeben muss, damit er auf die restlichen Funktionen zugreifen kann.
Bsp.:
Ich habe die Funktionen func_1 ud func_2, die ich schützen will. Nun sollte am Anfang, wenn der Benutzer dass Programm startet, die Frage nach dem Passwort kommen. Ob dies in der Konsole geschieht, oder ob dies in einem speziellen Fenster geschieht ist mir egal. Der Benutzer sollte dann das Passwort, z.b. "1234abcd" eingeben müssen, damit er die Funktionen sieht. Wenn er aber eine Funktion ausgeführt hat, und in das Menu zurückkehrt, sollte er das Passwort nicht mer eingeben müssen.Wie kann ich das programmieren???
-
int main() { char pw[10] = "abc"; char pw_eing[10] =""; printf("Passwort eingeben:\n"); //Scanf-Anweisung if(/*eingegebenes Passwort ist richtig*/) { //Menü erzeugen } else //Falsche Passwort Eingabe return 0; }
So müsste es gehn
-
Es hat aber immer noch Fehler...
Was habe ich an diesem Code falsch gemacht:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct lagerverwaltung
{
long artikelnummer;
char artikelbezeichnung[100];
int anzahl_artikel;
struct lagerverwaltung *next;
};struct lagerverwaltung *first = NULL;
void insert_lagerverwaltung(long art_nr, char art_tit[], int anz_art)
{
struct lagerverwaltung *lager_ptr;if(first == NULL)
{
first = (struct lagerverwaltung )malloc(sizeof(struct lagerverwaltung));
if(first == NULL)
{
printf("Speicherplatzmangel!!!\n");
exit(0); / Programm beenden */
}
else
{
first->artikelnummer = art_nr;
strcpy(first->artikelbezeichnung, art_tit);
first->anzahl_artikel = anz_art;
first->next = NULL;
}
}
else
{
lager_ptr=first;while(lager_ptr->next != NULL)
lager_ptr = lager_ptr->next;
lager_ptr->next = (struct lagerverwaltung )malloc(sizeof(struct lagerverwaltung));
if(lager_ptr->next == NULL)
{
printf("Speicherplatzmangel!!!\n");
exit(0); / Programm beenden */
}
else
{
lager_ptr = lager_ptr->next;
lager_ptr->artikelnummer = art_nr;
strcpy(lager_ptr->artikelbezeichnung, art_tit);
lager_ptr->anzahl_artikel = anz_art;
lager_ptr->next = NULL;
}
}
printf("\nNeuer Artikel hinzugefuegt\n\n");
}void insert_sort_lagerverwaltung(long art_nr, char art_tit[], int anz_art)
{
struct lagerverwaltung *lager_ptr1, *lager_ptr2;/* Zuerst wird überprüft, ob sich überhaupt ein Element
in der Liste befindet. Falls nicht, rufen Sie die
Funktion insert_lagerverwaltung() mit dem Argumenten
art_nr , art_tit, anz_art auf */
if(first == NULL)
insert_lagerverwaltung(art_nr, art_tit, anz_art);
else
{
/*Als nächstes wird nach dem Element gesucht,das
größer als das neue Element ist und fügen es an
der entsprechenden Stellen ein */
lager_ptr1 = first;
/* Hier durchlaufen Sie die Liste so lange, bis Sie ein
Element finden, das größer ist als art_nr oder Sie
am Ende der Liste angekommen sind und somit die
Funktion insert_lagerverwaltung() aufrufen */
while( (lager_ptr1 != NULL) && (art_nr > lager_ptr1->artikelnummer) )
/* solange nicht am Ende angekommen UND einzufügender
Artikel ist größer als der aktuelle */
lager_ptr1 = lager_ptr1->next;
if(lager_ptr1 == NULL)
/* Hinten anhängen /
insert_lagerverwaltung(art_nr, art_tit, anz_art); / Hinten anhängen */
else if(lager_ptr1 == first)
{
first = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
first->artikelnummer = art_nr;
strcpy(first->artikelbezeichnung, art_tit);
first->anzahl_artikel = anz_art;
first->next = lager_ptr1;
}
else
{
/* Hier postitionieren Sie den zweiten Zeiger
nun ein Position vor dem ersten */
lager_ptr2 = first;
while(lager_ptr2->next != lager_ptr1)
lager_ptr2 = lager_ptr2->next;
lager_ptr1 = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
lager_ptr1->artikelnummer = art_nr;
strcpy(lager_ptr1->artikelbezeichnung, art_tit);
lager_ptr1->anzahl_artikel = anz_art;lager_ptr1->next = lager_ptr2->next;
lager_ptr2->next = lager_ptr1;
}
}
}void output_lagerverwaltung()
{
struct lagerverwaltung *lager_ptr;if(first == NULL)
printf("Es sind kein Daten zum Ausgeben vorhanden!!\n");
else
{
lager_ptr = first;
while(lager_ptr != NULL)
{
printf("Artikelnummer : %ld\n",lager_ptr->artikelnummer);
printf("Artikelbezeichnung : %s",lager_ptr->artikelbezeichnung);
printf("Anzahl Artikel : %d\n\n",lager_ptr->anzahl_artikel);
lager_ptr = lager_ptr->next;
}
}
}void read_lagerverwaltung(void)
{
long an;
char at[100];
int aa;printf("Artikelnummer : ");
scanf("%ld",&an); fflush(stdin);
printf("Artikelbezeichnung : ");
fgets(at, sizeof(at), stdin);
printf("Anzahl d. Artikel : ");
scanf("%d",&aa);insert_sort_lagerverwaltung(an,at,aa);
}void delete_lagerverwaltung(long art_nr)
{
struct lagerverwaltung *lager_ptr1;
struct lagerverwaltung *lager_ptr2;/* Die logische erste Überprüfung ist ... /
if(first != NULL) / Überhaupt etwas in der Liste ? */
{ /* Ist das erste Element gleich das gesuchte ? */
if(first->artikelnummer == art_nr)
{ /* Das erste Element ist das gesuchte ! */
lager_ptr1 = first->next;
free(first);
first=lager_ptr1;
printf("\nElement mit Art.-Nummer %ld wurde geloescht\n\n",art_nr);
}
else
{ /* Also nicht das erste Element .... /
lager_ptr1=first; / Irgendwo muss man ja beginnen ... */
while(lager_ptr1->next != NULL)
{ /*So lange man nicht am Ende der Liste ist */
lager_ptr2=lager_ptr1->next;
if(lager_ptr2->artikelnummer == art_nr)
{ /* Das Element wurde schon gefunden /
lager_ptr1->next = lager_ptr2->next;
free(lager_ptr2);
printf("\nElement mit Art.-Nummer %ld wurde geloescht\n\n",art_nr);
break; / Zum Abbrechen der while() - Schleife /
}
lager_ptr1=lager_ptr2; / Das Element wurde noch nicht gefunden! */
}/*Ende while*/
} /*Ende else*/
} /*Ende if(first!= NULL)*/
else
printf("\nEs sind keine Daten zum Loeschen vorhanden!!!\n\n");
}void search_lagerverwaltung(char bez[])
{
struct lagerverwaltung *lager_ptr1;if(first == NULL)
printf("\nDie Liste ist leer!\n\n");
else
{
lager_ptr1 = first;
while(lager_ptr1 != NULL)
{
if(strcmp(lager_ptr1->artikelbezeichnung,bez)==0)
{
printf("Artikelnummer : %ld\n",
lager_ptr1->artikelnummer);
printf("Artikelbezeichnung : %s",
lager_ptr1->artikelbezeichnung);
printf("Anzahl Artikel : %d\n\n",
lager_ptr1->anzahl_artikel);
return; /* Funktion beenden */
}
lager_ptr1 = lager_ptr1->next;
}
}
printf("\nSuche erfolglos\n\n");
}int main()
{
char pw[10] = "abc";
char pw_eing[10] ="";
printf("Passwort eingeben:\n");
//Scanf-Anweisung
if /*eingegebenes Passwort ist richtig*/
{
int abfrage;
long art_nr;
char search[100];do{
printf("<1> Neue Daten einlesen\n");
printf("<2> Alle Daten ausgeben\n");
printf("<3> Element in Liste loeschen\n");
printf("<4> Element suchen\n");
printf("<5> Informationen\n\n");
printf("<6> Programm beenden\n\n");printf("Ihre Auswahl : ");
scanf("%d",&abfrage);
fflush(stdin);
/* Bei Problemen mit scanf() die Funktion getchar()
anstatt fflush(stdin) verwenden !!! */
switch(abfrage)
{
case 1 : read_lagerverwaltung(); break;
case 2 : output_lagerverwaltung(); break;
case 3 : printf("Artikelnummer : ");
scanf("%ld",&art_nr);
delete_lagerverwaltung(art_nr);
break;
case 4 : printf("Welchen Artikel suchen Sie: ");
fgets(search,sizeof(search),stdin);
search_lagerverwaltung(search);
break;
case 5 : printf("Naehere Informationen entnehmen sie bitte folgender Internetwebseite:"
"www.eforium.airmode.de/c/lager/info.html\n");
break;case 6 : printf("\n"); break;
default : printf("Falsche Eingabe!!!\a\a");
}
}while(abfrage != 6);
return 0
} else
//Falsche Passwort Eingabe
return 0;
}
-
Woher willst du wissen, dass der Code nicht geht. Du hast den Vorschlag von Lyrix doch garnicht in C-Code umgewandelt. Oder willst du jetzt echt behaupten, dass du versucht hast,
//Scanf-Anweisung if /*eingegebenes Passwort ist richtig*/ {
zu compilen?
-
Doch, habe ich, aber es hat Fehler darin...
-
Forenmaster, du solltest meine Kommentare schon in Quellcode umwandeln, und nicht einfach meine Kommentare in dein Programm einfügen *g*
-
forenmaster: du waerst besser beraten, ERSTMAL zu lernen und DANN zu experimentieren.
damit lernst du: http://www.pronix.de/pronix-4.html
-
c.rackwitz schrieb:
forenmaster: du waerst besser beraten, ERSTMAL zu lernen und DANN zu experimentieren.
damit lernst du: http://www.pronix.de/pronix-4.htmlIch habe schon ein Buch, von Markt und Technik, es heisst C, aber es hilft mir nicht wirklich weiter, ich habe es mir aber nochmal überlegt, und probiere mit einer meiner Lösungen...
-
forenmast.-zufaulfürlogin schrieb:
c.rackwitz schrieb:
forenmaster: du waerst besser beraten, ERSTMAL zu lernen und DANN zu experimentieren.
damit lernst du: http://www.pronix.de/pronix-4.htmlIch habe schon ein Buch, von Markt und Technik, es heisst C, aber es hilft mir nicht wirklich weiter, ich habe es mir aber nochmal überlegt, und probiere mit einer meiner Lösungen...
Ich hab dir doch eine Lösung hingeschrieben....
Und ja sie Funktioniert, nur musst du für die Kommentare halt die entsprechenden Befehle/Funktionen einfügen
//Scanf-Anweisung if /*eingegebenes Passwort ist richtig*/ { }
D.H. du solslt nicht das kopieren und einfach in dein Programm einfügen, sondern die Kommentare ersetzen:
//Hier machste deine scanfanweisung, mit der du dein Passwort einlesen lässt. if /*Hier prüfste as eingegebene Passwort mit dem vorher definierten (Tip: strcmp!)*/ { // Und hier erzeugst du halt dein Menü mit dem du dann die Funktionen aufrufst }
-
@Lyriks
Sry, ist mir nicht aufgefallen, bin halt noch neu in dem Gebiet...
-
und haargenau deswegen sollst du erstmal weiter lernen anstatt selber rumzufrickeln.
die enttaeuschung, an eigenen experimenten zu scheitern, solltest du dir am anfang wirklich ersparen.ich sag das, weils die wahrheit ist und nicht um dich zu stressen.
-
Is gut...
Ich lerne noch ein bisschen...
-
So einen Passwort"schutz" den du programmieren willst kann man aber leicht umgehen...
-
Welches Buch von M & T hast du?(hab auch eins
)
und nún zur frage: Hier hast du ein Bespiel Programm welches aber ziemlich sinnlos wär mit einen Passwort zu schützen:
#include <stdio.h> #include <conio.h> int a,b=1234; int main() { printf("Passwortgeschtztes Programm von DSD-Steve\n"); printf("Bitte Passwort eingeben\n"); scanf("%d", &a); if(a==b) { printf("Sie haben das Passwort richtig eingegeben"); getch(); } else { printf("Sie haben das Passwort falsch eingegeben"); getch(); } return 0; }
Den Quellcode kannst du kopieren, er funktioniert. Ich hab ihn nicht kommentiert, da eh nicht weist was ein Kommentar und was ein echtes Stück Quellcode ist...
-
DSD-Steve:
leicht spät dran oder?
Zumal er es ja schon selbst oben geschrieben hat...
-
@DSD - Steve
Haha, hab ich schon selber gemacht... :p
Ich hatte für ne gute Version doch nur 10min...
Du solltest wirklich zuerst alles lesen@dsfdsfd, oder die, die es wissen:
Wie kann man einen Passwortschutz umgehen?
-
Noch vergessen:
@DSD - Steve
Ich habe ein Buch mit einem kurzen Titel, der, irgendwie, logisch ist:
C von Jürgen Wolf
ist der Link.