Post

Crackme-2.exe

Crackme-2.exe

Serial Key:

00071015021712630926010611140318522308271605621325385122612819044253243750213229395641603134472054435849364530335740554459483546

The crackme2 executable file is available at crackme2.rar archive.

Knight Move Generator

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <iomanip>

int PossibleMoves[8][2] = { 
    { -1, -2},
    { -2, -1},
    { -2, 1 },
    { -1, 2 },
    { 1, 2 },
    { 2, 1 },
    { 2, -1 },
    { 1, -2 }
};

int** FullPole; 
int n; 
int start_x, start_y; 

bool CanStep(int x, int y){
    return x >= 0 && y >= 0 && x < n&& y < n;
}

bool Moves(int x, int y){
    return CanStep(x, y) && FullPole[x][y] == 0;
}

bool FindMoves(int x, int y, int counter){

    FullPole[x][y] = counter;

    if (counter > n * n - 1) return true;

    for (int i = 0; i < 8; i++) {
        int NxMove_x = x + PossibleMoves[i][0];
        int NxMove_y = y + PossibleMoves[i][1];
        if (CanStep(NxMove_x, NxMove_y) 
            && FullPole[NxMove_x][NxMove_y] == 0 && FindMoves(NxMove_x, NxMove_y, counter + 1))
             return true;
    }
   
    FullPole[x][y] = 0;
    counter--;
    return false;
}

void BeginHorse(int** pole, int start_x, int start_y, int size) {
    FullPole = pole;
    n = size;
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
            pole[i][j] = 0;
}

using namespace std;

void OutPole() {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            cout << setfill('0') << setw(2) << FullPole[i][j]-1 << "  ";
        cout << "\n";
    }
}

int main() {
    
	int n = 8;
    int start_x = 0;
    int start_y = 0;
    int** pole = NULL;
    int x0 = 1;
    int y0=1;
    setlocale(LC_ALL, "rus");
    /*cout << "\n[+] Enter square size 8x8: ";
    cin >> n;
    cout << "\n[+] Initial x position: ";
    cin >> x0;
    cout << "\n[+] Initial y position: ";
    cin >> y0;*/
    x0--;
    y0--;
    if (x0 > n || y0 > n || x0 < 0 || y0 < 0) {
        cout << "\nerror\n";
        return -1;
    }

    pole = new int* [n];
    for (int i = 0; i < n; i++)
        pole[i] = new int[n];

    BeginHorse(pole, x0, y0, n);

    if (FindMoves(x0, y0, 1))
        OutPole();
    else
        cout << "\n[!] No solution. \n";
   
   return 0;
}

This post is licensed under CC BY 4.0 by the author.