Vous êtes sur la page 1sur 8

Proyecto Final

Introducción a los Lenguajes de programación

Instituto IACC

20 de marzo de 2018

Actividad
Usted trabaja para una agencia gubernamental de seguridad y ha notado ataques
informáticos a sus servidores. El archivo de logs de su cortafuego tiene líneas de este estilo:

Desde 111.222.333.444-Conexión hacia 1.1.1.1-Web


Desde 123.123.123.123-Conexión hacia 2.2.2.2-FTP
Desde 5.111.123.11-Conexión hacia 1.2.1.2-SSH

Usted desea saber quiénes y a qué máquinas están atacando. Para ello, se le solicita que
desarrolle los siguientes pasos:
 Ya tiene desarrollada la función que le permite identificar, dada una línea del archivo de
logs, la IP desde donde le están haciendo el ataque, la cual puede ver a continuación:
?php
function conocerIpOrigenAtaque ($cadena)
{
$ipOrigen =' ';
$primerBlanco = stripos($cadena,' ');
$primerGuion = stripos($cadena,'-');
$ipOrigen = substr($cadena, $primerBlanco, ($primerGuion - $primerBlanco));
echo 'La IP desde donde se hace el ataque es: ' . $ipOrigen . '<br>';
}
?>

Para hacer la prueba con la primera línea del archivo de logs se ejecuta luego de la función
la siguiente instrucción:
conocerIpOrigenAtaque("Desde 5.111.123.11-Conexión hacia 1.2.1.2-SSH");

Y se obtiene el siguiente resultado:


La IP desde donde se hace el ataque es: 5.111.123.11

Tomando como base la función anteriormente descrita, escriba las siguientes funciones en PHP o
pseudocódigo:
o Función que identifique la IP que recibe el ataque
o Función que devuelva el servicio que está siendo atacado


 Explique brevemente las instrucciones necesarias para trabajar con el archivo que guarda
la información de ataques informáticos.
 Si se quisiera conocer las IP que más han intentado atacarlo, ¿Cómo podría llevarse a cabo
esto? ¿Qué estructuras de datos de las vistas (arreglos, pilas, colas) utilizaría? ¿Será
necesario emplear alguno de los ciclos de iteración vistos en la asignatura (for, while,
dowhile)? Justifique sus respuestas (se sugiere que se apoye en pseudocódigo o código en
PHP) y tome en cuenta que se busca obtener algo como lo que se detalla a continuación:
123.123.123.123 ha realizado 13 ataques.
5.111.123.11 ha realizado 8 ataques.
111.222.333.44 ha realizado 5 ataques.

 Declare las clases que serían necesarias en caso que se quisiera trabajar en PHP pero con
Programación Orientada a Objetos (POO). Explique el porqué de las declaraciones que
realiza.

Desarrollo

 A continuación se escribirá la función que identifique la IP que recibe el ataque tomando


en cuenta la función anteriormente descrita

<?php
function IpReceptoraAtaque($cadena)
{
$IpAtacada = '';
$PrimaryIp = stripos($cadena,'');
$primerGuion = stripos($cadena,'-');
$IpAtacada = substr($cadena, $PrimaryIp, ($primerGuion - $PrimaryIp));
echo '<h4> La IP Atacada es: <h4/>' . $IpAtacada . '<br>';
}
IpReceptoraAtaque('123.123.123.123-Conexión hacia 2.2.2.2-FTP');

 A continuación se escribirá la función que devuelva el servicio que está siendo atacado,
tomando en cuenta la función antes descrita

<?php
function servicioAtacado($serv)
{
if($serv =='111.222.333.44') {
echo '<h5>La IP es: <h5/>'. $serv;
echo '<h4> El Servicio Atacado es: WEB </h4>';
}
if($serv =='123.123.123.123') {
echo '<h5>La IP es: <h5/>'. $serv;
echo '<h4> El Servicio Atacado es: FTP </h4>';
}
if($serv =='5.111.123.11') {
echo '<h5>La IP es: <h5/>'. $serv;
echo '<h4> El Servicio Atacado es: SHH </h4>';
return $serv;
}
}
servicioAtacado('123.123.123.123');

 Las instrucciones necearías para trabajar con el archivo que guarda la información de
ataques informática son:

 Método Constructores: un constructor es una subrutina cuya misión es inicializar


un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo
objeto.
 Método Público: los atributos o métodos públicos, podrán ser leídos o llamados
en cualquier parte del código, ya sea de la misma clase o también fuera de esta,
significa también que podrá ser alterado sin restricciones, para evitar esto es
recomendable que se declaren como privados salvo casos excepcionales.
 Método Protegido: Se utilizan principalmente para acceder desde la misma clase
o de clases heredadas.
 Declaración de la Variable: se declara la variable es donde se encuentran los datos
que serán mostrados.
 Definición de las Variables: Se declara la o las variables con las que se trabajaran.
 Para el caso planteado se pueden utilizar varias estructuras de datos, las cuales nos
permiten resolver un problema de manera más sencilla gracias a que las reglas que las
rigen nunca cambian. Las estructuras dinámicas de datos crecen a medida que se ejecuta
un programa, se amplia y contrae durante la ejecución del programa basada en los
registros de almacenamiento de datos del programa.
Contestando a la pregunta no utilizaría pilas ni colas, pero si arreglos, siendo no
tan necesario emplear ciclos de iteración vistos en la asignatura, como podremos observar
en el siguiente código se utilizó un arreglo con sentencias condicionales tipo if, lo que nos
permite la ejecución condicional de fragmentos de código. PHP dispone de una estructura
if que es similar a la de C:.

$ip[0]= '111.222.333.444';
$ip[1]= '123.123.123.123';
$ip[2]= '5.111.123.11';
for ($i=0; $i<1; $i++) {
if ($ip[0]=='111.222.333.444') {
echo 'La IP: ' . $ip[0] . ' ,ha Realizado 13 Ataques' . '<br/>';
}
if ($ip[1]=='123.123.123.123') {
echo 'La IP: ' . $ip[1] . ' ,ha Realizado 8 Ataques' . '<br/>';
}
if ($ip[2]=='5.111.123.11') {
echo 'La IP: ' . $ip[2] . ' ,ha Realizado 5 Ataques' . '<br/>';
}
}
?>

 Para declarar las clases que serían necesarias en el caso que quisiera trabajar con PHP
pero con PPO (Programación Orientada a Objetos), utilizaríamos el siguiente código:

<?php
class Ip
{
public $var;
function __construct()
{
$this->setVar();
$this->getVar();
}
protected function getVar()
{
echo $this->var;
}
public function setVar()
{
$this->var = 'La IP mas Atacada es: 123.123.123.123' . '<br/>';
}
}
class Servicio extends Ip
{
function __construct()
{
$this->setVar();
$this->getVar();
}
public function setVar()
{
$this->var = 'El Servicio mas Atacado es: FTP' . '<br/>';
}
}
class Ataque extends Ip
{
function __construct()
{
$this->var = 'La IP: 123.123.123.123 , ha sido Atacada: 13 veces' . '<br/>' .
'La IP: 111.222.333.444 , ha sido Atacada: 8 veces' . '<br/>' .
'La IP: 5.111.123.11 , ha sido Atacada: 5 veces' . '<br/>' ;
$this->getVar();
}
public function getVar()
{
echo $this->var;
}
}
$Ip = new Ip();
$Servicio = new Servicio();
$Ataque = new Ataque();

Este seudocódigo se compone de la siguiente forma

 La clase llamada “IP”, heredara dos subclases llamadas “Servicio y Ataque”.


 Declarara varias variables que realizaran operaciones declaradas como “Var”.
 Se creara un constructor en cada clase, siendo más que una función que será
llamada cuando se crea una instancia de una clase tipo “new”.
 Tiene un método modificador “set” en cada clase, el cual asignara un nuevo valor
al atributo.
 Tiene un método de acceso “get” en cada clase, el cual solo devolverá el valor del
atributo.
 Se crearon las clases heredadas de la clase madre, estas son la clase “servicio” y
“Ataque”, a las cuales se le agrega la palabra “extends”, para lograr que la clase
sea extendida, una clase siempre será dependiente de una clase madre y la
herencia múltiple no está soportada.
 Se crea el operador “new” para retornar la referencia automáticamente.

Bibliografía
(Sin Fecha). Manual de PHP. PHP. Obtenido 03, 2018, de
http://php.net/manual/es/index.php#index

(Sin Fecha). Funciones de strings. PHP. Obtenido 03, 2018, de


http://php.net/manual/es/ref.strings.php

Delgado, R. (2012, 06). Estructuras Dinámicas de Datos. Programación en php. Obtenido 03, 2018,
de http://delgadorichardprogramacionenphp.blogspot.cl/2012/06/estructuras-dinamicas-de-
datos.html

Toca, D. (2017, 09). Qué son y para qué sirven las estructuras de datos. Platzi. Obtenido 03, 2018,
de https://platzi.com/blog/estructuras-de-datos-que-son/

(2017, 01). Estructura de datos definición y tipos principales. Universidad Internacional de


Valencia. Obtenido 03, 2018, de https://www.universidadviu.es/estructura-datos-definicion-tipos-
principales/

Garin, E. (2016, 08). Declaración de atributos, constructores, propiedades (get & set) y métodos de
una clase en PHP.. Codeveloper. Obtenido 03, 2018, de http://codeveloperweb.com/declaracion-
de-atributos-constructores-propiedades-get-set-y-metodos-de-una-clase-en-php/

(Sin Fecha). IF. PHP. Obtenido 03, 2018, de http://php.net/manual/es/control-structures.if.php

Vous aimerez peut-être aussi