19 feb 2009

PL/SQL Usar MD5 en un trigger

Hola!!

Estamos desarrollando una nueva solucion de intranet, y necesitabamos almacenar las contraseñas de usuarios en un entorno "Relativamente" seguro. Por lo que se decidio dejarlas en la BDD con MD5 y realizar la validacion cada vez que el usuario envia la contraseña.

Para optimizar el proceso, todos los usuarios tendrian de clave inicial una palabra comun y ellos en su primer acceso tendrian que actualizarla.

Para que este proceso se llevara a cabo a nivel de base de datos y no de WEB se utilizaria la funcion DBMS_OBFUSCATION_TOOLKIT.MD5. Sin embargo truco para usar esta funcion es que hay que forzar el descriptor del parametro, de lo contrario Oracle envia el mensaje:

PLS-00307: too many declarations of 'MD5' match this call

Esto se debe a que hay dos declaraciones de la misma funcion con el tipo de ingreso.
1. DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT: RAW)
2. DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING: VARCHAR2)

SOLUCION: Forzar el tipo de parametro que recibira la funcion.
DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>'usuario');

Aca les dejo todo el trigger por si les sirve de referencia:

create or replace trigger "TABLA1_BI"
BEFORE insert on "TABLA1" for each row
declare
raw_data VARCHAR2(100);
texto_cifrado VARCHAR2(100);
begin
--Convierte la cadena DOSPINOS a MD5
raw_data :=
DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>'usuario');
--Convierte el MD5
crudo a datos legibles
select lower(rawtohex(raw_data)) into texto_cifrado
from dual;
--Asigna al nuevo campo el dato en MD5 legible
:new.password
:= texto_cifrado;
--imprime el debug para ver que devuelve la funcion
--DBMS_OUTPUT.put_line('texto_cifrado 'texto_cifrado);
end;

Las fuentes que use de ejemplo estan Aqui y Aqui

14 ene 2009

Error en Excel al leer CSV


Hola!!

El dia de hoy estuvimos trabajando unos datos y al exportarlos como CSV el excel no los leia correctamente.

Segun la Wikipedia un CSV se define como: Los ficheros CSV (del inglés comma-separated values) son un tipo de documento sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal: España, Francia, Italia...) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles.

El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas veces al abrir el fichero, por ejemplo, con una hoja de cálculo.

Los sintomas eran:
- Al abrirlo lo mostraba todo en una celda
- Al guardarlo usaba como separador de campos un punto y coma en lugar de una coma.

La solucion es bastante sencilla:
0. Vayan al Panel de Control
1. Seleccionen Configuracion Regional y de Idioma
2. Seleccionen el boton PERSONALIZAR que esta junto al lenguaje.
3. En la nueva ventana busque la opcion SEPARADOR DE LISTAS y cambien en ; por una ,
4. Acepten y apliquen todo hasta regresar al panel de control

Listo!! con eso deberian de poder manejar los CSV normalmente.

5 ene 2009

Compactar un archivo PST

Hola!!

Buenos dias, Feliz 2009!!

Una practica muy comun al inicio de año para los que usamos Outlook es trasladar todo el correo del año anterior a un PST secundario, sin embargo al realizar esto se corre el riesgo que en lugar de reducir el espacio en disco dupliquemos el mismo.

Para compactar un PST despues de mover y eliminar los correos deseados hay que realizar lo siguiente:
1. En el menú Archivo, haga clic en Administración de archivos de datos.
2. Haga clic en el archivo de datos que desea compactar y, después, en Configuración.
3. Haga clic en Compactar ahora.

Despues de realizar esto no es necesario reiniciar el outlook.

Espero les sirva

La fuente esta aca

19 dic 2008

Como convertir videos 3gp a un formato de PC


Hola!!

Hoy estuve navegando un poco por el internet, ya que a solicitud de un amigo queria pasar sus videos tomados con el telefono a su PC para poder verlos.

Sin embargo al ser archivos 3GP su PC no los reconocia, por lo que no podia verlos.

Aqui teniamos dos opciones.

1. Instalar el Quick Time Player que permite ver los archivos 3GP
2. Buscar un convertidor para pasarlo de 3gp a AVI, MPG o WMV

Al final nos fuimos por la segunda opcion y despues de probar varios Freeware y Demos llegamos a la conclusion que el mejor es Coyote Video Converter.

Este requiere de 3 pasos.
1. Seleccione los archivos que desea convertir
2. Configure el formato de salida y la carpeta donde los desea guardar.
3. Presione convertir.

Y listo!!

Consideraciones Finales:
1. La mayoria de telefonos toman los videos en resolucion QVGA, esto significa que lo toman en un cuarto de VGA(640 X 480) entonces la resolucion maxima es 320 X 240.
2. Hay que probar los diferentes codecs al momento de convertir el video, puede ser que aparezcan cuadros de colores o cosas extrañas, no se daño su archivo, solo hay que cambiar de codec.
3. Se debe de investigar cual es la resolucion maxima de video del telefono y seleccionar esa al momento de convertirlos para mantener la relacion de aspecto.

El homepage del software esta aqui
Puedes descargar directamente el Programa aqui

18 dic 2008

Muchas Gracias!! / Thank You !!

Hola!! Cuando inicie este blog esperaba mi meta era ayudar a algunos usuarios, pero hoy revisando las estadisticas veo que ya hay mas de 11,000 hits!! eso para mi es todo un logro, y espero que al menos el 10% haya encontrado util la informacion que he posteado aqui.

