upload
This commit is contained in:
commit
1e806db22e
3 changed files with 157 additions and 0 deletions
BIN
c/hash_cracker
Executable file
BIN
c/hash_cracker
Executable file
Binary file not shown.
133
c/hash_cracker.c
Normal file
133
c/hash_cracker.c
Normal file
|
@ -0,0 +1,133 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <openssl/evp.h>
|
||||
|
||||
void print_help(char *program_name) {
|
||||
printf("Usage: %s -z <zeichen> -h <hash> -t <type>\n", program_name);
|
||||
printf("Options:\n");
|
||||
printf(" -z <zeichen>\tCharacters to use for hashing\n");
|
||||
printf(" -h <hash>\tHash to find\n");
|
||||
printf(" -t <type>\tHash type (MD5, SHA1, SHA224, SHA256, SHA384, SHA512)\n");
|
||||
printf(" -help\t\tShow this help message\n");
|
||||
}
|
||||
|
||||
char* hash(const char* data, const EVP_MD* hash_type) {
|
||||
unsigned char hash[EVP_MAX_MD_SIZE];
|
||||
unsigned int hash_len;
|
||||
|
||||
EVP_MD_CTX *mdctx;
|
||||
mdctx = EVP_MD_CTX_new();
|
||||
|
||||
EVP_DigestInit_ex(mdctx, hash_type, NULL);
|
||||
EVP_DigestUpdate(mdctx, data, strlen(data));
|
||||
EVP_DigestFinal_ex(mdctx, hash, &hash_len);
|
||||
|
||||
EVP_MD_CTX_free(mdctx);
|
||||
|
||||
char* hashed = malloc(sizeof(char) * (2 * hash_len + 1));
|
||||
for (int i = 0; i < hash_len; i++) {
|
||||
sprintf(&hashed[i * 2], "%02x", hash[i]);
|
||||
}
|
||||
return hashed;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char digits[256];
|
||||
char hash_text[256];
|
||||
char hash_type_str[256];
|
||||
|
||||
int c;
|
||||
int z_flag = 0, h_flag = 0, t_flag = 0;
|
||||
|
||||
while ((c = getopt(argc, argv, "z:h:t:help")) != -1) {
|
||||
switch (c) {
|
||||
case 'z':
|
||||
strcpy(digits, optarg);
|
||||
z_flag = 1;
|
||||
break;
|
||||
case 'h':
|
||||
print_help(argv[0]);
|
||||
exit(EXIT_SUCCESS);
|
||||
case 't':
|
||||
strcpy(hash_type_str, optarg);
|
||||
t_flag = 1;
|
||||
break;
|
||||
case '?':
|
||||
fprintf(stderr, "Invalid option. Use -help for usage information.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(z_flag && h_flag && t_flag)) {
|
||||
printf("zeichen:");
|
||||
fgets(digits, sizeof(digits), stdin);
|
||||
digits[strcspn(digits, "\n")] = '\0';
|
||||
|
||||
printf("hash:");
|
||||
fgets(hash_text, sizeof(hash_text), stdin);
|
||||
hash_text[strcspn(hash_text, "\n")] = '\0';
|
||||
|
||||
printf("Hashtype:");
|
||||
fgets(hash_type_str, sizeof(hash_type_str), stdin);
|
||||
hash_type_str[strcspn(hash_type_str, "\n")] = '\0';
|
||||
}
|
||||
|
||||
if (strcmp(hash_type_str, "help") == 0) {
|
||||
print_help(argv[0]);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
printf("Verfügbare Hashtypen:\n");
|
||||
|
||||
const EVP_MD *hash_type;
|
||||
EVP_MD *md;
|
||||
const char* known_digests[] = {"MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", NULL};
|
||||
|
||||
for (int i = 0; known_digests[i] != NULL; i++) {
|
||||
printf("%s,", known_digests[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
hash_type = EVP_get_digestbyname(hash_type_str);
|
||||
|
||||
if (!hash_type) {
|
||||
printf("Ungültiger Hash-Typ\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int len = strlen(digits);
|
||||
int i = 1;
|
||||
while (1) {
|
||||
int n = i;
|
||||
char s[256] = "";
|
||||
while (n > 0) {
|
||||
char digit[2] = {digits[(n - 1) % len], '\0'};
|
||||
strcat(s, digit);
|
||||
n = (n - 1) / len;
|
||||
}
|
||||
|
||||
// Reverse the string to get correct order
|
||||
int length = strlen(s);
|
||||
for (int j = 0; j < length / 2; j++) {
|
||||
char temp = s[j];
|
||||
s[j] = s[length - j - 1];
|
||||
s[length - j - 1] = temp;
|
||||
}
|
||||
|
||||
char* hashed = hash(s, hash_type);
|
||||
printf("%s %s\n", s, hashed);
|
||||
|
||||
if (strcmp(hashed, hash_text) == 0) {
|
||||
printf("found: %s %s\n", s, hashed);
|
||||
free(hashed);
|
||||
exit(0);
|
||||
}
|
||||
free(hashed);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
24
python/sha1_encripter.py
Normal file
24
python/sha1_encripter.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
import hashlib
|
||||
def hash(data, hash_type):
|
||||
return hashlib.new(hash_type, data.encode('utf-8')).hexdigest() if hash_type in hashlib.algorithms_available else "Ungültiger Hash-Typ"
|
||||
|
||||
digits = input("zeichen:")
|
||||
hash_text = input("hash:")
|
||||
for a in hashlib.algorithms_available:
|
||||
print(a,end=",")
|
||||
print("")
|
||||
type = input("Hashtype:")
|
||||
|
||||
i = 0
|
||||
while 1 :
|
||||
n =i
|
||||
s = ''
|
||||
while n > 0:
|
||||
s = digits[n % len(digits)] + s
|
||||
n //= len(digits)
|
||||
hashed = hash(s,type)
|
||||
print(s,hashed)
|
||||
if hashed == hash_text:
|
||||
print("found: ",s,hashed)
|
||||
exit()
|
||||
i += 1
|
Loading…
Reference in a new issue