Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Temas - Oggy

Páginas: [1]
1
Zona Webmaster / Scraping web
« en: Septiembre 27, 2015, 01:21:41 pm »
    Tiempos que no pasaba por acá a postear algo, recordé que en uno de los foros en los que aportaba había dejado algo interesante que quiza a algún visitante de éste foro le agradaría ver.
    Debido a que el tutorial estuvo enfocado a una comunidad distinta corregí algunas palabras para hacerlo más presentable en undercode.



    Hoy les presentaré un tutorial de cómo sacar datos de algún sitio web sin tener que programar, además de ello les mostraré un ejemplo práctico, el ejemplo que daré será crear un auto publicador de chistes en twitter.

    Muchas veces necesitamos información de un sitio web pero este no tiene alguna api ni sus datos accesibles vía json o alguna forma que nos de acceso a su información, normalmente usamos algún tipo de herramienta en algún lenguaje como php,js u otro para jalar la información, pero.. qué pasa con la gente normal o personas que tenemos conocimientos intermedios de programación? se nos vuelve un dolor de cabeza.
    De las herramientas que conozco para scraping normalmente uso xpath y una que otra librería en php, aveces me enojo tanto por ser tan complicada la tarea que termino olvidándome de lo que tenía en mente, bueno esto se terminó cuando conocí a Kimono
    Sí, Kimono y no la prenda de vestir sino una herramienta la cual nos permite que cualquier tipo de sitio web el cual tenga contenido pueda ser scrapeado en tan solo unos pocos y fáciles pasos.

De qué nos sirve Kimono?

Nos sirve para evitarnos el problema de programar algún script que nos saque cierta información de un sitio web o bien evitar pagarle a alguien para que haga esta tarea.

Imaginen este escenario que además traeré a la vida muy facilmente...
Queremos usar la api de twitter para publicar desde ella en nuestro twitter con alguna librería en php pero lo que queremos publicar está en un sitio web en especifico y se actualiza a cada rato, además de ello no queremos estar publicando o modificando el script a mano...
Pues fácil y sencillo, usamos kimono para Scrapear la data que queremos de la web, pasarsela a algún lenguaje y si la data es dinámica, osea se actualiza usamos un motor de base de datos para alojarla en una base de datos propia (por si queremos usar mucho mejor la data scrapeada)
como motor de bases de datos muchos usamos mysql, así que en éste tutorial en el ejemplo que presentaré usaré ese motor de base de datos.


Requerimientos

Scrapear cualquier web desde kimono -> Cualquiera puede hacerlo, no requiere conocimientos especiales.

Manejar los datos scrapeados(sacados de la web) -> Kimono ya trae una manera de usar la data que recolectamos, o bien si deseas más libertad necesitas un nivel de lengaje de programación intermedio, aconsejo Js,php,python...

Crear la app de twitter, combinarla con kimono y php para crear un autopublicador con Kimono php y un cron job -> Nivel de php intermedio

Bueno como decía mi abuela, primero la primaria les presentaré kimono, para ello nos dirijimos a https://www.kimonolabs.com/  Es la página oficial de kimono, nos registramos desde: https://www.kimonolabs.com/signup



nos dirijimos a el apartado learn y buscamos la sección donde nos proveen la extención de chrome :



Acá les dejo el link directo de la chrome extención: https://www.kimonolabs.com/learn/chrome-extension

Se la bajan y tendrán en su navegador algo similar:



Listo, ya estamos listos para empezar a sacar la información de el sitio que queramos vamos a ello!

El ejemplo que daré será Sacar los chistes de un website.


Explico: Property1, vendría siendo el nombre de cada información que saquemos de la web, ejemplo estamos en la página de chistes, yo sólo quiero sacar los chistes y nada más, cómo le llamaremos? pues chistes, si estan por ejemplo en un sitio web de noticias, podés llamar a cada propiedad por un nombre como: título,autor,contenido, así cuando Kimono te pase la info en el Formato Json pues no te vas a perder con la data que extrajiste.

Guardas el proyecto y estas listo para empezar.



