Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - TrueneX

#1
GNU/Linux / [Manual] Ubuntu 10.04 Lucid Lynx
Abril 29, 2010, 10:54:25 AM

Como muchos saben HOY se publica la nueva versión de Ubuntu, la 10.04 "Lucid Lynx" y bueno ... ya se lanzó su manual  para aquellos que lo quieran descargar y leer :)

Caracteristicas

Fácil de entender - nuestro manual tiene instrucciones paso a paso y con un lenguaje simple
Una imagen vale más que mil palabras - montones de capturas de pantalla que muestran como hacer las cosas
Todo en un lugar - localizado adecuadamente en un archivo para que no necesite buscar ayuda en la web
Curva progresiva de aprendizaje - Empiece por lo básico, y aprenda trabajando a través de cada capítulo
Docenas de idiomas - traducido a más de 52 idiomas, incluyendo las capturas de pantalla
Licencia CC-BY-SA - Descargue, modifique, reproduzca y compártalo tanto como guste
Sin coste - nuestros documentos están escritos en su totalidad por miembros de la comunidad de Ubuntu y pueden usarse en forma gratuita
Fácil de imprimir - we have a version optimized for printing to save the trees
Sección de resolución de problemas - para ayudarle a resolver problemas comunes en Ubuntu rápidamente

Datos

Nombre Archivo: Getting Started with Ubuntu 10.04.pdf
Tamaño: 4.6MB
Paginas:165

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PD: actualmente esta en ingles pero ya van a agregarlos en español :) en el enlace de la descarga se van a enterar cuando :)

Saludos !

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#2
Hola gente, bueno mirando por ahi me topé con esto, un nuevo lenguaje de programación donde el objetivo es atraer a la programacion a los mas pequeños. no se guardan archivos, no es necesario compilar , solo escribir el codigo y ejecutas , asi haciendolo mas facil , este lenguaje aún esta en fase de desarrollo  y por ende no se encuentra un paquete instalable , pero si se puede instalar desde bzr descargar desde el enlace que dejo abajo...

Capturas:




No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Instalar bzr (si no lo tenes instalado):

Citarsudo aptitude install bzr

e instalamos PyJunior

Citarbzr branch lp:pyjunior
cd pyjunior/bin
./pyjunior &

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
----
Interesante no ? jaja  ami me gustó

Saludos
#3
GNU/Linux / Consumos en KDE, GNOME, LXDE y XFCE
Marzo 10, 2010, 11:06:43 AM
La incansable gente del sitio Phoronix se dedicó a la tarea de tratar de medir las diferencias de consumo de memoria, consumo de energía, consumo de batería y desempeño térmico de los principales escritorios gráficos para el usuario disponibles en GNU/Linux: KDE, GNOME, LXDE y XFCE. Se trata de una muy original comparación enfocada en aspectos realmente importantes para usuarios de notebooks y netbooks, donde cado uno puede tener un peso determinante en la performance de todo el sistema.

Las pruebas se realizaron con el Phoronix Test Suite, el que está disponible en su sitio para que cualquier pueda reproducir los resultados, una netbook Samsung NC10 de 10,2" con un típico CPU Atom N270, gráficos Intel 945 y 2 Gb de RAM, pero con un poco frecuente disco SSD de 32 Gb. La distribución elegida fué una versión de desarrollo de Ubuntu 10.04 "Lucid Lynx" del 2010-03-07 con el Kernel 2.6.32 y sus paquetes oficiales para los escritorios anteriores: KDE SC 4.4.1, GNOME 2.29.91, LXDE 0.5 y XFCE 4.6.1.

Algunos de los resultados obtenidos fueron previsibles, pero otros reveladores:


Consumo de Batería: ninguna diferencia notable, con los cuatro escritorios consumiendo un promedio de 0,2 Watts.

Consumo de Memoria: LXDE fué el que menos consumió, con 30 Mb menos que el siguiente, XFCE. Al otro extremo, el que más consumió fué KDE con un 67% más que LXDE. GNOME consumió 24% menos que KDE.

Monitor de Temperatura: ninguna diferencia notable en la temperatura del sistema con los cuatro escritorios.

Monitor de Batería: en una segunda prueba haciendo cosas comunes como navegar por la web y otras tareas básicas KDE fué el que consumió más energía de la batería, con un promedio de 14,1 Watts. LXDE fué el que consumió menos con 12,9 Watts, un 9% menos. GNOME les siguió consumiendo 13,1 Watts y luego XFCE con 13,3 Watts.

Monitor de Memoria: los resultados fueron similares a los de la prueba número 2.

Monitor de Temperatura (2): KDE fué el único cuya temperatura varió con respecto a la primer prueba, con un promedio de 48º C; para el resto fué de 45ª a 46ª.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
----------
KDE si on fuera tan pesado en todos sentido lo usaria .. necesitas teneren una maquina potente por asi decirlo ...  justamente ayer estaba con un disco que no uso haciendo pruebas .. e instale ubuntu 9.10 karmic koala con lxde y OMG es un avion .... rapidiiisimo... es mejor entorno apra mi gusto LXDE se lleva el premio..

Saludos
#4
GNU/Linux / Bluefish 2.0
Febrero 19, 2010, 05:57:44 PM

Descripcion

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es un editor HTML multiplataforma con licencia GPL.

Está dirigido a diseñadores web y programadores y se enfoca principalmente en la edición de páginas dinámicas e interactivas. Es capaz de reconocer diversos lenguajes de programación:

C/C++
ChangeLogs
CSS
CFML
D
gettext PO
HTML
Java
JavaScript
JSP
Octave/MATLAB
Pascal
Perl
PHP
Python
R
Ruby
Shell
SQL
Tcl
XML


Instalacion

podemos actualizarlo o instalarlo en Karmic agregando su repositorio PPA:

Código: php
sudo add-apt-repository ppa:tim-kornhammar/ppa


Código: php
sudo aptitude update


Código: php
sudo aptitude install bluefish


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
------
Personalmente no uso editores web .. nunca lo hice , siempre en un archivo de texto .. por mas comodidad jeje pero muchos los utilizan asique a ellos les va a servir :)

Saludos !
#5
E visto que en muchos foros preguntan:

quiero aprender a defecear por donde comienzo?
a lo que usualmente le contestan
aprende a usar SSS o acunetix,escanea la pagina,y busca su respectivo exploit en milw0rm y explotala,busca dorks en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta etc etc

pero realmente no se han detenido a pensar que realmente no aprenderia el usuario No tienes permitido ver los links. Registrarse o Entrar a mi cuenta siquiera de que y de donde viene una vulnerabilidad en una aplicacion web.

y tampoco los encaminan a que aprendan programacion por que la mayoria de las veces las vulnerabilidades provienen o del administrador del server o del administrador de la web o del script web que este utilizando.

o sea que en resumidas cuentas a la hora de que el usuario empiece a usar sus scanners y explotar con sus exploits de milw0rm no tiene la menor idea de por que vino la falla.

"pero diran pero si yo quiero solamente es defecear la pagina"
si es asi continua usando los scanners y explotando scripts prefabricados que salen vulnerables en milw0rm y no sigas leyendo.

Aqui tambien encontraras todas las herramientas renombradas con sus respectivos enlaces de descarga que estan marcado de este color asi que pueden visitar los enlaces ;)

* Por Que Este Paso A Paso?
Ya eso lo conteste arriba creo :)

* Cual Es El Objetivo
El Objetivo es que los usuarios,clarifiquen su camino y no se pierdan en lo que es el defacing,y que muestren interes en una rama del hacking interesante como lo es la Busqueda de vulnerabilidades a nivel web

* Que Aprendere?
Lo mejor del under,que uno aprende hasta que tu mismo quieras si eres autodidacta y sabes dividir tu tiempo aprenderas todo

A continuacion ire recopilando lo que si debes ocupar si quieres realmente convertirte en un "defacer" (si asi se le llama) xD

* Por Donde Empiezo
ok por donde empieza la creacion de todo en el internet Programacion
el internet se mueve gracias a cientos de lenguajes de programacion y por ahi debes comenzar:
1-Html Al Menos Basico
@html es un lenguaje de programacion por el cual estan programadas muchas paginas webs y seguramente sea el que quieras usar para poner tus index en tu camino hacia zone-h xD
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
******************
2-PHP Intermedio
@PhP Es Un lenguaje a nivel web similar al Html pero este tiene la ventaja que hace nuestros sitios dinamicos y realmente se pueden hacer cosas maravillosas con el...
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
******************
3-Sql
@Bueno esto es un lenguaje que esta de una forma ligado a la programacion web y al defacing por que es un lenguaje del que se ocupa de gestionar base de datos de sitios webs y deferentes estructuras.
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
*******************
4-Perl
@Perl es un lenguaje por excelencia limpio,organizado,y potente..por el cual es imprcindible ya que su potencia abarca en lo que respecta a la programacion de exploits crear tus propias tools e inclusive automatizar tus maldades
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#####################
Bueno por ahora nos quedamos en esos lenguajes no es obligatorio pero es imprecindible a la hora que quieras avanzar y quieras solo descubrir fallos en sistemas u otras cosas (Pentester)

* Que Tecnicas Usare En el defacing?
1-SqlInjection
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
***********************
2-LFI(Local File Inclusion)
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
***********************
3-XSS(Cross Site Cripting)
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
***********************
4-RFI (Remote File Include)
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
* No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
************************

bueno eso son las tecnicas mas comunes por las cuales deberias empezar en esto del defacing....
* Que Herramientas Ocupo?
@No Nesesitas Todas Estas Herramientas Que enlistare pero las Enlisto Para Que te hagas alguna idea de lo que podrias utilizar
1-Mucha Paciencia y Cafe
La Nesesitaras ya que esto no es entrar ver y defecear y ya..

2-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
un scanner para la plataforma de linux con una buena base de datos de vulnerabilidades para aplicaciones webs

3-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
siempre un scanner de puertos es imprecindible a la hora de ver los puertos que tiene abierto la victima y este es muy bueno ya que te indica los servicios que gestiona cada puerto ;)
4-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

5-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta  ##pass:hackhell
Shadow Security Scanner es un completísimo y efectivo escáner de vulnerabilidades para la plataforma de Windows nativa, aunque también examina servidores de cualquier otra plataforma revelando brechas en Unix, Linux, FreeBSD, OpenBSD y Net BSD.

6-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (Sitio oficial)
Acunetix Web Vulnerability Scanner, una sencilla herramienta con la que podrás analizar todas las posibles entradas de hackers que pueden producirse en tu sitio web y así cerrarlas.

7-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

8-No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No muy nesesaria esta tool pero trae muy buenas herramientas mas info Aqui

no voy a seguir enumerando herramientas por que no terminaria y lo que queremos aqui es que vayan desde 0 hasta no se 1,000 xD

hay muchas tools que pueden ocupar como scripts en diferentes lenguajes,perl,C++,PhP,Ruby

por ejemplo:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En fin si enumero no terminamos les ahorre el trabajo preparandole un Big Pack (Paquete Grande) El Cual Contiene todo lo que nesesitas,Herramientas,Manuales,Shells,Perl Scripts,Python Scripts,Backdoors,Sources...

De todo un gran pack por el cual querras darle una buena revisada...
reitero que algunas de las herramientas que estan en el paquete no fueron testeadas asi que no me hago responsable de horrores ni danos en su pc.

