Created
January 14, 2019 16:08
-
-
Save Celestial-intelligence/429d60b1428ed90a20d3c2bdecf1614e to your computer and use it in GitHub Desktop.
Nmap through chain of proxies script by https://github.com/killswitch-GUI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import multiprocessing | |
from argparse import RawTextHelpFormatter | |
import Queue | |
import threading | |
import os | |
import sys | |
import subprocess | |
import argparse | |
from random import randint | |
def cli_parser(): | |
parser = argparse.ArgumentParser(add_help=False, description='''This script Simply routes your nmap scan in a "sort-of" fast way | |
through a ProcyChain that has been setup. | |
\n\t(1) You will find out that when routing nmap through a Proxychain connection that Timing performace is out the window. | |
\n\t(2) This is do to the nature of a SOCKS proxy and SYN->SYN/ACK connection is already established in NMAPS Eyes. | |
\n\t(3) It out puts random (#) of .gnmap file for each IP for parsing. (MAKE A FOLDER) :) | |
''', formatter_class=RawTextHelpFormatter) | |
parser.add_argument("-i", metavar="iplist.txt", help="Set Ip List of IPs Delimited by line") | |
parser.add_argument('-h', '-?', '--h', '-help', '--help', action="store_true", help=argparse.SUPPRESS) | |
args = parser.parse_args() | |
if args.h: | |
parser.print_help() | |
sys.exit() | |
if not args.i: | |
print "[!] I need a list IP's!" | |
sys.exit() | |
return args.i | |
def Execution(Task_queue): | |
while True: | |
Ip = Task_queue.get() | |
# If the queue is emepty exit this proc | |
# Setup a simple output in the folder, For gnmap Parser | |
IpName = str(Ip).replace('.',"-") + str(".gnmap") | |
if Ip is None: | |
break | |
try: | |
print "[*] On Ip: " + Ip | |
test = subprocess.check_output(["proxychains", "nmap", "-Pn", "-n", "-sT", "--max-scan-delay", "0", "-p111,445,139,21-23,80,443", "-oG", IpName, "--open", Ip]) | |
test = "" | |
except: | |
pass | |
def TaskSelector(Task_queue, verbose=False): | |
total_proc = int(8) | |
for i in xrange(total_proc): | |
Task_queue.put(None) | |
procs = [] | |
for thread in range(total_proc): | |
procs.append(multiprocessing.Process(target=Execution, args=(Task_queue,))) | |
for p in procs: | |
p.daemon = True | |
p.start() | |
for p in procs: | |
p.join() | |
Task_queue.close() | |
def Ip_List(Task_queue, cli_IpList): | |
items = [] | |
cli_IpList = str(cli_IpList) | |
try: | |
with open(cli_IpList, "r") as myfile: | |
lines = myfile.readlines() | |
for line in lines: | |
line = line.rstrip('\n') | |
items.append(line) | |
for item in items: | |
Task_queue.put(item) | |
return Task_queue | |
except Exception as e: | |
print "[!] Please check your Ip List: " + str(e) | |
sys.exit(0) | |
def main(): | |
cli_IpList = cli_parser() | |
Task_queue = multiprocessing.Queue() | |
Task_queue = Ip_List(Task_queue, cli_IpList) | |
TaskSelector(Task_queue) | |
if __name__ == "__main__": | |
try: | |
main() | |
except KeyboardInterrupt: | |
print 'Interrupted' | |
try: | |
sys.exit(0) | |
except SystemExit: | |
os._exit(0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment