Allora, ho un problema per molti stupido, penso... allora, io ho fatto un piccolo programma che effettua un semplicissimo brute force su un hash MD5 fornito dall'utente. Il problema è che, in fase di compilazione, tale programma mi da degli errori che non riesco a capire.

Tali errori sono:
prova_crittografia.c: In function `main':
prova_crittografia.c:22: error: incompatible types in assignment
prova_crittografia.c:25: warning: passing arg 2 of `strcat' makes pointer from integer without a cast
prova_crittografia.c:29: error: incompatible types in assignment

Questo invece è il codice del programma. Premetto che ho spulciato il codice, guardato su Internet, sulle pagine del man... ma non sono venuto a capo di niente!

codice:
#include <stdio.h>
#include <openssl/md5.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

char pass[10], hash[100], hashcreato[100];
char all[]={'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'z', 'y', 'x', 'j'};

unsigned int lunghezza=3, lunghezza2, posizione;
unsigned long int tentativi, longpass;

int main(){
printf("Insert the hash: ");
scanf("%s", &hash);
srand(time(NULL));
	tentativi=pow(26, lunghezza);
	while(lunghezza > 0){
		lunghezza2=lunghezza;
		while(tentativi > 0){
			pass="";
			while(lunghezza2>0){
			posizione=rand() % 25;
			strcat(pass, all[posizione]);
			lunghezza--;
			}
		longpass = sizeof(pass);
		hashcreato= MD5(pass, longpass, NULL);
		if((strcmp(hashcreato, hash)) == 0){ printf("PASSWORD FOUND! The password is: %s", pass); exit(0);}
		tentativi--;
		}
	lunghezza--;
}
return 0;
}
Se riuscite ad aiutarmi mi fate un favore immenso