si enumero todo el contenido del paquete realmente este post se hace larguisimo si asi lo quieren preparo un texto y se los publico por aqui solo me dejan saber
/backdoors
/ManulesDefacing
//Mass Defacer And Log Eraser
/perltools
/phyton to0ls
/Reverse to0ls
/Ro0t 3xpl0its
/Scanners
/shells
/sources
/to0ls

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

###########################
Ya con esto tienen realmente por donde empezar y realmente no nesesitan usar todas las tools todo es por paso comienzen por la programacion luego pasan por partes a aprender las teknikas..

recuerden que no puedes aprender las tecnicas primero sin aprender programacion por que realmente no aprenderas comno funcionan las cosas..

la programacion fue lo que comenzo todo y asi mismo lo terminara escoje el camino que quieras recorrer y descubre el mundo de la busqueda de vulnerabilidades..

yo por mi parte no soy defacer no me gusta andar poniendo 1,000 index y decir soy el mas Pingon de la red...megusta buscar vulnerabilidades y notificarlas al administrador pero ya esta de ustedes escoger lo que quieren hacer con sus conocimientos

Esta recopilacion fue hecha con motivos educacionales ni este servidor ni el sitio donde a sido posteado se hace responsable de el uso que le den,asi como tambien los autores de los manuales que han sido recopilados...

espero que les sea de su agrado

EOC (END OF COURSE) xD

blood_rec


creditos: HAXXOR
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Por mi parte NO recomiendo usar Scanners , motivo ? hacen mucho "ruido" es decir ... dejan muchos rastros en los logs de que estubimos "testeando" .. si bien lo podemos borrar o intentar borrar luego .. no lo recomiendo ...

Espero que les sirva :)


saludos
#6
GNU/Linux / Estructura del sistema de archivos
Febrero 19, 2010, 01:58:22 PM


Hola !  recuerdo cuando apenas comenzaba a utilizar GNU/Linux , cansado de los virus , formateos y toneladas de mierdas mas ...  y no tenia ni menor idea de como empezar ...  luego de buscar manuales y bla bla bla .. queria saber que sis tema de archivos usaba y su estructira .. si bien estas descripciones estan por toda la red .. no la vi por aca .. asike la posteo ... Fuente? un archivo de mi pc ._. xD


/mnt/ = Si usas Linux hace años, ubicas a /mnt/ pues era el punto de montaje de cualquier medio de almacenamiento extraíble hasta que fue reemplazado por /media/
/Home/ La carpeta equivalente a /Documents and Settings/ de Windows.
Ahora los que no conocemos tanto:
/bin/ El que contiene los ejecutables fundamentales, que vienen por defecto en Linux
/boot/ El lugar de los archivos de arranque, el lugar de Grub, por ejemplo.
/dev/ El lugar donde se encuentran los dispositivos de hardware, desde el teclado hasta los discos duros (No hay nada que tocar aquí)
/etc/ Este tarde o temprano lo vamos a conocer, es el lugar donde se almacenan los archivos de configuración, tanto de programas como del sistema mismo (como es el caso del rc.conf de Arch Linux)
/lib/ ¿Les suena? Las librerías claro.
/opt/ Aplicaciones (preferentemente aquellas que no dependen de nada más, de forma directa y que están en su propia carpeta como Mozilla Firefox por ejemplo)
/proc/ Es el log del kernel (qué entrete!)
/root/ El directorio del súperusuario
/sbin/ Los comandos que sólo puede ejecutar 'root'
/tmp/ Para los archivos temporales
/usr/ UNIX System Resource (siempre pensé que era una abreviatura de 'usuario' xD) y almacena datos de programas y los programas mismos.
/var/ Archivos variables, es decir, archivos que pueden ir cambiando dinámicamente, incluído el servidor Apache.

Esto les va a servir a los que recien comientan . .como a los que no ...  saludos :)
#7
Hola !,si bien ya conocia esta aplicacion pense que ya estaba posteada pero en fin ... para aquellos amantes de los juegos ... (no soy uno de ellos), Se trata de Djl,es un instalador de juegos ... con tan solo unos clicks se descarga, instala solo y solo tenemos que poner "jugar" xD asi de simple ...



Tenemos juegos de cualquier tipo .. fps, rol . mmorpg , estrategia , deportes ,etc

Para instalarlo en una terminal ponemos:

wget No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

tar zxvf djl-1.2.6.tar.gz

cd djl

sh No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


si quieren le pueden dar permisos al contenido de la carpeta con : chmod -R XXX djl

al iniciar adaptaran la configuracion a su gusto .. actualiza en no mas de 1 minuto ... y listo .. en la pestaña "repositorio" podemos elegir categoria .. licencia  bla bla bla ... no creo que sea necesario explicar todo porque tiene una interfaz amigable y sencilla...

Cualquier duda ... avisen .. espero que les sirva :) saludos !
#8

Hola, voy a dejarles una serie de tips  para pasar un video formato ogv, en este caso salida recordmydesktop por ejemplo , agregar audio al video , extraerlo, y quitarlo (dejarlo mudo)...

Pasar video OGV a AVI
Es muy simple ... solo abrimos una terminal y ejecutamos :

Código: php
sudo apt-get install mencoder


nos ubicamos en el directorio que se encuentra el video ,una vez que finalizó ejecutamos la siguiente linea de comando:

Código: php
mencoder -idx infiernohacker.ogv -ovc lavc -oac mp3lame -o truenex.avi


sinos llega tirar un errorsito es que nos faltan los codecs ..

para eso instlaamos lo siguiente:

Código: php
sudo apt-get install mplayer


y listo :)

Agregar audio a un video

Lo vamos a realizar mediante FFmpeg si no lo tenemos instalado en una terminal:

Código: php
sudo apt-get install ffmpeg

y para agregarle el audi oque querramos ejecutamos en una terminal:

Código: php
ffmpeg -i lala.mp3 -i truenex.avi truenexconaudio.avi


donde "lala.mp3" es nuestro archivo de audio que vamos a ponerle al video , truenex.avi nuestro video actual sin sonido, y truenexconaudio.avi es el nombre del video saliente ...  dejando nuestro video original intacto :)

Extraer audio de video

supongamos que queremos sacar nuevamente el audio que pusimos en truenexconsonido.avi

utilizado mplayer lo vamos a hacer ^^ en una terminal ponemos:

Código: php
mplayer -vo null -vc dump -ao pcm:file="truenex.mp3" "truenexconaudio.avi"


donde truenex.mp3 va a ser el archivo de audio que vamos a extraer de truenexconaudio.avi :)

Quitar audio de un video

ejecutamos la siguietne linea para dejar a nuestro video mudo ^^

Código: php
ffmpeg -i truenexconsonido.avi -an truenexmudo.avi


:)

Eso fue todo .. espero que les sirva :)

Saludos !



#9
GNU/Linux / Tutorial Samba
Febrero 19, 2010, 01:21:28 PM
Les traigo un manual de Samba , abajo la fuente com ode costumbre .. espero que les sirva . un documentito bastante util :)


Descripción:
Samba es un software que permite a tu ordenador poder compartir archivos e impresoras con otras computadoras en una misma red local. Utiliza para ello un protocolo conocido como SMB/CIFS compatible con sistemas operativos UNIX o Linux , como Ubuntu, pero además con sistemas Windows (XP, NT, 98...), OS/2 o incluso DOS. También se puede conocer como LanManager o NetBIOS.

Si Ubuntu te ha detectado correctamente la red local, que es lo mas habitual, cuando selecciones una carpeta y hagas click en el botón derecho del ratón, si le das a Compartir carpeta, al seleccionar un protocolo se iniciará un proceso automático de descarga desde Internet e instalación de Samba. También se puede instalar de la forma habitual usando Añadir y quitar... o Synaptic.

Pero vamos a mostrar como hacerlo por consola.

-

Instalación:
Primero que nada instalamos samba
Código: php
sudo aptitude install samba samba-client smbfs smbclient

esto debería instalar también varias otras dependencias.

-

Para modificar el grupo de trabajo:
Primero abrimos el archivo /etc/samba/smb.conf para modificarlo
Código: php
sudo nano /etc/samba/smb.conf


Luego buscamos (control+w) la línea que diga algo como:
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro grupo de trabajo

-

Para agregar una carpeta:
Primero debemos crear una carpeta con permisos (por ejemplo)

Código: php
sudo mkdir /home/public 

Código: php
sudo chmod 755 /home/public 


Luego abrimos el archivo /etc/samba/smb.conf para modificarlo :
Código: php
sudo nano /etc/samba/smb.conf 


Y le agregamos, al final:
Código: php
[public] 
comment = Cosas publicas
path = /home/public
public = yes
writable = no


Las opciones son auto-sugerentes, por ejemplo "public = yes" es para que se pueda acceder a la carpeta (el permiso x de sistema), y "writable = no" es para que no se pueda escribir (el permiso w de sistema).

-

Para Compartir la Unidad de CDROM:
abrimos el archivo /etc/samba/smb.conf para modificarlo
Código: php
sudo nano /etc/samba/smb.conf


y le agregamos, al final, algo como esto :

Código: php
[CDROM] 
comment = Cd Rom Compartido
path = /media/cdrom0
public = yes
writable = no
browseable = yes


(le agregamos un nuevo parámetro "browseable" esto sirve para ingresar a la maquina por medio de windows y linux de forma remota y ver la carpeta que esta compartida)

-

Mas sobre los permisos de las carpetas:
Generalmente, al usuario externo que tiene acceso al equipo a través de Samba, el sistema le da como nombre de usuario nobody y como nombre de grupo nogroup, es así como podemos cambiar el nombre de usuario y nombre de grupo a nuestras carpetas, con el fin de que el sistema también sepa quien es el propietario de esa carpeta:

Código: php
sudo chown nobody:nogroup /home/public 

Código: php
sudo chmod 555 /home/public


y si queremos que también pueda escribir sobre esta carpeta
Código: php
sudo chmod 755 /home/public 


y además debemos decirle a Samba que se lo permita (acuerdate que para que un permiso sea válido, tanto el sistema como Samba deben estar de acuerdo)

-

Para no usar contraseña:
Buscamos (control+w) la línea donde diga algo como:

; security = user

y la reemplazamos por :
security = SHARE

-

Cambiar contraseña de un usuario en un dominio Windows desde Ubuntu

Para cambiar la contraseña de un usuario de dominio de Windows no es necesario ir a un PC Windows sino que se puede hacer desde el propio Ubuntu. Para hacerlo sólo hay que abir un terminal y ejecutar este comando:

Código: php
smbpasswd -r WindowsDC -U nombreUsuario 


Donde WindowsDC es en este caso la dirección del controlador de dominio de Windows y nombreUsuario el usuario en el dominio.

Al ejecutar el comando pedirá la antigua contraseña en primer lugar y posteriormente pedirá la nueva.
Una vez hecho esto ya podemos hacer login con la nueva contraseña.

-

Agregando usuario
Suele pasar que cuando entras desde windows a una carpeta compartida en Ubuntu, te pide usuario, puede hacer lo siguiente:

Código: php
sudo smbpasswd -a tu_usuario


Si deseas le pones contraseña por motivos de seguridad, y si no necesitas la constraseña solo dale enter.

-

Para reiniciar samba
Luego de efectuar algún cambio en el archivo /etc/samba/smb.conf debemos reiniciar samba, para ello:

