Skip navigation.

(The sound of a little key)

"Only a parameter can change the method of my life."

All ports By IANA (Internet Assigned Numbers Authority)

Checando por ahí, tenia una duda referente a unos puertillos y WOW, no espere nunca encontrame esto.

Todos los puertos : http://www.iana.org/assignments/port-numbers (La verdad, nunca habia visto una lista tan completau)


Basicamente esta informacion es brindada por IANA, que es la Agencia de asignación de numeros de internet, la cual a nivel mundial se encarga de registrar los protocolos usados en internet, puertos y codigos privativos o publicos.

Actualemte fue remplazado por ICANN (Internet Corporation for Assigned Names and Numbers), que es la Corporacion de Internet para el registro de Nombres y numeros. Practicamente realiza el mismo trabajo que IANA y adicionalmente de otras empresas de EEUU. ¿Diferencia? : Es sin animo de lucro y como cualquier Robin Hood, vela por la estabilidad de internet.

Greetings to all and Happy BandWidth.

Fucking ignorance

Mierda, hoy es uno de esos dias en los que me siento tan ignorante... Como quisiera poder tener tiempo libre, poder sentir en mis ojos la libertad de poder no dormir y leer sin parar, leer hasta saber que mi mente no puede mas... ¿Acaso no que solo podemos usar maximo nuestro 10% de potencial?.

Esto simplemente es un intento mas de vencer la ignorancia y darle alas a la codicia del conocimiento. Es una forma de declarar la guerra a los medios de comunicación, los gobiernos y todo ente que deforma la información.


Ahora mientras escucho una melodia de piano, reflexiono y soy conciente, que cada dia que pasa es un dia menos que me queda por vivir y hacer lo que tanto me gusta... un dia en el que pierdo mas mi tiempo, un dia mas en el que corro muchos riesgos sin estar preparado.

Ok. Greetings to all and happy BandWidth

¿Porqué carajos quisieras leer esto?

Muchas cosas han pasado por mi cabeza y ahora todo parece más claro, No hay presente sin pasado, ni futuro sin esperanza.

Siempre me pregunte si todo debia tener un ¿porqué?, y si es así ¿Porqué deberia serlo?.
- ¿Porqué el odio?, ¿Porqué la muerte?, ¿Porqué las mentiras de aquellos sicofantes que dicen tener la voz del pueblo y la inteligencia de un mundo debil presionado por el caos y obligado a callar?, ¿Porqué el amor?, ¿Porqué la pasión de algunas cosas que no todo mundo comparte?.

Ahora si tú también puedes entenderlo y recordar claramente aquella noche en que te hablaba en las sombras, también entederas, que la vida ni la muerte valen nada cuando el propósito del mundo enciende las flamas tus palabras y la fuerza de tus manos rompen armonicamente las coincidencias del destino y dejas de ser igual a los demás.

Ser diferente no significa ser menor o peor, simplemente representa la evolución de una raza diferente a la que conocemos todos, sí es así, aquellos que mueren en el conformismo y aún esperan a vanagloría poder cumplir sus sueños.
La unica diferencia entre un sueño y un deseo es la fuerza con la que se quiere obtener el objetivo y se vuelve hecho.


By [D-m-K]

Greetings to all and happy Bandwidth.

Entre angeles y Licencias GNU

Navegando por ahí, encontre un manifiesto que me causo gran curiosidad..
por el momento coloco el link mientras tomo un abstracto y saco conclusiones.



http://www.gnu.org/gnu/manifesto.es.html

Article : WPA vs WPA2

