You are on page 1of 8

PROYECTO FINAL

INTRODUCCION A LOS LENGUAJES DE PROGRAMACION

IACC
31 DE DICIEMBRE 2018
*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 solicita que
desarrolle los siguientes pasos:
?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:

*Función que identifique la IP que recibe el ataque


*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 has 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 PROYECTO FINAL

1- Función que identifique la IP que recibe el ataque


<?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');

2-Función que devuelva el servicio que está siendo atacado


<?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');
3-explique brevemente las instrucciones necesarias para trabajar con el archivo que
guarda la información de ataques informáticos.

METODO CONSTRUCTORES: Su misión es inicializar un objeto de una clase. Además en


este método se pueden se asignar los valores iniciales del nuevo objeto.

METODO PUBLICO: 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 podrá ser alterado sin restricciones, para evitar esto es recomendable que se
declaren como privados salvo casos excepcionales.

METODO PROTEGIDO: Principalmente es utilizada 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.

DEFINICION DE VARIABLES: Se declara la o las variables con las que se trabajaran.

4-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)
En este caso se utilizó un arreglo que incluye sentencias condicionales con “if” esta tiene
como objetivo reconocer las ip atacadas en los servidores.
$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/>';
}
}
?>
5-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

<?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();

Detalle del Pseudocódigo:

-La clase llamada “IP” la cual heredara dos subclases llamadas “servicio y ataque”
-Declarara varias variables que a su vez realizaran operaciones declaradas como “VAR”
-después se creara un constructor en cada clase, función que será llamada cuando se crea
Una instancia de una clase con “New”
-Contiene un método modificador “Set” en cada clase, asignándole un nuevo valor al
Atributo.
-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 les agrega la palabra “extends”, de este modo hacer que la clase sea
Extendida.
-Se crea el operador “New” para de este modo retornar la referencia automáticamente.
Bibliografia:

-Guias y recursos Adiciones, Introducción a Lenguajes de Programación IACC 2018


-https://manuales.guebs.com/php/index.html