elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [APORTE] Blue_Shield - Programa enfocado en defensivo
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] Blue_Shield - Programa enfocado en defensivo  (Leído 2,103 veces)
W17CH3R

Desconectado Desconectado

Mensajes: 124



Ver Perfil
[APORTE] Blue_Shield - Programa enfocado en defensivo
« en: 24 Abril 2025, 15:40 pm »

BIENVENIDOS/AS
ACTUALIZADO 26/4/2025 - 11:55

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
  1. sudo apt-get install fastfetch
  2. sudo apt install clamav-daemon

Una vez lo tengamos instalados, descargamos mi herramienta Blue_Shield con el siguiente comando:

Código
  1. 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
  1. 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
  1. # -------------------------------------------------------
  2. # Bienvenido al programa de Blue_Shield
  3. # -------------------------------------------------------
  4.  
  5. import os
  6. import subprocess
  7.  
  8. def mostrar_ascii_azul():
  9.    ascii_art = r"""
  10.            .                                  
  11.                                 :--===.                                
  12.                             .:--:    .=++=.                            
  13.                     .::::-::.    :--=.   .=+**#*+=-                    
  14.                    .:.      ..-----=-==+=:       *#                    
  15.                    .:. :::::-------==+++++++*#%. *#                    
  16.                    .:. :::---------==++++++***#. *#                    
  17.                    .-. ::--------=-=++++******#. *#                    
  18.                    .-: :---------==+++*******#%  #*                    
  19.                     -: .------=====+******####@  %=                    
  20.                     :-  =---====++++******#*##= :%.                    
  21.                     .=. :--====++++***#*######  #%                    
  22.                      ==  =====++++*****######% .%-                    
  23.                      .=: .++++++****#######*@  %#                      
  24.                       :+. .+++*****########%  %@                      
  25.                        :+. .******#######%%  @%                        
  26.                         .**  **#######%#%- .%@                        
  27.                           #*.  ####%##%+  *%+                          
  28.                            :##.  **%@:  +@%                            
  29.                              .#%-     %%#                              
  30.                                 ##%=%%=                                
  31.                                 .:=%-..
  32.    """
  33.    print("\033[94m" + ascii_art + "\033[0m")  # 94 = azul claro ANSI
  34.  
  35. def mostrar_presentacion():
  36.    print("="*75)
  37.    print("     Bienvenido a Blue_Shield".center(75))
  38.    print("="*75)
  39.    print("Esta herramienta te mostrara en CLI una lista de programas de Python".center(50))
  40.    print("="*75)
  41.    print()
  42.  
  43. def mostrar_menu():
  44.    scripts = {
  45.        "1": ("Mostrar especificaciones del sistema", "./specs.py"),
  46.        "2": ("Mostrar el uso de la red", "./network_usage.py"),
  47.        "3": ("Antivirus Clamav", "./antivirus_usage.py"),
  48.    }
  49.  
  50.    while True:
  51.        print("Menu de opciones:")
  52.        for key, value in scripts.items():
  53.            print(f"{key}. {value[0]}")
  54.  
  55.        opcion = input("Selecciona una opción (1-3) o 'q' para salir: ")
  56.        if opcion == 'q':
  57.            print("Saliendo del programa...")
  58.            break
  59.        elif opcion in scripts:
  60.            script_path = scripts[opcion][1]
  61.            if os.path.exists(script_path):
  62.                try:
  63.                    subprocess.run(["python", script_path], check=True)
  64.                except subprocess.CalledProcessError as e:
  65.                    print(f"Error al ejecutar el script: {e}")
  66.            else:
  67.                print(f"El script {script_path} no existe.")
  68.        else:
  69.            print("Opción no válida. Intenta de nuevo.")
  70.  
  71. if __name__ == "__main__":
  72.    mostrar_ascii_azul()
  73.    mostrar_presentacion()
  74.    mostrar_menu()
  75.    print("Gracias por usar Blue_Shield. ¡Hasta luego!")
  76.  
  77. # -------------------------------------------------------
  78. # Programa creado por Sergio (aka W17CHeR)
  79. # -------------------------------------------------------

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
  1. import subprocess
  2. import os
  3.  
  4. def mostrar_presentacion():
  5.    print("="*75)
  6.    print("     Bienvenido a Specs".center(75))
  7.    print("="*75)
  8.    print("Esta herramienta te mostrará en CLI las especificaciones de tu equipo".center(75))
  9.    print("="*75)
  10.    print()
  11.  
  12. def ejecutar_fastfetch():
  13.    print("\nEjecutando Fastfetch...\n")
  14.    try:
  15.        subprocess.run(["fastfetch"], check=True)
  16.    except FileNotFoundError:
  17.        print("Error: 'fastfetch' no está instalado o no se encuentra en el PATH.")
  18.    except subprocess.CalledProcessError as e:
  19.        print(f"Ocurrió un error al ejecutar fastfetch: {e}")
  20.  
  21. def menu_post_ejecucion():
  22.    while True:
  23.        print("\n¿Qué deseas hacer ahora?")
  24.        print("1. Volver al menú principal de Blue_Shield")
  25.        print("q. Salir")
  26.        opcion = input("Selecciona una opción: ").strip()
  27.  
  28.        if opcion == "1":
  29.            # ✅ Reemplaza el proceso actual con Blue_Shield.py
  30.            os.execlp("python", "python", "Blue_Shield.py")
  31.        elif opcion.lower() == "q":
  32.            print("Saliendo del programa...")
  33.            break
  34.        else:
  35.            print("Opción no válida. Intenta de nuevo.")
  36.  
  37. def mostrar_menu():
  38.    while True:
  39.        print("\nMenú de opciones:")
  40.        print("1. Mostrar especificaciones del sistema (fastfetch)")
  41.        print("q. Salir")
  42.  
  43.        opcion = input("Selecciona una opción: ").strip()
  44.        if opcion == 'q':
  45.            print("Saliendo del programa...")
  46.            break
  47.        elif opcion == "1":
  48.            ejecutar_fastfetch()
  49.            menu_post_ejecucion()
  50.            break  # Salimos del menú después de regresar o salir
  51.        else:
  52.            print("Opción no válida. Intenta de nuevo.")
  53.  
  54. if __name__ == "__main__":
  55.    mostrar_presentacion()
  56.    mostrar_menu()
  57.    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
  1. # -------------------------------------------------------
  2. # Bienvenido al programa de especificaciones del sistema
  3. # -------------------------------------------------------
  4. import os
  5. import subprocess
  6.  
  7. def mostrar_menu():
  8.    while True:
  9.        print("=" * 60)
  10.        print("        Análisis de Red - Blue_Shield".center(60))
  11.        print("=" * 60)
  12.        print("1. Escanear red con Nmap")
  13.        print("2. Analizar conexiones activas con Netstat")
  14.        print("3. Volver al menú principal de Blue_Shield.py")
  15.        print("q. Salir")
  16.        opcion = input("\nSelecciona una opción: ").strip()
  17.  
  18.        if opcion == "1":
  19.            escanear_con_nmap()
  20.        elif opcion == "2":
  21.            analizar_con_netstat()
  22.        elif opcion == "3":
  23.            regresar_a_blue_shield()
  24.        elif opcion.lower() == "q":
  25.            print("Saliendo del análisis de red...")
  26.            break
  27.        else:
  28.            print("Opción no válida. Intenta de nuevo.")
  29.  
  30. def escanear_con_nmap():
  31.    objetivo = input("\nIntroduce la IP o rango a escanear (ej. 192.168.1.0/24): ").strip()
  32.    print(f"\n🔍 Ejecutando escaneo Nmap en {objetivo}...\n")
  33.    try:
  34.        subprocess.run(["nmap", "-sP", objetivo], check=True)
  35.    except FileNotFoundError:
  36.        print("❌ Error: Nmap no está instalado o no se encuentra en el PATH.")
  37.    except subprocess.CalledProcessError as e:
  38.        print(f"❌ Ocurrió un error al ejecutar Nmap: {e}")
  39.  
  40. def analizar_con_netstat():
  41.    print("\n🔍 Mostrando conexiones activas con Netstat...\n")
  42.    try:
  43.        subprocess.run(["netstat", "-tunap"], check=True)
  44.    except FileNotFoundError:
  45.        print("❌ Error: Netstat no está disponible en tu sistema.")
  46.    except subprocess.CalledProcessError as e:
  47.        print(f"❌ Ocurrió un error al ejecutar Netstat: {e}")
  48.  
  49. def regresar_a_blue_shield():
  50.    print("\n🔙 Volviendo al menú principal de Blue_Shield.py...")
  51.    try:
  52.        os.execlp("python", "python", "Blue_Shield.py")
  53.    except Exception as e:
  54.        print(f"❌ Error al intentar regresar al menú principal: {e}")
  55.  
  56. if __name__ == "__main__":
  57.    mostrar_menu()
  58.  
  59. # -------------------------------------------------------
  60. # Programa creado por Sergio (aka W17CHeR)
  61. # -------------------------------------------------------

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
  1. # -------------------------------------------------------
  2. # Bienvenido al programa de especificaciones del sistema
  3. # -------------------------------------------------------
  4.  
  5. import os
  6. import subprocess
  7.  
  8. def mostrar_menu():
  9.    while True:
  10.        print("=" * 60)
  11.        print("        Análisis de Antivirus - ClamAV".center(60))
  12.        print("=" * 60)
  13.        print("1. Analizar la carpeta raíz de Linux (/)")
  14.        print("2. Analizar el directorio Home (/home)")
  15.        print("3. Volver al menú principal de Blue_Shield.py")
  16.        print("q. Salir")
  17.        opcion = input("\nSelecciona una opción: ").strip()
  18.  
  19.        if opcion == "1":
  20.            analizar_con_clamav("/")
  21.        elif opcion == "2":
  22.            analizar_con_clamav("/home")
  23.        elif opcion == "3":
  24.            regresar_a_blue_shield()
  25.        elif opcion.lower() == "q":
  26.            print("Saliendo del programa...")
  27.            break
  28.        else:
  29.            print("Opción no válida. Intenta de nuevo.")
  30.  
  31. def analizar_con_clamav(directorio):
  32.    print(f"\n🔍 Iniciando análisis de ClamAV en el directorio: {directorio}...\n")
  33.    try:
  34.        subprocess.run(["clamscan", "-r", directorio], check=True)
  35.    except FileNotFoundError:
  36.        print("❌ Error: ClamAV no está instalado o no se encuentra en el PATH.")
  37.    except subprocess.CalledProcessError as e:
  38.        print(f"❌ Ocurrió un error al ejecutar ClamAV: {e}")
  39.  
  40. def regresar_a_blue_shield():
  41.    print("\n🔙 Volviendo al menú principal de Blue_Shield.py...")
  42.    try:
  43.        os.execlp("python", "python", "Blue_Shield.py")
  44.    except Exception as e:
  45.        print(f"❌ Error al intentar regresar al menú principal: {e}")
  46.  
  47. if __name__ == "__main__":
  48.    mostrar_menu()
  49.  
  50.  
  51. # -------------------------------------------------------
  52. # Programa creado por Sergio (aka W17CHeR)
  53. # -------------------------------------------------------



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 :)