El siguiente articulo lo encontre navegando por ahí y me pareció excelente. Aqui dejo el link y el texto del articulo para aquellos que deseen degustar tambien. Link author : http://www.openxtra.co.uk/articles/wpa-vs-80211i.php Name article : WPA versus 802.11i (WPA2): How your Choice Affects your Wireless Network Security
A discussion of why 802.11i (WPA2) provides stronger wireless security than WiFi Protected Access (WPA) and WEP, why there is a need for a new standard and why you should use it. We’ve already looked at why WPA is better than WEP, so why have a new 802.11i security standard? Isn’t WPA good enough? WPA has, rightly, been admired as a masterpiece of retro engineering. It addresses the weaknesses of WEP and the result is a very secure security system that is backwardly compatible with most existing WiFi compliant equipment. WPA is a practical solution that will provide more than adequate security for most wireless network applications. However WPA is in the end a compromise solution. It still relies on the RC4 encryption algorithm and TKIP (Temporary Key Integrity Protocol). Although unlikely, the possibility of new weaknesses being discovered still exists. A completely new security system, avoiding the design flaws of WEP entirely, represents the best long term, scalable solution to wireless LAN security. To this end the standards committee decided to design a new security system from the ground up. This is the new 802.11i standard, also known as WPA2 by the WiFi Alliance. What is 802.11i? 802.11i uses the concept of a Robust Security Network (RSN). In RSN wireless devices need to support additional capabilities. This requires new hardware and software drivers making a fully compliant RSN network incompatible with existing WEP equipment. In the transitional period both RSN and WEP equipment will be supported, (in fact WPA/TKIP was a solution designed to make use of older equipment) but in the longer term WEP devices will be phased out. 802.11i allows for various network implementations and can use TKIP, but by default RSN uses AES (Advanced Encryption Standard) and CCMP (Counter Mode CBC MAC Protocol) and it is this which provides for a stronger, scalable solution. What is AES/CCMP? Advanced Encryption Standard (AES) is the cipher system used by RSN. It is the equivalent of the RC4 algorithm used by WPA. However the encryption mechanism is much more complex and does not suffer from the problems associated with WEP. AES is a block cipher, operating on blocks of data 128bits long. CCMP is the security protocol used by AES. It is the equivalent of TKIP in WPA. CCMP computes a Message Integrity Check (MIC) using the well known, and proven, Cipher Block Chaining Message Authentication Code (CBC-MAC) method. Changing even one bit in a message produces a totally different result. One of the worst aspects of WEP was the management of the secret keys. Many administrators found it impractical to manage keys in larger networks. As a result WEP keys were often not changed making it easier for hackers. RSN defines a hierarchy of limited life keys, similar to TKIP. AES/CCMP requires 512bits to accommodate all the keys, less than TKIP. Also like TKIP master keys are not used directly, but are used to derive other keys. Fortunately the administrator only needs to provide a single master key. Messages are encrypted using a secret key (128bits) and a 128bit block of data. The encryption process is complex, but again the administrator does not need to be aware of the intricacies of the computations. The end result is encryption that is much harder to break than even WPA. Conclusion 802.11i is by far the strongest security system for wireless networks. The purist would argue that anything less is the equivalent of no security at all. When the 802.11i standard is ratified RSN (WPA2) compatible equipment will begin to appear. 802.11i (WPA2) will be the most robust, scalable, and secure solution and will appeal particularly to enterprise users where key management and administration has been a major headache. 802.11i has been designed using proven technologies. Security has been designed from scratch in full consultation with the best cryptographers and stands every chance of being the solution that wireless networks need. Although no security system can ever be considered totally unbreakable, 802.11i security is a dependable solution and seems unlikely to be breached. It suffers none of the problems of older systems. 802.11i is a wireless security system that you can depend on. You can use WPA to accommodate older equipment and as that reaches the end of its useful life you can upgrade to a fully compliant RSN network.

Greetings to all and happy BandWidth.

Fáctorial Sencillo 2 en JAVA usando recursión y BigInteger

Hola, por recomendación de mi viejo amigo phi mejore el código utilizando recursión y el tipo de dato BigInteger para no limitar al usuario a ingresar máximo un N de 20.

package javacertificationdmk.capitulo2;
import java.math.BigInteger;
import java.io.*;

/***
 * <p>Nombre      : FactorialSencillo.java</p>
 * <p>Descripción : Se obtiene el factorial por recursividad usando BigInteger</p>
 * <p>Fecha       : Marzo 7 de 2009</p>
 * @author        : [D-m-K]
 * @version       : 1.0.0
 ***/


public class FactorialSencillo2 {
  public static void main(String[] args) throws IOException{
        //Pido el número
        System.out.println("\n\t O B T E N E R   F A C T O R I A L \n");
        int n = leerN("\t Ingresa el valor de N para obtener factorial : ");
        BigInteger factorial = obtenerFactorial(n);

        //Obtengo el factorial del número ingresado
        System.out.println("\n\t [R E S U L T A D O]\n");
        System.out.println("\t El factorial de " + n + " es : " + factorial);
   
  }

  /**
   * @param msg - Mensaje a mostrar para solicitar el valor de entrada
   * @return n - Valor ingresado de tipo entero
   * @throws java.io.IOException
   */
  public static int leerN (String msg) throws IOException{
      int n = 0;
      boolean error;
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      
      do{
        error = false;
        try{
            System.out.print(msg);
            n = Integer.parseInt(br.readLine());
            if(n < 1){
                System.out.println("\t ERROR : El numero no puede ser negativo\n");
                error = true;
            }
        }catch(NumberFormatException e){
            System.out.println("\t ERROR : El valor ingresado no es numerico\n");
            error = true;
        }
      }while(error);

      return n;
  }

  /**   
   * @param n - numero a calcular
   * @return fac - Factorial del numero a calcular de tipo BigInteger
   */
  public static BigInteger obtenerFactorial(int n){
      if(n <= 1){
          return (new BigInteger("1"));
      }else{
          BigInteger fac = new BigInteger(String.valueOf(n));
          return (fac.multiply(obtenerFactorial(n - 1)));
      }
  }
 
}



Greetings to all and happy BandWidth.

Fáctorial sencillo en JAVA

Bien al parecer estaba tan aburrido que esto fue lo unico que se me ocurrió... Básicamente obtiene el fáctorial de un número N (no mayor a 20, pues el resultado sería muy grande y sin precisión). Valida también el número ingresado.



package javacertificationdmk.capitulo2;

//importo los packages necesarios para la entrada de datos
import java.io.*;

/***
* Nombre : FactorialSencillo.java
* Descripción : Obtiene el factorial de un numero cualquiera ingresado por el usuario
* Fecha : Marzo 7 de 2009
* @Autor : [D-m-K]
***/

public class FactorialSencillo {
public static void main(String[] args) throws IOException{

//Pido el número
System.out.println("\n\t O B T E N E R F A C T O R I A L \n");
int n = leerN("\t Ingresa el valor de N para obtener factorial : ");
long factorial = obtenerFactorial(n);

//Obtengo el factorial del número ingresado
System.out.println("\n\t [R E S U L T A D O]\n");
System.out.println("\t El factorial de " + n + " es : " + factorial);

}

/**
* @param n - numero a calcular fáctorial
* @return fac - Retorna el factorial del número tomado como argumento
* @throws java.io.IOException
*/
static long obtenerFactorial(int n) throws IOException{
long fac = 1;
//Calculo factorial
for(int i=1; i<=n; i++)
fac *= i;

//Devuelvo el factorial calculado
return fac;
}

/**
* @param msg - Muestra mensaje y solicita dato
* @return num - retorna el dato ingresado de tipo entero
* @throws java.io.IOException
*/
static int leerN(String msg) throws IOException{
int num = 0;
boolean error;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//Capturo el valor ingresado y valido que sea un numero.
do{
error = false;
try{
System.out.print(msg);
num = Integer.parseInt(br.readLine());
if (num > 20){
System.out.println("\t ERROR : Changos ese numero generaria un resultado muy grande.\n");
error = true;
}
if(num < 0){
System.out.println("\t ERROR : Hey viejo, el numero no puede ser negativo :O\n");
error = true;
}
}
catch(NumberFormatException e){
System.out.println("\t ERROR : El valor ingresado no corresponde a un numero.\n");
error = true;
}
}while(error);
//Retorno el número ingresado de tipo entero
return num;
}

}


Greetings to All and Happy BandWidth

Comprobando números pares en JAVA

Un ejemplo de ingreso de datos por teclado con el fin de comprobar si un número es par o impar.

//Importo librerias necesarias
import java.io.*;

