ACTUALIZADO 24/4/2025 - 16:16
Bienvenidos a mi post, en la que creado un programa en lenguaje Python, que ejecutara varias opciones, como ver las especificaciones de su equipo, analizar la red y realizar un análisis con el antivirus Clamav.
Es muy importante tener instalado fastfetch y clamav, para ello abrimos un terminal y ejecutamos lo siguiente:
Código
sudo apt-get install fastfetch sudo apt install clamav-daemon
Una vez lo tengamos instalados, descargamos mi herramienta Blue_Shield con el siguiente comando:
Código
git clone https://github.com/W17CHeR/Blue_Shield.git
Una vez descargado, tendremos que ejecutarlo con permisos sudo, de lo contrario nos dará un mensaje de error al ejecutar netstat en la segunda opción del programa.
Código
sudo python3 Blue_Shield.py
Cuando lo ejecutemos, como podrán comprobar, añadido un art ASCII de un escudo azul, referencia al nombre del programa Blue_Shield, y la bienvenida al programa y sus 3 opciones y Q para salir, tal como muestro en la siguiente captura:

El código del programa es el siguiente:
Código
# ------------------------------------------------------- # Bienvenido al programa de Blue_Shield # ------------------------------------------------------- import os import subprocess def mostrar_ascii_azul(): ascii_art = r""" . :--===. .:--: .=++=. .::::-::. :--=. .=+**#*+=- .:. ..-----=-==+=: *# .:. :::::-------==+++++++*#%. *# .:. :::---------==++++++***#. *# .-. ::--------=-=++++******#. *# .-: :---------==+++*******#% #* -: .------=====+******####@ %= :- =---====++++******#*##= :%. .=. :--====++++***#*###### #% == =====++++*****######% .%- .=: .++++++****#######*@ %# :+. .+++*****########% %@ :+. .******#######%% @% .** **#######%#%- .%@ #*. ####%##%+ *%+ :##. **%@: +@% .#%- %%# ##%=%%= .:=%-.. """ print("\033[94m" + ascii_art + "\033[0m") # 94 = azul claro ANSI def mostrar_presentacion(): print("="*75) print(" Bienvenido a Blue_Shield".center(75)) print("="*75) print("Esta herramienta te mostrara en CLI una lista de programas de Python".center(50)) print("="*75) print() def mostrar_menu(): scripts = { "1": ("Mostrar especificaciones del sistema", "./specs.py"), "2": ("Mostrar el uso de la red", "./network_usage.py"), "3": ("Antivirus Clamav", "./antivirus_usage.py"), } while True: print("Menu de opciones:") for key, value in scripts.items(): print(f"{key}. {value[0]}") opcion = input("Selecciona una opción (1-3) o 'q' para salir: ") if opcion == 'q': print("Saliendo del programa...") break elif opcion in scripts: script_path = scripts[opcion][1] if os.path.exists(script_path): try: subprocess.run(["python", script_path], check=True) except subprocess.CalledProcessError as e: print(f"Error al ejecutar el script: {e}") else: print(f"El script {script_path} no existe.") else: print("Opción no válida. Intenta de nuevo.") if __name__ == "__main__": mostrar_ascii_azul() mostrar_presentacion() mostrar_menu() print("Gracias por usar Blue_Shield. ¡Hasta luego!") # ------------------------------------------------------- # Programa creado por Sergio (aka W17CHeR) # -------------------------------------------------------
Una vez ejecutemos la primera opción, nos volverá a preguntar si queremos ver las especificaciones, le marcamos 1 y se nos ejecutara fastfetch, como ocurre en la siguiente captura:

Cuyo código de specs.py es el siguiente:
Código
import subprocess import os def mostrar_presentacion(): print("="*75) print(" Bienvenido a Specs".center(75)) print("="*75) print("Esta herramienta te mostrará en CLI las especificaciones de tu equipo".center(75)) print("="*75) print() def ejecutar_fastfetch(): print("\nEjecutando Fastfetch...\n") try: subprocess.run(["fastfetch"], check=True) except FileNotFoundError: print("Error: 'fastfetch' no está instalado o no se encuentra en el PATH.") except subprocess.CalledProcessError as e: print(f"Ocurrió un error al ejecutar fastfetch: {e}") def menu_post_ejecucion(): while True: print("\n¿Qué deseas hacer ahora?") print("1. Volver al menú principal de Blue_Shield") print("q. Salir") opcion = input("Selecciona una opción: ").strip() if opcion == "1": # ✅ Reemplaza el proceso actual con Blue_Shield.py os.execlp("python", "python", "Blue_Shield.py") elif opcion.lower() == "q": print("Saliendo del programa...") break else: print("Opción no válida. Intenta de nuevo.") def mostrar_menu(): while True: print("\nMenú de opciones:") print("1. Mostrar especificaciones del sistema (fastfetch)") print("q. Salir") opcion = input("Selecciona una opción: ").strip() if opcion == 'q': print("Saliendo del programa...") break elif opcion == "1": ejecutar_fastfetch() menu_post_ejecucion() break # Salimos del menú después de regresar o salir else: print("Opción no válida. Intenta de nuevo.") if __name__ == "__main__": mostrar_presentacion() mostrar_menu() print("Gracias por usar Specs. ¡Hasta luego!")
Cuando seleccionemos la segunda opción del programa, nos preguntara si deseamos ejecutar nmap o netstat, tal como muestro en las 2 capturas siguientes:


El código de analizar la red, es el que muestro a continuación:
Código
# ------------------------------------------------------- # Bienvenido al programa de especificaciones del sistema # ------------------------------------------------------- import os import subprocess def mostrar_menu(): while True: print("=" * 60) print(" Análisis de Red - Blue_Shield".center(60)) print("=" * 60) print("1. Escanear red con Nmap") print("2. Analizar conexiones activas con Netstat") print("3. Volver al menú principal de Blue_Shield.py") print("q. Salir") opcion = input("\nSelecciona una opción: ").strip() if opcion == "1": escanear_con_nmap() elif opcion == "2": analizar_con_netstat() elif opcion == "3": regresar_a_blue_shield() elif opcion.lower() == "q": print("Saliendo del análisis de red...") break else: print("Opción no válida. Intenta de nuevo.") def escanear_con_nmap(): objetivo = input("\nIntroduce la IP o rango a escanear (ej. 192.168.1.0/24): ").strip() print(f"\n🔍 Ejecutando escaneo Nmap en {objetivo}...\n") try: subprocess.run(["nmap", "-sP", objetivo], check=True) except FileNotFoundError: print("❌ Error: Nmap no está instalado o no se encuentra en el PATH.") except subprocess.CalledProcessError as e: print(f"❌ Ocurrió un error al ejecutar Nmap: {e}") def analizar_con_netstat(): print("\n🔍 Mostrando conexiones activas con Netstat...\n") try: subprocess.run(["netstat", "-tunap"], check=True) except FileNotFoundError: print("❌ Error: Netstat no está disponible en tu sistema.") except subprocess.CalledProcessError as e: print(f"❌ Ocurrió un error al ejecutar Netstat: {e}") def regresar_a_blue_shield(): print("\n🔙 Volviendo al menú principal de Blue_Shield.py...") try: os.execlp("python", "python", "Blue_Shield.py") except Exception as e: print(f"❌ Error al intentar regresar al menú principal: {e}") if __name__ == "__main__": mostrar_menu() # ------------------------------------------------------- # Programa creado por Sergio (aka W17CHeR) # -------------------------------------------------------
Por último, al ejecutar la tercera opción del antivirus Clamav, nos dará 2 opciones, análizar el directorio raíz o de lo contrario analizar el directorio /home, como pueden ver en las capturas:


El código que utilizado para el antivirus Clamav, es el siguiente:
Código
# ------------------------------------------------------- # Bienvenido al programa de especificaciones del sistema # ------------------------------------------------------- import os import subprocess def mostrar_menu(): while True: print("=" * 60) print(" Análisis de Antivirus - ClamAV".center(60)) print("=" * 60) print("1. Analizar la carpeta raíz de Linux (/)") print("2. Analizar el directorio Home (/home)") print("3. Volver al menú principal de Blue_Shield.py") print("q. Salir") opcion = input("\nSelecciona una opción: ").strip() if opcion == "1": analizar_con_clamav("/") elif opcion == "2": analizar_con_clamav("/home") elif opcion == "3": regresar_a_blue_shield() elif opcion.lower() == "q": print("Saliendo del programa...") break else: print("Opción no válida. Intenta de nuevo.") def analizar_con_clamav(directorio): print(f"\n🔍 Iniciando análisis de ClamAV en el directorio: {directorio}...\n") try: subprocess.run(["clamscan", "-r", directorio], check=True) except FileNotFoundError: print("❌ Error: ClamAV no está instalado o no se encuentra en el PATH.") except subprocess.CalledProcessError as e: print(f"❌ Ocurrió un error al ejecutar ClamAV: {e}") def regresar_a_blue_shield(): print("\n🔙 Volviendo al menú principal de Blue_Shield.py...") try: os.execlp("python", "python", "Blue_Shield.py") except Exception as e: print(f"❌ Error al intentar regresar al menú principal: {e}") if __name__ == "__main__": mostrar_menu() # ------------------------------------------------------- # Programa creado por Sergio (aka W17CHeR) # -------------------------------------------------------
De momento eso a sido todo, en un futuro cercano, lo iré actualizando y añadiendo más funciones enfocadas en lo defensivo.
Un saludo a todos/as y espero que el programa sea de su agrado