Nueva actualización 1.0.3

Después de ver la cantidad de visitas y recibimiento que esta teniendo mi programa, decidido añadirle una nueva función, Wireshark

Ahora Blue_Shield, mostrara esta vez 4 opciones en vez de las 3 que tenía en un principio, recuerden que para los nuevos cambios, borrar el directorio de Blue_Shield con el siguiente comando:

Código
  1. rm -r Blue_Shield

Una vez hayamos eliminado el directorio, nos disponemos a descargarlo de nuevo con el nuevo cambio, para ello realizamos el siguiente comando:

Código
  1. git clone https://github.com/W17CHeR/Blue_Shield.git

Por último, al tenerlo descargado con la nueva función, lo ejecutamos con permisos sudo, realizamos el comando sudo python3 Blue_Shield.py, y como vemos en la siguiente captura el programa aumentado de opciones, como vemos en la cuarta opción añadido Wireshark



Una vez seleccionamos la cuarta opción, nos mostrara un menú donde tenemos la primera opción para ejecutar Wireshark, la segunda opción regresar al menú principal y la cuarta para salir, tal como vemos a continuación:



Una vez ejecutemos la primera opción, se nos abrirá el Wireshark y una vez cerremos Wireshark, el programa no desaparecerá, es decir, nos regresara al menú principal de Blue_Shield, por lo que no será necesario tenerlo que ejecutar de nuevo.




Para quien quiera echarle un vistazo al código de Wireshark_usage.py, es el siguiente:

Código
  1. # -------------------------------------------------------
  2. # Bienvenido al programa de Wireshark en Blue_Shield
  3. # -------------------------------------------------------
  4.  
  5. import os
  6. import subprocess
  7.  
  8. def mostrar_menu():
  9.    while True:
  10.        print("=" * 60)
  11.        print("           Análisis de Red - Wireshark".center(60))
  12.        print("=" * 60)
  13.        print("1. Ejecutar Wireshark")
  14.        print("2. Volver al menú principal de Blue_Shield.py")
  15.        print("q. Salir")
  16.        opcion = input("\nSelecciona una opción: ").strip()
  17.  
  18.        if opcion == "1":
  19.            ejecutar_wireshark()
  20.        elif opcion == "2":
  21.            regresar_a_blue_shield()
  22.        elif opcion.lower() == "q":
  23.            print("Saliendo del programa...")
  24.            break
  25.        else:
  26.            print("Opción no válida. Intenta de nuevo.")
  27.  
  28. def ejecutar_wireshark():
  29.    print("\n🚀 Iniciando Wireshark...\n")
  30.    try:
  31.        # Ejecuta Wireshark y espera a que se cierre
  32.        subprocess.run(["wireshark"], check=True)
  33.        print("\n🛬 Wireshark cerrado. Volviendo al menú principal...")
  34.        regresar_a_blue_shield()
  35.    except FileNotFoundError:
  36.        print("❌ Error: Wireshark no está instalado o no se encuentra en el PATH.")
  37.    except subprocess.CalledProcessError as e:
  38.        print(f"❌ Error al ejecutar Wireshark: {e}")
  39.  
  40. def regresar_a_blue_shield():
  41.    print("\n🔙 Volviendo al menú principal de Blue_Shield.py...")
  42.    try:
  43.        os.execlp("python", "python", "Blue_Shield.py")
  44.    except Exception as e:
  45.        print(f"❌ Error al intentar regresar al menú principal: {e}")
  46.  
  47. if __name__ == "__main__":
  48.    mostrar_menu()
  49.  
  50.  
  51.  
  52. # -------------------------------------------------------
  53. # Programa creado por Sergio (aka W17CHeR)
  54. # ---------------------------------------------

