diff --git a/py/aitest.py b/py/aitest.py new file mode 100644 index 0000000..5bc6f07 --- /dev/null +++ b/py/aitest.py @@ -0,0 +1,72 @@ +import pygad +import numpy +from main import hasher +hashing = hasher() +target = "dies ist ein test weisst du?" +stringlength = int(len(target)/4) +target = hashing.mhash(target) +generations = 5000 + +def similar(str1, str2): + str1 = str1 + ' ' * (len(str2) - len(str1)) + str2 = str2 + ' ' * (len(str1) - len(str2)) + return sum(1 if i == j else 0 + for i, j in zip(str1, str2)) / float(len(str1)) +global counter +counter = 0 +def fitness_func(ga_instance, solution, solution_idx): + global counter + temp = "" + for i in solution: + temp = temp + str(i) + output = hashing.mhash(temp) + print(" ", end="\r", flush=True) + print(output+(" "*(20-len(output)))+str(counter)+"/"+str(generations), end="\r", flush=True) + counter += 1 + return similar(target, output) +fitness_function = fitness_func + +num_generations = generations +num_parents_mating = 4 + +sol_per_pop = 8 + +num_genes = stringlength + +init_range_low = -2 +init_range_high = 5 + +parent_selection_type = "sss" +keep_parents = 1 + +crossover_type = "single_point" + +mutation_type = "random" +mutation_percent_genes = 10 +space = [] +for i in range(num_genes): + space.append(range(100)) +ga_instance = pygad.GA(num_generations=num_generations, + num_parents_mating=num_parents_mating, + fitness_func=fitness_function, + sol_per_pop=sol_per_pop, + num_genes=num_genes, + init_range_low=init_range_low, + init_range_high=init_range_high, + parent_selection_type=parent_selection_type, + keep_parents=keep_parents, + crossover_type=crossover_type, + mutation_type=mutation_type, + mutation_percent_genes=mutation_percent_genes, + gene_space=space) +ga_instance.run() +solution, solution_fitness, solution_idx = ga_instance.best_solution() +print() +print("param: "+str(solution)) +print("fitness: "+str(solution_fitness)) +print("target: "+target) +temp = "" +for i in solution: + temp = temp + str(i) +output = hashing.mhash(temp) +print("calculated guess: "+output) \ No newline at end of file diff --git a/py/hashcracker.py b/py/hashcracker.py new file mode 100644 index 0000000..bd161cc --- /dev/null +++ b/py/hashcracker.py @@ -0,0 +1,15 @@ +import main +import string +characters = list(string.printable) +hash = input("hash? ") +hashing = main.hasher() +print("decoding into decimal...") +out = [] +for i in hash: + out.append(characters.index(i)) +print("decoded! "+str(out)) +print("decoding to bin...") +nout = [] +for i in out: + nout.append(hashing.tobin(i)) +print("decoded! "+str(nout)) \ No newline at end of file diff --git a/py/howto.txt b/py/howto.txt new file mode 100644 index 0000000..107937f --- /dev/null +++ b/py/howto.txt @@ -0,0 +1,26 @@ +split into 7 blocks + +"dies is" "t ein t" "est." + +turn into numbers + +"14 19 15 29" etc. + +turn into binary + +"0111" etc. + +turn binary into numbers + +"7" etc. + +turn numbers into characters + +"6" + + + + + + + diff --git a/py/main.py b/py/main.py index ae0bb17..b26f0e6 100644 --- a/py/main.py +++ b/py/main.py @@ -7,7 +7,7 @@ class hasher: def todec(self, target): return int("0b"+target, 2) - def toblocks(self, target, size=4): + def toblocks(self, target, size=7): blocks = [] temp = "" for i in range(len(target)): @@ -23,7 +23,7 @@ class hasher: def strbin(self, target): temp = "" for i in target: - temp = temp + str(characters.index(i)%2) + temp = temp + str(self.tobin(characters.index(i))) return temp def prep(self, target): @@ -47,11 +47,25 @@ class hasher: out = out + characters[i%len(characters)] return out - if __name__ == "__main__": hashing = hasher() - target = "Hello, World!" - print("single character hash: "+hashing.ohash(target)) - print("string hash: "+hashing.mhash(target)) + target = "Hello, World! This is the hashing test string." + """file = filedialog.askopenfilename() + file = open(file, 'r') + target = file.read() + file.close()""" + print("single character hash: "+repr(hashing.ohash(target))) + print("string hash: "+repr(hashing.mhash(target))) + print("decoding into decimal...") + out = [] + for i in hashing.mhash(target): + out.append(characters.index(i)) + print("decoded! "+str(out)) + print("decoding to bin...") + nout = [] + for i in out: + nout.append(hashing.tobin(i)) + print("decoded! "+str(nout)) +