-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathportscan.py
87 lines (80 loc) · 3.21 KB
/
portscan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
try:
import time
from sys import __stdout__, stdout
from threading import Thread
from subprocess import *
import os
import sys
import subprocess
import threading
import readline
from termcolor import colored
except ImportError:
print("\ncheck for prerequisities ")
def portscanner(target):
os.system('clear')
p = './output/port'
try:
os.mkdir(p)
except FileExistsError as exc:
print(exc)
try:
subprocess.run('rm output/port/*.txt', shell=True, stdout=PIPE)
subprocess.run('rm output/port/subs_ips.txt', shell=True, stdout=PIPE)
except FileNotFoundError as nf:
print(nf)
# global fileObject
cmd = [
" dig +short a " + target +
"| tail -n1 | anew -q output/port/subs_ips.txt",
"awk -F: '{ print $2 " " $1}' output/port/subs_ips.txt | sort -k2 -n | anew -q output/port/subs_ips_vhosts.txt ",
"cat output/port/subs_ips_vhosts.txt | cut -d ' ' -f2| anew -q output/port/ips.txt "
]
cmd1 = ['for sub in $(cat output/port/ips.txt); do shodan host $sub 2>/dev/null >> output/port/portscan_passive.txt && echo -e "\n\n#######################################################################\n\n" >> output/port/portscan_passive.txt; done',
'nmap --top-ports 1000 -sV -n --max-retries 2 -iL output/port/ips.txt -oN output/port/portscan_active.txt '
]
try:
for c in cmd:
print(c)
proc = subprocess.run(c, shell=True, stderr=STDOUT, stdout=PIPE)
if(proc.returncode != 0):
print(colored('Step 1 Failed! Check/Update prerequisitie packages. \nError: ',
'blue', attrs=['bold']) + proc.stderr.rstrip())
# sys.exit(1)
return False
else:
print(colored("[x] Executed", 'blue', attrs=['bold']))
print(colored("\n--------------------------------------------",
'red', attrs=['bold']))
print(
colored("[+] Starting Portscanning", 'red', attrs=['bold']))
print(colored("--------------------------------------------",
'red', attrs=['bold']))
for c1 in cmd1:
print(c1)
proc1 = subprocess.run(
c1, shell=True, stderr=STDOUT, stdout=sys.stdout)
if(proc1.returncode != 0):
print(colored('Step 1 Failed! Check/Update prerequisitie packages. \nError: ',
'blue', attrs=['bold']) + proc1.stderr.rstrip())
return False
# sys.exit(1)
else:
print(colored("[x] Executed", 'blue', attrs=['bold']))
return True
except:
return False
# print("Something went wrong! Trying again\n")
# scanResult = []
# with open('output/port/ips.txt') as ips:
# ipResult = ips.readlines()
# with open('hosts/portscan_active.txt') as active:
# portResult = active.readlines()
# scanResult.append(ipResult)
# scanResult.append(portResult)
# try:
# subprocess.run('rm hosts/*.txt', shell=True, stdout=PIPE)
# subprocess.run('rm subs_ips.txt', shell=True, stdout=PIPE)
# except:
# pass
# return scanResult