#####IMPORT SOME MODULE'S#####
from Tkinter import *
import socket, sys, time
from datetime import datetime
from threading import *
name = socket.gethostname()
name_pr = socket.gethostbyname(name)
firstclick = True
def on_entry_click(event):
"""function that gets called whenever enter_1 is clicked"""
global firstclick
if firstclick: # if this is the first time they clicked it
firstclick = False
enter_2.delete(0, "end") # delete all the text in the entry
#####GET HOST NAME AND PORT#####
class Scan_for_port:#####
def __init__(self, host, port):
self.host = host #HOSTNAME
self.port = port #PORTS COLECT
def rep(self):
#RETURN LIST WIT INCLUDE HOSTNAME AND PORT OR PORT'S
return [self.host, self.port]
#####CALLBACK FOR BUTTON IS HERE#####
def callback():
data1 = enter_1.get() #GET HOSTNAME
date2 = enter_2.get() #GET PORTS
if len(date2.split(",")) > 1: #IF USER USE COMMA FOR SEPARATE FOR PORTS
total_info = [str(data1), [int(i) for i in date2.split(",")]]
elif len(date2.split("-")) > 1: #IF USER USE - FOR SEPARATE FOR PORTS
total_info = [str(data1), [int(i) for i in (range(int(date2.split("-")[0]),\
(int(date2.split("-")[-1])+1)))]]
else: #IF USER WRITE ONLY ONE PORT
total_info = [str(data1), [int(date2)]]
total_info_result = Scan_for_port(total_info[0], total_info[1])
return total_info_result.rep()
#####SOCKET CONFIG IS HERE#####
def scan(host, ports):
lock_object = Semaphore(value=1)
t1 = datetime.now()
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,ports))
s.send("Hello\r\n")
result = s.recv(100)
lock_object.acquire()
mylist.insert(END, "[+]{port} is open {result}".format(port=ports,\
result=str(result)))
mylist.see(END)
mylist.update()
except:
lock_object.acquire()
finally:
lock_object.acquire()
s.close()
def main():
t1 = datetime.now()
host, ports = callback()
for port in ports:
socket.setdefaulttimeout(1)
t = Thread(target=scan, args=(host, int(port)))
t.start()
#####TKINTER CONFIGURATIONS IS HERE#####
root = Tk()
root.title("CHECK OPEN PORT'S")
root.geometry("280x350+100+100")
root.resizable(0,0) #DISABLE RESIZE FOR WINDOWS!!!
root.config(bg="#000000")
button1 = Button(root,text="RUN", padx=5, pady=5, command=main)
button1.config(bg="#D2691E", fg="#000000")
button1.config(font=('times', 10, 'underline italic'))
button1.config(bd=4, relief=RAISED)
button1.grid(row=1, column=3,rowspan=2, sticky=NE)
label = Label(root, text="Ente host ip ",bg="#000000", fg="#D2691E")
label.config(font='times')
label.grid(row=1,column=1, sticky=NW, padx=2)
enter_1 = Entry(root, bg='white', fg="black")
enter_1.insert(0, name_pr)
enter_1.focus()
enter_1.grid(row=1,column=2, sticky=N)
label2 = Label(root, text="Enter port's ",bg="#000000", fg="#D2691E")
label2.config(font='times')
label2.grid(row=2,column=1, sticky=NW, padx=2)
enter_2 = Entry(root, bg='white', fg="black")
enter_2.insert(0, "use 1,2 or 1-2 for range")
enter_2.bind('', on_entry_click)
enter_2.grid(row=2,column=2, sticky=N)
mylist = Listbox(root,bg="#000000",fg="#D2691E")
mylist.grid(row=3,column=1, columnspan=4 , rowspan=4, ipadx=80, ipady=100)
if __name__ == '__main__':
root.mainloop()
Няма коментари :
Публикуване на коментар