[LIST=1]
  • Nombre del proyecto[/li]
  • Tags, hace referencia a el uso que le darás a la api[/li]
  • Intervalo de tiempo en el que Kimono actualizará la info[/li]
  • Si la página tiene paginación y hay más info kimono screapea esas páginas, especificas cuantas páginas deseas scrapear.[/li]
    [/list]

    Luego se van a la página principal de kimono y desde su cuenta se dirigen a su apis.



    Después de irse al apartado de sus apis creadas, se desplegará la info de su api.



    Muestra información como nombre de su api, cuándo kimono volverá a jalar información nueva de la página scrapeada, información de errores,aciertos de la api y otras hiervas más.

    No eres programador y quieres usar la data que sacaste de la web?

    Este apartado enseñaré la manera más fácil dónde no se requiere saber programar en ningún lenguaje para manipular la data que scrapeaste, crearemos una app con kimono dónde desplegaremos toda la información.

    En su cuenta tendrán un apartado llamado App builder, se usará para crear una app en la cual usaremos la información de la web que scrapeamos.
    Link directo para crear la app: https://www.kimonolabs.com/newapp



    Enlazarán su app con la data scrapeada, kimono les ofrecerá esa opción, después de ello escogen el estilo que desean para su app y tendrán una app con data actualizable de el sitio web scrapeado.



    El link de este ejemplo pueden verlo acá: forobetachistes

    También los que no les interesa o no saben programar en algún lenguaje tienen otra opción de embeder su app en wordpress o a un sitio web, acá más info: https://www.kimonolabs.com/learn/wordpress

    Creando app en twitter y combinándola con kimono, php y un Cron job

    Cualquiera puede hablar y presentar un tutorial Basándose en simples teorías que quieren venir a ofrecerte algo sin haber sido probado, éste tutorial pretende enseñarte lo que yo mismo he aprendido y de una manera fácil, sin suposiciones ni nada por el estilo, en el ejemplo que yo daré usaré la api que creamos y la combinaremos con la api de twitter y una librería en php más un cron job que nos permitirá twittear nuestros chistes automáticamente.

    Requerimientos: Saber php, entusiasmo e imaginación.

    conexion.php

    Código: PHP
    1. <?php
    2.  
    3. $db = mysqli_connect("host","user","pass","bd");
    4.  
    5. if($db){
    6.     echo "conectado";
    7. }else{
    8.     echo "No te has conectado hay un problema";
    9. }

    chistes.php
    Código: PHP
    1. <?php
    2.  
    3.  
    4. require("conexion.php");
    5. include("TwitterAPIExchange.php");
    6.  
    7.  
    8.  
    9. $hora = date("i"); // minutos para escojer qué chiste se enviará a twitter
    10.  
    11. $nm = mysqli_query($db,"select * from chistes where id = $hora"); //recojemos el chiste y depende de la hora/minuto o lo que tengas programado se publicarán un diferente chiste de la base de datos
    12.  
    13. $um = mysqli_fetch_assoc($nm); //iniciamos la función para traer el chiste de la bd
    14.  
    15. $pop = $um["chiste"];
    16.  
    17.  
    18. //Logica para enviar los datos a twitter con su libreria
    19.  
    20. $settings = array(
    21.     'oauth_access_token' => "Tu token",
    22.     'oauth_access_token_secret' => "Tu token secreto",
    23.     'consumer_key' => "tu llave ",
    24.     'consumer_secret' => "tu consumer secret"
    25. );
    26.  
    27. $url = "[url]https://api.twitter.com/1.1/statuses/update.json[/url]";
    28.  
    29. $postdata = array(
    30.  
    31. 'status' => $pop //chiste pasado a la libreria para que sea enviado a twitter
    32.  
    33.  
    34. );
    35.  
    36. $metodo = "POST";
    37.  
    38. $twitter = new TwitterAPIExchange($settings);
    39.  
    40. echo $twitter->setPostfields($postdata)
    41.              ->buildOauth($url,$metodo)
    42.              ->performRequest();

    También necesitarán la api de twitter en php, TwitterAPIExchange, la bajan desde acá https://github.com/J7mbo/twitter-api-php

    Para crear tu app en twitter se van a https://dev.twitter.com/

    Crean su app, le dan permisos de lectura y escritura.

    Para poder guardar los chistes de kimono a la bd yo hice esto: Recorrí los datos con un foreach anidado, así al finalizar el foreach anidado me enviaba los datos a mi bd:

    Logica para enviar mis datos de kimono a mi bd:

    Código: PHP
    1. <?php
    2. require("conexion.php");
    3. $request = "[url]https://www.kimonolabs.com/api/77rvy8e2?apikey=Bbx40LCzP5mlQFEtUW0PLbChLDJ4YWeZ[/url]"; //Nuestra api kimono en formato json
    4. $response = file_get_contents($request); //Obtener el código de la api
    5. $results = json_decode($response, TRUE); //Decodificar el json de la api
    6.  
    7.  
    8. //foreach anidado para obtener el chiste
    9. foreach ($results as $key => $value) {
    10.    
    11.  
    12.     foreach ($value as $clave => $valor) {
    13.        
    14.         foreach ($valor as $culo => $fluflu) {
    15.            
    16.  
    17.             foreach ($fluflu as $wea => $nono) {
    18.                
    19.                 $insertar = $nono["text"]; //asignamos a $insertar los chistes y se recorren todos con el foreach anidado
    20.  
    21.                 mysqli_query($db,"insert into chistes(id,chiste) values('','$insertar')"); //consulta sql para insertar los chistes
    22.             }
    23.         }
    24.     }
    25. }

    Creando un cron job para automatizar los tweets

    Con un cron job se nos facilitará la vida y la publicación de tweets automáticos, en éste ejemplo estamos usando los chistes que sacamos de la web de chistes y después de haberlos acomodado en la api de kimono los pasamos a nuestra bd, ahora realizaremos el cron job.
    esta vez no usaré ningún cpanel sino que usaré un servicio gratuito que nos dejará crear un cron job y ejecutar nuestro script cada cierto tiempo, nos iremos a: https://cron-job.org/ se registran y se dirigen a el area de members, ahí estarán los detalles de sus cron jobs creados, si no tienen ni uno no les saldrá nada, se irán a "Cron jobs" y crearán uno nuevo:



    Configuran a gusto su cron job, en mi ejemplo lo pondré que se ejecute cada 1 minuto para demostrarles que funcionan los tuits automáticos.



    Después de haberlo dejado unos minutitos corriendo este fue el resultado:



    Podés jugar con los caracteres, ya ves que se lia un poco con las eñes y otros caracteres, esto se soluciona cambiando el charset y teniendo un poco de lógica en php.

    Todas nuestras apis pasan a servirse en un json, podés usar json desde casi cualquier lenguaje de programación.
    Puedo darles ideas,: Sacar las listas de alguna web de anime, sacar las listas de una web de pelis, sacar la información diaria de algun sitio web de noticias, ya saben que kimono actualiza su api automáticamente así que solo tienen que scrapear una sola vez, kimono también permite scrapear secciones dónde te pide logueo, en la documentación que dejaré explican cómo hacerlo.

    Documentación oficial de kimono en videos: https://www.youtube.com/user/kimonolabs/videos

    http://vimeo.com/user23724399 (Mejor vean los tutoriales con viemeo, aconsejado.)

    Documentación completa: https://www.kimonolabs.com/learn/

    qué es scraping: http://es.wikipedia.org/wiki/Web_scraping
    Saludos 8)!

