diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index c9debe6e2545953bada4034a4a961728c2f0eb8c..bccc4c9e8a479a2a03d0e8de0f64a12caf15f262 100755 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1 +1,16 @@ -version: '3' \ No newline at end of file +version: '3' + +services: + esclave: + build: ./esclave + environment: + - HASH + depends_on: + - maitre + maitre: + build: ./maitre + redis: + image: redis:3.0.6 + container_name: cache + expose: + - 6379 diff --git a/docker/esclave/brute_force_md5.py b/docker/esclave/brute_force_md5.py index 1ba13dceb17e8f8f6caaf5cc6186d7f76b33b64d..d6b7a9fdbc43335eed26dca8a532faa59525abbc 100755 --- a/docker/esclave/brute_force_md5.py +++ b/docker/esclave/brute_force_md5.py @@ -1 +1,73 @@ -ddddddddd \ No newline at end of file + +import time +import itertools, string +import hashlib +import sys +import signal +import threading + +done = False + +def signal_handler(signal, frame): + print('You pressed Ctrl+C') + global done + done=True + sys.exit(0) +def animate(): + for c in itertools.cycle(['|', '/', '-', '\\']): + if done==True: + break + + sys.stdout.write('\rloading ' + c) + sys.stdout.flush() + time.sleep(0.1) + + + +def _attack(chrs, inputt): + print("[+] Start Time: ", time.strftime('%H:%M:%S')) + start_time = time.time() + t = threading.Thread(target=animate) + t.start() + total_pass_try=0 + for n in range(1, 31+1): + characterstart_time = time.time() + print("\n[!] I'm at ", n , "-character") + + + for xs in itertools.product(chrs, repeat=n): + + saved = ''.join(xs) + stringg = saved + m = hashlib.md5() + m.update(saved) + total_pass_try +=1 + if m.hexdigest() == inputt: + time.sleep(10) + global done + done = True + + print("\n[!] found ", stringg) + print("\n[-] End Time: ", time.strftime('%H:%M:%S')) + print("\n[-] Total Keyword attempted: ", total_pass_try) + print("\n---Md5 cracked at %s seconds ---" % (time.time() - start_time)) + sys.exit() + + + print("\n[!]",n,"-character finished in %s seconds ---" % (time.time() - characterstart_time)) + + + +def main(argv): + + # arg1 = hash a bruteforcer + print("Hash a bruteforcer: ", sys.argv[1]) + inp_usr = sys.argv[1] + chrs = string.printable.replace(' \t\n\r\x0b\x0c', '') + #print(chrs) + signal.signal(signal.SIGINT, signal_handler) + return _attack( chrs,inp_usr ); + + +if __name__ == "__main__": + main(sys.argv[1:])