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ú

Mensajes - Alex

#741
Códigos Fuentes / Re:Biblioteca de Apis de Windows
Enero 26, 2013, 02:33:59 AM
Nombre: Findwindow

Declaracion:

Código: text
Private Declare Function FindWindow _ 
     Lib "user32" _
     Alias "FindWindowA" ( _
         ByVal lpClassName As String, _
         ByVal lpWindowName As String) As Long



Explicacion de esta api: Sirve para saber si una ventana esta activa, entre otras cosas.

Ejemplo de su uso:
Código: text
Private Declare Function FindWindow _ 
     Lib "user32" _
     Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
private sub command1_click()
   
Dim hola As Long
         
     hola = FindWindow(clase, vbNullString)
       

     If hola<> 0 Then
         MsgBox "está abierta"
     Else 
#742
Códigos Fuentes / Re:Biblioteca de Apis de Windows
Enero 26, 2013, 02:33:38 AM
Nombre: Sleep

Declaracion:

Código: text
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Explicacion: Se usa para generar un retardo.+


Ejemplo de su uso:

Código: text
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
private sub form_load()
sleep(5000)
msgbox "ya pasaron 5 segundos"
end sub
#743
Códigos Fuentes / Biblioteca de Apis de Windows
Enero 26, 2013, 02:31:56 AM
[INDICE]

    * Sleep
    * Findwindow
    * Shellexecute
    * ShFileOperation
    * Copyfile
    * SetwindowPost
    * Exitprocess
    * GetCurrentProcess
    * URLDownloadToFile
    * GetLogicalDrives
    * Keybd_Event
    * DoFileDownload
    * MoveFile
    * TextOut
    * GetParent
    * SetCursorPos
    * BlockInput
    * ExitWindowsEx
    * GetLogicalTime
    * GetCursorPos
    * SetWindowText
    * GetForegroundWindow
    * GetWindowText
    * mouse_event
#744
Off Topic / Una ola gigante destroza barco argentino
Enero 26, 2013, 02:28:10 AM
hola, como verán en este video una ola gigante destroza un barco argentino.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

es cierto o es after efects, opiniones??

saludos!
#745
Crear un reproductor de música utilizando HTML5

El nuevo estándar HTML 5 nos proporciona nuevas etiquetas que facilitan mucho las cosas a la hora de crear nuestras aplicaciones. Una de ellas es la etiqueta "audio", que nos permitirá crear un reproductor de música para el archivo que le indiquemos.

El problema que tiene actualmente HTML 5 es que no todos los navegadores implementan todas sus funcionalidades, por lo que si decidimos hacer uso de esta etiqueta, debemos de asegurarnos que funcione en todos los navegadores, y para ello utilizaremos un reproductor basado en Flash como respaldo para aquellos navegadores que no interpreten las nuevas etiquetas HTML 5.

Para utilizar el tag "audio", solo debemos de hacer la llamada junto con el parámetro "controls". Dentro de la etiqueta, debemos de añadir el tag "source", donde se le indica la canción que debe de reproducir.

Código: html5
<audio controls>
<source src="song.mp3" type="audio/mp3">
</audio>



Con esto conseguiremos que el navegador cree un reproductor, y según el navegador que utilicemso, este tendrá una apariencia u otra.

Un problema que nos podemos encontrar, es que no se pueda interpretar la extensión que le hayamos indicado en el source. Para solucionarlo, podemos indicarle varias extensiones seguidas, hasta que encuentre una que pueda reproducir. Un ejemplo sería el siguiente.

Código: html5
<audio controls>
  <source src="song.mp3" type="audio/mp3" />
  <source src="song.ogg" type="audio/ogg" />
</audio>



Ahora para solucionar lo de las incompatibilidades de los navegadores, vamos a utilizar el reproductor WP Audio Player. La idea es mirar si se ha podido generar el reproductor mediante la etiqueta "audio", de no ser así, entonces se generará mediante este reproductor. El código quedaría de la siguiente forma:

Código: Javascript
<audio id="audioplayer" controls>
  <source src="song.mp3" type="audio/mp3" />
  <source src="song.ogg" type="audio/ogg" />
</audio>
<script type="text/javascript">
    var audioTag = document.createElement('audio');
    if (!(!!(audioTag.canPlayType) && ("no" != audioTag.canPlayType("audio/mpeg")) && ("" != audioTag.canPlayType("audio/mpeg")))) {
        AudioPlayer.embed("audioplayer", {soundFile: "song.mp3"});
    }
</script>


De esta forma nos aseguramos de que en todos los navegadores se podrá reproducir el archivo que le indiquemos.
#746
Java / Re:Ejercicios Java [Teoría+Ejemplos]
Enero 26, 2013, 02:21:51 AM
4) Ejemplo de Aplicación Básica en Java

La siguiente aplicación sirve para mostrar, de forma práctica, los conceptos de clases, objetos, atributos, métodos, herencia...

La aplicación en sí se divide en 3 clases:
- La clase Exploit que define los atributos y métodos de los objetos-Exploit
- La clase WinExploit, heredada de la clase Exploit. Hereda los mismos atributos y métodos que la clase Exploit y, a su vez, define nuevos atributos y métodos a implementar.
- La clase app, que contiene el método Main para la ejecución de la aplicación (clase principal). En esta clase se crean 2 objetos-Exploit y 2 objetos-WinExploit invocando a los métodos Constructores de sus respectivas clases. También accede a los objetos creados a través de sus métodos getters y setters.


Clase Exploit

Código: java
class Exploit
{
   //Definimos las variables o atributos

   String Autor;
   String Vulnerabilidad;
   String Lenguaje;


   //Constructor - Construye el objeto-exploit e identifica sus atributos
   //con los parámetros recibidos.

   Exploit(String a, String v, String l)
   {
    Autor = a;
    Vulnerabilidad = v;
    Lenguaje = l;
   }


   //Métodos

   String getAutor()
   {
    return Autor; //Devuelve autor
   }

   String getVulnerabilidad()
   {
    return Vulnerabilidad;
   }

   String getLenguaje()
   {
    return Lenguaje;
   }

   String getInfoComun() //Devuelve toda la información de golpe
   {
    return ("\tAutor: " + Autor + "\n\tVulnerabilidad : " + Vulnerabilidad + "\n\tLenguaje: " + Lenguaje);
   }


   int setOffset(String o)
   {
    //Se implementa el parámetro offset en la función que se quiera
    System.out.println("\n\n[*] Implementando la direccion offset " + o + " en el exploit...\n");

    //Un ejemplo de esta implementación:
    //Se configura el código del exploit en C para que necesite como
    // parámetro de entrada la direccion offset. Este método de la
    // aplicación Java, realizaría una llamada externa al ejecutable
    // del exploit y le pasaría como parámetro de entrada, este offset

    //Si se ha implementado con exito, el método devuelve 0.

    return (0);

   }

}


Clase WinExploit

Código: java

class WinExploit extends Exploit
{
   //Además de disponer de los atributos heredados de la clase padre...
   //Definimos las nuevas variables o atributos a añadir

   String CodigoMS;


   //Constructor - Construye el objeto-exploit e identifica sus atributos con los parámetros recibidos.

   WinExploit(String a, String v, String l, String cms)
   {
    super(a,v,l); //Estos atributos son implementados por el constructor de la clase padre
    CodigoMS = cms;
   }


   //Además de disponer de los métodos heredados de la clase padre...
   //Definimos los nuevos métodos

   String getCodigoMS()
   {
    return CodigoMS;
   }

   String getInfoWin() //Devuelve toda la información de golpe
   {
    String s;
    s = this.getInfoComun() + "\n\tCogigo MS: " + CodigoMS;
    return s;
   }
}



Clase app

Código: java

class app
{
   public static void main (String[] args)
   {
    //Creamos dos objetos-Exploit llamando al Constructor
    Exploit e1 = new Exploit ("Lion", "Serv-U FTPD SITE CHMOD Command Stack Buffer Overflow", "C");

    Exploit e2 = new Exploit ("fiNis", "Jordan Telnet Server Buffer Overflow", "C");


    //Creamos dos objetos-WinExploit llamando al Constructor
    WinExploit w1 = new WinExploit ("Wirepair", "Windows Workstation Service WKSSVC.DLL Buffer Overflow", "C", "MS03-049");

    WinExploit w2 = new WinExploit ("HoD", "Lsasrv.dll RPC buffer overflow", "C", "MS04-011");


    //Imprimimos las características de los objetos (se puede hacer de dos formas)

    System.out.println("\nInfo de e1\n");
    System.out.println("\tAutor: " + e1.getAutor());
    System.out.println("\tVulnerabilidad: " + e1.getVulnerabilidad());
    System.out.println("\tLenguaje: " + e1.getLenguaje());

    System.out.println("\n\nInfo de e2\n");
    System.out.println(e2.getInfoComun());


    System.out.println("\nInfo de w1\n");
    System.out.println("\tAutor: " + w1.getAutor());
    System.out.println("\tVulnerabilidad: " + w1.getVulnerabilidad());
    System.out.println("\tLenguaje: " + w1.getLenguaje());
    System.out.println("\tCodigo MS: " + w1.getCodigoMS());

    System.out.println("\n\nInfo de w2\n");
    System.out.println(w2.getInfoWin());

    int resultado = w2.setOffset("0x7517123c");
    if (resultado == 0)
    {
     System.out.println("[!] La direccion offset se implemento con exito\n");
    }
    else
    {
     System.out.println("[!] Error durante la implementacion de la direccion offset\n");
    }
   }
}



Resultado de la ejecución de la aplicación Java
#747
Java / Re:Ejercicios Java [Teoría+Ejemplos]
Enero 26, 2013, 02:20:56 AM
3) Sintaxis de Java

Java utiliza casi la misma sintaxis que C, para más información -> You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#748
Java / Re:Ejercicios Java [Teoría+Ejemplos]
Enero 26, 2013, 02:20:35 AM
2) Soporte para el desarrollo en Java


2.1) JDK (Java Development Kit)
Es el entorno de desarrollo para aplicaciones Java. Se define como el conjunto de herramientas, utilidades, documentación y ejemplos para desarrollar aplicaciones Java.

Componentes del JDK:

2.1.1) JRE (Java Runtime Enviroment)
Es el entorno de ejecución para aplicaciones Java. Se define como el intérprete en tiempo de ejecución.

Para ejecutar un archivo de clase Java *.class, la sintaxis es la siguiente:

Código: java
java [opciones] clase_a_ejecutar [argumentos]



- opciones: se especifican las opciones relacionadas con la forma en que el intérprete Java ejecutará la aplicación.
- clase_a_ejecutar: será el nombre de la clase *.class principal que contiene el método main().
- argumentos: se especifican los argumentos que recibirá el método main(String[] args), por si la aplicación necesita parámetros de ejecución.