2
Back-end / Creando herramientas interesantes con funciones de red en php
« en: Diciembre 17, 2012, 09:02:00 pm »
Saludos compañeros.
Normalmente cuando escuchamos por primera vez sobre php ó sobre su existencia lo escuchamos como que es el lenguage standard para crear páginas web dinamicas, y aunque en parte lo es, lenguages como python,ruby,javascript están innovando la web esto no quiere decir que php se quede atras.
Aclaro que antes de que alguién me cruzifique por haber tocado a javascript lo invito a Leer mas sobre este lenguage & que vea su potencial acompañado con frameworks.
Las funciones de red en php Son muy intuitivas, nos facilitan el investigar el Nombre de un dominio a el que corresponde X ip que tengamos ó viceversa, también nos permiten enviar Cookies, Enviar headers (cabeceras) e interactuar de diferentes formas principlamente con el protocolo http.

Aqui dejo algunas funcionalidades, explotadas al maximo desde la CLI de php, (o esque php solo es para la web?).

función gethostbyaddr: nos devuelve el nombre de dominio de una ip dada.
 uso:



Código: [Seleccionar]
<?php

$y 
$argv[1];
echo 
gethostbyaddr("$y")."\n";

?>


Hacemos la llamada a la variable de entorno que dira que estamos usando php para ejecutar un documento, dentro de este documento tenemos definida una variable del tipo array que recojera el valor que le pasemos por consola, este valor sera la ip que impongamos & el script nos devolvera Gracias a la función dethostbyaddr el nombre de el dominio que hace referencia a la ip dada.

Para no alargarme mas en el asunto Dejaré la lista de las funciones de red, Espero que les sea de gran ayuda & vean el potencial de estás funciones.

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

3
Back-end / Spider web con Curl
« en: Diciembre 03, 2012, 05:28:55 pm »
Aqui dejo un Spider de url's el cual Recorre una página Gracias a la libreria curl, luego Con unos parametros establecidos con preg_match_all Busca todos los datos parametrizados en esa función y retorna Lo que encontro.



Código: [Seleccionar]
<form action="craw.php" method="post"/>
<input type="text" name="link" value="http://"/><br>
<input type="submit" value="enviar"/>
</form>
<?php
$url 
= @$_POST["link"];

if(isset(
$url))
{
$ch curl_init("$url");
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION);
$abrir curl_exec($ch);
curl_close($ch);
preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is"$abrir$matches);
header("Content-type: text/plain");
var_dump($matches);
}
?>
Esto se me ocurrio Despues de haber Hecho el Identificador de servidores web.

4
Back-end / Reconocimiento de Servidores Con php
« en: Diciembre 03, 2012, 04:08:07 pm »
Saludos compañeros.

Diferentes funciones Pueden emplearse para Facilitar algun trabajo, Hace poco deje un post en la sección de python donde Deje un P0c que Mostraba como aprovecharse de un http Response el cual El código de respuesta fuera  200.

Si no sabes que Son los Códigos de respuesta de una petición http checa esto:
http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#C.C3.B3digos_de_respuesta

Ayer Cuando me retire de la pc, despues de 30 minutos/media hora, pense en Crear alguna herramienta/t00l la cual Reconociera un Servidor, haciendo un http request y que me retornara los cabeceras de la http request, Recordando la función get_headers & entendiendo un poco mas las expreciones regulares en php, Combinado esto con La función preg_match ó preg_match_all Se hacen muchas maravillas.



Código: PHP
  1. <!Doctype html>
  2. <html>
  3. <body>
  4.    <head><title>Underc0de</title></head>
  5. <form action="finder.php" method="post"/>
  6. <input type="text" name="test" value="http://"/><br>
  7. <input type="submit" value="enviar"/>
  8. </body>
  9. </html>
  10. <?php
  11. $url = @$_POST["test"];
  12.  
  13. if(isset($url))
  14. {
  15. $oggy = get_headers("$url");
  16. $m = 1;
  17. while($m <= 20)
  18. {
  19.  
  20. preg_match("/Server:(.+)/", $oggy[$m],$match);
  21.  
  22. echo "<b>$match[0]<b>";
  23. $m++;
  24. }
  25. }
  26.  
  27. ?>

5
Saludos compañeros.

Alguno tendra Alguna forma,función etc..., En php la cual permita Ejecutar un Bloque De código en un Tiempo predefinido?

Ejemplo: Ejecuta Esto Cada 5 minutos, Ejecuta esto Cada 10 Segundos etc.

De antemano Gracias si estas intentando Responder mi Duda.

6
Python / Funciones de php a python & mucho mas
« en: Noviembre 24, 2012, 02:13:50 pm »
Saludos compañeros.
Estaba algo atareado Con algunas Cosas de mi vida, Pero no podia Dejar pasar Este post que me parece Tan interesante.
Muchos conoceran Jython, Son fieles pruebas de que Muchos Siendo amantes de X lenguage Pueden obtar Por Usarlo en diferentes Cosas, sin una mayor Restricción ó Desventaja, Existen muchas formas de llevar a la gui a Python, pero como Me dijo Sanko una vez, Darle interfaz Grafica a un lenguage De scripting Es quitarse Su magia, Pero esto lo enmienda Jython & otros lenguages Similares.

De esto no data el post de Hoy, lo que quiero Dar a conocer Aparecio por "Casualidad", no recuerdo que estaba Buscando y me tope con un Link que Decia php2python, De momento pense que se trataba de alguno De estos lenguages Jovenes que Combinan Diferentes Tegnologias.
Cuando me adentre a conocer la api, me di cuenta que era un Buscador nativo de Funciones & Diferentes cosas en php que Se podian pasar a python.

P0c:

Está es la aparciencia de la api, Un buscador de funciones & clases en php que Busca su Posible traducción a python.


En este Ejemplo puse La función Eregi la cual Me Devolvio Su traducción de php a python.




Aqui otro Ejemplo, Probé con la funcion Nativa de php get_headers que Devuelve En un array las Cabeceras que se Generan en una petición http, con python la Traducio Importando la libreria Urlib



Url de la api: http://www.php2python.com/

Espero que les Sea de gran ayuda, Saludos.

7
Hacking / Creando aplicación Vulnerable a Os comanding
« en: Noviembre 16, 2012, 05:04:34 pm »
Segun la owasp Os comanding es:
Un comando del sistema operativo ataque de inyección se produce cuando un atacante intenta ejecutar comandos a nivel de sistema a través de una aplicación vulnerable. Las solicitudes se consideran vulnerables a los ataques de inyección de comandos OS si utilizan la entrada del usuario en un comando de nivel de sistema.

Mi imaginación no Fue la mas Genial, y pues no tenia muchas ideas para inplantar en este tema, Hací que perdon Si no fui el mas listo Creando una aplicación Vulnerable.

tenemos Un archivo en php el Cual compete de un formulario con un input De el tipo oculto, Osea este no se vera a ojos del usuario & tendra un Valor predeterminado, el cual lo que hara es resolver una Dns con el comando nslookup.
Como Dige anteriormente este comando está oculto, lo que haremos es Cambiar el comando que enviemos De dos formas.

1. Con un repetidor De Cabeceras Cambiaremos los datos pasados por Post ejecutando Código arbitrario.

esta pequeña "aplicación" Ejecutara El comando nslookup Con la funcion system de php, Luego esta pasara por parametros a el Modulo os en python que ejecuta comandos de el systema, y el parametro es "nslookup http://underc0de.org/" & lo que haria al clickar el Boton seria Resolver las dns de Underc0de.

veamos.



Ok sin problemas.
pero que pasa si Con un repetidor de Cabeceras Cambiamos el contenido que Se envia Gracias a el input Oculto? (Hidden).


forma2.
Editando el contenido que se enviara antes de Darle click a el boton.


Espero que les haya servido para entender el funcionamiento de esta Grave vuln y pues Disculpas por las pocas Ideas que tuve para la aplicación xD...!

Códigos Usados:
test.php
Código: [Seleccionar]
<!Doctype html>
<html>
<form action="test.php" method="post">
<input type="hidden" name="oggy" value="python test.py nslookup [url]http://underc0de.org[/url]"/>
<input type="submit" value="Fire"/>
</form>
</html>
<?php
error_reporting
(NULL);
$respuesta system(@$_POST["oggy"]);

echo 
$respuesta;

?>
test.py
Código: [Seleccionar]
import os
varsita = os.system("nslookup underc0de.org")
print varsita


8
Python / Admin panel Finder Gracias a peticiones http?
« en: Noviembre 16, 2012, 03:08:47 pm »
Estaba cureoseando Algunas librerias interesantes en Python, y Me encontre con una muy interesante.

httprequests

Instalación De esta libreria:

Para los que no la tengan Si estan en una Distribución Basada en ubuntu Pueden Obtenerla Instalando primero El instalador de paquetes de python "pip"

sudo apt-get install pip-python

Cuando este instalado Procedemos a instalar la libreria.
En cualquier terminal Tipear, pip install requests
Esto comenzara la Descarga de la libreria & su instalación.

Usando la libreria y aprovechando las respuestas http para Hacer algo Similar a un bruteforce de Paneles.