Código: php
sudo /etc/init.d/samba restart


-

Resumiendo:
Con todo lo anterior deberíamos ser capaces de entrar desde un equipo con windows o linux a la carpeta /home/public sin necesidad de tener nombre de usuario ni password:

* Desde Windows colocamos en la barra de direcciones de alguna ventana:

\\192.168.3.1\public

* Desde Linux (que tenga instalado el paquete samba-client) abrimos una carpeta y colocamos en la barra de direcciones:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
smbclient No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Donde 192.168.3.1 es "la IP privada" del equipo Linux que contiene a la carpeta /home/public

-

Con sistemas Windows

Si tenemos en nuestra red local una máquina con Windows y queremos compartir archivos entre ambos sistemas:

* Paso 1: Nos dirigimos al menú de Ubuntu: Sistema, Administración y seleccionamos Carpetas compartidas. [Pulsamos añadir]

En ruta, buscamos la carpeta que queremos compartir, como nombre pondremos Compartidos (por ejemplo) y seleccionamos Permitir examinar la carpeta. Pulsamos sobre Configuración general de archivos compartidos con Windows, en Dominio introducimos el nombre de red que posea la máquina Windows. Lo demás lo dejamos como está.

* Paso 2: Ahora que ya tenemos compartiendo la carpeta, nos queda crear un nombre de usuario y contraseña en el servidor Samba para que el ordenador con Windows pueda acceder a dicha carpeta, para ello abrimos una consola e introducimos:

Código: php
sudo useradd -s /sbin/nologin usuario-windows 


Donde usuario-windows es el usuario que va a acceder a la carpeta en Windows. Si /sbin/nologin no existe, probar con /usr/sbin/nologin.

Si no encuentras el fichero nologin, también puedes crear tu usuario normalmente y luego ejecutar la sentencia:
Código: php
sudo passwd -d usuario-windows 



A continuación introducimos:
Código: php
sudo smbpasswd -a usuario-windows 


Y nos pedirá la contraseña que queramos asignar a dicho usuario.

Debemos reiniciar el demonio de samba antes de poder ver las carpetas compartidas desde la máquina Windows:
Código: php
sudo /etc/init.d/samba restart 


* Paso 3: Vamos a la máquina Windows y pulsamos en Mis sitios de Red, ahora pulsamos en Equipos cercanos. Tendría que aparecer el nombre del equipo con Ubuntu, y dentro de este directorio, la carpeta compartida.

* Paso 4: Si vemos la carpeta, pero dice que no tenemos los permisos necesarios, deberemos volver a la máquina con Ubuntu y asignar los permisos necesarios de ejecución, lectura o escritura a las carpetas que queramos compartir.

* Paso 5: Vamos a la máquina con Ubuntu y nos dirigimos al menú de Ubuntu: Lugares, y seleccionamos Servidores de Red. Tendría que aparecer la Red de Windows. Esta aplicación nos permite ver los archivos de la maquina con Windows desde la maquina con Ubuntu. Hay que recargar cada vez que sea necesario.

-

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

----

Espero que les sirva jeje  , se me vino a la mente postear esto ya que hoy estaba trabajando con el mismo en mi red ^^

Saludos gente :)
#10
Perl / Programacion GUI Perl + Gtk
Febrero 19, 2010, 01:15:24 PM
Hola , aca les dejo esta introduccion al desarrollo de aplicaciones graficas en perl +gtk ...  abajo la fuente :)
----

COMENTARIOS INICIALES

Este tutorial comprende una introducción a la programación de interfaces gráficas con Perl utilizando sus bindings de Gtk2.

Es recomendado que el lector tenga nociones de Perl sobre todo de su enfoque oriendado a objetos,
referencias, subrutinas y manejo de módulos.

El desarrollo del tutorial va de la siguiente manera: La primera parte consta de un paseo introductorio sobre los conceptos básicos de Gtk y sus componentes, una breve descripción del modelo de eventos y mostrando así nuestro primer programa.

La segunda parte comprende el uso de Gtk2 en Perl, una reseña del uso de la API de C sobre Perl, conceptos de widget y contenedor, señales y eventos, y agrupamiento y posicionamiento de widgets, terminando esta parte con un pequeño visualizador de imagenes.

La tercera y última parte constituye la unión de las primeras 2, anexándole el uso de una cantidad considerable de widgets, y reafirmando los conceptos ya vistos, para así elaborar un pequelo cliente de SQL.

1. INTRODUCCIÓN

1.1 ¿Qué es Gtk?

El Gimp Toolkit es un conjunto de bibliotecas multiplataforma, que crea una poderosa herramienta útil para modelar y crear interfaces gráficas con grandes capacidades, principalmente utilizadas por la suite No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


1.2 Sus componentes principales

GDK ( Gimp Drawing Kit )
Todo lo que tenga que ver con dibujar ( polígonos, líneas ), carga y manipulación de imágenes, y en general cualquier tipo de elemento gráfico, corre a cargo de Gdk.

Glib
Conjunto de bibliotecas que conforman todas el corazón de Gtk y Gnome. Se encarga principalmente de todo el manejo de estructuras de datos, portabilidad, el manejo del sistema de objetos, hilos( threads ) y en general todo lo que corresponde al sistema base de Gtk.

ATK ( Accesibility Toolkit )
Este conjunto de bibliotecas permiten que Gtk mantenga todas esas opciones de accesibilidad desde teclas especiales y dispositivos especiales.

Pango
Se encarga de todo lo relacionado al manejo de fuentes, internacionalización y afines.

1.3 El modelo de eventos ( Event Driven Model )

El funcionamiento de Gtk probablemente (y muy posiblemente) no fuera satisfactorio sin un modelo gobernado por eventos.

