Salve a tutti. Posto qui il codice di un port scanner ad interfaccia grafica con Tkinter che ho appena fatto.<br>Vorrei qualche consiglio su come velocizzare sia il codice che su come limitare il numero di connessioni<br>che vengono provate per ogni porta(poichè sniffando con wireshark mi sono accorto che se una porta <br>
viene vista come aperta, viene segnalata sennò il programma cerca più volte di collegarsi sulla porta <br>stabilita. grazie 1000 ;)<br><br><br>from Tkinter import *<br>from socket import *<br>import tkMessageBox<br>lista = []<br>
porte = []<br>def evCanc():<br> eCiao.delete(0,END)<br> ePort1.delete(0,END)<br> ePort2.delete(0,END)<br>def pinga():<br> host = lista[0]<br> porta_11 = lista[1]<br> porta_21 = lista[2]<br> porta_1 = int(porta_11)<br>
porta_2 = int(porta_21)<br> print "Connecting... "<br> porta_3 = porta_2 + 1<br> for i in range(porta_1, porta_3):<br> s = socket(AF_INET, SOCK_STREAM)<br> try:<br> s.connect((host,i))<br>
porte.append(i)<br> except:<br> pass<br> tkMessageBox.showinfo("Porte Aperte:", porte)<br> for j in range(1,len(lista)+1):<br> del lista[0]<br> for i in range(1,len(porte)+1):<br>
del porte[0]<br>def callback():<br> k = eCiao.get()<br> lista.append(k)<br> j = ePort1.get()<br> lista.append(j)<br> pp = ePort2.get()<br> lista.append(pp)<br> pinga()<br>cima = Tk()<br>cima.title("PortScanner")<br>
F = Frame(cima, relief="sunken", border=5)<br>F.pack()<br><br>fTesto = Frame(F, border="2")<br>fTesto.pack(side="left", expand="true")<br>eCiao = Entry(fTesto)<br>eCiao.insert(0, "host IP")<br>
eCiao.pack(side="left", expand="true")<br>ePort1 = Entry(fTesto)<br>ePort1.insert(0, "start port")<br>ePort1.pack(side="left", expand="true")<br>ePort2 = Entry(fTesto)<br>
ePort2.insert(0, "end port")<br>ePort2.pack(side="left", expand="true")<br><br><br>fBottoni = Frame(F, relief="sunken", border=1)<br>bOk = Button(fBottoni, text="Ok", command=callback)<br>
bOk.pack(side="left", padx=5, pady=2)<br>bCanc = Button(fBottoni, text="Cancella", command=evCanc)<br>bCanc.pack(side="left", padx=5, pady=2)<br>bEsci = Button(fBottoni, text="Esci", command=F.quit)<br>
bEsci.pack(side="left", padx=5, pady=2)<br>fBottoni.pack(side="left", expand="true")<br><br><br><br>F.mainloop()<br><br>--<br>castor91<br>