Security Code

Status
Niet open voor verdere reacties.

555Martijn

Gebruiker
Lid geworden
15 jun 2008
Berichten
163
Hoi Hoi, ik kreeg het idee van Computer Fan om een wachtwoord te maken, voordat je het programma kan gebruiken.

Code:
#include <iostream>

using namespace std;

char code;

void SCode(){
     cout<<"Security Code: ";
     cin>>code;
      if ( code == '1234') {goto menu;}
      else return 0;
   
// The Menu   
      menu:
     cout<<"The pwnzors menu.";
     };    
     return(0);
}

Hij werkt dus niet.. ;)
 
Maak van code een string, nu kun je maar een enkel karakter kwijt.
En de code zelf tussen dubbele aanhalingstekens.

dus:
Code:
#include <iostream>
#include <string>

using namespace std;

string code;

void SCode(){
     cout<<"Security Code: ";
     cin>>code;
     if ( code != "1234")
          return 0;
   
// The Menu   
     cout<<"The pwnzors menu.";
     return 0;
}
 
Dat is niet zo vreemd... je probeert een fles cola in een glas te krijgen. (zoek maar eens meer op over het type 'char')

Ik had je vraag trouwens al in dat ander topic beantwoord(http://www.helpmij.nl/forum/showpost.php?p=2357160&postcount=10), maar zal de code hier nog eens posten.

Code:
#include <string>
#include <iostream>

int main(){
std::string real_pass = "w00t", input_pass;
std::cout << "Please enter your password: ";
std::getline(std::cin, input_pass);
if(real_pass == input_pass)
  std::cout << "w00t\n";
return 0;
}
 
Maak van code een string, nu kun je maar een enkel karakter kwijt.
En de code zelf tussen dubbele aanhalingstekens.

dus:
Code:
#include <iostream>
#include <string>

using namespace std;

string code;

void SCode(){
     cout<<"Security Code: ";
     cin>>code;
     if ( code != "1234")
          return 0;
   
// The Menu   
     cout<<"The pwnzors menu.";
     return 0;
}

Die code zal het nog steeds niet doen ben ik bang :D
(ligt niet aan jouw kennis, alleen aan het niet corrigeren van de code. Maar de TS zal zich anders weer afvragen waarom de code niet goed werkt)

(de functie SCode verwacht niet dat er een integer return komt)
 
Bedankt beiden voor de reacties, ik zal deze post updaten als het niet verder lukt, bedankt! :thumb:

Edit:

@svdww, top van je reactie, een vraagje, waarom gebruik je "!=" en niet "==", is != niet "not-equal" en == "equal"? Want ik volg die logica niet helemaal je zeg nu toch als de code niet gelijk is aan 1234 dan return, maar als het wel zo is, doet die toch niks? je verwijs hem nergens heen.

@CoD, je was alweer sneller dan mij ^^.
Leuk voorbeeld trouwens met die cola, ik zal wat meer informatie opzoeken over chars en strings, enzo waneer je welke moet gebruiken etc, want daar vergis ik me nogal vaak mee, bedankt! Jouw code is wel een stuk ingewikkelder, en ben nu bezig hem open te halen, om hem te begrijpen. Nogmaals bedankt voor je reactie!

@down, daar begrijp ik dus weer helemaal niks van .. ;)
Bedankt voor je reactie nogmaals, zal proberen wat ik daar mee kan doen, en proberen te begrijpen..
 
Laatst bewerkt:
Een relatief simpele manier om ervoor te zorgen dat het wachtwoord niet als plaintext zichtbaar is:

Code:
char pwd[100];
pwd[0] = 't'; pwd[1] = 'h'; pwd[2] = 'e'; pwd[3] = '_'; pwd[4] = 'p'; // etc

Het wachtwoord zal dan niet gewoon zichtbaar. (je moet dan wel niet de fout maken om het wachtwoord in zijn geheel te vergelijken... :P)
 
Klopt, != betekent niet-gelijk-aan. In dit geval checkt de statement of het wachtwoord fout is, zo ja returnen met 0. Als het wachtwoord goed is loopt de code gewoon verder naar beneden; je hebt niet perse een else-blok nodig. Op zich niet verkeerd om het wel te doen, de code wordt er overzichtelijker van.

Voordat je met C++ begonnen bent gok ik dat je batch-bestandjes maakte? Die goto instructie is wat "ouderwets" :p Maarja ieder heeft zo zijn eigen style :cool: Je gaat vanzelf bepalen wat wel en wat niet mooi staat of handig is.

success met coden in ieder geval :)
 
Nee ben eigenlijk nog vrij nieuw :)
En CoD, ik kan je laatse code nogsteeds niet uitvogelen.
 