Es decir, Gtk no funciona de manera lineal, no se puede anticipar cual será la acción que el usuario elegirá para interactuar con la aplicación y es por tanto que el modelo de eventos-señales está allí para dar control a todos los sucesos ocurridos con dichas interacciones.

En pocas palabras lo que constituye a éste modelo es: un despachador principal, el cual casi todo el tiempo está en espera de eventos( <Gtk2-main> ).

Cuando ocurre un evento es insertado en una cola en la cual cada uno de acuerdo a su turno emite una señal de suceso y el usuario pueda cacharlo y realizar alguna fución específica.

Mas delante en el tutorial veremos un capítulo dedicado a eventos y señales.


1.4 Hola Mundo

No podía hacernos falta como ejemplo introductorio el ya muy conocido y poco temido "Hola Mundo", el cual nos mostrará una breve sinópsis de la sintaxis básica de Gtk2 en Perl:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

2. DE C A PERL: UN PASEO POR LA API

Algo peculiar y muy importante que comparten ambos proyectos es su documentación. Y, puesto que la API (Application Programming Interface) de Gtk en C es una referencia completa, el proyecto de documentación de Gtk2-Perl no pretende hacer una copia textual de la de C, por lo tanto se limita a ofrecernos una referencia sobre los métodos de cada clase y algunos cambios que sean de importante mención.

En esta sección se abordarán los puntos básicos e importantes para hacer uso de la API de C en nuestras aplicaciones en Perl y Gtk2. Dichos puntos están completamente documentados en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el cual se encuentra automáticamente en la instalación de Gtk2 y claro, incluyendo la página principal del proyecto y directamente en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Espacios de nombre y objetos

Los espacios de nombre en C ( g_,gtk_,etc ) están asociados directamente con sus paquetes correspondientes en Perl. Veamos una tabla con los correspondientes espacios de nombre de C en Perl, los cuales nos ayudarán de mucho al momento de hacer referencia a cualquiera de las clases que vayamos a utilizar en nuestras aplicaciones:

Código: perl
(Glib) g_ => Glib
(Gtk) gtk_ => Gtk2
(Gdk) gdk_ => Gtk2::Gdk
(Pango) pango_ => Gtk2::Pango


Ahora bien, los objetos en Perl toman su espacio de nombre automáticamente de acuerdo al paquete que corresponde siendo propiamente instanciados, y es gracias a esto, que en Perl no se necesitan hacer conversiones de tipo, puesto que los bindings que nos ofrece lo realizan automáticamente en su capa de más bajo nivel (XS). Por ejemplo:

Código: perl
GtkWindow => Gtk2::Window
GdkPixbuf => Gtk2::Gdk::Pixbuf
---------------------------------------------
en C:
GtkWidget *boton;
boton = gtk_check_button_new_with_mnemonic( 'Ejecutar' );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( boton ), TRUE );
gtk_widget_show( boton );

en Perl:
my $boton = Gtk2::CheckButton->new( 'Cambiar' );
$boton->set_active( TRUE );
$boton->show;


Es sencillo apreciar la facilidad con la que Perl nos permite usar Gtk2 de una manera Orientada a Objetos (a la manera de verlos en Perl) y hacer uso de una manera agradable el llamado de los métodos correspondientes a la clase. Este tipo de libertades son muy propias de Perl.


Constantes ( Flags/Enums )

Las constantes utilizadas como banderas(flags) o valores enumerados son manejadas en Gtk2-Perl como simples cadenas. Mostremos algunas equivalencias:

Código: perl
GTK_WINDOW_TOP_LEVEL => 'toplevel'
GTK_STOCK_OK => 'gtk-ok' # *
GTK_BUTTONS_OK_CANCEL => 'gtk-cancel'


*Cabe señalar que los objetos de "stock" no todos persiguen la misma nomenclatura, la lista completa de los elementos de "stock" puede ser obtenida utilizando la clase Gtk2::Stock y mas específicamente el método list_ids.


Otros puntos importantes

Funciones que retornan 2 o mas valores

Puesto que en C es "imposible" retornar múltiples valores, la manera con la que generalmente se realiza dicha actividad es utilizando el paso de apuntadores a la función que requiera de modificarlas. En Perl, es tan natural que simplemente se regresa una lista de elementos como se muestra a continuación:

Código: perl

( $ancho, $alto ) = $ventana->get_size;
@atributos = $ventana->get_size;

mientras que en C:
gtk_window_get_size( GTK_CONTAINER( ventana ), *ancho, *alto );


Sencillo eh? En realiad no es una comparación sobre funcionalidad, sino sobre la manera en la que sencillamente podemos manipular los datos que deseemos.


Manejadores de señales ( callbacks )

De la misma manera que el ejemplo anterior, Perl permite utilizar de manera nata los manejadores de señales, generando los callbacks ( funciones que permiten manejar específicamente un suceso ) como referencias a código (coderefs) o por medio de subrutinas anónimas como lo mostramos a continuación:

Código: c

gtk_signal_connect( GTK_OBJECT( boton ), "clicked" ,
G_CALLBACK( imprime ),
(gpointer) "hola mundo" );


Código: perl

$boton->signal_connect( clicked => \&imprime, "hola mundo" );
o mejor aun:
$boton->signal_connect( clicked => sub { print "hola mundo" } );


Con esto podemos observar la naturaleza funcional (del paradigma funcional) que también nos ofrece Perl.

Otras consideraciones

Lo anterior fué solo un resumen del contenido que podremos consultar de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, aun falta por tocar el tema de cambios en ciertos nombres de funciones, algunas modalidades de métodos, manejo de memoria, entre otros. Aspectos los cuales quedan fuera del alcance de este tutorial pero que se requiere y se recomienda consultarlos.
Si bien la documentación original de la API de Gtk es la principal ayuda, hay aspectos que pueden ser complementados con los manuales y ejemplos del proyecto Gtk2-Perl. Al final del documento se citan algunas URL's sobre la documentación pertinente.