Más adelante le iré añadiendo más funciones al programa, gracias por leer le post, un saludo :)


« Última modificación: 26 Abril 2025, 11:55 am por W17CH3R » En línea

La importancia de los Datos es la importancia de los Recuerdos.

Mi perfil de Github: https://github.com/W17CHeR
W17CH3R

Desconectado Desconectado

Mensajes: 124



Ver Perfil
Re: [APORTE] Blue_Shield - Programa enfocado en defensivo
« Respuesta #1 en: 28 Abril 2025, 23:58 pm »

BIENVENIDOS/AS
ACTUALIZADO 28/4/2025 - 23:59

Buenas a todos/as

Hoy les traigo dos actualizaciones, la actualización 1.0.4 que corrige código de Blue_Shield.py y la actualización 1.0.5 que añado la herramienta antirootkit llamada Rkhunter

Para quien se pregunte, ¿Qué es rkhunter?

📜 Rkhunter es una herramienta de código abierto para sistemas Linux que detecta rootkits, puertas traseras y posibles exploits locales.

Como bien dicho, la actualización 1.0.5 añade Rkhunter, y añadiendo varias funciones como tener la posibilidad de instalar Rkhunter desde el programa.



Como podrán comprobar en la siguiente captura, Blue_Shield aumentado de opciones, antes eran 4, ahora podrán ver que aumento a 5 con Rkhunter.



