Тут у меня спрашивали про оконный интерфейс. Решил накидать оболочку.
Только это черепаха
То есть один диапазон сканирует две минуты. Ну и здесь ещё результаты выводятся после окончания сканирования, а не сразу. Короче учебный материал для тех, кто хочет GUI освоить.
Только это черепаха
Python:
import socket
from netaddr import *
from tkinter import *
icon = '''
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
'''
root = Tk()
root.resizable(width=False, height=False)
root.title("Scanport IP Turtle")
root.geometry("269x300")
calculated_text = Text(root, height=10, width=34)
address_entry = Entry(width=20, justify=CENTER)
endip_entry = Entry(width=20, justify=CENTER)
port_entry = Entry(width=20, justify=CENTER)
address_label = Label(text=" Enter ipStart :")
endip_label = Label(text=" Enter ipEnd :")
port_label = Label(text=" Enter port :")
address_label.grid(row=0, column=0, padx=10, sticky="w")
endip_label.grid(row=1, column=0, padx=10, sticky="w")
port_label.grid(row=2, column=0, padx=10, sticky="w")
address_entry.grid(row=0, column=1, pady=5)
endip_entry.grid(row=1, column=1, pady=5)
port_entry.grid(row=2, column=1, pady=5)
address_entry.insert(0, "87.248.98.0")
endip_entry.insert(0, "87.248.98.255")
port_entry.insert(0, "80")
def port_scan(port, host):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.5)
try:
connection = s.connect((host, port))
p = ' ', host, 'Port:', port, 'open'
calculated_text.insert(1.0,' '.join(map(str, p)))
calculated_text.insert(1.0,'\n')
connection.close()
except:
pass
ipStart = address_entry.get()
ipEnd = endip_entry.get()
iprange = IPRange(ipStart, ipEnd)
port = int(port_entry.get())
def scan():
for ip in iprange:
host = str(ip)
port_scan(port, host)
scrollb = Scrollbar(root, command=calculated_text.yview)
scrollb.grid(row=4, column=2, sticky=N+S)
calculated_text.grid(row=4, column=0, sticky='nswe', columnspan=3)
calculated_text.configure(yscrollcommand=scrollb.set)
display_button = Button(text=" Scanport ", command=scan)
display_button.grid(row=3, column=1, padx=10, pady=5, sticky="n")
img = PhotoImage(data=icon)
root.tk.call('wm', 'iconphoto', root._w, img)
root.mainloop()
Комментарии
5