Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <conio.h>
- #include <time.h>
- #include <string>
- #include <fstream>
- #include <WinSock.h>
- #include <locale.h>
- #pragma comment (lib, "ws2_32.lib")
- #define MIN_LEN 2 //zaczynomy generacja od tylu znakowych haseł
- #define MAX_LEN 5 //tyla - 1 jest maksymalnie znaków w haśle
- using namespace std;
- string znaki = "abcdefghijklmnopqrstuvwxyz";
- string zaszyfrowany_tekst;
- string szukana = "lorem"; //szukany fragment odszyfrowanego tekstu
- clock_t tStart;
- //ta funkcja akurat nie jest używano w tym programie ale zrobiłch ja bo MOGA i UMIA!
- string vigenere_en(string m, string c) {
- transform(m.begin(), m.end(), m.begin(), ::tolower);
- string e = "";
- string k = "";
- int a, b, n = m.length();
- int temp = 0;
- int index = 0;
- for (int i = 0; i < n; ++i) {
- if (m[i] > 96 && m[i] < 123) {
- a = znaki.find_first_of(m[i]);
- b = znaki.find_first_of(c[temp++]);
- if (temp > c.length() - 1) temp = 0;
- index = ((a + b) % 26);
- e += znaki[index];
- } else e += m[i];
- }
- return e;
- }
- //funkcja deszyfrująco vigenera
- string vigenere_de(string c, string k) {
- string d = "";
- int a, b, n = c.length();
- int temp = 0;
- int index = 0;
- for (int i = 0; i < n; ++i) {
- if (c[i] > 96 && c[i] < 123) {
- a = znaki.find_first_of(c[i]);
- b = znaki.find_first_of(k[temp++]);
- if (temp > k.length() - 1) temp = 0;
- index = ((a - b) % 26);
- if (index < 0) index = 26 + index;
- d += znaki[index];
- } else d += c[i];
- }
- return d;
- }
- //funkcja generująco wszystkie możliwe kombinacje haseł tak jak brute force
- void generate(unsigned int length, string s) {
- if (length == 0) {
- string odszyfrowany_tekst = vigenere_de(zaszyfrowany_tekst, s);
- int pos = odszyfrowany_tekst.find(szukana);
- if (pos > -1) {
- system("cls");
- cout << "Czas szukania hasła wyniósł: " << ((double)(clock() - tStart) / CLOCKS_PER_SEC) << endl;
- cout << "Hasło to: " << s << endl;
- cout << "Odszyfrowany tekst to: " << endl << endl << odszyfrowany_tekst << endl;
- _getch();
- exit(0);
- }
- return;
- }
- for (unsigned int i = 0; i < znaki.length(); ++i) {
- string a = s + znaki[i];
- generate(length - 1, a);
- }
- }
- int main() {
- setlocale(LC_CTYPE, ".1250");
- SetConsoleTitle(TEXT("Crackowanie Vigenera brute forcem!"));
- fstream plik;
- plik.open("szyfr.txt");
- if (plik.is_open()) {
- getline(plik, zaszyfrowany_tekst);
- unsigned int stringlength = MIN_LEN;
- cout << "Kliknij aby zacząć szukać hasło metodą bruteforce!" << endl;
- _getch();
- tStart = clock();
- cout << "Crackuje hasło... To może potrwać..." << endl;
- while (stringlength < MAX_LEN) {
- generate(stringlength, "");
- stringlength++;
- }
- plik.close();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement