Skip to content

Instantly share code, notes, and snippets.

@lasteminista
Last active May 13, 2022 23:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lasteminista/4c1d37f6dcd164b0c3f972474cb8616f to your computer and use it in GitHub Desktop.
Save lasteminista/4c1d37f6dcd164b0c3f972474cb8616f to your computer and use it in GitHub Desktop.
Port Scanner Code Snippet 10
import socket
import threading
from datetime import datetime
import tkinter as tk
from tkinter import ttk, font, scrolledtext
from ctypes import windll
class App(tk.Tk):
def __init__(self):
...
# Scan Button
scan_button = ttk.Button(self, text="Scan Target", command=self.port_scanner)
scan_button.grid(column=1, row=5, columnspan=3, sticky=tk.EW)
...
# Scan a Single Port
def scan_port(self, target, port): ...
# Port Scanner
def port_scanner(self):
self.target = self.get_target()
self.ports = self.port_list()
if self.target and self.ports:
thread_list = list()
self.results.clear()
start_time = datetime.now()
for port in self.ports:
scan = threading.Thread(target=self.scan_port, args=(self.target, port))
thread_list.append(scan)
scan.daemon = True
scan.start()
for scan in thread_list:
scan.join()
self.results_area.configure(state='normal')
self.results_area.delete('1.0', tk.END)
for r in self.results:
self.results_area.insert(tk.INSERT, r)
self.results_area.configure(state='disabled')
end_time = datetime.now()
ttk.Label(self, text=" Scanning completed in " + str(end_time - start_time),
foreground='green', background='light green') \
.grid(column=1, row=8, columnspan=3, sticky=tk.EW)
self.save_button.config(state='normal')
else:
ttk.Label(self, text=" Oops ! Looks like you did something wrong !",
foreground='red', background='pink') \
.grid(column=1, row=8, columnspan=3, sticky=tk.EW)
self.save_button.config(state='disabled')
if __name__ == "__main__":
app = App()
windll.shcore.SetProcessDpiAwareness(1)
app.mainloop()
import socket
import tkinter as tk
from tkinter import ttk, font, scrolledtext
from ctypes import windll
class App(tk.Tk):
def __init__(self):
...
# Initial values for target, ports and results list
self.target = ''
self.ports = list()
self.results = list()
...
# Scan a Single Port
def scan_port(self, target, port):
# Create a socket object
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
test = s.connect_ex((target, port))
if test == 0:
result = f' Port {port} is [open] \n'
self.results.append(result)
...
if __name__ == "__main__":
app = App()
windll.shcore.SetProcessDpiAwareness(1)
app.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment