Algoritmo para aplicar Base64

Si hay algo que aveces se requiere realizar es codificar un archivo binario a texto ASCII y viceversa, si este es tu caso puedes utilizar Base64, el cual es muy sencillo y rápido de implementar aunque no es del todo seguro.

Los usuarios de PHP pueden hacer uso de las funciones nativas base64_encode y base64_decode,los de Python pueden importar el paquete base64 para servirse de este, de todas formas puedes usar la siguiente herramienta en linea llamada Binary File to Base64 Encoder / Translator, ver referencia [1].

Ahora que si deseas realizar algún tipo de encriptado para tu proyecto con un mínimo de esfuerzo, puedes optar por la biblioteca jasypt, ver referencia [4].


Introduccion

¿Que es BASE64 y donde se utiliza?

El Base64 Content-Transfer-Encoding está diseñado para representar secuencias arbitrarias de octetos en una forma que no necesita ser humanamente legible. Los algoritmos de codificación y decodificación son simples, pero los datos codificados son sistemáticamente sólo alrededor del 33% más grande que los datos sin codificar.

Esta compuesta por un subconjunto 65 de caracteres US-ASCII, permitiendo 6 bits para ser representados por caracteres imprimibles. (El 65° carácter adicional, "=", se utiliza para significar una función específica para la transformación.)

Aquí 3 Bytes se representan con una cadena de texto de 4 caracteres,en total estos 24 bits se subdividen en agrupaciones de 6 bits, cada uno de los cuales se traduce en un solo dígito en el alfabeto base64. En otras palabras estos 6 bits se usan como índice en una matriz de 64 caracteres imprimibles.


Esquema de codificación de bytes del algoritmo Base64

+-primer octeto--+-segundo octeto--+--tercer octeto--+
|0 1 1 1 0 1 1 0 | 0 1 0 1 0 1 1 1 | 0 0 0 0 0 1 1 0 |
+-----------+----+-------+---------+----+------------+
|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0 |
+ carácter 4+ carácter 3 + carácter 2 + carácter 1 +


Tabla 1: El alfabeto Base64

Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y


Todos los saltos de línea, espacios en blanco u otros caracteres que no se encuentra en la Tabla 1 deben de ser ignorado por el software de decodificación.

Esta codificación es prácticamente idéntica a la utilizada en la privacidad de Correo Mayor (PEM), también en la URL's de algunos sitios, PGP, Thunderbird y Evolution lo ocupan para el cifrado de contraseñas en los correos entre otros. Ver referencia [2].

Codificación Base64 en las URL's

Esta codificación puede ser nombrada como "base64url" y no debe considerarse igual que "base64". Esta es técnicamente idéntica a la anterior, a excepción de del carácter 62 y 63 del alfabeto, una alternativa al alfabeto sugerido es utilizar "~" como carácter en la posición 63. Debido a que el carácter "~" tiene un significado especial en algunos entornos de sistema de archivos, aunque no se recomienda.

Se ocupa para apuntar a algún nombre de archivo o dirección de manera segura en la web, es por ello que hay URL's que son lo suficientemente cortas como para cortar y pegar.Por eso la codificación de seis bits por carácter (base 64) que es mucho mejor que la codificación de cinco bits por carácter (base 32).

Por ejemplo:

http://localhost:4004/id/1b17864eeb6c68294c9b2db0324a2b773401f0da0537d82626c24a7850e15ef2d6c4265dcd5e85f1

La misma URL en base64:

http://localhost:4004/id/GxeGTutsaClMmy2wMkordzQB8NoFN9gmJsJKeFDhXvLWxCZdzV6F8Q

Se puede deducir entonces que Base64 es 17% mas compacto que Base32

Desarrollo

He implementado una clase para realizar el codificado, la cual se llama Base64Encoder.java la cual esta disponible desde este enlace [3]. En cuanto tenga listo el decodificador lo publicare aquí.

Enlaces

[1]http://www.greywyvern.com/code/php/binary2base64
[2]http://www.ietf.org/rfc.html (The Internet Engineering Task Force)

- REQUEST FOR COMMENTS -

2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of
Internet Message Bodies. N. Freed, N. Borenstein. November 1996.
(Format: TXT=72932 bytes) (Obsoletes RFC1521, RFC1522, RFC1590)
(Updated by RFC2184, RFC2231, RFC5335) (Status: DRAFT STANDARD)

2046 Multipurpose Internet Mail Extensions (MIME) Part Two: Media
Types. N. Freed, N. Borenstein. November 1996. (Format: TXT=105854
bytes) (Obsoletes RFC1521, RFC1522, RFC1590) (Updated by RFC2646,
RFC3798, RFC5147) (Status: DRAFT STANDARD)

3548 The Base16, Base32, and Base64 Data Encodings. S. Josefsson, Ed..
July 2003. (Format: TXT=26363 bytes) (Obsoleted by RFC4648) (Status:
INFORMATIONAL)

4648 The Base16, Base32, and Base64 Data Encodings. S. Josefsson.
October 2006. (Format: TXT=35491 bytes) (Obsoletes RFC3548) (Status:
PROPOSED STANDARD)

5335 Internationalized Email Headers. Y. Abel, Ed.. September 2008.
(Format: TXT=27945 bytes) (Updates RFC2045, RFC2822) (Status:
EXPERIMENTAL)

[3] http://explotandocodigo.100webspace.net/Public/encode/Base64Encoder.html
[4] http://www.jasypt.org/

Guia de inicio para Ireport

| 0 comentarios

Como ya lo había prometido, a continuación un post sobre el diseñador Ireport para JasperReports. Trataré de describir la funcionalidad de este sin que este se vea comprometido con un solo sistema operativo.

OBJETIVO:

  • Conocer la utilidad de esta
  • Tener una perspectiva de manera rápida aunque no definitiva de las cosas que se pueden hacer con Ireport
  • Tener una solución bajo la manga
  • Que esta guía sea una referencia para alguien en este Cyberespacio

INTRODUCCION

¿Qué es Ireport?

  • Diseñador de reportes gráficos muy complejos si así lo requerimos para JasperReports
  • Un programa OpenSource (GPL)
  • Esta escrito al 100% en Java
  • La versión comercial de esta y la que se recomienda para la producción se llama JasperStudio la cual es mantenida por la empresa JasperSoft Corporation
  • Esta integrada en la Jasper Bussines Intelligence Suite
  • Sitio WEB

Algunas Características

  • Categoría: Bussines Intelligence
  • Soporte para TrueType
  • Manejo de múltiples fuentes de datos como: todas las bases de datos soportadas por JDBC, archivos XML, CSV, Hibernate entre otros…
  • Soporta SQL, HQL, EJBQL, MDX y Xpath
  • Wizard para la creación de reportes y sub-reportes
  • Más de 30 elementos para formatear el reporte (lineas, elipses, TextFields, charts,código de barras, etc.)
  • El núcleo de este es una biblioteca llamada JasperReports, la cual fue desarrollada por Teodor Danclu de JasperSoft Corporation
  • Los reportes generados se puede pre visualizar y/o exportar en PDF, HTML, RTF, XLS, CSV, TXT y más...

Example2

Desarrollo

Para poder ejecutar el Ireport se necesita el SDK 1.5.0 o superior, 256MB de RAM y al menos 20 megas de espacio en disco.

Estructura de los reportes

La estructura de los reportes se encuentra dividida por secciones horizontales llamadas "Bandas", las cuales son rellenadas con los datos que requerimos en una posición especifica, es aquí donde se definen las reglas del reporte

Esta divida en 9 bandas, en las cuales se pueden removidas o agregadas en el reporte, por default se muestran:

  • Titulo
  • Header de pagina
  • Header de columnas
  • Detalle
  • Pie de columna
  • Pie de pagina
  • Ultimo pie de pagina
  • Sumario




JRXML y archivos jasper

Un reporte es guardado en un archivo tipo XML el cual cada una de sus secciones se encuentra definido por jasperreport.dtd, es por eso que el archivo fuente tiene la extensión "*.JRXML" el cual contiene la configuración del reporte físicamente, las dimensiones de la pagina entre otras.

Si la compilación de este archivo se realiza de manera correcta genera entre otros un archivo con extensión "Jasper" el cual puede ser interpretado por la JVM.

Elementos y letras

Los elementos contenidos en un reporte pueden ser:

  • Lineas
  • Elipses
  • Texto estático
  • Texto Dinámico
  • Imagenes
  • Rectangulos con/sin relleno
  • Sub-reportes
  • Codigo de Barras
  • Graficas
  • HyperLink
  • etc.

Esta se encuentra en la barra de herramientas

BarraIreport

Expresiones dentro del reporte

Las expresiones que se pueden manejar dentro de un reporte son instrucciones en lenguaje Java siempre y cuando el resultado sea un objeto (Que extienda de Object pues).

Entonces desde una expresión se puede referir a parámetros, variables fields y lo que se encuentre definido dentro del reporte, aquí algunas sintaxis:



$F{field} Especifica el nombre de un Field
$V{variable} Especifica el nombre de una Variable
$P{parametro} Especifica el nombre de un Parametro
$P!{parametro} Una sintaxis especial usada en una consulta SQL, indica que
el parametro no debe de ser tratado como un valor por ejemplo:

SELECT * FROM empleado $P!(ID)}
Que equivale a decir dado que ID=5
SELECT *FROM empleado WHERE ID = 5


Además se puede usar Groovy como lenguaje dentro de las expresiones

Creación de una conexión con JDBC (Datasources)

Ireport tiene la capacidad de soportar lenguajes de consulta como: SQL, HQL, EJBL, MDX y XPath. Ahora que si no se va a utilizar una consulta a la Base de Datos, no necesitas una consulta dentro del reporte; sino un DATASOURCE

Un datasource es un objeto que itera sobre un record parecido a una tabla. JasperReport provee algunas implementaciones de DataSources que pueden ser envueltas en estructuras de datos genericas como: Arrays o Colecciones de javaBeans, result sets, table models, CSV y archivos XML.

Aquí una lista de datasource y conexiones provistas por Ireport



Plugin para NetBeans

Aqui un tutorial para poder agregar y configurar el plugin necesario para poder trabajar con Ireport desde Netbeans, el ejemplo esta basado en la distro GNU/Linux Ubuntu [2] y aqui otro hecho desde MAC [3].

CONCLUSIÓN

Espero haber logrado los objetivos planeados.

REFERENCIAS

[1] http://jasperforge.org/plugins/project/project_home.php?group_id=83
[2] http://wiki.netbeans.org/Avbravotutorialbasiconetbeansreports
[3] http://wiki.netbeans.org/NBDemoIReport

Convertir un numero a su descripcion en letras (JAVA)

| 11 comentarios

Recientemente tuve la necesidad de realizar la conversión de un numero en su descripción en letras o mejor dicho en pesos mexicanos. Creo que el algoritmo se llama "Conversión del importe" o "Función del importe en letras" y la web habla tendido y largo de esto.

* Para los que programan en Visual Basic(Pronto me incluiré en esta lista), en la web hay una buena cantidad de ejemplos (GUILLE)

Me llamo la atención este código hecho en Visual Basic, el cual adapte a Java


Public Function Num2Text(ByVal value As Double) As String
Select Case value
Case 0 : Num2Text = "CERO"
Case 1 : Num2Text = "UN"
Case 2 : Num2Text = "DOS"
Case 3 : Num2Text = "TRES"
Case 4 : Num2Text = "CUATRO"
Case 5 : Num2Text = "CINCO"
Case 6 : Num2Text = "SEIS"
Case 7 : Num2Text = "SIETE"
Case 8 : Num2Text = "OCHO"
Case 9 : Num2Text = "NUEVE"
Case 10 : Num2Text = "DIEZ"
Case 11 : Num2Text = "ONCE"
Case 12 : Num2Text = "DOCE"
Case 13 : Num2Text = "TRECE"
Case 14 : Num2Text = "CATORCE"
Case 15 : Num2Text = "QUINCE"
Case Is < 20 : Num2Text = "DIECI" & Num2Text(value - 10)
Case 20 : Num2Text = "VEINTE"
Case Is < 30 : Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30 : Num2Text = "TREINTA"
Case 40 : Num2Text = "CUARENTA"
Case 50 : Num2Text = "CINCUENTA"
Case 60 : Num2Text = "SESENTA"
Case 70 : Num2Text = "SETENTA"
Case 80 : Num2Text = "OCHENTA"
Case 90 : Num2Text = "NOVENTA"
Case Is < 100 : Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100 : Num2Text = "CIEN"
Case Is < 200 : Num2Text = "CIENTO " & Num2Text(value - 100)
Case 200, 300, 400, 600, 800 : Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
Case 500 : Num2Text = "QUINIENTOS"
Case 700 : Num2Text = "SETECIENTOS"
Case 900 : Num2Text = "NOVECIENTOS"
Case Is < 1000 : Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
Case 1000 : Num2Text = "MIL"
Case Is < 2000 : Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is < 1000000 : Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
Case 1000000 : Num2Text = "UN MILLON"
Case Is < 2000000 : Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)
Case Is < 1000000000000.0# : Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "
If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
Case 1000000000000.0# : Num2Text = "UN BILLON"
Case Is < 2000000000000.0# : Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)
Case Else : Num2Text = Num2Text(Int(value / 1000000000000.0#)) & " BILLONES"
If (value - Int(value / 1000000000000.0#) * 1000000000000.0#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)
End Select
End Function



* Para lo que usen Crystal report, ya tienen la solución en la mesa
* Hay algoritmos que sobrepasan el numero 999 999 999
* Esta fue mi propuesta por supuesto que no es una solución definitiva (Considerando que los números que usaré no son muy grandes)


/**
* @author Gabriel Mtz.
*/
public class Converter {
Integer counter=0;
String value="";

public String getStringOfNumber(Integer $num){
this.counter = $num;
return doThings($num);
}

private String doThings(Integer _counter){
//Limite
if(_counter >2000000)
return "DOS MILLONES";

switch(_counter){
case 0: return "CERO";
case 1: return "UN"; //UNO
case 2: return "DOS";
case 3: return "TRES";
case 4: return "CUATRO";
case 5: return "CINCO";
case 6: return "SEIS";
case 7: return "SIETE";
case 8: return "OCHO";
case 9: return "NUEVE";
case 10: return "DIEZ";
case 11: return "ONCE";
case 12: return "DOCE";
case 13: return "TRECE";
case 14: return "CATORCE";
case 15: return "QUINCE";
case 20: return "VEINTE";
case 30: return "TREINTA";
case 40: return "CUARENTA";
case 50: return "CINCUENTA";
case 60: return "SESENTA";
case 70: return "SETENTA";
case 80: return "OCHENTA";
case 90: return "NOVENTA";
case 100: return "CIEN";

case 200: return "DOSCIENTOS";
case 300: return "TRESCIENTOS";
case 400: return "CUATROCIENTOS";
case 500: return "QUINIENTOS";
case 600: return "SEISCIENTOS";
case 700: return "SETECIENTOS";
case 800: return "OCHOCIENTOS";
case 900: return "NOVECIENTOS";

case 1000: return "MIL";

case 1000000: return "UN MILLON";
case 2000000: return "DOS MILLONES";
}
if(_counter<20){
//System.out.println(">15");
return "DIECI"+ doThings(_counter-10);
}
if(_counter<30){
//System.out.println(">20");
return "VEINTI" + doThings(_counter-20);
}
if(_counter<100){
//System.out.println("<100");
return doThings( (int)(_counter/10)*10 ) + " Y " + doThings(_counter%10);
}
if(_counter<200){
//System.out.println("<200");
return "CIENTO " + doThings( _counter - 100 );
}
if(_counter<1000){
//System.out.println("<1000");
return doThings( (int)(_counter/100)*100 ) + " " + doThings(_counter%100);
}
if(_counter<2000){
//System.out.println("<2000");
return "MIL " + doThings( _counter % 1000 );
}
if(_counter<1000000){
String var="";
//System.out.println("<1000000");
var = doThings((int)(_counter/1000)) + " MIL" ;
if(_counter % 1000!=0){
//System.out.println(var);
var += " " + doThings(_counter % 1000);
}
return var;
}
if(_counter<2000000){
return "UN MILLON " + doThings( _counter % 1000000 );
}
return "";
}
}



El resto depende de lo que quieran lograr con este algoritmo. Podrían adaptarlo para que sea especifico a un Locale, Moneda o tal vez para cierto idioma =)

Aún Sigo vigente

| 1 comentarios

Tenia bastante rato de no postear nada, vaya he estado ocupado ultimamente.

En el próximo post realizaré un tutorial sobre el Ireport para JasperReport, abordando temas como:

  • Origen y tendencias del producto
  • Licencias
  • Estructura de un reporte
  • Elementos que contiene un reporte para esta herramienta
  • JRDataSource
  • DataSource y QueryExecuters
  • Scriptlets
  • SubReports
  • Plug-ins para NetBeans
  • Y otras...

Solo esperen a que termine una aplicación que he empezado, de está solo mostrare una imagen.



Login

Conexion a BD en Access desde Java

| 2 comentarios

Desde hace días traía en la mente una vaga curiosidad que no es nada nueva para muchos pero sí para el autor de este blog, nada mas que acceder a datos dentro de una base de datos en Microsoft Access desde un entorno Java, pues siempre hay necesidad de hacer que los datos sean persistentes y que mejor si están dentro de una BD relacional, que para fines didácticos sería bueno empezar con unas cuantas tablas y pensando que no habra un ambiente transaccional muy concurrente y que la base de datos está centralizada.(Si ya sé que tu usas algún potente DBMS).

Lo cual resulto muy fácil pues en java para comunicarnos con la Base de datos haremos uso de la API JDBC™. El cual es un driver muy especifico para cada DBMS que se desea manipular, por ende el catalogo de driver es muy amplio.[1]

Para el ejemplo que hice eche mano del puente JDBC-to-ODBC el cual me permite conectar a Microsoft ODBC (Open Database Connectivity) en java lo encontramos como (sun.jdbc.odbc.JdbcOdbcDriver), extra a esto el controlador ODBC debe existir en el equipo cliente (En el inicuo mundo Windows XP se accede a través de la opción de herramientas administrativas) y normalmente requiere la configuración de la fuente de datos ODBC puesto que la mayoría de los sistemas de gestión de bases de datos requieren que el usuario inicie sesión antes de acceder a la misma. Es por esta razón que el metodo getConnection() de la claseDriveManager está sobrecargado para soportar las diferentes métodos de acceso.

Aquí un formulario realizado

Formulario para alta y bajas

Para el ejemplo utilice una clase la cual se puede ver aquí [2]

Formas de desarrollar una aplicación en C#

| 2 comentarios

Tenia tiempo que no posteba un tema de tipo técnico y cuando tenia el tiempo no sabía que postear, es por esa razón que se me ocurre explorar otras plataformas de desarrollo, como .NET y por supuesto usando el caballito de batalla de C#, las razones por la que he decidido explorar esta plataforma me las reservo, así que para fines educativos en este blog me limitare a hablar de las diversas formas en las que se pueden crear aplicaciones en C#, obviamente la mejor herramienta a utilizar dependerá del contexto del problema (No querrás hacer una clase muy pequeñita en un Visual studio 2008, cuando lo puedes hacer en un editor de texto sencillo).

Objetivos

  • Eliminar la falsa creencia que tienen algunos que para desarrollar sus aplicaciones sobre .NET deben comprar una licencia de Visual Studio.
  • Mostrar algunas herramientas para desarrollar en .NET usando programas libres u OpenSource descargables.
  • Ampliar el panorama para poder desarrollar aplicaciones en C#

Introducción

El kit de desarrollo para NET Framework 3.5 (SDK) proporciona numerosos compiladores, utilidades de línea de comandos, white papers, ejemplos de código, bibliotecas de clases, y una completa documentación del sistema. Este puede ser descargado de [1]. NOTA:Si optas por instalar alguna versión del Visual Studio evitaras instalar el SDK de forma manual.

Desarrollo

Desarrollando la aplicación haciendo uso del CSC (Desde ambiente Win)

Como se habrán dado cuenta, si tiene un IDE no es necesario andar ejecutando código desde la linea de comandos de windows, pero piense las razones por las que ha compilado un .java desde esa misma consola, entonces ¿Hay razón de usarlo con un .cs? ¿Si o no?.

Si ha decido hacerlo de esta manera, no hay que olvidar que el compilador puede recibir parámetros además del nombre de la clase, como por ejemplo:


/out Esta opción es usada para especificar el nombre del assembly a crear. Aunque por default el nombre es el mismo que el archivo .cs
/target:exe Puede omitirse pues esta por default.
/target:library Crea un archivo DLL(Biblioteca de enlaces dinámicos).
/target:module Crea un Modulo.
/target:winexe Para aplicaciones basadas en interfaz de usuario, impide que se muestre una consola durante la ejecución
/r:namespace1 Sustituir namespace1 por el/los namespace que se desea referenciar

Por ejemplo C:\>csc /target:exe fuente.cs
C:\>csc /r:System.Windows.Forms.dll *.cs


Desarrollando la aplicación con el TextPad

Obviamente no solo se puede utilizar para C#, pero bueno se puede descargar desde [2]. Para poder sentirse realmente cómodo con este programa hay que configurar la impresión estética para el lenguaje a utilizar y para eso hay que indicarle que escoja csharp.syn(Si se desea trabajar con C#) de la lista que tiene, luego hay que especificar de acuerdo a nuestras necesidades que parámetros queremos que le pase al compilador cada vez que compilemos el código e indicarle la ruta para llegar al compilador. Si con esto aún no esta conforme diríjase a [3] para bajar algún plug-ins que mejor le acomode (Wow, no sabia que tenia un autocompletador de código para Java!!).

Desarrollando la aplicación con SharpDevelop

Descargable desde [5], el cual es un IDE OpenSource para los lenguajes como C#, VB y Boo (Microsoft y Mono).

  • Compatible con .Net framework SDK 3.5
  • Diseño muy parecido a los IDE's Microsoft
  • Completamente integrable con NUnit y NAnt (herramientas para el testeo de software)
  • Utilidades para diseñar la BD
  • Diseñador Visual de formularios
  • Utilidades para convertir código de C# a VB
  • Útil para plataformas cruzadas


Notepad++_screen

Desarrollando la aplicación usando MonoDevelop

Se ha echo un fork para SharpDevelop llamado MonoDevelop el cual es un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para C# y otros lenguajes .NET como Nemerle, Boo, y Java (via IKVM.NET), basicamente es mas enfocado para el desarrollador en Mono, el cual es descargable desde [7].

MonoDev

Desarrollando la aplicación con el Notepad++

Para descargarlo checa este link [4], al parecer no hay mucho que decir de este, todo esta en la página web y se define como: "un editor gratuito de código fuente, que soporta varios lenguajes de programación y se ejecuta en MS Windows... basado en el componente de edición Scintilla, escrito en C++ utilizando directamente la API de win32 y STL... se distribuye bajo los términos de GPL de GNU."

Notepad++_screen

Desarrollando la aplicación con C# 2005/2008 Express edition

Desde el verano de 2004, Microsoft introdujo una nueva línea de IDE's "Express", los cuales están descargables desde aquí[6]. Estos son completamente gratis debido a que es apoyado y mantenido por Microsof (¿Alguna vez dije que los estudiantes no tenemos dinero?)

Características destacadas:

  • Soporte para Windows Presentation Foundation (WPF) y XAML
  • IntelliSense
  • Capacidad para programar Xbox 360 y juegos de PC, utilizando Microsoft XNA Game Studio

Desarrollando la aplicación con Visual Studio 2005/2008

La razón por la cual deje esta opción a lo ultimo es muy clara, pues es el IDE que tiene un costo (Un buen costo diría yo) y al cual varios aspiran a usar. Si el lector ha llegado hasta esta parte sabrá entonces cuando sacar la artillería pesada para realizar ese ambicioso proyecto de SW posiblemente a nivel empresarial.

Conclusión
Espero haber cumplido los objetivos que me plantee al principio.

Bibliografía

[1] http://msdn.microsoft.com/es-es/netframework/default.aspx
[2] http://www.textpad.com
[3] http://www.textpad.com/add-ons/
[4] http://notepad-plus.sourceforge.net/es/site.htm
[5] http://www.icsharpcode.net/OpenSource/SD/
[6] http://www.microsoft.com/express/
[7] http://www.monodevelop.com/Main_Page

¿Por que Satanas le ha echado el ojo a las redes sociales?

Hoy en día existen cientos de sitios de redes sociales, aunque la mayoría comparten algunas funcionalidades básicas, con diferentes grados de dificultad, como Twitter, Pownce, y los componentes sociales de los sitios de blogs y foros o como las de características escabrosamente complejas, tal es el caso de Facebook y MySpace.

El lector se preguntará el por qué de semejante titulo, y aunque la frase anterior suena muy rara, la pregunta tal vez seria ¿Por qué?, ¿por que la delincuencia anda detrás de las redes sociales, (micro,mini)blog y medios de comunicación social en la red?, a caso es por culpa del descuidado uso que se le ha dado a la WEB 2.0, ¿O sera por el promiscuo trafico de información personal del usuario hacia esta?, o por la emoción que sienten al aceptar una solicitud de una persona que no conocen o responder a una serie de mensajes. Aunque bueno la gente esta muy acostumbrada a mostrar sus vulnerabilidades en la web.

De lo anterior surgen mucha soluciones, algunas muy burlonas como los que dicen que hay que validar todas las idioteces que sube el usuario antes de que se publiquen.

¿Y en que afecta?
  • Existen literalmente cientos de redes sociales y por ende miles de usuarios(objetivos pues)
  • Cada vez abundan más niños emos en estas (Broma)
  • La rápida utilización y aprobación de esta para el trabajo
  • Todo esto nos acelera cada vez más a un apocalipsis en la web 2.0(Bueno no del todo)

¿Y Como funcionan?

La respuesta mas breve seria a través de conexiones y entidades.

Una entidad es simplemente algo que puede compartir conexiones con otras entidades. Pero ojo aquí, pues podría ser un robot, o tal vez podría ser una aplicación, en el mejor de los casos podría ser un ser humano. En fin si tiene una lista de amigos, es una entidad.

La clave aquí es que hay una relación entre dos entidades que implica un cierto grado de confianza, y cada entidad crea un grado de "N" conexiones.

Las conexiones y enlaces entre las entidades son la infraestructura de las redes sociales, como es natural gran parte de los vectores de ataque en las SocNet's procede de aquí.

Cultura de la Confianza "Trust"

La construcción de una plataforma basada en contenidos creados por el usuario y las aplicaciones, significa que desde el comienzo hay una relación de confianza básica de los usuarios (suena lógico).

Ya para terminar

Las redes sociales son grandes objetivos debido a que son grandes grupos de personas. Y las grandes colecciones de personas por lo general se traduce en un gran potencial de víctimas. Además las redes sociales también proporcionan un entorno en donde las víctimas tienen más probabilidades de llegar a un atacante, y todo por la una cultura de confianza.

Mucho cuidado pues.

Estado del malware en el telefono celular durante el año 2007

Las primeras infecciones en los teléfonos móviles fueron encontradas al final del 2004. Desde entonces, cientos de diferentes virus han surgido, la mayoría de ellos dirigidos a smartphones que ejecutan el sistema operativo Symbian.

Estos virus utilizan nuevos vectores de propagación, como mensajes multimedia y Bluetooth. Pero, ¿Por qué esto es principalmente un problema con Symbian?¿Por qué Windows Mobile o los dispositivos Blackberry no han sido el blanco?¿Que hace a los recientes teléfonos Symbian más seguro?¿Por qué la mayoría de las infecciones están sucediendo en Europa y en el sudeste de Asia? ¿Y qué sucederá después?.

Palabras de Mikko Hypponen
Jefe Oficial de Investigación de F-Secure.
Una de las 50 personas más importantes en la web en marzo de 2007 por la revista PC World
.


Alarmantes revelaciones ¿no?, pues con este panorama empiezo la traducción de la conferencia realizada durante el blackHat 2007, destacando puntos muy interesantes y agregando notas de consideración personal.

blackhat

Los virus en los teléfonos móviles no es de ciencia ficción, y en los Smartphones tampoco. Mientras los celulares se están convirtiendo en smartphone capaces de descargar programas de Internet, compartir software de intercambio el uno con el otro a través de las conexiones de corto alcance vía Bluetooth, el uso de las comunicaciones mundiales con el servicio de mensajes multimedia(MMS) y el uso de las tarjetas de memorias,entre otras nuevas capacidades esta creando una nueva plataforma para el reinado y proliferación de virus.

En junio de 2004 se encontró el primer gusano escrito específicamente para los smartphone. Conocido como Cabir, este fue una prueba de concepto, que fue escrito por un grupo de programadores de virus aficionados, conocido como 29A. Este no causaba daños directos al aparato infectado, simplemente intentaba copiarse a otro teléfono mediante la apertura de una conexión Bluetooth. En los siguientes años surgieron nuevas versiones mucho mas dañinas de virus, en algunos casos des habilitaban por completo el celular, asignaban contraseñas aleatorias a las tarjetas de memoria o enviaban una gran cantidad de mensajes a otros teléfonos causando grandes perdidas monetarias,robo de información privada e inclusive la inutilización del teléfono.

Como se puede observar en tan solo tres años, el número de virus destinados a teléfonos inteligentes pasó de 1 a más de 350, una tasa de crecimiento que es aproximadamente paralela al surgimiento del primer virus para PC desde el año de 1986.(Ver tabla.)


Plataforma 2004 2005 2006 2007
--------------------------------------------
Palm 3 3 3 3
PocketPC 2 2 3 4
Symbian 22 141 337 364
J2ME 0 0 2 2
--------------------------------------------
Total 27 146 345 373


Ahora bien, en el mundo pudieran existir cerca de 2 billones de teléfonos móviles(cifra muy reservada), de los cuales la mayoría de estos son de desarrollo cerrado, con Sistemas operativos propietarios que los hace inmune a la infección viral, sin embargo los consumidores están abandonando estos "aparatejos" por nuevas generaciones de smartphone que corren un sistema operativo más amigable, con navegadores web, envio/recepcion de emails, que contienen ranuras para tarjetas de memoria flash y con Bluetooth. Cada una de estas características ofrece un conducto para la propagación del malware.

Por ejemplo en el caso de la propagación viral mediante el uso de las conexiones Bluetooth, podría ser alrededor de 10 metros a la redonda o más, ¿Y si estoy viajando en el metro de la ciudad? pues ni se diga.

El reemplazo de la población de teléfonos celulares por smartphones esta creciendo rápidamente (En algunos países claro está), pues cada generación de estos dispositivos agrega más funcionalidades a un PC, desde videocámaras, navegación GPS, reproductores de MP3, estos son subsidiados en parte por las operadoras de red(por eso el abaratamiento de estos), pues al tener nuevas capacidades aumenta el consumo de servicios por parte del usuario, se estima que si esto sigue así para el año 2009 habrá cerca de 350 millones de unidades en servicio en el mundo.

Hablando en términos medios estos aparatos están siendo adaptados mas rápidamente en economías emergentes, donde las personas propietarias de una computadora son relativamente bajas, por ejemplo la investigación de Canalys, una consultora, encontró que los smartphones en venta durante el primer trimestre de 2007 creció dos veces más rápido en el este y este medio de Europa que en el oeste.

En el contexto Windows

Una lección de los virus de PC es que cuanto mayor sea el objetivo por atacar, mayor será la atracción para los programadores infames. La gran mayoría del malware sólo funciona con el ubicuo sistema operativo Microsoft Windows, por la misma razón, casi todos los troyanos y gusanos liberados para los móviles son para Symbian, pues corre en la mayoría de los smartphone en el mundo - incluyendo los hechos por Nokia, Samsung,Sony Ericsson y Motorola.

¿Cómo es posible que Windows Mobile O PocketPC no sean el blanco del malware?

Buena pregunta. La baja venta en el mercado lo explica, aunque después del todo ¿Será?...

Symbian explica que el malware móvil se encuentra más prevalecientemente en Europa y sureste de Asia, donde Symbian es comun, pero es menos frecuente en América del Norte, Japón o Corea del Sur.Las operadoras celulares en América del Norte han extendido sus mercados de forma más equitativa entre las distintas plataformas mientras que el mercado japones y koreano esta dominado por teléfonos basados en Linux.

¿Y ahora que sigue?

Mientras tanto el servicio que provee el mercado norteamericano esta introduciendo "billeteras/carteras móviles", con los cuales los clientes podrán utilizar sus teléfonos para transferir fondos desde sus cuentas a otras personas mediante el envío de un formato especial de mensajes de texto. Paypal tiene un servicio parecido también.

Con los sofisticados virus para celulares las capacidades tecnológicas y financieras de estos están en riesgo.Ninguna de las 360 formas del malware explota las vulnerabilidades seguridad en los teléfonos.

Algunos de los fabricantes mas grandes de teléfonos han modificando las normas de la industria de los microcircuitos en el interior de los teléfonos , para hacerlos mas seguros contra la obtención de datos sensibles en la memoria del aparato.

La comunidad (refiriéndose a Black/white Hat) comúnmente en búsqueda de seguridad ha sido pro activa en plataformas moviles, mirando vulnerabilidades en el código y diseño del sistema. Nosotros esperamos encontrar estos agujeros para que puedan ser parchados, antes de que los malos lo descubran en esta inevitable y constante batalla.

blackhat

HTML en componentes Java

| 1 comentarios

Algunos componentes que heredan de javax.swing.JComponent de java que despliegan un String como parte de su GUI, permiten para su formato el uso de los tags HTML. La utilidad de esto es el mezclar un formato para el texto a mostrar (color, tamaño, estilo, uso de viñetas) o por que no también el mostrar una imagen.[How to Use HTML in Swing]

Lo que no se puede hacer

  • Manejo de eventos del mouse a través del HTML
  • Imagenes embebidas
  • Para que los hyperlink funcionen como tal se debe de hacer uso de otras API como JHyperlink las cuales están en proceso de prueba/desarrollo.Algunos desarrolladores prefieren agregar MouseListener al componente en especifico, obtener la URL y hacer la llamada al navegador por default (Obviamente todo esto a pata :S)

Desde luego que hay componentes java para el soporte de HTML, pero su uso depende del fron-end a desarrollar.[JHyperlink][foro1][foro2]


Precauciones de uso

Vaya tampoco crean que van a implementar todos los tags habidos y por haber, al parecer solo soporta algunos tags definidos hasta la versión 3.1 del HTML No es muy bueno al momento de manejar complejos HTML

Recomendaciones

  • Es importante que los tags que inserten se encuentren debidamente cerrados y correctamente usados, pues podrían generar una excepción ya sea en compilación o en ejecución. Lo cual les traería mayor dolor de cabeza.
  • Uso de JXHyperlink. Hay extensiones del Swing como [SwingX] las cuales tiene componentes como JXHyperlink.


Ejemplo

import javax.swing.JLabel;

/**
* Fecha de creación: 19/07/2008
* @author Gabriel Martínez Nájera
*/
public class Test {
JLabel method() {
String link = "http://www.explotandocodigo.blogspot.com";
String anun = "" +
"Visita: " +
"" + link + "" +
"
Contacto:gmartinez...gmail.com" +
"";
JLabel jlblAnuncio = new JLabel(anun); return jlblAnuncio;
}
}

El cual ya implementado sobre un componente podría quedar así:

HtmlExampleJava

La utilidad de JavaFX script para las RIA(Resumen)

| 1 comentarios

Hoy en día las aplicaciones basadas en la web están llegando a un tope en lo referente a complejidad y rendimiento, a la vez los propietarios de contenidos demandan un mayor nivel de participación (a través de vídeo de alta definición o funciones avanzadas de interactividad con el usuario). Los desarrolladores piden algo nuevo (Sin necesidad de aprender otras plataformas, más bien utilizando el bagaje de conocimientos ya adquiridos para no sobrecargarlos con nuevos requisitos). El navegador web quizás sea un modelo de programación fabuloso en lo que a accesibilidad se refiere, pero resulta bastante endeble a la hora de utilizar aplicaciones enriquecidas o sin conexión.

Estos y otros factores florecen el despliegue de aplicaciones de contenido rico, pues estas deben llegar a una mayor cantidad de usuarios y a la totalidad de dispositivos, ¿Por qué? pues el mercado debe cubrir las exigencias no solo de los usuarios de PC's sino también el de dispositivos mobiles.

Por último, no nos engañemos: en la Web 2.0, el valor está en los datos, no en la aplicación. Y los datos son de ustedes.
Jonathan Schwart'z


Java Puzzle #1

| 3 comentarios

Revisando los apuntes que tomé durante el SUN Tech Days, vi un ejemplo de java puzzle que Raghavan "Rags" Srinivas mostró a los asistentes, ejemplo del cual he aprendido tambien.

Pero ¿Que opinan ustedes?¿Cual es el resultado?


int distance = 0;
while( (-1 << distance)!=0 )
distance++;
System.out.println(distance);

Tips:
  • Estudie
  • Relajese
  • Opine y fundamente la respuesta.


Resultado del acertijo [Answer]

ExplotandoCódigo Versión 2.0

Ya era tiempo de renovarse con nuevos aires(y pieles), antes que nada tengo que aceptar que mi transición a la web 2.0 no fue del todo fácil, es por ello que agradezco a las personas que me ayudaron para realizar el cambio.

A disfrutar de esto pues...

Hay que debatir buenos temas(2do. Fonasol)

Okey, con este post pretendo una sola cosa:

  • No enfrascarse en debates que no tienen fin.
NOTA: Todos podemos hablar sin ser necesariamente tan expertos en la materia, pero para eso hay que considerar los factores como de limitación del tema, el tiempo y lugar.

Por alguna razón en este año no pude ir al 2do FONASOL ahora bien esto lo digo por que el foro se llevo durante el transcurso del 4to. encuentro del mar al cual tampoco pude ir. Para ponerme al tanto de algunas cosas que sucedieron y como buen tecnólogo busqué en la web y me encontré con unos vídeos que se grabaron durante el transcurso de ambos eventos, esto vía Blip.tv y HoneyPot-tv.

El video me llamo mucho la atención por varias razones
  • El tema: "Debate en FONASOL Linux vs.Windows©"
  • El panel: Evangelistas de la comunidad Microsoft (Delfines.NET y Dragones.NET, saludos Chiñas) y participantes/ponentes del FONASOL
  • El lugar: 4to. encuentro del mar
  • La cantidad de micrófonos disponibles para llevar a buen termino el debate
  • El señor que habla de su terrible mancuerna entre sistema operativo - lab - impresora, para al final no aportar gran cosa al debate.
  • Etc.
Debatir un tema así de grande implica hablar/conocer de muchas otras. Claro tampoco tan grande como lo es el debatir nuestra reforma petrolera aquí en México XD. Basta con revisar los foros en la web donde un tema así termina en un pleito entre usuarios Windows Vs. MAC ó los usuarios de KDE Vs GNOME y todo por saber cual de los sistemas operativos es más bonito. Señores y señoras, la cosa no es por allí, tenemos que establecer en que escenarios una "cosa" es mejor solución que otra (Solo por mencionar un ejemplo).

Al ver el vídeo me acorde de un foro que nos abrió un maestro en el BlackBoard con el tema "¿Por que Windows© es más comercial?", donde se empezó una encarnizada batalla donde cada usuario desde su trinchera argumentaba cosas y otro las refutaba de manera casi inequívoca(No faltaba el que no entendía del todo y solo se confundía más), en fin al cerrarse el foro me pude dar cuenta de lo terrible y/o doloroso que resulta tratar tremendo tema, el maestro solo opto por decir "Buena participación, realmente me impresionaron sus comentarios." Una conclusión muy reservada por supuesto, pienso tal vez por temor a desatar otro debate, así que mejor en aquel entonces decidí obtener mis conclusiones:


*El ya aceptado fracaso de Vista(en el vídeo se olle mucho esto por parte de la comunidad Microsoft)
*El usuario no quiere entender de tecnologías por ende se genera dependencia al producto
*Todo software es comercial o susceptible de serlo
*Al usuario le gustan las cosas bonitas, transparentes, en la boca pues.
*El usuario final no sabe ni lo que quiere, por ende ¿Por que confiar en lo que el considera como un producto bueno o malo?
*Los usuarios aceptan que hay software mejor que el que están acostumbrados a usar, pero tanto conocimiento le asusta y terminan abandonando la idea.
*Etc.

dowmore information (Ultima modificación 11 de julio):
[El video del debate]
[Inauguracion del 2do. Fonasol (Vía honeypot-tv)]
[Pagina del 2do. FONASOL]
[4to. Encuentro del mar]
[Diario el Liberal del sur, Nota 1]
[Diario el Liberal del sur, Nota 2]

Se buscan reclutas de nivel #16

Para los que quieran mejorar sus conocimientos sobre la seguridad de Internet visiten el enlace que se encuentra mas abajo. Se darán cuenta por ejemplo de que un simple JavaScript no es apto para proteger una página de inicio contra el acceso no autorizado. ISATCIS aclarará dentro de un proceso de aprendizaje que se basa en aplicar tácticas en 16 niveles de seguridad donde se insertan bugs de seguridad los cuales deben de ser pasados(Ver código fuente y cuenten como les va).



Introduction

1. On this website you have the opportunity to improve your knowledge about internet security LEGALLY.For instance simple JavaScript is unsuitable for protecting your homepage against unauthorized access.
ISATCIS will clarify it within a learning process which is based on tactical over- coming of 16 security levels where the inserted security bugs should be applied.
2. Besides, you can sign up on a guest's book specially provided for every Level.

General

1. This website is optimized for Mozilla Firefox.
2. It is strongly recommended setting your Internet browser to "Active Scripting".

Rules

1. Trying to crack (into) anything relating to ISATCIS beyond the scope of the levels is forbidden.
2. On-line brute-forcing, hammering, or otherwise requesting excessive amounts of pages from the server is forbidden. Note that this is thus NOT necessary to complete the levels.

IRC channels & online boards

1. Giving solutions to levels, passwords or any sourcecodes is forbidden.
2. Giving links to any file relating to the levels on the ISATCIS site is forbidden.
3. Giving links to tools needed for a level is forbidden.


more information[1]

Echelon spies in your pc

Sin apenas advertirlo ponemos en el ciberespacio nuestra vida, tal vez nuestros secretos más íntimos circulan por el Internet,el fax y redes conmutadas. Causa escalofrío pues el pensar que estos datos caigan en manos de desconocidos y lo que podrían hacer con ello. Más bien esto es una realidad que sucede a diario. El 5 de septiembre de 2001 el pleno del parlamento europeo declaraba la existencia de una red de espionaje operada por E.U.A., Australia , Reino unido, nueva Zelanda, Canadá y gran bretaña.

E.U.A. y Gran Bretaña ya contaban con antecedentes de cooperación en materia de espionaje desde la segunda guerra mundial al desenmascarar las claves de la computadora nazi "enigma" o la japonesa "púrpura".

Es así como en los años 70's nació la red espía ECHELON, el sistema se equipo de un software llamado diccionario que interceptaba los mensajes, y funcionaba en aquel entonces al igual que un buscador en Internet.

Cualquier fax, video llamada, correo o llamada telefónica que pase por un nodo de comunicaciones es susceptible de ser interceptado por ella.

La informática se ha convertido en un elemento sustancial de nuestras vidas, pero también se ha convertido en la puerta a través de la cual cualquiera puede vulnerar nuestra intimidad. Ahora más que nunca la información es poder. El que sea capaz de escuchar nuestras llamadas, leer nuestros correos, saber que paginas visitamos, sin lugar a dudas tiene nuestra vida en sus manos.

Report #3 - final


Analizador details: ˜#

Metric Value
------------------------------- --------
Total Files 13
Total Lines 3332
Avg Line Length 37
Code Lines 2613
Comment Lines 648
Whitespace Lines 181
Code/(Comment+Whitespace) Ratio 3.15
Code/Comment Ratio 4.03
Code/Whitespace Ratio 14.44
Code/Total Lines Ratio 0.78
Code Lines Per File 201
Comment Lines Per File 49
Whitespace Lines Per File 13


Descripción Estado

1ra. fase terminado.
2da. fase terminado.
3ra. fase terminado.

AnalizadorReport#3

Reporte #2 - Analizador


Analizador details: ˜#

Metric Value
------------------------------- --------
Total Files 13
Total Lines 2735
Avg Line Length 37
Code Lines 2132
Comment Lines 533
Whitespace Lines 159
Code/(Comment+Whitespace) Ratio 3.08
Code/Comment Ratio 4.00
Code/Whitespace Ratio 13.41
Code/Total Lines Ratio 0.78
Code Lines Per File 164
Comment Lines Per File 41
Whitespace Lines Per File 12


Descripción Estado

1ra. fase terminado.
2da. fase terminado
3ra. fase en proceso...

Cosas por hacer (index):

* Impresora estética
* Uso de JHyperlink
* Semántico

Analizador_sintactico

Sun Tech Days


Ya era tiempo de ir a uno de los eventos con ya 10 años de tradición, con una comunidad de de usuarios y desarrolladores que crecen día a día, con una muy cimentada y amplia gama de tecnologias por parte de SUN. Ahora por fin toca a México ser parte de esta serie de conferencias, talleres y platicas con los mas renombrados evangelizadores de estas tecnologías, y por supuesto que no me la pierdo por nada.

A los que no puedan asistir pues mínimo chequen los pdf's de los talleres que habrán durante los días que dura está.

De paso la comunidad de microsoft aquí en México anda muy lista con el lanzamiento de SQL server, Visual Estudio 2008... vamos haber que nos ofrece SUN Microsystems como alternativas.


[http://suntechdays.com.mx/]

NewsLetter MOTODEV mayo

| 0 comentarios

Header_mayo

Title




Tome ventaja de MOTOMAGX, la próxima generación de móviles Motorola bajo plataforma Linux, con una completa guía de desarrollo de aplicaciones Java que cubre todos los dispositivos MOTOMAGX.La guía del desarrollador MOTOMAGX describe el entorno de aplicaciones Java, yendo a fondo con la gestion de MIDlet's, seguridad, soporte de java con el apoyo de la API de Motorola entre otros temas.



arrowMOTOMAGX Developer Guide (pdf, 2 MB)
arrowMOTO Z9
arrowMOTO Z6w

Estos estudiantes si que trabajan

Estado: Semana de huelga en la escuela
Acción: N@webear, hacer tareas, preparar certificación y...

Platicando en algún canal IRC sobre JApplets java, me encontré con un grupo de estudiantes de la universidad de Arizona(EUA), después de platicar tendido y largo, me hablaron sobre un proyecto que mantienen desde hace varios años en su universidad.

Nada mas y nada menos que mantienen el servicio de un "Centro de agricultura en un ambiente controlado" , esto con la finalidad hacer un uso rentable del agua, energía, mano de obra y otras cosas inherentes a la agricultura; hacer pues una mancuerna estudiante-agricultor-sector comercial.



CEA



Entre otras cosas me hablaron del software que usan del diario en la escuela(el cual es gratuito), de los convenios que tienen con SOPHOS (antivirus gratuitos hasta el 2010) y me invitaron a revisar las webcams que tienen transmitiendo por todo el instituto; sin lugar a dudas mucha tela de donde cortar.

Carambas, proyectos como estos considero serían de gran ayuda aquí en el estado de Veracruz.

Haaa de que hablabamos...


java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.1)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at java.lang.Runtime.exit(Unknown Source)
at java.lang.System.exit(Unknown Source)
at GraphApplet.init(GraphApplet.java:210)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

http://ag.arizona.edu/ceac/tomlive/

Reporte #1 - Compilador


Compiler details: ˜#

Descripción Estado

1ra. fase terminado.
2da. fase en proceso...
3ra. fase null

Cosas que contar al respecto (index):

* Manejo de JTabel(estático y dinamico)
* Manejo de DataModel y DefaultDataModel
* Uso de HTML 3.1 dentro de JLabel
* Manejo de Regex

Cosas por hacer (index):

* Impresora estética
* Uso de JHyperlink
* Sintáctico
* Semántico

Compilador_lexico

Y siguen sin entender...

Tenia una deuda pendiente con algunos lectores, al decir en algún post que hablaría sobre estos chavos de hak.5 (hak point five - trust your technolust), pues bien todavia no lo hare, pero si planteare la siguiente situación que tiene que ver con estos chavos.

Es bien sabido que la ignorancia es la madre del gran atraso tecnológico que vive el país. ¿Por que lo digo?, bueno desde hace varios post atrás venia hablando sobre la cantidad de virus,troyanos,back door etc. potencialmente peligrosos(Si tu ignorancia lo permite) que existen hoy en día y que se propagan fácilmente mediante los dispositivos de almacenamiento portátil(Bajo WIN).
Revisando el episodio 2x03 donde "Darren" muestra una llave USB, cargada con el USB Hacksaw y que inmediatamente al conectarla al ordenador se instala silenciosamente en Win 2000 o superior. En la prueba de concepto de código se muestra la forma de entregar la carga útil al instante con un autorun U3 hack tomado de la Switchblade USB en Windows 2000 o superior a equipos funcionen como administrador o invitado, dando como resultado el acceso remoto, creación de cuentas con permisos de adminnistrador etc. todo esto se guarda en un archivo en menos de 30 segundos.

Este es el contenido de un autorun.inf

[AutoRun]
open=wscript go.vbs
icon=LaunchU3.exe,0
[Definitions]
Launchpad=LaunchPad.exe
Vtype=2
[CopyFiles]
FileNumber=1
File1=LaunchPad.zip
[Update]
URL=http://u3.sandisk.com/download/lp_installer.asp?custom=1.4.0.4&brand=cruzer
[Comment]
brand=cruzer


Segun McAfee informa que U3 Launchpad (hak5_usb_hacksaw_ver0.2poc.rar) realiza las siguientes modificaciones en el disco duro:


ADD c:\temp\unzip\readme.txt
ADD c:\temp\unzip\antidote\hacksaw--antidote.cmd
ADD c:\temp\unzip\antidote\libeay32.dll
ADD c:\temp\unzip\antidote\libssl32.dll
ADD c:\temp\unzip\antidote\stunnel-4.11.exe
ADD c:\temp\unzip\loader_u3_sandisk\cruzer-autorun.iso
ADD c:\temp\unzip\loader_u3_sandisk\LPInstaller.exe
ADD c:\temp\unzip\payload\WIP\CMD\go.cmd
ADD c:\temp\unzip\payload\WIP\SBS\blank.ico
ADD c:\temp\unzip\payload\WIP\SBS\blat.dll
ADD c:\temp\unzip\payload\WIP\SBS\blat.exe
ADD c:\temp\unzip\payload\WIP\SBS\blat.lib
ADD c:\temp\unzip\payload\WIP\SBS\libeay32.dll
ADD c:\temp\unzip\payload\WIP\SBS\libssl32.dll
ADD c:\temp\unzip\payload\WIP\SBS\openssl.exe
ADD c:\temp\unzip\payload\WIP\SBS\Rar.exe
ADD c:\temp\unzip\payload\WIP\SBS\sbs.exe
ADD c:\temp\unzip\payload\WIP\SBS\send.bat
ADD c:\temp\unzip\payload\WIP\SBS\Shortcut.exe
ADD c:\temp\unzip\payload\WIP\SBS\stunnel-4.11.exe
ADD c:\temp\unzip\payload\WIP\SBS\stunnel.conf
ADD c:\temp\unzip\source\Client.vcproj
ADD c:\temp\unzip\source\readme.txt
ADD c:\temp\unzip\source\Header Files\Core.hpp
ADD c:\temp\unzip\source\Header Files\Components\Common.hpp
ADD c:\temp\unzip\source\Header Files\Components\Singleton.hpp
ADD c:\temp\unzip\source\Header Files\Components\Tools.hpp
ADD c:\temp\unzip\source\Header Files\Miscellaneous\Settings.hpp
ADD c:\temp\unzip\source\Source Files\Core.cpp
ADD c:\temp\unzip\source\Source Files\Components\Common.cpp
ADD c:\temp\unzip\source\Source Files\Components\Singleton.inl
ADD c:\temp\unzip\source\Source Files\Components\Tools.cpp
Esto no es nada nuevo, a la fecha actual se han hecho varias versiones de estos, solo es cuestión de echarle coco y sentarse a pensar un rato el asunto de la seguridad. De ahora en adelante espero que no le saquen cuando alguien les pidan que le copien un archivo a su memoria USB


dowloand[1]
dowloand[2]

No hay nada,como trabajar desde mi ordenador

Escritorio_imagen

Nuevo proyecto

Chispas... tengo bastante trabajo este semestre en la Universidad...XD. Espero que me de tiempo para mantener este blog, uno de mis planes es desarrollar un compilador para la materia de sistemas Operativos, de mientras ya me hice de varios libros( el libro del Dragón rojo 1era edición y dragón verde 2da. edición, teoría de automatas, patrones de diseño...)







De mientras iré publicando aquí algunos datos curiosos durante el desarrollo de este, que son varios.

Ataque de red desde un enlace remoto

Hola que tal, después de una semana de desarrollar practicas para mi curso JSCP y de andar trayendo mi memoria USB 2.0 de una compu a otra en el laboratorio de la escuela, me entero que gran parte de estas tienen no un virus; mas bien es un cocktel de virus y quien sabe que porquería más (y como no, si tienen WinUE7). Al grado que ya es común escuchar al ritmo de un vals el pitido de alerta que emite el antivirus o ver las pantallas de color rojo cuando se conecta las memorias infectdas,que decir del mensaje de que la memoria virtual esta llena....XD

Asi es los ordenadores parecen una especie de zombies que en conjunto bien trabajarían como un botNet, la mayor parte de los usuarios no se detienen a pensar como frenar esto, creen que con su antivirus al día será mas que suficiente, aunque claro que no...No es muy difícil entender lo que contiene un autorun.inf dentro de una memoria. La siguiente configuración esta relacionada con software y juegos que se almacena en la siguiente clave del Registro:



Hive: HKEY_CURRENT_USER
Key: \Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\
UserChosenExecuteHandlers\AutorunINFLegacyArrival
Value: (Default)
Data:
MSAutoRun – ejecuta automáticamente el programa especificado en el archivo de autorun.inf
MSPromptEachTime – prompts the user, using strings specified in the autorun.inf file, if available


Entonces...¿Por que no deshabilitan la reproducción automatica?, y mira que no se necesitan permisos de administrador para modificar un autorun.inf

Pero la cosa no termina allí, pues hay unos troyanos modificados que permiten prácticamente a cualquiera sacar provecho de aquellas personas que dejan sus puertos USB desprotegidos. Por ejemplo, Switchblade permite volcar lo siguiente:

  • Información del sistema
  • Todos los servicios de red
  • Una lista de los puertos que escuchan
  • Todas las claves de producto de los productos de Microsoft en el equipo
  • La base de datos de contraseñas local
  • La contraseña de cualquier red inalámbrica que use el equipo
  • Todas las contraseñas de red que haya almacenado en el equipo el usuario que ha iniciado sesión
  • Contraseñas de Internet Explorer®, Messenger, Firefox y de correo electrónico
  • Los secretos de la Autoridad local de seguridad (LSA), que contienen todas las contraseñas de cuenta de servicio en texto no cifrado
  • Una lista de las revisiones instaladas
  • Un historial reciente de exploración
Todo esto formará parte de un archivo de registro de la unidad flash y tan solo tarda unos 45 segundos en completarse.

Este es un ejemplo, de autorun.inf malicioso

;was0sAO
[AutoRun]
;liZc7kkoes7kd22k3D4Z0140fsoid2l47LiHKsLpXafw2Djr3larS5ed04sK503kUDd0Af7kDkK0FwkJ8ooJkLe1rwfrLl
open=xo8wr9.exe
;4dirwkkswijrSKkASFkKd4o2a2KJ54LAo3a5oD92Sppcd34osCwrA0dqfiJZs9L1oLaKw1D33rwLO7f4k3dsjw28offsls0ww4Ka
shell\open\Command=xo8wr9.exe
;r8k4ewsw35irr9S1iidak5oLaqw4k2D3Kf1jjdn1sUKioJlAKLioami
shell\open\Default=1
;LAKiLkkw7j2jIrSsDfFqa3ADLnq2reskSLiloawii5Kl3qaDk5w9L1m2dsklwla24edOw5rlf3w3k4fJj8i
shell\explore\Command=xo8wr9.exe
;aeDAp645K5kL71J5r7aZsc3Iksoj25ak3kaAokiw7wac2dwk1pKes5rJs2disajkLll

Solo echenle un poco de coco al asunto.

Enlaces[1]

Lo nuevo de Netbeans 6.0 IDE


Lo nuevo
El lanzamiento 6.0 incluye realces significativos y nuevas características, incluyendo una infraestructura totalmente reescrita del editor, ayuda para las idiomas adicionales, nuevas características de la productividad, y un proceso simplificado de la instalación que permite que se instale y se configure fácilmente para resolver sus necesidades exactas.Se distribuye bajo dos licencias la GPL v.2 y la CDDL.


Netbeans soporta las tecnologías:
Ajax | C/C++ | Databases | Debugger | Desktop | Editor | GUI Builder | Java EE | Java ME | Java SE | Javascript | Mobile | Profiler | Refactor | REST | Rich Client Platform | Ruby | SOA | SOAP | UML | Web | WSDL | XML


cd_imgpide gratuitamente el DVD

Desinstalar en Solaris (SPARC y x86 )
1. Navegar hacia el subdirectorio “_uninst” donde se encuentra instalado NetBeans IDE
2. Ejecutar el script de desinstalación escribiendo en la línea de comando: ./uninstaller

Desinstalar en Linux
1. Navegar hacia el subdirectorio “_uninst” donde se encuentra instalado NetBeans IDE
2. Ejecutar el script de desinstalación escribiendo en la línea de comando: ./uninstaller

Newlestter MOTODEV de enero


Se ha incluido en el lanzamiento del MOTODEV Studio para Java™ ME la cual contiene una variedad de herramientas y de utilidades para una amplia gama de equipos de Motorola. Un nuevo artículo en MOTODEV proporciona las instrucciones para los desarrolladores para utilizar la herramienta MWay, para transferir y eliminar errores de los MIDlets Java en los celulares con el sistema operativo de Motorola, incluido en el MOTODEV Studio.

Motorola regularmente publica los kits libres para el desarrollo software (SDKs) en el sitio MOTODEV, incluyen todas las herramientas y documentación necesarias para desarrollar, probar y ejecutar aplicaciones Java™ ME para los celulares de Motorola. Incluido en los estos SDKs independiente una herramienta llamada MIDway, util para para que los desarrolladores transfieran MIDlets a sus celulares.

Leer más... ( pdf, 404 kb.)

Cierto para los años que corren

"Hoy en día tiene sentido hablar del ciberespacio, como de un lugar. Porque ahora la gente vive en él. No unas pocas personas, no sólo unos pocos técnicos y algunos excéntricos, sino miles de personas, personas corrientes. Y no durante poco rato, sino durante horas a lo largo de semanas, meses, años. El ciberespacio es hoy en día una Red, una Matriz de alcance internacional, que crece rápida y constantemente. Crece en tamaño, en riqueza y en importancia política.

Hay gente, cuya carrera profesional está teniendo lugar por completo en el ciberespacio. Científicos y técnicos, por supuesto; han estado allí desde hace veinte años. Pero el ciberespacio se llena cada vez más, de periodistas, médicos, abogados, artistas y empleados. La carrera profesional de los funcionarios públicos ahora tiene lugar allí, conectados a enormes bases de datos del gobierno; y lo mismo le ocurre a los espías, sean espías industriales, de agencias del gobierno, o simples fisgones; y también a los policías, al menos a unos pocos de ellos. Y ahora hay niños que viven allí.

Hay gente, que se ha conocido y se ha casado allí. Hay comunidades enteras viviendo en el ciberespacio hoy en día; charlando, cotilleando, planeando, consultándose y esquematizando, enviándose unos a otros correo de voz y correo electrónico, dándose unos a otros grandes e ingrávidos bloques de valiosos datos, legítimos e ilegítimos. Se pasan muchas veces software y a veces virus informáticos muy infecciosos. Realmente, aún no entendemos cómo vivir en el ciberespacio. Estamos buscando nuestro camino en él, tropezándonos.

No es nada sorprendente.Nuestras vidas en el mundo físico, el mundo real, también están muy lejos de ser perfectas, a pesar de tener mucha más práctica. La vida humana, la verdadera vida, es imperfecta por naturaleza y hay seres humanos en el ciberespacio. La forma en la que vivimos en el ciberespacio, es un espejo de la forma en la que vivimos en el mundo real. Llevamos con nosotros nuestras virtudes y nuestros problemas."

Fragmento de:
THE HACKER CRACKDOWN
Bruce Sterling(1994)