--------------------------------------------------

Hi!! When I started this blog, my goal was to help a few users, but today checking my stats I see more tan 11,000 hits!! For me this is great news, and I hope that at least 10% found the information that I posted here useful.

9 dic 2008

PL/SQL Recorrer un cursor

Buenos dias,

Cuando se esta realizando un recorrido sobre un cursor en PL/SQL un metodo practico de realizarlo es a traves de LOOP ... END LOOP. Para el caso de la variable que contendra el registro activo, esta se define en la creacion del ciclo y para utilizar los datos se maneja variable.dato (ej. c.nombre)


FOR d IN c_descuentos LOOP
   --El cursor que vamos a recorrer es C_DESCUENTOS
   --El registro activo esta en la variable d
   insert into hist_descuentos(codigo,fecha_inicio,fecha_fin)
   values(d.cod,d.fini,d.ffin);
END LOOP; -- Descuentos


los LOOP se pueden usar anidados siempre tomando en cuenta el scope de cada cursor, para que no les de un problema de acceso a datos o un comportamiento inesperado.

La referencia en ingles esta aca

PL/SQL Cursores

Buenos dias,

Los cursores en Oracle pueden ser de varios tipos, sin embargo los dos mas usados son:
1. Cursores implicitos: Son aquellos que devuelven un unico valor usando SELECT INTO.
Select nombre into V_nombre
from VNT_empleado
where cod_empleado = '123321';

2. Cursores explicitos: Son aquellos quedevuelven un conjunto de registros, puden o no contener parametros para filtrar el contenido que devuelven.  Utilizan la instruccion CURSOR IS
Cursor C_empleados is
Select cod_empleado, nombre, area
from VNT_empleado
where cod_area in ('01','03');
Para poder crear un cursor con parametros estos se deben de definir en el encabezado de la instruccion CURSOR NOMBRE(PARAMETROS) IS
Cursor C_empleados(p_compania in varchar2) is
Select cod_empleado, nombre, area
from VNT_empleado
where cod_compania = p_compania;

Espero les sea de utilidad, cualquier cosa no duden en escribirme

Hay todo un manual muy completo de cursores aca

3 nov 2008

Activar / Desactivar USB Drives

Hola!!

Por requerimientos de seguridad en mi oficina, me requirieron fuera deshabilitado el uso de Memorias USB o discos USB en las PCs.

Despues de buscar un rato, la solucion es mas sencilla de lo que parece.

1. Abrir el REGEDIT

2. Buscar la llave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor

3. Al dar doble Click los valores son (3 = Activado, 4 = Desactivado)

PD. Si no desean modificarlo manual, adjunto el RAR con los dos REGISTROS aqui

El documento original esta aqui

31 oct 2008

Virus USB Autorun.inf

Hola!!

Hoy fue dia de pelear con los malware, alguien entro una USB contaminada y causo un caos en la oficina.

Los sintomas son:

1. Cuanto la USB ejecuta el autorun lo reconoce como un programa

    Advertencia: si le dan en OK el programa se copia a su disco duro y se registra como un servicio

2. Deshabilita los archivos ocultos en la USB para que no se puedan modificar

3. El programa crea un archivo y una carpeta en el USB (RECYCLER y Autorun.inf)

4. El Autorun.inf debe de tener un texto similar al siguiente

[autorun]
open=RECYCLER\S-1-6-21-2434476501-1644491937-600003330-1213\plzrunmes.exe
icon=%SystemRoot%\system32\SHELL32.dll,4
action=Open folder to view files
shell\open=Open
shell\open\command=RECYCLER\S-1-6-21-2434476501-1644491937-600003330-1213\plzrunmes.exe
shell\open\default=1

Solucion:

1. Habilitar la opcion de ver archivos ocultos 

Mi PC - Opciones de Carpeta - Ver - Mostrar todos los archivos y carpetas ocultos

2. Pueden usar un programa como RegUnlocker

Si no lo consiguen me avisan y lo posteo

3. Abrir el administrador de tareas

CTRL+ALT+DEL

Administrador de tareas

4. Buscar el servicio SHCHOST.EXE (ojo: los servicios de Windows son SVCHOST.EXE)

5. Terminar el proceso

6. Buscar en el disco C: los archivos "shchost.exe; Exploider.h" Y eliminarlos

7. Para verificar que todo funciona normalmente conecte de nuevo un USB y verificar que no cree la carpeta y el archivo.

Espero les sirva!!

Fuente en ingles AQUI

18 oct 2008

Error en Compaq V3317la



Hola!!


Desde hace algun tiempo estuve desconectado del blog, pero ya estoy de regreso...


Hace poco mas de un año compre una Compaq V3317LA y que casualidad, despues de que se vencio la garantia empezo a dar problemas... :'(


Los sintomas son los siguientes:

1. La maquina no detecta la tarjeta inalambrica (el indicador a la par del switch siempre aparece naranja)

2. Cuando se reinicia o se enciende no da señal de video.

3. Evenualmente se puede trabar durante el arranque.


Solucion:


Actualizar el bios segun un articulo publicado en el site de HP


1. Descargar el ejecutable

2. Ejecutarlo como Administrador

3. Cuando le pregunte si desea sobreescribir el BIOS dar click en YES


El proceso actualiza 16 bloques del bios y deja una copia del anterior en un archivo .BAK


El exe lo pueden descargar AQUI


El link original donde yo vi el reporte esta AQUI


Espero que les sirva, almenos a mi me funciono.