Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[C++] Crackme -> Passwort dynamisch ändern

Diskussion: [C++] Crackme -> Passwort dynamisch ändern im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi HaBo, ich arbeite momentan an einem crackme, habe bereits einige sicherungen implementiert nur jetzt hänge ich an folgendem: ...

Antwort
Alt 11.10.08, 09:57   #1 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard [C++] Crackme -> Passwort dynamisch ändern

Anzeige

Hi HaBo,
ich arbeite momentan an einem crackme, habe bereits einige sicherungen implementiert nur jetzt hänge ich an folgendem:
Ich wollte eine passwort abfrage erstellen die nach einer bestimmten zeit (z.B 10 sekunden) das passwort ändert. innerhalb dieser 10 sekunden soll das passwort eingegeben werden. Mein quellcode sah bisher so aus:

Code   

Code:
//...
string password; //soll pw aufnehmen
string input;        //nimmt usereingabe auf

while(1)
{
    password = generate();             //erstellt pseudo-zufälliges pw
    cout << "Passwort: " << endl;  
    wait(10);                                     //wartet 10 sek. ohne was anderes zu machen
    cin >> input;                               //list pw ein
    check(input, password);             //prüft password mit weiteren mechanismen
                                                       //und verlässt ggf die schleife
}

ihr sehts wahrscheinlich schon, während wait(); kann der user nichts eingeben und wenn wait zuende ist ist der zeitraum für die eingabe zu kurz. daher die frage:
wie kann der user parallel zu wait() eine eingabe machen?
weder in büchern noch in google konnte ich geeignetes finden.

dankbar für jede hilfe,
bad_alloc

PS: man soll zwar keine crackmes erstellen, die man ohne fremde hilfe nicht fertigkriegt, aber hier interessierts mich einfach mal ;)
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
Alt 11.10.08, 11:49   #2 (permalink)
 
Registriert seit: 28.07.08
ArnoNühm Leistung: Z3
Likes: 1
Standard RE: [c++]

also mit cin hast du da keine chance, da der aufruf solange blockiert, bis ne eingabe da ist. Ich glaube auch nicht, dass dir die stdlibs von cpp da weiterhelfen können. Ich denke hier must du die os-API verwenden. Unter windows ginge das grob so:
Code:
#include <windows.h>

#pragma comment(lib,"kernel32.lib")

/* ... */


HANDLE console = GetStdHandle(STD_INPUT_HANDLE);

time_t startTime = time(NULL);

char* pwdBuf = new char[BUFSIZE];

while(time(NULL) - startTime <= 10)
{
if(WaitForSingleObject(console,0) == WAIT_OBJECT_0)
{
// hier mit ReadConsole() den input an deinen buffer anhhängen und prüfen, ob nen enter dabei war, wenn ja -> break;
}
}

//hier hast du dann entweder die eingabe im buf oder die zeit ist abgelaufen

edit:
beim WaitForSingleObject() bitte nicht unbedingt 0 als timeout nehmen, das würde ne eingabe mit 100% cpu-last bedeuten,  50 ms wären da wohl besser.
ArnoNühm ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 11.10.08, 11:50   #3 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Das wait() oder die Eingabe in einen extra Thread packen sollte doch gehen.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 11.10.08, 11:54   #4 (permalink)
Themenstarter
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard

Zitat:
hier mit ReadConsole() den input an deinen buffer anhhängen und prüfen, ob nen enter dabei war, wenn ja -> break;
könnte man auch "einfach" direkt nach wait(); mit ReadConsole() die konsole auslesen, oder bekommt man da das zurückgeliefert, was man mit cout auf die konsole geschrieben hat?

edit: (bitmuncher war schneller)
mit threads hab ich zwar noch garnichts am hut aber ich werds mir mal ansehen.
(damit wäre eine plattformunabhängige lösung dahin)
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
Alt 11.10.08, 12:08   #5 (permalink)
 
Registriert seit: 28.07.08
ArnoNühm Leistung: Z3
Likes: 1
Standard

Zitat:
Original von bad_alloc
könnte man auch "einfach" direkt nach wait(); mit ReadConsole() die konsole auslesen, oder bekommt man da das zurückgeliefert, was man mit cout auf die konsole geschrieben hat?
die wait-function aus deinem snippet kenne ich garnicht. ich vermute mal die ist äquivalent zu Sleep() und hält die ganze anwendung an, was du ja eigentlich nicht möchtest. besser ist es mit WaitForSingleObject immer nur kurz zu warten. gleichzeitig verrät dir der Rückgabewert von WaitForSingleObject(), ob etwas eingegeben wurde. diese info brauchst du, da ReadConsoleInput sonst blockiert, bis etwas eingegeben wurde und das möchtest du sicher auch nicht.

Der Vorschlag von bitmuncher war auch meine erste idee, aber hat einen entscheidenen nachteil. cin blockiert solange bis nen enter kommt. und wenn man dann nach 10s die eingabe abbrechen möchte geht das nur mit TerminateThread(), was dazu führt, dass der Thread brutal beendet, ohne dass man noch irgendwelche aufräumarbeiten machen kann, wodurch laufzeitfehler vorprogrammiert sind.
ArnoNühm ist offline   Mit Zitat antworten
Alt 11.10.08, 12:12   #6 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Zitat:
Original von ArnoNühm
Der Vorschlag von bitmuncher war auch meine erste idee, aber hat einen entscheidenen nachteil. cin blockiert solange bis nen enter kommt. und wenn man dann nach 10s die eingabe abbrechen möchte geht das nur mit TerminateThread(), was dazu führt, dass der Thread brutal beendet, ohne dass man noch irgendwelche aufräumarbeiten machen kann, wodurch laufzeitfehler vorprogrammiert sind.
Hm, stimmt. Ich weiss schon warum ich Admin und kein Coder geworden bin.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [C++] Crackme -> Passwort dynamisch ändern
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder dynamisch mit Wasserzeichen einbinden reaLInsanity (Web-) Design und webbasierte Sprachen 4 03.04.07 14:24
Port 80 dynamisch öffnen/schließen Epic Network · LAN, WAN, Firewalls 4 23.12.06 23:07
mac os x login passwort ändern karuna Mac OS & Co. 4 06.10.06 07:24
CS Statistik für Website dynamisch Mechanius Games 1 04.06.06 23:24
Passwort durch dass ändern der Sam Datei ändern Xalon (In)security allgemein 3 08.01.06 18:54


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61