/***
 * Nombre      : CompruebaPar.java
 * Descripción : Comprueba si un numero es par o no. usando datos de ingreso
 *                por teclado.
 * Fecha       : Marzo 5 de 2009
 * @autor       : [D-m-K]
 ***/

public class CompruebaPar {
    public static void main(String[] args) throws IOException{

        //Definición de variables
        int numero = 0;
        boolean error;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        
        do{
            error = false;
            try{
                System.out.print("\n\t Ingresa un numero para comprobar si es PAR o IMPAR : ");
                numero = Integer.parseInt(in.readLine());
            }catch(NumberFormatException e){
                System.out.println("\t ERROR : Eso no es un numero :O, intenta de nuevo LOL.");
                error = true;
            }
        }while(error);

        //Valido numero.
        if(numero % 2 == 0){
            System.out.println("\t El número ingresado es PAR");
        }else{
            System.out.println("\t El número ingresado es IMPAR.");
        }

    }

}

Suma de pares entre un rango determinado :D

Bueno, de puro desparche estaba leyendo un librito de JAVA en el cuál colocaban el siguiente retillo :D.

Desarrollar un programa que, a partir de dos numeros enteros dados, muestre en pantalla la suma de todos los numeros pares entre el rango de los dos numeros.


/***
 * @Nombre      : SumaPares.java
 * @Descripción : A partir de dos numeros ingresados por teclado, calcula la
 *                suma de todos los numeros pares existentes en el rango de los
 *                numeros ingresados
 * @Fecha       : Marzo 5 de 2009
 * @Autor       : [D-m-K]
 ***/

//Paquete principal de clases
package javacertificationdmk.capitulo2;

//importo librerias necesarias
import java.io.*;

public class SumaPares {
    public static void main(String[] args) throws IOException{

        //Definición de variables
        int a, b, mayor, menor, suma = 0;

        System.out.println("\n\tPor favor ingresa dos numeros para calcular la suma de los pares : \n");
        a = leer("\tNumero a : ");
        b = leer("\tNumero b : ");

        //Evaluo cual es mayor
        if(a > b)
        {
            mayor = a;
            menor = b;
        }else{
            mayor = b;
            menor = a;
        }
        
        //Calculo el rango.
        for (int i=menor; i<=mayor;i++){
            if(i%2 == 0)                
                suma+=i;
        }

        System.out.println("\n\tLa suma de los pares entre " + menor + " y " + mayor + " : " + suma);
        
    }

    static int leer(String msg) throws IOException{
        int num = 0;
        boolean error;
        BufferedReader in =  new BufferedReader(new InputStreamReader(System.in));

        do{
            error = false;
            try{
                System.out.print(msg);
                num = Integer.parseInt(in.readLine());
            }catch(NumberFormatException e){
                System.out.println("\n\tEl Valor ingresado no es numerico :S");
                error = true;
            }
        }while(error);
        return num;
    }
}

Validando datos de entrada en Java

Bien este humilde código sólo contiene un simple ejemplo del còmo se pueden restringir entrada de
datos NO numericos en un campo que guardará un dato de tipo entero. Modificando el código o creando
un método más agresivo se pueden usar metodos sobrecargados para evaluar el tipo de dato y seria mucho mejor.

/***
 * @Nombre      : ValidaDatoEntero.java
 * @Descripción : Valida un dato entero ingresado por teclado 
 * @Fecha       : Marzo 5 de 2009
 * @Autor       : [D-m-K]
 ***/

package javacertificationdmk.capitulo2;

import java.io.*;

public class validaDatoEntero{
    public static void main(String[] args) throws IOException{
        int numero;
        boolean error;
        BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));

        do{
            error = false;
            try{
                System.out.print("\n\t Ingresa un numero : ");
                numero = Integer.parseInt(dato.readLine());
            }catch(NumberFormatException e){
                System.out.println("\t ERROR : Eso no es un numero :O, intenta de nuevo LOL.");
                error = true;
            }
        }while(error);

        System.out.println("\n\t Bien parce Si llegaste hasta aquí todo funca bien.");
    }
}


Cualquier duda comuniquese con su proveedor de software.