Una vez que tengamos instalado rkhunter, seleccionamos la primera opción, tal como muestro en la siguiente captura:



Realizara un análisis completo de nuestro sistema en busca de rootkits, backdoors y posibles exploits locales.



Una vez finalice el análisis, nos creara un directorio en la ruta de /root/ llamada Desktop, por lo que quedara así /root/Desktop/informe_analisis_sistema.txt



Ahora cuando seleccionemos la segunda opción realizara un análisis rapido de nuestros principales ficheros importantes, y nos creara otro informe en la ruta /root/Desktop.



Como pueden comprobar en la siguiente captura, nos creara otro informe con toda la información y cuyo nombre incluye la fecha creada del día que realicemos el análisis rápido.


A continuación les comparto el código nuevo de rkhunter_usage.py, en el siguiente código:

Código
  1. # -------------------------------------------------------
  2. # Bienvenido al programa del antirootkit RKHunter
  3. # -------------------------------------------------------
  4.  
  5. import os
  6. import subprocess
  7. import shutil
  8.  
  9. def mostrar_menu():
  10.    while True:
  11.        print("=" * 70)
  12.        print("        Análisis de Rootkits - Rkhunter - Blue_Shield".center(70))
  13.        print("=" * 70)
  14.        print("1. Analizar el sistema (rkhunter --check)")
  15.        print("2. Análisis rápido y silencioso (rkhunter -c -sk)")
  16.        print("3. Volver al menú principal de Blue_Shield.py")
  17.        print("q. Salir")
  18.        opcion = input("\nSelecciona una opción: ").strip()
  19.  
  20.        if opcion == "1":
  21.            verificar_rkhunter()
  22.            ejecutar_rkhunter_check()
  23.        elif opcion == "2":
  24.            verificar_rkhunter()
  25.            ejecutar_rkhunter_silencioso()
  26.        elif opcion == "3":
  27.            regresar_a_blue_shield()
  28.        elif opcion.lower() == "q":
  29.            print("Saliendo del programa...")
  30.            break
  31.        else:
  32.            print("Opción no válida. Intenta de nuevo.")
  33.  
  34. def verificar_rkhunter():
  35.    """Verifica si rkhunter está instalado. Si no, ofrece instalarlo."""
  36.    if shutil.which("rkhunter") is None:
  37.        print("⚠️ Rkhunter no está instalado en el sistema.")
  38.        instalar = input("¿Deseas instalar Rkhunter ahora? (s/n): ").strip().lower()
  39.        if instalar == "s":
  40.            try:
  41.                print("🚀 Instalando Rkhunter...")
  42.                subprocess.run(["sudo", "apt", "update"], check=True)
  43.                subprocess.run(["sudo", "apt", "install", "-y", "rkhunter"], check=True)
  44.                print("✅ Rkhunter instalado correctamente.")
  45.            except subprocess.CalledProcessError as e:
  46.                print(f"❌ Error al intentar instalar Rkhunter: {e}")
  47.                exit(1)
  48.        else:
  49.            print("❌ No se puede continuar sin Rkhunter. Saliendo...")
  50.            exit(1)
  51.  
  52. def solicitar_ruta_log():
  53.    """Pregunta si se desea guardar log, y solicita la ruta si es afirmativo."""
  54.    desea_log = input("¿Deseas guardar el resultado en un log? (s/n): ").strip().lower()
  55.    if desea_log == "s":
  56.        ruta = input("Introduce la ruta donde deseas guardar el log (ej: /home/usuario/MisLogs/): ").strip()
  57.        if not os.path.exists(ruta):
  58.            print(f"⚠️ La ruta {ruta} no existe. Creándola...")
  59.            os.makedirs(ruta)
  60.        return os.path.join(ruta, "rkhunter_log.txt")
  61.    else:
  62.        return None
  63.  
  64. def ejecutar_rkhunter_check():
  65.    print("\n🚀 Ejecutando análisis completo con Rkhunter...\n")
  66.    try:
  67.        ruta_log = solicitar_ruta_log()
  68.        if ruta_log:
  69.            comando = f"sudo rkhunter --check --logfile {ruta_log}"
  70.        else:
  71.            comando = "sudo rkhunter --check"
  72.        subprocess.run(comando, shell=True, check=True)
  73.        if ruta_log:
  74.            print(f"✅ Análisis completo realizado. Log guardado en {ruta_log}")
  75.    except subprocess.CalledProcessError as e:
  76.        print(f"❌ Ocurrió un error al ejecutar Rkhunter: {e}")
  77.  
  78. def ejecutar_rkhunter_silencioso():
  79.    print("\n🚀 Ejecutando análisis rápido/silencioso con Rkhunter...\n")
  80.    try:
  81.        ruta_log = solicitar_ruta_log()
  82.        if ruta_log:
  83.            comando = f"sudo bash -c 'rkhunter -c -sk --logfile {ruta_log}'"
  84.        else:
  85.            comando = "sudo rkhunter -c -sk"
  86.        subprocess.run(comando, shell=True, check=True)
  87.        if ruta_log:
  88.            print(f"✅ Análisis silencioso realizado. Log guardado en {ruta_log}")
  89.    except subprocess.CalledProcessError as e:
  90.        print(f"❌ Ocurrió un error al ejecutar Rkhunter: {e}")
  91.  
  92. def regresar_a_blue_shield():
  93.    print("\n🔙 Volviendo al menú principal de Blue_Shield.py...")
  94.    try:
  95.        os.execlp("python", "python", "Blue_Shield.py")
  96.    except Exception as e:
  97.        print(f"❌ Error al intentar regresar al menú principal: {e}")
  98.  
  99. if __name__ == "__main__":
  100.    mostrar_menu()
  101.  
  102.  
  103.  
  104.  
  105.  
  106. # -------------------------------------------------------
  107. # Programa creado por Sergio (aka W17CHeR)
  108. # -------------------------------------------------------
  109. # Este programa es parte de Blue_Shield, un conjunto de herramientas para la seguridad informática.


