diff --git a/Makefile b/Makefile index 842747894c6dcc0096e19f1efae154370999e442..253992af19230ef00c4220cbe7215a758ba6d39a 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,14 @@ CC = gcc CFLAGS = -std=c99 -O3 -Wall -Wpedantic EXE = crack -CFILE = crack.c all: $(EXE) -$(EXE): $(CFILE) - $(CC) $(CFLAGS) -o $(EXE) $< +sha256.o: sha256.c sha256.h + $(CC) $(CFLAGS) -c sha256.c -# %: %.c -# $(CC) $(CFLAGS) -o $@ $< +$(EXE): crack.c sha256.o + $(CC) $(CFLAGS) -o $(EXE) crack.c sha256.o clean: rm $(EXE) diff --git a/crack.c b/crack.c index cc3b55164fc37f017858f6b7986306c8cf7c2540..fd5a928e599c9964bd6f51546cd3370a6e02484d 100644 --- a/crack.c +++ b/crack.c @@ -3,14 +3,75 @@ #include <stdlib.h> #include <string.h> +#include "sha256.h" + // constants #define PWD4_FILENAME "pwd4sha256" #define PWD6_FILENAME "pwd6sha256" +#define PWD_NUMBERS 30 +#define BUFFERSIZE 256 // methods reference +void check_guess(BYTE guess[], BYTE pwd[PWD_NUMBERS][SHA256_BLOCK_SIZE]); int main(int argc, char** argv) { - printf("test Makefile\n"); + + if (argc == 1) { + FILE* pwdfp; + unsigned char buffer[SHA256_BLOCK_SIZE]; + + pwdfp = fopen(PWD4_FILENAME, "rb"); + + // read 32 bytes to buffer + fread(buffer, SHA256_BLOCK_SIZE, 1, pwdfp); + + fclose(pwdfp); + + } else if (argc == 2) { + + } else if (argc == 3) { + FILE* guessfp; + FILE* pwdfp; + char buffer[BUFFERSIZE]; + + guessfp = fopen(argv[1], "r"); + pwdfp = fopen(argv[2], "rb"); + + while (fgets(buffer, sizeof(buffer), guessfp) != NULL) { + printf("%s", buffer); + } + + fclose(guessfp); + fclose(pwdfp); + } return 0; +} + +void check_guess(BYTE guess[], BYTE pwd[PWD_NUMBERS][SHA256_BLOCK_SIZE]) { + SHA256_CTX ctx; + BYTE buf[SHA256_BLOCK_SIZE]; + size_t guess_len = strlen(guess); + int i; + + sha256_init(&ctx); + sha256_update(&ctx, guess, guess_len); + sha256_final(&ctx, buf); + + if (guess_len == 4) { + for (i = 0; i < 10; i++) { + if (!memcmp(pwd[i], buf, SHA256_BLOCK_SIZE)) { + printf("%s %d\n", guess, i + 1); + } + } + } else if (guess_len == 6) { + for (i = 10; i < 30; i++) { + if (!memcmp(pwd[i], buf, SHA256_BLOCK_SIZE)) { + printf("%s %d\n", guess, i + 1); + } + } + } else { + fprintf(stderr, "ERROR, undefine guess length\n"); + exit(0); + } } \ No newline at end of file