main
Justus Jan Nico Wolff 2024-05-09 16:49:56 +02:00
parent 0870f897bc
commit 3f6efe921b
4 changed files with 133 additions and 6 deletions

72
py/aitest.py 100644
View File

@ -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)

15
py/hashcracker.py 100644
View File

@ -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))

26
py/howto.txt 100644
View File

@ -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"

View File

@ -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))