17.09.2016 г.

Python scan for open port Tkinter

       

#####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()

       
 

Няма коментари :

Публикуване на коментар