Passwörter (Eingabe durch * ersetzen
-
Hallo
Ich habe ein Programm geschrieben in der Sprache C.Es verlangt ein Servername und ein Passwort.Ich will jetzt das Passwort schützen durch *.Ich durchsuchte das ganze Internet doch nicht viel hilfreiches gefunden.Darum bin ich hier.Wisst ihr wie der Code lauten muss?
2. Problem das aber nicht so dringend ist.Ich möchte wenn Servername und Passwort richtig ist das wie ein Menu kommt und auswählen kann Passwort ändern oder Servername ändern oder weiter gehen.Das Menu hätte ich schon doch dan den Code für das ändern des Passwort oder Servername habe ich noch nicht.Wisst ihr der Code lauten muss?
3. Problem ist, ich will ein exe datei in dem Programm ausführen aber ich kenne den Code nicht,wisst ihr ihn?Hier noch das Programm:
/* Passwort-Eingabe */ #include <stdio.h> #include <string.h> #include <stdlib.h> main() { char geheim[11],passwort[80]; int wahl; char g[10],servername[80]; int versuch=3; g[3]=108; g[2]=104; g[7]='\0'; g[5]=98; g[0]=83; g[8]='x'; g[1]=99; g[4]=117; g[6]=108; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Servername eingeben.\n>"); gets(servername); if(strcmp(g,servername) == 0) { printf("\nServername ok!\n"); break; } else printf("\nFehlerhafter Servername! \n\a"); versuch--; } while(versuch > 0); geheim[3]=9; geheim[2]=10; geheim[7]=5; geheim[8]=49; geheim[5]=77; geheim[0]=115; geheim[10]='x'; geheim[1]=7; geheim[9]='\0'; geheim[4]=7; geheim[6]=5; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Passwort eingeben.\n>"); gets(passwort); if(strcmp(geheim,passwort) == 0) { printf("\nPasswort ok!\n"); break; } else printf("\nFehlerhaftes Passwort! \n\a"); versuch--; } while(versuch > 0); printf("\nMenü des Server Schlubl\n"); printf("\n1. Passwort ändern\n"); printf("\n2. Servername ädern\n"); printf("\n3. Exe datei öffnen\n"); printf("\n4. Programm verlassen\n"); printf("\nDeine Wahl: \n"); scanf('%i',&wahl); if (wahl == 1){} if (wahl == 2) {} if (wahl == 3) {} if (wahl == 4) {} }
gruss schlubl
-
Zu 1 http://www.c-plusplus.net/forum/viewtopic-var-t-is-49050.html
Zu 3 http://www.c-plusplus.net/forum/viewtopic-var-t-is-141665-and-highlight-is-.html
Allerdings weiß ich nicht ob das auch in C funktioniert.
-
Zu 1 und 2: hatten wir das nicht erst gestern?
Zu 3: Wenn alle Stricke reißen, bleiben immer noch exec() und Familie (für UNIX-Systeme) oder man: system
-
He ich brauche keine links ich brauche codes begriffen?
-
SChlubl schrieb:
He ich brauche keine links ich brauche codes begriffen?
Dann folge doch einfach den Links - dahinter findest du recht ausführliche Erklärungen (inklusive Codes). Soviel Eigeninitiative solltest du schon beweisen, sonst machst du dir hier nicht sehr viele Freunde.
-
Hallo
Das habe ich und baute den code ein.Aber es geht immer noch nicht ich weiss nicht wieso.Also wie würde jetzt das fertige Programm aussehen:
Das ist mein Programm/* Passwort-Eingabe */ #include <stdio.h> #include <string.h> main() { char geheim[11],passwort[80]; int wahl; char g[10],servername[80]; int versuch=3; g[3]=108; g[2]=104; g[7]='\0'; g[5]=98; g[0]=83; g[8]='x'; g[1]=99; g[4]=117; g[6]=108; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Servername eingeben.\n>"); gets(servername); if(strcmp(g,servername) == 0) { printf("\nServername ok!\n"); break; } else printf("\nFehlerhafter Servername! \n\a"); versuch--; } while(versuch > 0); geheim[3]=97; geheim[2]=100; geheim[7]=52; geheim[8]=49; geheim[5]=77; geheim[0]=115; geheim[10]='x'; geheim[1]=97; geheim[9]='\0'; geheim[4]=77; geheim[6]=54; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Passwort eingeben.\n>"); gets(passwort); if(strcmp(geheim,passwort) == 0) { printf("\nPasswort ok!\n"); break; } else printf("\nFehlerhaftes Passwort! \n\a"); versuch--; } while(versuch > 0); }
Diesen Code muss man irgenwie in den oberen einpflanzen.
#include <iostream> #include <string> #include <conio.h> std::string readPassword (char replace = '*') { std::string password; char now = '\0'; while(now != '\r') { now = getch(); // Sonderzeichen ignorieren // Bestehen aus 2 Zeichen - also nochmals getch() aufrufen // Siehe FAQ-Beitrag "Einlesen von Pfeiltasten, F-Tasten und Tastenkombinationen" if(now == 0 || now == 0xE0) { getch(); continue; } // Steuerzeichen ignorieren (Haben ASCII-Codes kleiner als 32) if(now < 32) continue; // Zeichen anhängen und Ersatzzeichen ausgeben password += now; std::cout << replace; } return password; }
gruss schlubl
-
Ähm nur mal so ne Frage: ist der Code da nicht C++???
Passwort eingabe ersetzen hab ich rausNur das es keine gute Lösung ist^^
(vom Sinn her da der text nicht ersetzt wird da getch() ihn erst gar nicht anzeigt)#include <stdio.h> int main() { int i; char passwort[10]; for (i=0;i<10;i++) { passwort[i] = getch(); printf("*"); } }
-
Ja der Code glaube ich ist im C++ und mein Program im C.
Also wer hat ein Code im C für mein Problem?
gruss schlubl
-
Also der Code unten von mir ist glaub das einfachste was du machen kannst ABER du ersetzt da halt die Eingabe nicht, du gibst einfach für jede Eingabe ein * aus.
-
Craw schrieb:
Also der Code unten von mir ist glaub das einfachste was du machen kannst ABER du ersetzt da halt die Eingabe nicht, du gibst einfach für jede Eingabe ein * aus.
Das ist doch eigentlich auch das, was beabsichtigt war, oder? Ist ja sinnlos, wenn im Eingabe-Array nur noch "****" übrig bleibt, oder?
@Schlubl/Raki: Der Kern der Lösung ist das getch() - das liest ein Zeichen, ohne es gleich auf den Monitor zurückzugeben. Damit kannst du es intern weiterverarbeiten und anschließend selber entscheiden, was du ausgeben willst.
-
gibtes den getch() überhaupt im C?
-
he jedesmal wenn ich oben #include <windows.h> eingebe zeigts der compiler als fehler an wieso?wie kann ich das beheben?wäre sehr wichtig
gruss schlubl
-
#include <cstdio> int main( int argc, char *argv[] ) { int character = getchar( ); /* oder */ character = getc( stdin ); }
... ist stan***d.
#include <windows.h>
fehler? Welcher Compiler / IDE?
Greetz, Swordfish
-
CStoll schrieb:
Craw schrieb:
Also der Code unten von mir ist glaub das einfachste was du machen kannst ABER du ersetzt da halt die Eingabe nicht, du gibst einfach für jede Eingabe ein * aus.
Das ist doch eigentlich auch das, was beabsichtigt war, oder? Ist ja sinnlos, wenn im Eingabe-Array nur noch "****" übrig bleibt, oder?
@Schlubl/Raki: Der Kern der Lösung ist das getch() - das liest ein Zeichen, ohne es gleich auf den Monitor zurückzugeben. Damit kannst du es intern weiterverarbeiten und anschließend selber entscheiden, was du ausgeben willst.
Ja klar aber wenn es darum geht die Eingabe zu ERSETZEN ist mein Code nicht die Lösung. Für seine Zwecke denke ich geeignet.
-
Swordfish schrieb:
#include <cstdio> int main( int argc, char *argv[] ) { int character = getchar( ); /* oder */ character = getc( stdin ); }
... ist stan***d.
#include <windows.h>
fehler? Welcher Compiler / IDE?
Greetz, Swordfish
compiler heisst Visual C++ Toolkit 2003
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
void getpw(char *buf, int max) { int c, i=0; while(i++ < max) { c=getch(); *buf++=c; if(c=='\r' || c=='\n') break; printf("*"); } *buf++=0; printf("\n"); }