En el siguiente enlace, tienen el changelog en la que pueden estar informados al día de las actualizaciones de Blue_Shield:

https://github.com/W17CHeR/Blue_Shield/blob/main/Changelog.txt

Que pasen un buen día. :)

Saludos.


En línea

La importancia de los Datos es la importancia de los Recuerdos.

Mi perfil de Github: https://github.com/W17CHeR
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hacking defensivo
Seguridad
Fustigador 6 4,200 Último mensaje 1 Agosto 2012, 10:05 am
por Fustigador
Oscobo es un nuevo buscador web enfocado en la privacidad
Noticias
wolfbcn 0 1,403 Último mensaje 6 Enero 2016, 21:42 pm
por wolfbcn
e enfocado un laser 240 mw rojo a......
Electrónica
dff200 1 5,862 Último mensaje 1 Noviembre 2016, 21:28 pm
por theusuario5000
Xbash, un gusano multiplataforma enfocado a servidores
Noticias
wolfbcn 0 1,207 Último mensaje 22 Septiembre 2018, 02:00 am
por wolfbcn
SSH Hardening & Offensive Mastery – Libro técnico con enfoque defensivo y ofensivo
Seguridad
DSDSec 0 1,709 Último mensaje 18 Abril 2025, 23:58 pm
por DSDSec
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines