Witam, postanowiłem napisać prosty programik, który emulując klawiaturę, będzie próbował łamać dowolne hasło metodą siłową. Oto sama algorytmiczna esencja tego programu (później będę się jeszcze bawił w jego przyspieszanie i rozszerzanie, żeby potrafił odgadywać hasła dłuższe niż 3 literowe):
#include
#include
#include
using namespace std;
inline byte dopasuj(int i){
if (i==1) return 0x41;
if (i==2) return 0x42;
if (i==3) return 0x43;
if (i==4) return 0x44;
if (i==5) return 0x45;
if (i==6) return 0x46;
if (i==7) return 0x47;
if (i==8) return 0x48;
if (i==9) return 0x49;
if (i==10) return 0x4A;
if (i==11) return 0x4B;
if (i==12) return 0x4C;
if (i==13) return 0x4D;
if (i==14) return 0x4E;
if (i==15) return 0x4F;
if (i==16) return 0x50;
if (i==17) return 0x51;
if (i==18) return 0x52;
if (i==19) return 0x53;
if (i==20) return 0x54;
if (i==21) return 0x55;
if (i==22) return 0x56;
if (i==23) return 0x57;
if (i==24) return 0x58;
if (i==25) return 0x59;
if (i==26) return 0x5A;
}
void czekaj(){
time_t start_time, cur_time;
time(&start_time);
do
{
time(&cur_time);
}
while((cur_time - start_time) < 5);}
int main(int argc, char *argv[])
{cout<<“witamy w PasswordFinder by JSoft”<
cin.ignore();
czekaj();
int i,j,k;
for (i=0; i<27;i++){
for (j=0; j<27; j++){
for(k=1; k<27; k++){
if (i==0 and j==0){
keybd_event(dopasuj(k),0,0,0);
keybd_event(VK_RETURN,0,0,0);}
else if(i==0 and j!=0){
keybd_event(dopasuj(j),0,0,0);
keybd_event(dopasuj(k),0,0,0);
keybd_event(VK_RETURN,0,0,0);}
else{
keybd_event(dopasuj(i),0,0,0);
keybd_event(dopasuj(j),0,0,0);
keybd_event(dopasuj(k),0,0,0);
keybd_event(VK_RETURN,0,0,0);}
}}}
system(“PAUSE”);
return EXIT_SUCCESS;
}
problem jednak polega na tym, że program nie zdaje sobie sprawy z tego, że podał już właściwe hasło… w pewnym momencie właściwe hasło zostanie podane, zaszyfrowany plik się otworzy, ale algorytm będzie działać dalej, nie zdając sobie sprawy z tego, że już osiągnął swój cel… pytanie to “co można dodać do tego algorytmu, żeby program mógł w odpowiednim momencie zastopować i podać jakie było to właściwe hasło?”