From 02d9afa5d0f42b7ac59edb626ad3ba6e090a5450 Mon Sep 17 00:00:00 2001 From: hk Date: Fri, 20 Jan 2017 14:07:07 +0100 Subject: [PATCH] Early access --- DergunPiotr-WaskoDominik/projekt/Makefile | 4 + .../projekt/gennametest.cpp | 59 ------------- .../projekt/sha1breaker.cpp | 85 +++++++++++++++++++ 3 files changed, 89 insertions(+), 59 deletions(-) create mode 100644 DergunPiotr-WaskoDominik/projekt/Makefile delete mode 100644 DergunPiotr-WaskoDominik/projekt/gennametest.cpp create mode 100644 DergunPiotr-WaskoDominik/projekt/sha1breaker.cpp diff --git a/DergunPiotr-WaskoDominik/projekt/Makefile b/DergunPiotr-WaskoDominik/projekt/Makefile new file mode 100644 index 0000000..11647d6 --- /dev/null +++ b/DergunPiotr-WaskoDominik/projekt/Makefile @@ -0,0 +1,4 @@ +sha1breaker: sha1breaker.cpp + mpicxx -Wall -o breaker sha1breaker.cpp genSha1.cpp +clean: + rm -rf breaker diff --git a/DergunPiotr-WaskoDominik/projekt/gennametest.cpp b/DergunPiotr-WaskoDominik/projekt/gennametest.cpp deleted file mode 100644 index 9d1567d..0000000 --- a/DergunPiotr-WaskoDominik/projekt/gennametest.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - - -using namespace std; - -/* -const int lexSize = 64; //rozmiar musi być potęgą liczby 2!!!! - - -char lex[64] = {'a','b','c','d','e','f','g','h', - 'i','j','k','l','m','n','o','p', - 'r','s','t','u','v','w','x','y', - 'z','A','B','C','D','E','F','G', - 'H','I','J','K','L','M','N','O', - 'P','R','S','T','U','V','W','X', - 'Y','Z','0','1','2','3','4','5', - '6','7','8','9','_',' ','-','!',}; - -*/ - -const int lexSize = 4; - -char lex[4] = {'a','b','c','d'}; - - - -int main(){ - - unsigned int strSize =2,offset; - uint64_t i,temp,maxKomb,mask; - - offset = 2; // [6] ile bitów potrzeba do zapisania liczby lexSize-1 np lexSize=4 to wtedy offset = 2; - mask = 0x3; // [0x3f] np dla maxKomb zapisanego na 64bitach to jest 58 zer i 6 (czyli offset) jedynek: 0000000 0000000 0000000 0000000 0000000 0000000 0000000 00111111 - maxKomb = pow(lexSize,strSize); //maksymalna ilosć komvinacji hasła = lexSize ^ strSize; - i = 0; - - char *str; - str = new char[strSize]; - - - while(i> (offset*j); - str[j] = lex[temp & mask]; - } - printf("%s\n",str); - - i++; - } - - return 0; -} diff --git a/DergunPiotr-WaskoDominik/projekt/sha1breaker.cpp b/DergunPiotr-WaskoDominik/projekt/sha1breaker.cpp new file mode 100644 index 0000000..c910ef1 --- /dev/null +++ b/DergunPiotr-WaskoDominik/projekt/sha1breaker.cpp @@ -0,0 +1,85 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "genSha1.h" + +using namespace std; + +#define lexSize 64 //rozmiar słownika musi być potęgą liczby 2!!!! +#define maxStrSize 10 //maskymalny rozmiar szukanego hasła, nie moze być wiekszy niz 10!! +#define minStrSize 3 //minimalny rozmiar szukanego hasła od 1 do maxStrSize +#define offset 6 //ile bitów potrzeba do zapisania liczby lexSize-1 np lexSize=4 to wtedy offset = 2; +#define mask 0x3f //np dla maxKomb zapisanego na 64bitach to jest 58 zer i 6 (czyli offset) jedynek: 0000000 0000000 0000000 0000000 0000000 0000000 0000000 00111111 + + +//"słownik" +char lex[lexSize] = {'a','b','c','d','e','f','g','h', + 'i','j','k','l','m','n','o','p', + 'r','s','t','u','v','w','x','y', + 'z','A','B','C','D','E','F','G', + 'H','I','J','K','L','M','N','O', + 'P','R','S','T','U','V','W','X', + 'Y','Z','0','1','2','3','4','5', + '6','7','8','9','_',' ','-','!',}; + + + + +int main(int argc, char** argv) { + + + if(argc <2){ + cerr << "Usage: " << argv[0] << " " << endl; + exit(1); + } + + MPI_Init(NULL, NULL); + + int size,rank,strSize; + + MPI_Comm_size(MPI_COMM_WORLD, &size); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + uint64_t i; //licznik, 64 bit-owy bo maxStrSize * offset = 10 * 6 = 60 bit; 4 bity w "zapasie" :-) + uint64_t maxKomb; //maxKomb to maksymalna ilosć kombinacji hasła = lexSize ^ strSize; + + char *str, *result; + result = new char[41]; + str = new char[maxStrSize]; + + + for(strSize = minStrSize;strSize<=maxStrSize;strSize++){ //petla generujaca jaka ma być długość hasła z którego bedzie generowany hash + maxKomb = pow(lexSize,strSize);//tak wiem że potega ale w całym programie wykona się maksymalnie tyle razy: ilość porcesów *(maxStrSize - minStrSize) + i = rank; + + while(i> (offset*j)) & mask]; + } + + sha1((unsigned char*)str,strSize,result); //obliczanie hash z wygenerowanego wcześniej hasła + if(memcmp(argv[1],result,41) == 0 ){ //prównuje hash obliczony z tym podanym jako argument programu + //znaleziono hasha!!! + cout<<"Znalazłem!!!"<