|
4 | 4 | import socket
|
5 | 5 | import time
|
6 | 6 | import sys
|
| 7 | +import argparse |
7 | 8 |
|
| 9 | +green = "\033[32m" |
| 10 | +bold = "\033[1m" |
8 | 11 | blue = "\033[94m"
|
9 | 12 | red = "\033[91m"
|
10 | 13 | end = "\033[0m"
|
@@ -42,45 +45,67 @@ def scan(ip,port,l):
|
42 | 45 | print(str(port) + "/TCP" + space + "Unknown")
|
43 | 46 |
|
44 | 47 | except KeyboardInterrupt:
|
45 |
| - print("[-] Exiting!") |
| 48 | + print(red+"[-] Exiting!"+end) |
46 | 49 | exit(1)
|
47 | 50 |
|
48 | 51 | return True
|
49 | 52 |
|
50 |
| -parser = (""" |
51 |
| -#Usage: |
52 |
| - |
53 |
| - python scan.py <Target Ip/Host> <Threads, (default: 10)> |
54 |
| -""") |
55 |
| - |
56 |
| -try: |
57 |
| - target = sys.argv[1] |
58 |
| -except: |
59 |
| - print(parser) |
60 |
| - exit(1) |
61 |
| - |
62 |
| -try: |
63 |
| - thread = sys.argv[2] |
64 |
| -except: |
65 |
| - thread = 10 |
66 |
| - |
67 |
| -print(red+"[+] Target: "+end+target) |
68 |
| -print(red+"[+] Threads: "+end+str(thread)) |
69 |
| -print(red+"[+] Start The Scan\n"+end) |
70 |
| -print("PORT SERVICE") |
71 |
| -print("---- -------") |
72 |
| -ports = range(65535) |
73 |
| -try: |
| 53 | + |
| 54 | + |
| 55 | + |
| 56 | +def main(): |
| 57 | + parser = argparse.ArgumentParser() |
| 58 | + parser.add_argument("-t", "--target", help="Target IP/Host", type=str) |
| 59 | + parser.add_argument("-d", "--thread", help="threads number (Default 5)", type=int) |
| 60 | + parser.add_argument("-p", "--port", help="Ports range (Example: -p 20-1024)", type=str) |
| 61 | + args = parser.parse_args() |
| 62 | + |
| 63 | + target = str(args.target) |
| 64 | + thread = args.thread |
| 65 | + ports = str(args.port) |
| 66 | + |
| 67 | + if target == "None": |
| 68 | + parser.print_help() |
| 69 | + exit(1) |
| 70 | + if thread == None: |
| 71 | + thread = 5 |
| 72 | + |
| 73 | + if ports == "None": |
| 74 | + ports = range(65535) |
| 75 | + p = "1-65535" |
| 76 | + else: |
| 77 | + try: |
| 78 | + p = ports |
| 79 | + ports = ports.split("-") |
| 80 | + ports = range(int(ports[0]), int(ports[1])) |
| 81 | + except IndexError: |
| 82 | + print("-p/--port, should be a range of ports, Example: -p 20-1024") |
| 83 | + exit(1) |
| 84 | + |
| 85 | + print(green+"[+] Target: "+end+target) |
| 86 | + print(green+"[+] Threads: "+end+str(thread)) |
| 87 | + print(green+"[+] Ports: "+end+p) |
| 88 | + print(bold+"\n[+] Start The Scan\n"+end) |
| 89 | + print("PORT SERVICE") |
| 90 | + print("---- -------") |
| 91 | + |
74 | 92 | with executor(max_workers=int(thread)) as exe:
|
75 |
| - [exe.submit(scan, target, port, len(str(port))) for port in ports] |
76 |
| -except KeyboardInterrupt: |
77 |
| - print("[-] Exiting!") |
78 |
| - exit(1) |
| 93 | + try: |
| 94 | + [exe.submit(scan, target, port, len(str(port))) for port in ports] |
| 95 | + except KeyboardInterrupt: |
| 96 | + print(red+"[-] Exiting!"+end) |
| 97 | + exit(1) |
| 98 | + |
79 | 99 |
|
80 | 100 |
|
81 |
| -took = time.time() - start |
82 |
| -took = took / 60 |
83 |
| -took = round(took, 2) |
| 101 | + took = time.time() - start |
| 102 | + t = str(took).split('.')[0] |
| 103 | + m = int(t) / 60 |
| 104 | + s = int(t) % 60 |
| 105 | + |
| 106 | + print(" \r") |
| 107 | + print(blue+"[+] Took: "+end+str(m)+":"+str(s)) |
| 108 | + |
84 | 109 |
|
85 |
| -print(" \r") |
86 |
| -print(blue+"[+] Took: "+end+str(took)+" ") |
| 110 | +if __name__ == '__main__': |
| 111 | + main() |
0 commit comments