3. WIDGETS Y CONTENEDORES

Sabemos que en la computadora podemos representar información utilizando algunas formas reales y algunas muy abstractas. En el lingo de los GUIs es importante mencionar que, aunque la mayoría son abstracciones de algún objeto real, es necesario dividir dichas abstracciones en 2 bandos, una para almacenar objetos y otra los objetos como tal.

3.1 ¿Qué es un contenedor?

Un contenedor es un "recipiente" de widgets, un almacén donde podemos ponerlos, acomodarlos y ordenarlos, y que como grupo, podemos establecerles algunos atributos "globales" a todos ellos dentro de este contenedor. Así mismo, un contenedor es un también un widget.

Existen varios tipos de contenedores, entre ellos podemos mencionar las ventanas(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), los frames(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), las cajas(Gtk2::Box), menús(Gtk2::Menubar), entre otros, y que todos estos mencionados heredan la mayoría de sus atributos y comportamientos como contenedores de la clase No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

3.2 ¿Qué es un widget?

Entonces... qué es un widget? Bueno su significado literal en español realmente es "cosa". Así es, widget es una palabra de juego del Inglés que sirve para describir una "cosa" normalmente manufacturada en pequeño. En el mundo de los GUI los widgets son "componentes" que nos ayudan a crear otros componentes, ensamblarse con otros componentes o simplemente hacerlos funcionar.

Botones, ventanas, tablas, listas, menús, selectores, diálogos, espacios de texto, todos ellos son widgets, y algunos necesitan ensamblarse en otros para visualizarse correctamente como lo veremos en ejemplos posteriores.

3.3 ¿Cómo uso un widget?

En general cada widget tiene su comportamiento, sus métodos y atributos. Sin embargo, podemos describir de manera general los pasos a seguir para utilizar cualquier widget:

1) Instanciar el widget por medio de su constructor => Gtk2::*->new( ... );
2) Establecerle atributos propios o heredados.
3) Conectar los manejadores hacia las señales emitidas por los eventos que nos interesen de dicho widget.
4) Agrupar o empacar dicho widget en algun contenedor y darle algún atributo especial de posicionamiento.
5) Mostrar el widget => Gtk2::Widget->show( ... ).
Analicemos cada uno de los pasos creando una ventana:

Código: perl
my $ventana = Gtk2::Window->new( 'toplevel' );
$ventana->set_border_width( 4 );
$ventana->set_default_size( 300, 400 );
$ventana->signal_connect( destroy => sub{ Gtk2->main_quit } );
$ventana->show;


En la primera línea creamos un nuevo objeto de tipo Gtk2::Window permitiéndole estar al frente de todas las ventanas(toplevel). Una vez teniendo nuestro objeto, en las líneas 2 y 3 establecemos algunos atributos, en este caso el ancho del borde de nuestra ventana hacia sus descencientes, y el tamaño inicial que ocupará. En la línea 4 conectamos la señal emitida por el evento "cerrar ventana" a una función que termine nuestra aplicación. Y finalmente mostramos nuestra ventana.

4. EVENTOS Y SEÑALES

4.1 ¿Qué es un evento?

Como ya vimos al inicio del tutorial, Gtk es un conjunto de herramientas las cuales están gobernadas por un modelo de señales y eventos. Cuando damos un click con el mouse sobre un botón, cuando arrastramos un elemento de una lista, cuando seleccionamos algún elemento de un menú, cada una de estas acciones constituyen un evento.

Por lo tanto podemos definir un evento como el resultado de la interacción entre el usuario y la aplicación.


4.2 ¿Qué es una señal?

Una vez ejecutado y conocido el evento, la manera en la se nos permite cacharlo o mas propiamente, la manera en la que nos permite manipularlo es emitiendo un "mensaje" de regreso al programa diciendo que dicho evento sucedió, y así el usuario pueda, mediante un callback, manipularlo. A ese mensaje, se le conoce como señal.

Es importante mencionar que cuando aquí nos referimos a señal, no hablamos propiamente de señales como lo realiza el sistema operativo( llamense POSIX ), si bien puede ser una buena analogía, el manejo y manipulación de ellas se realiza de una manera muy diferente, por lo tanto queda dicho que cuando hablemos de señales en este tutorial nos referimos implicitamente a las de Gtk.

4.3 ¿Cómo conecto una señal?

Bien, ya establecimos que la señal es un mensaje el cual nos indica el evento que sucedió. Para que nuestro programa realice una acción determinada tras la ejecución de dicho evento, es necesario "conectar" esa señal emitida con nuestra función( callback ) de la siguiente manera:

Código: perl
Forma canónica:
Glib::Object->signal_connect( objeto, señal, función, [ parámetros ] )

Aplicado:
$widget->signal_connect( evento => \&funcion );


Recordando que todos los widgets(y contenedores, por ser widgets) heredan de GObject, la forma canónica y la jerarquía de clases nos indican que CUALQUIER widget puede emitir señales si así está indicado en su naturaleza. Veamos un ejemplo utilizando un botón:

Código: perl
...
my $boton = Gtk2::Button->new( '_Salir' );
$boton->signal_connect( clicked => sub { Gtk2::main_quit } );
...


La primera línea nos permite instanciar la clase Gtk2::Button añadiéndole una etiqueta, que sería similar a llamarlo con el constructor new_with_mnemonic, sin embargo estamos en Perl, y podemos hacerlo de esa manera. La siguiente linea nos indica que al recibir una señal de que el evento "clicked" fué realizado, se ejecute el callback alli mencionado ( en este caso una subrutina anónima ) el cual llama a <Gtk2-main_quit> para finalizar la aplicación.