Laatst bewerkt:
En CoD, ik kan je laatse code nogsteeds niet uitvogelen.

Het voorbeeld was niet echt goed gekozen. (ik had die '1234' nog in m'n hoofd :P); Het kan dus makkelijker:

Code:
char scode[] = { "not_visible" };
 
Ik merk nu pas, de edited code van svdww wil niet compilen.

@CoD, oke handig! Denk wel dat dat werkt :)
Zijn er ook nog andere functies dat je kan doen daarmee? (dus dat "not_visible" verangen met iets anders, wat ook weer iets anders doet)
 
Ik merk nu pas, de edited code van svdww wil niet compilen.

Hij heeft in het voorbeeld alleen het type char vervangen voor het type string. De rest van de code had jij al geproduceerd, en dat werkte ook niet.

Code:
#include <iostream>
#include <string>

using namespace std;



void SCode(){
     string code;
     cout<<"Security Code: ";
     cin>>code;
     if ( code != "1234")
          return;
   
// The Menu   
     cout<<"The pwnzors menu.";
}

Het bovenstaande zou wel gewoon moeten werken.

@CoD, oke handig! Denk wel dat dat werkt :)
Zijn er ook nog andere functies dat je kan doen daarmee? (dus dat "not_visible" verangen met iets anders, wat ook weer iets anders doet)

Dat 'not_visible' is in dit geval het wachtwoord. In jouw geval zou dat dus

Code:
char scode[] = { "1234" };

worden.


edit:

@CoD, je was alweer sneller dan mij ^^.
Leuk voorbeeld trouwens met die cola, ik zal wat meer informatie opzoeken over chars en strings, enzo waneer je welke moet gebruiken etc, want daar vergis ik me nogal vaak mee, bedankt! Jouw code is wel een stuk ingewikkelder, en ben nu bezig hem open te halen, om hem te begrijpen. Nogmaals bedankt voor je reactie!

Zoals ik je al eerder heb aangeraden zou ik voor een boek kiezen. Daar wordt alles duidelijk uitgelegd.

Verder ziet mijn code in dat ander topic er alleen maar ingewikkeld uit omdat ik geen using directive gebruik. (using namespace std)
De code is dus ook te herschrijven naar:

Code:
#include <string>
#include <iostream>

using namespace std;

int main(){
string real_pass = "w00t";   // variabele van het type string die het wachtwoord bevat
string input_pass;              // variabele van het type string voor de gebruikers invoer

cout << "Enter your password: ";   
getline(cin, input_pass);                // de gebruiker kan nu iets invoeren en het resultaat
                                                  // wordt opgeslagen in de variabele input_pass

if(real_pass == input_pass)           
  cout << "Ingelogd!" << endl;

return 0;
}
 
Laatst bewerkt:
Hoe bedoel je?

Als je goed naar het filmpje kijkt en naar de code die ik postte dan zou je zien dat het op hetzelfde neerkomt, alleen dat ik het echte wachtwoord in een string bewaar. Dat is eigenlijk het verschil.

Simpel toch ? :cool:
 
Ik snap het password "blocken" (zo noem ik het maar even) helemaal!
Alleen, de code compilt nogsteeds niet, het ligt denk ik aan mij, want de compile error slaat nergens op.. " [linker error] undefined reference to 'WinMain@16' "

Over dat boek nogmaals, welk bevool je ook al weer aan?
En is zo een boek niet heel prijzig?

Bedankt beiden, ik waardeer jullie help!
 
Ik snap het password "blocken" (zo noem ik het maar even) helemaal!
Alleen, de code compilt nogsteeds niet, het ligt denk ik aan mij, want de compile error slaat nergens op.. " [linker error] undefined reference to 'WinMain@16' "

WinMain ? Als je net begint is het misschien makkelijker om het gewoon bij console programma's te houden.

Over dat boek nogmaals, welk bevool je ook al weer aan?
En is zo een boek niet heel prijzig?

Het boek is blijkbaar niet meer te verkrijgen. (ik krijg wel een link via Google: http://www.antiqbook.nl/boox/boek2/KMP732_19048.shtml ; 7,50 of een 10'tje kost het daar)

Als je weinig geld te besteden hebt dan zou je natuurlijk ook een ebook van het internet kunnen downloaden. Dan kost het je niks. (persoonlijk koop ik de meeste boeken gewoon, dat leest prettiger. Vooral als het een dik boek is.)
 
Heb gewoon Dev-C++ als compiler.

En, bedankt voor de link ik zal nog wat zoeken voordat ik besluit :)
 
Bij File -> New Project kies je Console Application in plaats van Windows Application ^^.
 
De zelfde error als ik dat doe, nouja het gaat om het idee ik snap hoe het werkt :)
Bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan