Forum: C++, Knäcka lösenord

Forum huvudsida -> Programmering -> C++, Knäcka lösenord

Sidor: 1

Till botten

Sat4n1C 22:48 - 4:e September 2006 | Post #1
Medlem
Inlägg: 33


Skicka PM
Hej, jag ska försöka knäcka ett lösenord med hjälp av C++. Har fått följande ledtrådar:

th***rs***gh

Stjärnorna står för okänt. Nu vad jag skulle villja göra är ett program i C++ som skriver ut varenda möjlig kombination av siffror och bokstäver som passar in där stjänorna är. Jag gjorde ett försök men det är för svårt för mig, jag är fortvarande ny inom C++.

,,r jättetacksam för varje kodsnutt jag kan få, eftersom jag kan även lära mig något av detta.




Nissebosselasse 12:51 - 5:e September 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Försök lösa det med papper och penna först. Om du lyckas där, är det inte så svårt att föra över den lösningen till C++-kod.

-------------------------
http://pushingcows.se
Gula Nallen



Sat4n1C 20:07 - 5:e September 2006 | Post #3
Medlem
Inlägg: 33


Skicka PM
Bra idé. Smiley




Earlen 20:27 - 5:e September 2006 | Post #4
Medlem
Inlägg: 1


Skicka PM
Bruteforce på papper är så härligt! Smiley

-------------------------
Ingen signatur!



Sat4n1C 17:47 - 19:e September 2006 | Post #5
Medlem
Inlägg: 33


Skicka PM
Kom på en kod nu;

  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int i = 10;
  9. char pass[i];
  10. cout << "Losenords alternativ.\n"
  11. << "Skriv in ett losen ord, anvand _ for okant.\n";
  12. cin >> pass;
  13. for (i = 0; pass[i] != '_'; i++);
  14. char t;
  15. t = pass[i];
  16. for (t = 'a'; t != '{'; t++)
  17. {
  18. pass[i] = t;
  19. cout << pass << endl;
  20. }
  21. cin.get();
  22. cin.get();
  23. return 0;
  24. }



Fast jag vill få den att inte bara ge alternativ på en okänd bokstav. Hur gör jag så att den ger alternativ på alla okända bokstäver? Behöver jag göra så att den anropar en void funktion? Hur gör jag det, har glömt.




Independence 18:26 - 19:e September 2006 | Post #6
Administratör
Inlägg: 1800


Skicka PM
Lägg din nuvarande kod i en yttre loop som loopar vidare även efter att den hittar den första okända bokstaven.

-------------------------

Vi är riddarna som säger fiskbulle!





Sat4n1C 18:38 - 19:e September 2006 | Post #7
Medlem
Inlägg: 33


Skicka PM
Tack.




Sat4n1C 19:37 - 19:e September 2006 | Post #8
Medlem
Inlägg: 33


Skicka PM
Men jag kommer inte på något sätt där den skriver ut alla kombinationer från a till z i flera okända bokstäver. Så det liksom står: aa, ab, ac ... az, ba, bb osv.




FunkyChicken 20:46 - 19:e September 2006 | Post #9
Nyhetsredaktör
Inlägg: 800


Skicka PM
Nästla loopar, precis som indy sa. Dvs en loop inuti en annan, där den innre spottar ur sig alla bokstäver a-z och den yttre går igenom varje okänd "plats".




Sat4n1C 22:24 - 20:e September 2006 | Post #10
Medlem
Inlägg: 33


Skicka PM
Jag visste vad indy menade men jag visste inte riktigt hur jag skulle konstruktera loopen bara.. tack ändå Smiley.


Senast redigerad 22:11 - 21:a September 2006


Sat4n1C 17:13 - 22:a September 2006 | Post #11
Medlem
Inlägg: 33


Skicka PM
Asså det går inte... eller det går säkert men jag kan inte, hjälp? Smiley




rossa 12:55 - 23:e September 2006 | Post #12
Medlem
Inlägg: 2


Skicka PM
Jag skulle lösa det med en rekusiv funktion, så här:
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. const char UNKNOWN = '_';
  7.  
  8. int main() {
  9. int i = 10;
  10. char pass[i];
  11. cout << "Losenords alternativ.\n"
  12. << "Skriv in ett losen ord, anvand " << UNKNOWN << " for okant.\n";
  13.  
  14. cin >> pass;
  15.  
  16. passWords(pass, 0);
  17.  
  18. cin.get();
  19. cin.get();
  20.  
  21. return 0;
  22. }
  23.  
  24. void passWords(char pass[], int start) {
  25. int i = start;
  26. for (; pass[i] && pass[i] != UNKNOWN; i++);
  27. if (!pass[i]) {
  28. cout << pass;
  29. return;
  30. }
  31. for (char letter = 'a'; letter <= 'z'; letter++) {
  32. pass[i] = letter;
  33. passWords(pass, i + 1);
  34. }
  35.  
  36. pass[i] = UNKNOWN;
  37. }


jag har inte testat koden (plus att det var några månader sen jag programmerade i c++).. så det är inte säkert att den fungerar, men man kan ju hoppas Smiley

-------------------------
Ingen signatur!



Sat4n1C 19:54 - 23:e September 2006 | Post #13
Medlem
Inlägg: 33


Skicka PM
Du glömde bara funktions prototypen, annars funkar den jätte bra. Stort tack till dig Smiley.

  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5. const char UNKNOWN = '_';
  6. void passWords(char[], int); // funktions prototypen
  7.  
  8. int main() {
  9. int i = 10;
  10. char pass[i];
  11. cout << "Losenords alternativ.\n"
  12. << "Skriv in ett losen ord, anvand " << UNKNOWN << " for okant.\n";
  13.  
  14. cin >> pass;
  15.  
  16. passWords(pass, 0);
  17.  
  18. cin.get();
  19. cin.get();
  20.  
  21. return 0;
  22. }
  23.  
  24. void passWords(char pass[], int start) {
  25. int i = start;
  26. for (; pass[i] && pass[i] != UNKNOWN; i++);
  27. if (!pass[i]) {
  28.  
  29. cout << pass << " ";
  30.  
  31. return;
  32. }
  33. for (char letter = 'a'; letter <= 'z'; letter++) {
  34. pass[i] = letter;
  35. passWords(pass, i + 1);
  36. }
  37. pass[i] = UNKNOWN;
  38. }





Sidor: 1

Forum huvudsida -> Programmering -> C++, Knäcka lösenord
Atom feed

Du får inte posta i den här tråden | Till toppen