También cabe señalar que no son las únicas funciones para manipular señales, es necesario asomarse a la referencia completa sobre señales en la API.

5. AGRUPACIÓN Y POSICIONAMIENTO DE WIDGETS

Normalmente cuando elaboramos una aplicación GUI tenemos la necesidad de colocar nuestros widgets en lugares clave para su utilización, o simplemente para darle ese look'n feel a nuestro programa. Otro caso podría ser que queremos que al cambiar el tamaño en pantalla de nuestra aplicación, los widgets mantengan su estado original o crezcan proporcionalmente a este.

O bien, queremos agrupar un conjunto de widgets (que pueden o no tener algo en común), y que al modificar algún atributo de posicionamiento a este paquete, todos los widgets respeten dichas reglas.

En Gtk el agrupamiento y posicionamiento relativo de widgets tiene que ver con contenedores tales como Cajas y Tablas. Estos contenedores tienen la habilidad de agrupar widgets y establecerles atributos de posicionamiento. Así pues, dichos contenedores nos dan la oportunidad de ofrecer también un posicionamiento automático si así es requerido. En este tutorial nos centraremos principalmente a los widgets de tipo Box(caja) las cuales son mayormente utilizados.

Para la utilización de tablas se recomienda la documentación contenida en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Las cajas nos permitirán un agrupamiento de widgets de manera Horizonal(HBox) o Vertical(VBox) segun sea necesario. Dichos contenedores nos permitirán establecer atributos a nuestro grupo de widgets tales como el acolchonado, expansión y llenado de espacio.

Veamos cada uno de los atributos con el siguiente ejemplo:

Código: perl
$vbox = Gtk2::VBox->new( FALSE, 3 );
$vbox->pack_start( $menu, TRUE, FALSE, 3 );
$vbox->pack_start( Gtk2::HSeparator->new, FALSE, FALSE, 3 );
$vbox->pack_start( $img, TRUE, TRUE, 0 );


Primeramente se creó una caja vertical, la cual contiene los siguientes atributos:

Código: perl
# $widget = Gtk2::VBox->( homogeneous, spacing );
$widget = Gtk2::VBox( tamaño_homogeneo, espaciado ) # Gtk2::HBox aplica igual


El primer parámetro se refiere a un valor verdadero/falso que indique si queremos que los widgets tengan todos el mismo tamaño o no. El siguiente parámetro se refiere a la cantidad de espacio( en pixeles ) que queremos entre cada elemento de la caja, es decir entre cada widget empacado.

Una vez creado nuestra caja, y teniendo listos los widgets a utilizar, llamamos pack_start()/pack_end que son métodos contenidos en la clase No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, según el posicionamiento interno que queramos darle, es decir si quieremos que se posicionen al inicio o al final de la caja respetando su posición con los otros widgets, y sus respectivos parámetros:

Código: perl
# Gtk2::Box->pack_start( widget, expand, fill, padding );
Gtk2::Box->pack_start( widget, expandir, llenar, acolchonado ); #pack_end(...)


El atributo expandir nos permite decirle a nuestra caja que todos los widgets contenidos tendrán el mismo tamaño. llenar únicamente será valido si expandir está encendido, de esta manera le indicamos a nuestra caja que los widgets tomarán espacio extra para quedar del mismo tamaño y ocupar todo el espacio libre. El último atributo se refiere a la cantidad de pixeles que internamente llenará nuestro widget.

Antes de dejar el tema del empacado y posicionamiento de widgets, cabe mencionar que existen cajas específicas para widgets en común, por ejemplo las cajas para botones(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) que utilizaremos mas delante en nuestros ejemplos.

EL VISOR DE IMAGENES

uestra siguiente aplicación será un sencillo visor de imagenes donde el usuario por medio de un selector de archivos(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), elegirá un archivo de imagen(incluyendo íconos), y el programa desplegará la imagen a su tamaño real, incluyendo el nombre y el tamaño en KB en una etiqueta.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

6. UNIENDO TODO

Bien, una vez dada una amplia reseña introductoria a lo que Gtk2 y Perl nos ofrecen para la creación de nuestras aplicaciónes gráficas, en este parte del tutorial haremos uso de varios( muchos ) widgets creando una pequeña aplicación, la cual consiste en un pequeño pero útil cliente de SQL. El cliente será capaz de leer un archivo de configuración escrito en YAML con la información necesaria sobre la BD a la que nos queremos conectar. Luego la ventana principal contendrá 2 frames, en uno de ellos estará en el area de texto donde colocaremos la sentencia de SQL que deseemos, y en la otra los resultados, los cuales serán visualizados como una lista.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

7. AHORA.... ¿QUÉ? DOCUMENTACIÓN

Este apartado lo dedicaremos a mostrar algunas URL's sobre información clave para el aprendizaje de Gtk2 en Perl.

Página principal de Gtk

Aquí encontrarás toda la información sobre dicha herramienta, desde tutoriales introductorios, la referencia completa de la API, código fuente, noticias, parches, etc.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Proyecto Gtk2-Perl

Esta es el sitio principal del proyecto de los bindings de Gtk2 en Perl, al igual que la anterior encontrarás tutoriales, ejemplos, listas de correo, código fuente, etc.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gtk2-Perl CVS

La parte interesante de este sitio es la cantidad de ejemplos que puedes consultar sobre Gtk2-Perl y Gnome2-Perl inclusive.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gtk-Perl Tutorial

La versión inicial del tutorial de Perl, puesto que en Gtk2 varias cosas han cambiado, este tutorial puede ser de una gran ayuda para los widgets que funcionan igual aún en Gtk2, incluyendo ejemplos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos y espero que les sirva .. ami me sirvio :)