Por supuesto, es necesario haber compilado la aplicación antes de ejecutarla.

2.1.2) Compilador
Permite compilar archivos de código fuente Java *.java en archivos de clases Java ejecutables *.class. Se crea un archivo de clase para cada archivo de código fuente que contiene la aplicación.

Para compilar un archivo de código fuente Java *.java, la sintaxis es la siguiente:

Código: java
javac [opciones] codigo_fuente_a_compilar



- opciones: se especifican las opciones de compilación
- codigo_fuente_a_compilar: será el nombre del archivo de código fuente *.java a compilar

2.1.3) Visualizador de applets
Es una herramienta que permite visualizar los applets tal y como se mostrarían el navegador.
Al ser llamado, muestra una ventana con el contenido del applet.

Para visualizar un applet, la sintaxis es la siguiente:

Código: java
appletviewer [opciones] applet



- opciones: se especifican las opciones para ejecutar el applet Java.
- applet: especifica la ruta que contiene una página HTML con el applet Java empotrado.

2.1.4) Depurador
Es una utilidad de comandos que permite depurar aplicaciones Java.
Permite encontrar los errores en el código fuente de la aplicación Java.

Para depurar un código fuente Java, la sintaxis es la siguiente:

Código: java
jdb [opciones]



2.1.5) Desensamblador de archivos de clase
Permite desensamblar un archivo de clase, mostrando los atributos y métodos de la clase desensamblada. Es útil cuando no se tiene el código fuente de una clase de la que se quiere saber cómo fue codificada.

Para desensamblar un archivo de clase, la sintaxis es la siguiente:

Código: java
javap [opciones] [nombres_de_clases_a_desensamblar]



- opciones: se especifica la forma en la que se han de desensamblar las clases.
- nombres_de_clases_a_desensamblar: especifica la ruta de las clases a desensamblar, separadas por espacios.

2.1.6) Más componentes como el Generador de cabecera y archivo de apéndice, generador de documentación, etc.


CICLO DE VIDA DE UNA APLICACIÓN JAVA BÁSICA

Edición del código fuente en un editor de textos (notepad, vi...) -> Codigo fuente Java: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ->
-> Compilación: javac MiClase -> Codebyte Java: MiClase.class ->
-> Ejecución del programa: java MiClase -> Salida del programa


2.2) Obtener e instalar el JDK
Se puede obtener el JDK en You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, concretamente You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Necesitamos descargarnos el SDK (Software Developmente Kit), el cual ya incluye el JRE (Java Runtime Environment), así que pinchamos en Download J2SE SDK. Posteriormente, elegiremos la plataforma de sistema operativo que vayamos a utilizar.
Aviso:
Windows Offline Installation, Multi-language (j2sdk-1_4_2_05-windows-i586-p.exe) -> 51.0 MB

Para usuarios de Windows, después de haber instalado el SDK, vamos a agregar la carpeta bin al PATH del sistema de forma que podamos usar todos los comandos del SDK/JRE desde cualquier carpeta del sistema...

Inicio > Panel de Control > Sistema > Opciones Avanzadas > Variables de Entorno. En Variables del Sistema, seleccionamos Path y pinchamos en Modificar. Agregamos -> ;C:\j2sdk1.4.2_05\bin al final del todo y Aceptar, Aceptar, Aceptar. [Nota: adaptad esta linea a vuestra ruta donde habéis instalado el SDK].
Ahora, desde cualquier carpeta del sistema, podemos ejecutar los comandos de consola del SDK/JRE como java, javac, etc.



2.3) IDE (Indegrated Development Environment)
Mientras que un JDK/SDK ofrece las herramientas para compilar y ejecutar aplicaciones Java, este no ofrece un entorno de trabajo cómodo para proyectos complejos. Los IDEs ofrecen un entorno de trabajo con aspecto gráfico en los que se tiene acceso a un mayor número de herramientas avanzadas: gestión de workspaces y proyectos para clasificar las aplicaciones, debuggers más elaborados, check-points durante la compilación y ejecución, "wizards" para acelerar el desarrollo, etc.
Algunos IDEs:

NetBeans Open-Source @ You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Eclipse Open-Source @ You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login (muy bueno, pero consume muchos recursos)
JBuilder de Borland @ You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Mi favorito: JCreator @ You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


2.4) Cómo codificar, compilar y ejecutar una aplicación Java
Como no podía ser de otra forma, nuestra primera aplicación Java mostrará por pantalla "Hola Mundo!".

2.4.1) Cómo codificar, compilar y ejecutar una aplicación Java de manera clásica.
Utilizaremos para ello un editor de texto plano como el notepad y los comandos de consola del SDK y JRE.
Lo primero es abrir el notepad y escribir el siguiente código:

Código: java
class MiClase //La clase se llama igual que el archivo de codigo fuente *.java que la contiene
{
    public static void main (String[] args)
    {
       System.out.println("Hola mundo!");
    }
}



Guardamos este archivo de código fuente Java como c:\MiClase.java
Procedemos a compilar: abrimos consola, vamos a c:\ y tecleamos:

Código: java
javac MiClase.java



Con el proceso de compilación, hemos obtenido el archivo de clase MiClase.class en la misma carpeta.
Procedemos a ejecutar la aplicación tecleando:

Código: java
java MiClase



y obtenemos:

Código: java
Hola Mundo!



Si obtienes

Código: java
Exception in thread "main" java.lang.NoClassDefFoundError: loquesea


es q no lo has hecho exactamente como yo te he dicho!!

2.4.2) Cómo codificar, compilar y ejecutar una aplicación Java a través del IDE JCreator
Una vez que ya tenemos JCreator listo para utilizar sin restricciones (ya me entendéis...), creamos un nuevo archivo de código fuente Java para codificar nuestra primera aplicación Java. Pinchamos en File > New > Files > Java File. En Location seleccionamos la carpeta destino donde queremos almacenar nuestra aplicación. Después, en la casilla nombre escribimos MiClase y damos a Aceptar.
Ante nosotros aparecerá la barra de menús, las barras de herramientas y tres ventanas: superior izqda. para la jerarquía de archivos en el workspace; inferior izqda. para la jerarquía de clases y métodos; ventana grande al centro-dcha. para escribir el código fuente. Por tanto, en esta última ventana, escribimos el siguiente código

Código: java
class MiClase //La clase se llama igual que el archivo de codigo fuente *.java que la contiene
{
    public static void main (String[] args)
    {
       System.out.println("Hola mundo!");
    }
}



Procedemos a compilar la aplicación: Menú Build > Compile File y debería aparecer Process completed. en la ventana de abajo (información sobre el proceso de compilación).
Para ejecutar la aplicación: Menú Build > Execute File y debería aparecer una nueva ventana de consola con el texto

Código: java
"Hola Mundo!"


Tambíen podemos utilizar los iconos en las barras de herramientas para compilar y ejecutar.
#749
Java / Ejercicios Java [Teoría+Ejemplos]
Enero 26, 2013, 02:20:11 AM
Teoría de Programación en Java

1) Teoría de Programación Orientada a Objetos (POO)


1.1) Concepto de Objeto: Atributos y Métodos
Un objeto es cualquier cosa real o abstracta de la cual nos interesa su comportamiento y que tiene una identidad única que la distingue de las demás. Un objeto es una unidad atómica formada por la unión de estado+comportamiento.
Un Objeto se compone de:
   - Atributos (datos o variables): Información que posee cada objeto y que identifica su estado.
   - Métodos (operaciones o funciones): Conjunto de instrucciones que definen el comportamiento del objeto. Reciben unos argumentos y devuelven un resultado.
Sólo se puede acceder a los atributos de un objeto a través de sus métodos.

Imaginemos que nuestro objeto es un exploit y que su plantilla es la siguiente:

------------------------------------------
|                        Dame el lenguaje  |
|   Dame la vulnerabilidad                 |
|            ---------------               |
|           |   Autor       |              |
|           |               |Dame el autor |
|           |Vulnerabilidad |              |
|           |               |              |
|           |     Lenguaje  |              |
|           |               |              |
|            ---------------               |
|                                          |
|     Introduzco nuevo offset              |
|                                          |
------------------------------------------

Este diagrama representa la estructura de un objeto. La parte interna del objeto no es accesible y contiene los atributos. La parte externa o interfaz del objeto es accesible y contiene los métodos.

CitarPara los que no conocen mucho sobre los exploits, les recomiendo que se den una vuelta por You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Para poder comprender este ejemplo, sólo es necesario saber que un exploit es un código (codificado por un autor) que explota una vulnerabilidad para lograr ejecutar código arbitrario en el sistema comprometido. La codificación puede haberse hecho en el lenguaje que prefiera el autor: C, C++, Perl...
Antes de lanzar un exploit contra un objetivo remoto, por ejemplo, debemos conocer su sistema operativo y a veces es necesario cambiar la dirección offset dentro del código del exploit, en función del sistema operativo y la versión de service pack que el objetivo tenga instalada, para ajustar el exploit a las características del sistema objetivo.

Bien, nuestro objeto-exploit tiene algunos atributos como el autor del exploit (= Lion), la vulnerabilidad que explota (= Serv-U FTPD 3.x/4.x "SITE CHMOD" Command Remote stack buffer overflow) y el lenguaje en que se ha codificado el exploit (= Lenguaje C). Si otro objeto quiere acceder a estos atributos, no lo puede hacer directamente, sino a través de los métodos del objeto-exploit. Es decir,
    · si quiere saber el autor que codificó el exploit, llamará al método "dame el autor" del objeto-exploit y recibirá como resultado el tipo string con el nombre del autor = "Lion".
    · si quiere introducir una nueva dirección offset, llamará al método "introduzco nuevo offset" y le pasará como argumento el tipo string con la dirección offset = "0x7ffa4a1b" a introducir para que el exploit nos funcione.
Generalmente, a estos métodos q "obtienen" o "introducen" se les llama métodos getters y setters. De esta forma, los métodos del objeto-exploit pasarán a codificarse bajo los nombres getAutor, getVulnerabilidad, getLenguaje, y setOffset.

Continuando con el ejemplo...
    · el prototipo del método getAutor será: String getAutor ()
String (antes del método), indica que la llamada al método devuelve un tipo String, como es una cadena de caracteres con el nombre del autor. Sin embargo, no hace falta pasarle ningún argumento al método, por lo que dejamos los paréntesis () vacíos.
    · el prototipo del método setOffset será: void setOffset (String offset)
void (antes del método), indica que la llamada al método no devuelve ningún tipo. Sin embargo, es necesario pasarle un argumento tipo String, como es la cadena de caracteres de la dirección offset para que, por ejemplo, el código del método implemente esa dirección offset y entonces lance el exploit ya ajustado a las características del sistema objetivo.

Si este ejemplo del objeto-exploit te ha resultado demasiado confuso por los tecnicismos empleados, quizás te resulte más fácil comprender un objeto-reloj. Tiene los atributos Hora (= 19:00), Fecha (= 31/12/2004) y Marca (=Casio) y sus métodos podrían ser getHora (para pedir la hora que marca el reloj), getFecha (para pedir la fecha que marca el reloj), getMarca (para pedir la marca del reloj), setHora (para introducir una nueva hora en el reloj) y setFecha (para introducir una nueva fecha en el reloj). Jejejeje, mejor así?? ;)


1.2) Concepto de Clase.
Justo antes del dibujo del objeto-exploit, he remarcado que ese diagrama representaba su "plantilla". Es decir, imagina que tenemos una plantilla para crear muchos objetos-exploit, todos ellos con los mismos tipos de atributos y los mismos métodos, pero cada uno con su identidad propia. Otro ejemplo de objeto-exploit diferente podría contener la siguiente información en sus atributos:
Autor = fiNis,
Vulnerabilidad = Jordan Telnet Server Buffer Overflow,
Lenguaje = C
y tener los mismos métodos para acceder a estos atributos, pero como ves, la identidad es distinta.

Las clases son una especie de plantilla para los objetos, es decir, si se piensa en una clase como un molde de galletas, los objetos que se crean a partir de esa clase son las galletas.
Definimos formalmente clase como la representación de la estructura (atributos) y comportamiento (métodos) de un objeto.
La creación de un objeto a partir de una clase se denomina "instanciación". Cualquier objeto que se instancie de una clase creará una copia de la definición de atributos de la clase y dispondrá de los métodos definidos en ella.
Para crear objetos, se invoca al constructor de la clase, que es un método que se llama igual que la clase.

Tipos de clases:
- Clase abstracta: ningún objeto pertenece directamente a dicha clase.
- Clase concreta: exiten objetos que pertenecen directamente a dicha clase.


1.3) Atributos y Métodos de Objeto/Clase
Antes hemos visto que un Objeto se compone de:
   - Atributos (datos o variables): Información que posee cada objeto y que identifica su estado.
   - Métodos (operaciones o funciones): Conjunto de instrucciones que definen el comportamiento del objeto. Reciben unos argumentos y devuelven un resultado.

Y hemos dicho que la única manera de acceder a los atributos de los objetos, es a través de los métodos.
Los métodos son un conjunto de instrucciones al cual se le pueden pasar unos argumentos y/o devolver unos resultados.
Existen dos tipos de métodos:
- Métodos de instancia: invocados en los objetos.
- Métodos de clase: invocados en las clases. Estos atributos y métodos serán compartidos por todos los objetos creados a partir de una misma clase.

Para comprender el concepto de atributo/método de instancia o de clase, volvamos al ejemplo del objeto-reloj:
Imaginemos una clase-reloj que crea objetos-reloj, todos de la misma marca = Casio. Estos objetos-reloj implementan los atributos Hora, Fecha y Marca; y los métodos getHora, getFecha, getMarca, setHora y setFecha. Sin embargo, algunos de estos atributos y métodos son de clase y otros son de instancia:

- Atributos de instancia:
    · Hora
    · Fecha
- Métodos de instancia:
    · getHora
    · getFecha

- Atributos de clase:
    · Marca
- Métodos de clase:
    · getMarca

Se puede distinguir las diferencias entre unos y otros de manera sencilla:

    · Si le preguntamos a dos objetos (relojA y relojB) con getHora o getFecha, nos pueden contestar un valor diferente para cada objeto. Estos atributos y métodos serán denominados atributos de instancia y métodos de instancia.
    · Si le preguntamos a dos objetos (relojA y relojB) con getMarca, ambos contestarán el mismo valor = Casio, ya que la clase-reloj se lo ha asignado forzósamente. Estos atributos y métodos serán denominados atributos de clase y métodos de clase.
En este caso, por ejemplo, si existiera el método setMarca y modificaramos el atributo Marca de cualquier objeto a través de él, este atributo se modificaría para todos los objetos, pues estamos tratando con métodos de clase.

CONSECUENCIAS
Cualquier objeto creado a partir de una clase contendrá la definición de los atributos de clase y dispondrá de los método de clase. Por tanto, cuando se modifica un atributo de clase a través de un objeto, se modifica ese atributo en todos los objetos creados a partir de esa clase.


Especificaciones sobre los métodos:
Un objeto de clase no puede acceder a un método de instancia, porque no sabemos si el objeto al que intenta acceder ha sido ya creado. Sin embargo, el resto de accesos son posibles:
    · método de clase - método de clase
    · método de instancia - método de instancia
    · método de instancia - método de clase
Asimismo, un método de instancia de un objeto A no puede acceder directamente a los atributos (variables) de un objeto B, pero puede hacer referencia a un método de instancia del objeto B, y que sea este el que acceda a los atributos del objeto B.


1.4) Modificadores de acceso.
Alcance de los modificadores de acceso prefijos a atributos y métodos:

- public: accesible desde cualquier lugar de la aplicación (por el resto de clases).
- private: sólo accesible desde la clase a la que pertenece.
- protected: disponible para la clase actual, clases del mismo paquete y subclases derivadas de esa clase.


1.5) Paradigmas de la POO

1.5.1) Abstracción
Consiste en abstraer conceptualmente los atributos y comportamiento (métodos) comunes a un determinado conjunto de objetos y almacenarlos en una clase.

1.5.2) Encapsulamiento
El encapsulamiento es el principio por el cual se ocultan los detalles de implementación al usuario.
Cada clase tiene dos partes:
    · El Interfaz es la parte pública con la que interactúa el usuario (métodos públicos)
    · La Implementación es el código que realiza todas las operaciones de la clase (métodos privados)

1.5.3) Herencia
La herencia permite crear una clase nueva (subclase o clase derivada) que tenga el mismo comportamiento que otra (superclase o clase base) y además extienda o adapte ese comportamiento a unas necesidades específicas.
La nueva subclase heredará los atributos y los métodos de la clase base, los cuales se añadirán a los definidos en la propia subclase.

Continuando con el ejemplo de la clase-exploit, observamos que por Internet circulan bastantes exploits que afectan a vulnerabilidades en servicios de Microsoft Windows. ¿Por qué no agrupar todo este conjunto de objetos-exploit bajo una nueva clase-winexploit?. Esta nueva clase-winexploit herederá los mismos atributos (Autor, Vulnerabilidad y Lenguaje) y los mismos métodos (getAutor, getVulnerabilidad, getLenguaje y setOffset) de la clase-exploit. A su vez, "extenderá su comportamiento" implementando otros atributos y otros métodos específicos como, por ejemplo, el atributo CodigoMS (referente al Codigo Microsoft Security Bulletin asignado a la vulnerabilidad) y el método getCodigoMS.
La clase-winexploit quedaría así:

------------------------------------------
|                        getLenguaje       |
|   getVulnerabilidad                      |
|            ---------------               |
|           |   Autor       |              |
|           |               | getAutor     |
|           |Vulnerabilidad |              |
|           |               |              |
|           |     Lenguaje  |              |
|           | CodigoMS      |              |
|            ---------------               |
|                                          |
| setOffset                                |
|                          getCodigoMS     |
------------------------------------------

Un ejemplo de objeto-winexploit podría ser el siguiente:
- Atributos:
    (atributos heredados de la clase-exploit)
    · Autor: Wirepair
    · Vulnerabilidad: Windows Workstation Service WKSSVC.DLL Buffer Overflow
    · Lenguaje: C
   
    (nuevos atributos implementados por la clase-winexploit)
    · CodigoMS: MS03-049

- Metodos:
    (métodos heredados de la clase-exploit)
    · getAutor
    · getVulnerabilidad
    · getLenguaje
    · setOffset

    (nuevos métodos implementados por la clase-winexploit)
    · getCodigoMS

La sintaxis en Java para indicar que una nueva clase hereda de otra superclase es:

Código: java
class winexploit extends exploit


Especificaciones sobre la Herencia:
Además de "extender" el comportamiento implementando nuevos atributos y nuevos métodos, una clase heredada puede "adaptar" el comportamiento sobreescribiendo la funcionalidad de la clase base, esto es, sobreescribiendo la implementación del algún método heredado de la clase base para que al llamar a ese método desde la nueva clase heredada, en vez de ejecutar el código original del método heredado, se ejecute un nuevo código adaptado al comportamiento de la nueva clase. (Polimorfismo)

1.5.4) Polimorfismo
El Polimorfismo es la respuesta distinta frente a una llamada a un método dependiendo de la naturaleza del objeto.
Consiste en definir métodos distintos, que comparten el mismo nombre, pero que se aplican a clases diferentes.
Por ejemplo, un método llamado breathe puede responder de manera distinta dependiendo de quien lo invoque:

Código: java
class animal
{
    public void breathe()
    {
        System.out.println("Respirar...");
    }
}

class pez extends animal
{
    public void breathe()
    {
        System.out.println("Burbujear...");
    }
}


Si se invoca el método breathe desde un objeto-perro, imprimirá en pantalla "Respirar...", pero si es invocado desde un objeto-trucha, imprimirá en pantalla "Burbujear...".


Otra forma de utilizar polimorfismo es mediante la sobrecarga de funciones:

Código: java
char convertir_numero_cadena(int valor, char cadena, int base)
char convertir_numero_cadena(long valor, char cadena, int base)



En este caso, cuando se invoca la función, el compilador debe analizar los argumentos de la llamada y, en función de su tipo, deducir cual de las distintas versiones del método con ese nombre debe recibir el control.

Recopilación de Ejercicios Java POO(Programación Orientada a Objetos)
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

autor: Gospel
#750
Tutoriales / Blanquear dientes Photoshop [Tutorial]
Enero 26, 2013, 02:14:00 AM
Bienvenidos a este tutorial.

Hoy vamos a explicar como blanquear dientes. Mirando por internet vi este tutorial explicado con almenos 10 pasos, cosa que me sorprendió, asi que decidí escribirlo con SOLAMENTE 1 PASO.

¿Has tenido que hacerte alguna vez una foto justamente después de comer o de cenar sin poder lucir dentadura? Ahora eso ya no es ningún problema.

Abrimos dicha foto con Photoshop.



Vemos que no tiene los dientes del todo blancos, pues ahí va el primer y último paso de este tutorial:

Seleccionamos la herramienta de Sobreexponer (O)  y como si se tratara de un pincel, vamos pintando suavamente la dentadura.

Veremos que se va blanqueando. Mira la diferencia en la siguiente imagen:



Parece un anuncio de un dentífrico ¿eh?..

Pues bueno, aquí esta todo. ¿Esperabais que fuera más largo?



saludos!

fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#751
Hoy vamos a cambiar el color de pelo con Photoshop.

Ya no tienes porque gastarte dinero en tintes ;)

Abrimos la foto a la que queramos aplicar el tinte



Elige un tipo de pincel suave, parecido al de la imagen de debajo:



Ahora pulsa el botón de "Máscara Ràpida" o simplemente pulsa "Q" y pinta el contorno del pelo con el pincel escogido antes, rellenándolo para que se quede más o menos de esta forma



Muy bien, pues solo nos queda pintar. Pulsa otra vez la tecla "Q" para quitar el modo máscara rápida.

Veremos que se ha hecho una selección.

Pulsamos Selección > Invertir [Muy importante, ya que si no hacemos esto pintaremos todo menos el pelo xD].



Pues ahora vamos a teñir el area seleccionada. Lo haremos de la siguiente manera:

Capa > Nueva Capa de Relleno> Color Uniforme.

Aparecerán las propiedades de la nueva capa como en la imagen siguiente. Solamente tenemos que cambiar el modo Normal al de Luz Suave. Ahora le damos a Aceptar.

Ahora puedes elegir el color que quieras. Ves probando!



Aquí os muestro algunos ejemplos:







Espero que os haya gustado el tutorial!

Saludos!

pd: la fuente se ve en las fotos.
#752
Bienvenidos a este tutorial.



Hoy vamos a aprender a Cambiar Color de ojos con Photoshop.

¿Os acordáis del tutorial de cambiar el color de pelo? Pues este es EXACTAMENTE IGUAL.

Abrimos la imagen del ojo o de la cara



Cambiamos al modo máscara Rápida "Q"



Pintamos con el pincel la parte del ojo que queramos cambiar de color de modo que se quedará de un color rojo transparente como en las imágenes siguientes:



Para pintarlo vamos a hacerlo de la forma más fácil.

Una vez selecciona la parte del ojo, pulsaremos Ctrl+U y con la opción colorear activada subiremos un poco la saturación y eligiremos el color moviendo el tono, como indica la imagen siguiente:




Y ya está! Ahora puedes mirar como te quedaría otro color de ojos. Colores hay muchos!



saludos!

pd: fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#753
Tutoriales / Photoshop cabeza en mano [MiniTutorial]
Enero 26, 2013, 02:05:39 AM

Me ha parecido algo curioso y he decidido hacerlo. Se trata de hacer como si sujetaramos nuestra cabeza con la mano.

Primero nos hacemos una foto como si sujetaramos algo. Yo me he saltado ese paso y he elegido una de Pau Gasol sujetando dos balones, los cuales voy a sustituir por cabezas.



El primer paso es seleccionar la cabeza de Pau Gasol, para ello vamos al modo máscara "Q" y con la herramienta pincel pintamos la cabeza como el la imagen siguiente.



Cuando esté totalmente roja quitamos el modo máscara rápida ("Q" otra vez) y aparecerá una selección.

Vamos a Selección > Invertir y quedará la cara seleccionada como en la siguiente imagen.



Bueno, pues ahora viene lo más fácil. Pulsamos Ctrl+J o Capa > Nueva Capa > Vía copiar
y nos aparecerá una nueva capa con solamente la cara.

Seleccionamos dicha capa y con la herramienta mover (V) la arrastramos hasta la mano.

Y ya está. Repetimos todo el tutorial si queremos hacerlo con otra cabeza.

Y así queda la cosa:



saludos!
pd: la fuente se ve en las imagenes

#754
Bienvenidos a este tutorial.

Hoy vamos a hacer este sencillo tutorial de Como pasar de foto a acuarela con Photoshop.



Primer paso: Triplicamos la capa base presionando Ctrl + J tres veces o vamos al menú Capa > Duplicar capa.



Segundo paso: Ocultamos las dos capas de arriba presionando una vez sobre el ojo que aparece a la izquierda de la paleta de capas.



Terce paso: Hacemos clic sobre la Capa 1 y luego aplicamos el filtro cuarteado, clic en el menú Filtro > Artistico > Cuarteado y cambiamos los valores como los que aparecen en la figura.





Cuarto paso: Cambiamos el modo de capa a Luminosidad.



Quinto paso: Habilitamos la Capa 1 copia haciendo clic en el cuadro vacio al lado izquierdo y luego vamos al menú Filtro > Artistico > Pincel Seco. Cambiamos los valores como aparecen en la imagen siguiente, si se está usando esta fotografía.

Para fotos con nubes, flores o campos, experimente con pinceles mas grandes mayores de ocho.



Sexto paso: Cambiamos el modo de la capa a Trama.




Séptimo paso: Habilitamos la Capa 1 copia 2 haciendo clic en el cuadro vacio de la izquierda y luego vamos al menú Filtro > Ruido > Mediana y le damos un valor de doce.



Octavo paso: Ajustamos el modo de capa a Luz suave.


#755
Bienvenidos a este Tutorial Photoshop.

Hoy vamos a aprender a utilizar este efecto tan utilizado últimamente.

En resumen del tutorial, pasaremos una foto a blanco y negro y dejaremos los detalles de un color a la vista, como podemos observar en la siguiente imagen:



Primer paso:

Abrimos una imagen, en mi caso esta:



Duplicamos la capa de dica imagen.
[Para ello deberemos seleccionar dicha capa e ir a Capa > Duplicar Capa]



Una vez duplicada vamos a quitarle todo el color.
Para ello seleccionamos capa duplicada y pulsamos Ctrl+U y dejamos la saturación en -100 como indica la siguiente imagen:



BUENO, pues esto ya está casi hecho. Ahora viene lo más fácil. Pulsamos en la herramienta Goma (E) y empezamos a borrar todo lo que antes era rojo en el dibujo, como podemos ver en la imagen.