Código
Código: Python
  1. # -*- coding: utf-8 -*-
  2. import urllib2
  3. import requests
  4. dirs = ("/admin/","/wp_login",'/administrator/')
  5. url = raw_input("Buscar Panel:")
  6. for x in dirs:
  7.   r = requests.get(url+x)
  8.   for x in dirs:
  9.     if r.status_code == 200:
  10.       Oggy = open("Resultado.txt","a")
  11.       Escribeme = Oggy.write(url+x+'\n')
  12.       print Escribeme
  13.     else:
  14.       print "Bruteando..."
  15.  

Este es un simple p0c, No busque diccionarios Solo implemente éste ejemplo para Demostrar como Podemos Sacarle provecho a una petición http.

PD: Se lian un poco con las Páginas web con errores 404 personalizados porque Lo tomara como 200 (found), ya seria cuestión de Mejorar en un 100% mi ejemplo e implantarlo En una buena T00l para brutear Paneles ó Similares.


9
Seguridad / Atacando el phishing y Spam con 10minutemail
« en: Octubre 31, 2012, 09:44:01 pm »
Buenas compañeros...
en este post trataremos sobre el spam y los dolores de cabeza que nos puede dar.
Muchos estamos acostumbrados a que cuando nesecitamos probar o testear algun servicio Exponemos cuentas de email en las que existen Credenciales importantes que pueden verse intervenidas por ternceros.
Como pasa esto? muchos ponen la misma password en los sistemas de registro de otros sitios a los que entraron por curiosidad o quisieron ver y/o usar algun servicio que pedia algun registro con email valido, muchos de estos sitios aveces se ven intervenidos por terceros y se roban sus bases de datos las cuales tienen todos nuestros datos que ingresamos al avernos registrados.
Pueden usar estos datos para hacernos caer en algun tipo de phishing (normalmente el bancario) para los que se acostumbran a comprar via internet.

que es 10minute mail?
es un sistema de correos que expira cuando su tiempo de vida (10) minutos sea concluido, con este sistema podriamos matar el spam de terceros y las posibles intrusiones por terceros a nuestros mails en los que contenemos credenciales importantes, aqui dejo los pasos para usar este sistema que me llama mucho la atención.

al entrar a el sitio nos encontramos que se genera un email este email tiene una vida de 10 minutos, ay una opción que dice dame 10 minutos mas ó algo similar, podemos clicar ay para reanudar su tiempo de vida a 10 minutos mas.
abajo de la pagina encontraremos la bandeja de entrada ay Nos llegaran los emails.

Resultado




Podemos estar mas seguros cuando nos registremos en paginas de dudosa reputación o en sitios de los que no tengamos mucha confianza.

Link http://10minutemail.com

10
Saludos Compañeros.

Aqui inspirado por el reto de Sanko, cree uno muy similar En el cual la meta es Pedir un numero por El Keyboard y Generar una formula aritmetica la cual calcule el Numero pedido & Arroje de Resultado La edad De Underc0de.

Para hacerlo entretenido aconsejo Crear formulas matematicas complejas.


Aqui va el mio.

Formula erronea:


Formula correcta:


Código Python:

Código: [Seleccionar]
print "Verificar edad de underc0de\n"

oggy = raw_input("Ingrese su nombre:")

cecy = 27/9*3+2-8

cecy2 = input("ingresa un numero:")

edad = cecy + cecy2

if    edad == 3:
   print "Correcto!!!",oggy,"la edad de underc0de es de",edad,"anos"
else:
   print"Error :/",oggy,"Sigue intentando"   


Publicar Aqui las Soluciones no enviarme pv, Yo los iré poniendo en la lista de los que an pasado.

An pasado el reto:    aneraka,Okol,Sanko,netco0m

Genial chicos... Sanko,okol En especial uds que compartimos diferentes opiniones antes de lanzar el source de cada uno.

PD:Disculpenme Si La Edad que creo que tiene el foro es erronea, de ser el caso corregirme porfavor.





11
Presentaciones / Presentación Luisz
« en: Octubre 21, 2012, 04:52:57 pm »
Saludos compañeros.

Aqui presentando mi mas humilde presentación ante la comunidad.

Nombre: luisz
edad:17
Pais: colombia

Espero Adquirir conocimiento Gracias a la comunidad conforme y pase el tiempo, e igualmente poder contribuir en algo.

Saludos...

Páginas: [1]