Académique Documents
Professionnel Documents
Culture Documents
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:
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");
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
<?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:
$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();
Bibliografía
(Sin Fecha). Manual de PHP. PHP. Obtenido 03, 2018, de
http://php.net/manual/es/index.php#index
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/
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/