[ No te preocupes si no tienes mucha habilidad para borrar. Si te pasas un poco no se va a notar absolutamente. Compruébalo! ]



Cuando hayamos borrado todo lo que era del mismo color ya habremos terminado el tutorial.

¿¿Fácil verdad??

Así queda la cosa:



saludos!

pd: la fuente se ve en las imagenes.
#756
Tutoriales / Disminuir tamaño de nariz [Tutorial]
Enero 26, 2013, 01:56:59 AM
Bienvenidos a este tutorial.
Hoy os vamos a explicar como hacer la nariz mas pequeña con photoshop

Este tutorial es muy fácil de hacer y seguro que a más de uno/a ha querido hacerse la nariz más pequeña alguna vez.

Es otro tutorial de photoshop que sustituye la cirgugía estética ;-P

Empecemos:

1. Abrimos la foto que deseamos retocar con photoshop



2. Seleccionamos el contorno de la nariz con la Herramienta lazo poligonal, lazo, o máscara rápida. Utiliza la herramienta a la que estés más acostumbrado.



3. Copiamos la seleccion desde Edición> Copiar o simplemente pulsando Ctrl+C.

4. Creamos una nueva capa Capa >Nueva.. >Capa y vamosa a Edición > Pegar o simplemente pulsamos Ctrl+V.


5. Pulsa CTRL+T para transformar la nueva selección y disminuimos la nariz como podemos observar en la imagen. (También puedes hacerla más grande si quieres).



6. Pulsa en la herramienta "Dedo" (smudge). Cambia la profundidad a 20%.



7. Arrastramos con el dedo hacia la nueva nariz hasta que solamente se muestre la nueva.



8. Y ya está! ya tenemos nuestra nariz disminuida



SI TE HA GUSTADO ESTE TUTORIAL, TAMBIÉN PUEDES VER LA FUENTE: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

saludos!
#757
Tutoriales / Marco en fotos con photoshop [Tutorial]
Enero 26, 2013, 01:54:37 AM
Hoy vamos a explicar un facilísimo tutorial, poner un marco en una foto.

Lo primero es abrir la foto, en mi caso esta:



Bueno, pues una vez abierta la foto vamos a Selección > Todo y se seleccionará toda la imagen.
Ahora vamos a Selección > Modificar > Borde e insertamos la grosor del borde. En mi caso 10 px



Ahora se nos quedará un borde seleccionado.

Si quieremos terminar el tutorial aquí, podemos pulsar simplemente Ctrl+Alt+U e ir probando con la Saturación a 100 y modificando el tono, para que nos quede algo como esto.



Si queréis hacer un borde más completo, cuando tengamos la selección del borde solo tenemos que pulsar Ctrl+J o Capa > Nueva.. >Capa vía copiar..

Ahora con la nueva capa que se acaba de crear pulsamos botón derecho sobre ella y Opciones de fusión... y completamos con los siguientes datos.

En realidad es fácil, primero vamos a Superposición de Colores que está a la izquierda del panel y elegimos el color que queramos:



Ahora miramos más abajo, la última opción que es Trazo y ponemos el color negro, u otro con el tamaño que queramos, yo he puesto 3.



Pulsamos OK y así queda nuestra foto, con su marco.



Espero que os haya gustado! visita la fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login para más tutoriales!

saludos!
#758
Hoy vamos a explicar como hacer este típico efecto texto fuego pero con un tono rojo.

Los resultados son realmente impresionantes.



Empezaremos creando una nueva imagen con fondo negro.

Con la herramienta Texto (T) creamos un texto en color blanco, en mi caso You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login



Una vez creado el texto lo rotaremos de la siguiente forma.
Edición > Transformar > 90º AC



Bueno, pues empecemos a darle el efecto. Ahora vamos a Filtro > Estilizar > Viento...

En las opciones del siguiente menú pondremos, en método: Viento y Desde la Izquierda.

Nos aparecerá una advertencia de que si queremos rasterizar la capa/texto. Le damos a aceptar.

Nos quedará algo así:




Aplicamos este paso 2 veces más. No hace falta volver a hacerlo todo, simplemente pulsando Ctrl+F se repite el Filtro

Bueno pues ahora colocamos el texto en horizontal. Lo haremos desde: Edición > Transformar > 90º AC

Filtro > Distorsionar > Rizo... con Cantidad 100% y Tamaño: pequeño



Filtro > Ruido > Añadir Ruido... [Cantidad: 13 y Distribución: Uniforme. ]
Filtro > Desenfocar > Desenfoque Gaussiano [1,5 px]



Ahora con la capa de texto seleccionada, pulsamos Ctrl+Alt+U y completamos con lo siguiente:
Tono: 0 | Saturación: 100 | Luminosidad: 0

Y ya tenemos otro efecto fuego un poco diferente!



saludos!
pd: la fuente es bastante obvia no?
#759
1. Abrimos un documento, no importa la medida.

2.Ponemos de color frontal verde loro y de color de fondo
el negro (o presiona la tecla D)

3.Crea una capa nueva

4.Ve al menú filtro, interpretar y elige la opcion nubes
deberas tener algo como esto (pero está hecho con blanco y negro, a nosotros nos quedarían nubes verdes):



5.Ahora, vamos al menú filtro-Galeria de filtro-textura-Granulado
y colocamos los siguientes valores:



Autor: Kareen

saludos!
#760
olvidalo...

xD

saludos!