Sunday, April 10, 2016

Conectar DataDirect a base de datos SQL Server con usuario de Active Directorio vía ODBC

Antecedentes

DataDirect es un software del fabricante Progress el cual permite crear conexiones ODBC, JDBC, Ado.Net, con una eficiencia y performance mayor comparado por ejemplo con el driver Microsoft ODBC para SQL Servers en Linux. Así mismo es el driver que utiliza el TTU de Teradata para crear TPTs pero el punto débil sin lugar a dudas es la documentación. Desde mi punto de vista se tiene que realizar una ardua investigación tanto en su sitio oficial como en otros sitios web para poder encontrar información referente a algún problema.

En este caso, el problema en cuestión es tratar de conectar un TPT con un operador de extracción a una base de datos SQL Server utilizando un usuario de dominio.

Introducción

La conexión al servidor SQL Server desde el TPT utilizando un usuario de SQL es transparente pero al intentar utilizar un usuario de Active Directorio el problema comienza, hasta que encontramos en un foro (no oficial de Progress) los parámetros a agregar y configurar que permitan realizar la conexión al servidor SQL Server con un usuario de Active Directory.

Nota: No se coloca el link del foro debido a que no recuerdo el sitio en donde encontramos la solución.

Solución

En el archivo odbc.ini del DataDirect, se deben agregar los siguientes parámetros en la configuración de la conexión ODBC:

Parámetro a modificar:
-- AuthenticationMethod=9

Parámetro a agregar:
-- Domain={Nombre_Del_Dominio}

Con estos 2 parámetros ajustados, solamente debes realizar la conexión con el usuario (sin dominio) y la respectiva contraseña en el TPT y listo, la conexión se realiza de forma exitosa.





Sunday, October 25, 2015

Tableau | Tableau Server | Puertos a abrir en Firewall

Antecedentes

La empresa para la que ahora contribuyo tomó la decisión de adquirir Tableau y la situación con la que nos enfrentamos previo a la su instalación era la de conocer exactamente los puertos a abrir en para poder establecer conexión hacia Tableau Server vía clientes, esto debido a que el proveedor se apegaba a la documentación oficial del producto, la cual es un listado de 35 puertos a liberar, ¿en verdad?
El control de cambios, tiempo de liberación de puertos y las exigencias de área de seguridad, nos demandan liberar en una sola petición, los puertos a conectarnos desde la red corporativa al servidor de Tableau.

Introducción

Tableau es un software analítico de información, complemento del área de BI. Esta herramienta le da autonomía al usuario final para realizar sus propios análisis de información y no depender de reportes estáticos como se presentan en Repoting Services de Microsoft. 
El servidor donde se instaló se encontraba en un data center co-ubicado, el diagrama se presentaba de la siguiente forma:



Como se podrá observar, el problema era saber exactamente que puertos debíamos de abrir en el Firewall co-ubicado debido a que del otro lado tendríamos:
 - Tableau Desktop
 - Tableau Reader
 - Tebleau iPad

La documentación oficial de Tableau nos da un listado de cerca de 35 puertos que Tableau Server utiliza (ver listado de puertos), a lo que la solución se resumen en realizar una análisis de todos los puertos en un ambiente controlado.

Solución

Para determinar exactamente los puertos, procedemos a crear nuestro ambiente controlado:
  1.- Instalar y configurar Tableau en una maquina virtual.
  2.- Instalar Tableau Desktop en la maquina host para establecer conexión.
  3.- Monitorear las conexiones establecidas desde el host hasta la maquina virtual abiertas por Tableau Desktop.

Comenzamos:
1.- La instalación sobre una maquina virtual con Windows Server es sumamente sencillo, lo único que se debe de tener en cuenta es con asignar los recursos mínimos que Tableau Server requiere para ser instalado. De lo contrario el instalador no nos permitirá continuar.
2.- La instalación de Tableau Desktop es de la misma forma; sencilla. Solo damos "siguiente" a lo que nos muestra en pantalla.
3.1.- Una vez instalado, ejecutamos el comando "netstat" desde la maquina host para determinar las conexiones abiertas:


3.2.- Ejecutamos Tableau Desktop y nos conectamos al servidor


3.3.- Volvemos a revisar las conexiones establecidas pero haciendo énfasis a las conectadas al servidor virtual donde corre Tableau Server.


Conclusión

Con esto comprobamos que las conexiones abiertas por Tableau Desktop hacia Tableau Server son únicamente por el puerto http (80).

Nuestro diagrama finalmente queda:



El cual da la razón al diagrama de arquitectura de Tableau Server:


Wednesday, September 3, 2014

Parámetros y comodines (wildcards) en Excel para SQL Server Express

Antecedentes

Un día no muy lejano se me ocurrió probar la conexión entre MySQL Server y Excel, después de una conexión exitosa, decidí intentar con SQL Server. 
Instalé SQL Server Express 2008 R2 y utilicé ESF Database Migration para mover algunas tablas de MySQL a SQL Server. Todo iba bien hasta que intenté realizar algunas consultas con parámetros establecidos por el usuario desde celdas en Excel. SQL Server respondía error en la consulta pero no me daba pistas del error en especifico, por lo que busqué algún método de rastrear las consultas de SQL Server y esto fue lo que encontré...

Introducción

SQL Server (versión de paga) tiene una herramienta de nombre "SQL Server Managment Studio" (SSMS), la cual sirve para configurar y administrar las bases de datos. Dentro de estas herramientas se incluye un componente de nombre "SQL Server Profiler" el cual captura los eventos de SQL Server, y como tal; las consultas realizas. El problema llega cuando te das cuenta de que este complemento solo está disponible para la versión de paga, dejando a SQL Server Express sin posibilidad oficial de monitorear las consultas.

Solución (Monitorear consultas SQL Server Express)

Dentro de las fabulosas soluciones que se desarrollan en CodePlex, existe una herramienta de nombre ExpressProfiler, la cual está enfocada a ser un sustituto sencillo y siempre para "SQL Server Profiler" y lo mejor es que funciona para "SQL Server Express", entonces:

  1.- Descargamos e instalamos Express Pofiler.
  2.- Ejecutamos la aplicación desde (C:\Program Files (x86)\ExpressProfiler\ExpressProfiler.exe).
  3.- Seleccionamos nuestro servidor e instancia.
  4.- Damos click en "Start Trace".

Listo, con esto podemos monitorear las consultas y ajustar los parámetros de acuerdo a nuestras necesidades.

Solución (Parámetros en Excel para SQL Server)

La solución simplificada de este post, se resume en lo siguiente:

* Cómo podemos observar en Express Profiler, los parámetros en automático incluyen los entrecomillados sencillos, es decir, no es necesario agregar las comillas para los parámetros de texto o fecha.

* Para agregar los wildcards de SQL utilizamos otra celda con referencia y con la ayuda de formulas completamos nuestra consulta.

Ejemplo de consulta desde Microsoft Query:

SELECT p.nombre AS 'Proyecto', u.nombre AS 'Usuario', p.tot_solicitado AS 'Total'
FROM prota2.proyectos_internos p
INNER JOIN prota2.usuarios u ON p.usuario = u.id
INNER JOIN prota2.cuentas_b c ON p.cuenta_b = c.id
WHERE p.fecha_solicitud between ? AND ?
AND p.nombre LIKE ?
AND c.num_cuenta_b LIKE ?
AND u.nombre LIKE ?

Los parámetros editables por el usuario son (agregamos en Excel):

Fig. 1.1 - Parámetros definidos por el usuario en Excel.

Cómo se puede observar, tenemos en este ejemplo:
  - 3 Parámetros de texto.
  - 2 Parámetros de fecha (validados por una lista para evitar problemas de la información que ingrese el usuario).

Las formulas de ayuda para poder utilizar los wildcards de SQL son:

Fig. 1.2 - Formulas de ayuda para wildcards.

En el Express Profiler se puede observar la consulta como:

N'@P1 nvarchar(27),@P2 nvarchar(27),@P3 varchar(100),@P4 varchar(20),@P5 varchar(35)',N'SELECT p.nombre AS ''Proyecto'', u.nombre AS ''Usuario'', p.tot_solicitado AS ''Total''
FROM prota2.proyectos_internos p
INNER JOIN prota2.usuarios u ON p.usuario = u.id
INNER JOIN prota2.cuentas_b c ON p.cuenta_b = c.id
WHERE p.fecha_solicitud between @P1 AND @P2
AND p.nombre LIKE @P3
AND c.num_cuenta_b LIKE @P4
AND u.nombre LIKE @P5',N'20140101',N'20140927','%%','%%','%emir%'

En resumen

Los parámetros en Excel incluyen en automático los entrecomilldos y para agregar wildcards debemos utilizar formulas, como "concatenar" o "texto" para establecer formato a un valor.

Tuesday, August 26, 2014

HP Scanjet G3110 hacerlo funcionar con Mavericks

Antecedentes


Una de mis compañeras de trabajo utilizaba como herramienta de trabajo una iMac (Mid-2010), cargada

con Mavericks (10.9.4) y como parte de la renovación de equipo de computo ahora utiliza otra iMac (Late-2012) con la misma versión de Mavericks (10.9.4), no es un gran salto, pero ese no es el tema de este post. Todo funcionó correcto hasta que conectó el escaner HP Scanjet G3110, el cual no era detectado en su "nueva" maquina y en su equipo anterior funcionaba a la perfección.

Introducción


Para resolver este problema, lo primero que hice fue revisé el "reporte del sistema", con el fin de corroborar que Mavericks detectara el scanjet, por lo que pude apreciar que en el sistema operativo aparecía el escaner conectado.

Esto me hizo pensar que el problema sería de drivers. Busqué los controladores para Mavericks en la pagina oficial de HP, pero desfortunadamente encontré de Tiger a Snow Leopard.

Fig. 1.1. "System Report"

Recordando que aun tenía acceso a la maquina anterior (en donde el escaner funciona sin problemas), supuse que no habría mayor problema por obtener los drivers necesarios para Mavericks.

Solución

Mavericks utiliza el software "Image Capture" para administrar aquellos dispositivos de donde puede copiar imagenes como: iPhones, cámaras digitales y escaners. Dentro de la carpeta de la aplicación (/Library/Image Capture/), se encuentra un subfolder de nombre "Devices", la cual contenía los escaners que esa computadora había utilizado, incluyendo uno de nombre "HP Scanner.app".

Copié este paquete a la "nueva" iMac, pegandolo en el mismo directorio y "listo", pude escaner utilizando el Scanjet G3110.

Fig. 1.2. Carpeta de "Image Capture"

En resumen


1.- Descarga este paquete HPScanner.zip
2.- Descomprimelo
3.- Copia su conteniedo "HP Scanner.app" al directorio /Library/Image Capture/Devices.
   Nota: El folder /Library, es el del sistema operativo, NO el del usuario. Para visualizar el folder correcto en el "Finder", da click en el menú: Go -> Go to Folder, en la ventana que pide escribas la ruta solo teclea la diagonal invertida (sin comillas) "/", das enter y navegas a la ruta mencionada.
4.- Ejecutas "Image Capture", esperas un momento a que cargue este nuevo paquete.
5.- Listo, ahora puedes escanear con tu G3110 en Mavericks.

Fig. 1.3. HP G3110 en "Image Capture"


Nota

Dentro de este paquete, encontré que están citados los siguientes escaners:

1.- HP Scanjet G3110
2.- HP Scanjet 200
3.- HP Scanjet 8270
4.- HP Scanjet 300
5.- HP Scanjet G4010
6.- HP Scanjet N6310
7.- HP Scanjet 5590
8.- HP Scanjet G4050

En caso de que no encuentres los drivers de los dispositivos mencionados para Mavericks en la pagina oficial de HP, intenta cargar este paquete y decirnos si funciona también para el modelo en cuestión.

Monday, August 18, 2014

RV042 V3 - Recuperar después de una actualización de firmware fallida

Antecedentes

En una de las empresas hermanas para la que trabajo, se utiliza un router cisco Rv042 V3, principalmente para crear el enlace VPN entre sucursales.

Después de una fallida actualización de firmware (el router iniciaba con el led de DIAG [diagnostic] parpadeando en color rojo), por lo que solicité me mandaran el router para intentar restaurarlo.

Introducción

Encontré en los foros oficiales de Cisco que puedes iniciar el router en modo "Boot Loader" de tal forma que puedes volver a cargar el firmware via TFTP. En los posts comentan que existe una herramienta oficial de Cisco para recuperar el firmware pero desafortunamente todos los links apuntaban para el RV042 v1/v2.

Al seguir "googleando" encontré la herramienta de recuperación de firmware para la V3, en este link la puedes descargar:

Aplicando la solución oficial - fallida

La solución oficial de Cisco se detalla de la siguiente forma:

1.- Descargar la utileria de recuperación de firmware a tu computadora.
2.- Fijar tu tarjeta de red con IP fija en el siguiente rango de red: 192.168.1.0/24.
3.- Desconectar el router de la toma de corriente:
 3.1.- Presionar y mantener presionar el botón de reset.
 3.2.- Conectar el router a la tomar de corriente (manteniendo presionar el botón de reset), por 5 segundos.
4.- Realizar un ping a la IP del router (192.168.1.1) para cerciorarnos que se encuentra en modo "boot loader".
5.- Ejecutar la aplicación de recuperación de firmware (.exe).

En mi caso, llegué hasta el punto #4 con éxito, pero al intentar restaurar el firmware con la aplicación, me mostraba el siguiente error:

Firmware Rescue Utility (error).

Solución exitosa

TFTP es un protocolo de transferencia de archivos sumamente simple, se utiliza para cargar configuraciones, no requiere autenticación y funciona sobre el puerto UDP 69.

Por lo que puedes actualizar el firmware utilizando otra aplicación:

1.- Descargas TFTP32 by Ph. Jounin (Windows Vista en adelante también tiene integrado su cliente de TFTP via consola de commandos).
2.- Configuras el equipo hasta el punto #4 de la solución anterior.
3.- Ejecutas TFTP y seleccionas la pestaña "TFTP Client", para agregar los siguientes parámetros:
 3.1.- Host: 192.168.1.1
 3.2.- Local file: seleccionas la imagen del firmware que intentaste cargar (con la que comenzó todo este problema), también puedes restaurar otra versión de firmware.
  3.3.- Block size: default
4.- Das click en "PUT".
5.- Esperas a que el software cargue la imagen (se muestra una barra de progreso).

TFTP32

Una vez concluida la carga del firmware, en automático el router se reinicia, por lo que solo es cuestion de esperar a su restauración/reinicio.

Listo, hemos recuperado un RV042 V3 de una imagen de firmware dañada.

Fuentes:


  • https://supportforums.cisco.com/discussion/11080591/rv042-diag-led-blinking
  • https://supportforums.cisco.com/discussion/11081721/rv042-firmware-flash-utility

Wednesday, July 9, 2014

SQUID / No se puede acceder a Interjet

Antecedentes

Uno de los usuarios argumentó que no podía acceder a la pagina de Interjet. Este usuario utilizaba una pagina de convenio, la cual, al ingresar un código correctamente, redirecciona a una sección dentro de http://www.interjet.com.mx la cual todos los vuelos incluyen cierto  porcentaje de descuento.

Introducción

Ingresando al sitio de convenio con proxy, al rediccionar a Interjet, este manda a un sitio de nombre:
  • http://200.57.159.179/SorryPage/
El famoso "SorryPage" redirecciona a una pequeña sección de búsqueda de vuelos pero sin descuento.

Y cabe señalar que ingresando directamente al sitio de interjet con proxy redirecciona a esta misma sección de "SorryPage".

Por otro lado, ingresando al sitio de convenio sin proxy, este redirecciona correctamente a la sección de buscar vuelos con descuento, dentro del sitio web de Interjet.

Solución

Al ingresar a http://ww.interjet.com.mx, se puede apreciar que detecta el lenguaje del "User-Agent" (navegador) para desplegar sitio en el idioma y el país de compra. Lo cual no se me hace correcto, ya que es de lo más normal utilizar el navegador en otro idioma (sobre todo en Ingles).
Para esto, los programadores de Interjet hacen uso del request header "HTTP_ACCEPT_LANGUAGE".

Esto me hizo pensar en que estarían utilizando algún request header para filtrar el acceso.

Para saber que "request headers" manda SQUID, podemos utilizar un pequeño script de PHP el cual lea todos estos valores accediendo a el sin proxy y con proxy.

El sencillo script de PHP se muestra como:

// Leemos todos las variables del servidor
foreach ($_SERVER as $name => $value){ 
  if (substr($name, 0, 5) == 'HTTP_') 
               $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 
  }
// Imprimimos los resultados
var_dump($headers); 

El resultado de este script entrando desde Chrome sin proxy es:

array(8) {
  ["Accept"]=>
  string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
  ["Accept-Encoding"]=>
  string(17) "gzip,deflate,sdch"
  ["Accept-Language"]=>
  string(45) "es-419,es;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2"
  ["Cache-Control"]=>
  string(9) "max-age=0"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Cookie"]=>
  string(58) "PHPSESSID=776d3499930de3eea3027f76d3bee0ba; __atuvc=2%7C25"
  ["Host"]=>
  string(16) "paralizabal.com"
  ["User-Agent"]=>
  string(109) "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
}

Y el resultado del mismo script desde Chrome pero con proxy es:

array(10) {
  ["Accept"]=>
  string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
  ["Accept-Encoding"]=>
  string(21) "identity,gzip,deflate"
  ["Accept-Language"]=>
  string(59) "es-MX,es-ES;q=0.8,es-AR;q=0.7,es;q=0.5,en-US;q=0.3,en;q=0.2"
  ["Cache-Control"]=>
  string(14) "max-age=259200"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Cookie"]=>
  string(172) "_ga=GA1.3.1925363739.1393444304; __utma=88164442.1925363739.1393444304.1399225959.1399482628.2; __utmz=88164442.1399225959.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
  ["Host"]=>
  string(16) "paralizabal.com"
  ["User-Agent"]=>
  string(72) "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"
  ["X-Forwarded-For"]=>
  string(7) "192.168.1.100"
}

Con esto podemos apreciar que la diferencia es el encabezado "X-Forwarded-For", el cual indica la IP original del cliente conectado a un servidor web mediante un HTTP-Proxy o Load balancer, estándar sugerido, precisamente, por los desarrolladores de SQUID.

 Así que la solución final es deshabilidar este encabezado en SQUID, de forma muy sencilla, agregamos en el archivo squid.conf la siguiente línea:

forwarded_for on

Reiniciamos SQUID y listo!, podemos entrar al sitio principal de http://ww.interjet.com.mx.

Friday, July 4, 2014

Dado un string, analizarlo y convertirlo a palindrome en caso que sea posible

Antecedentes

En una entrevista de trabajo me pidieron realizar la siguiente actividad: "Desarrollar una función la cual recibirá un string, analizarlo y tratar de convertirlo a palindrome". No precisamente el string estará en el mismo orden, por ejemplo, la función puede recibir ->  SSUUG la cual en su versión palindrome sería SUGUS.

Introducción

El error que cometí fue el estar pensando en el detalle de las posibles combinaciones, en mi mente estaba:

Posibilidades de crear una palabra palindrome dependiendo su longitud

2 -> 2
3 -> 2-1
4 -> 4, 2-2
5 -> 2-2-1
6 -> 6, 4-2, 2-2-2
7 -> 6-1, 4-2-1, 2-2-2-1
8 -> 8, 6-2, 4-4, 4-2-2, 2-2-2-2
9 -> 8-1, 6-2-1, 4-4-1, 4-2-2-1, 2-2-2-2-1
10 -> 10, 8-2, 6-4, 4-4-2, 4-2-2-2-2, 2-2-2-2-2

Por lo que después de haber creado la función en base a la lógica más complicada, pensé en lo que el entrevistador me dijo al final: "Solo puede haber un fallo".

En efecto, las letras se deben presentar en pares y si se tiene 2 letras individuales diferentes, no es posible convertirla a palindrome.

Solución

La solución queda detallada de la siguiente forma:

1.- Crear un array con las letras únicas y las veces en que se repite (desde aquí se puede hacer la validación de palindrome pero yo decidí hacerlo en el paso #2).
2.- Imprimir las palabras del array en forma palindrome.

El código en javascript se ve así:




Y aquí un pequeño demo:

Thursday, June 5, 2014

Modificar archivo class de un jar sin tener el código fuente

Antecedentes


La empresa para la que trabajo realizó una activación en el estadio Omnilife, la cual tomaba fotografías con una "Samsung Galaxy Camera (Jelly Bean 4.1)", esta cámara recibía señal para el "shooting" desde una tablet "Galaxy Tab 3 (Jelly Bean 4.1)". La logística y desarrollo tecnológico lo realizó un proveedor, una de las herramientas que desarrollaron fue un "uploader" en JAVA, el cual conectaba con un pequeño webservice para tener las fotografías en un micrositio. 
El problema se presentó al tener 2 activaciones al mismo tiempo, que se verían reflejadas en 2 micrositios diferentes, por lo que se debía actualizar la ruta del webservice. Esto representaba cambiar un par de lineas de código pero el problema real era no contar con el código fuente, solo con el jar.

Introducción

El archivo JAR no es más que un zip, por lo que podemos consultar su contenido, ver su estructura, imágenes, paquetes, clases (esto último compilado) con tan solo cambiar la extensión de "jar" a "zip".

Solución

Entendiendo esto, lo que debemos hacer es:
  1. Decompilar el JAR.
  2. Guardar clase como ".java"
  3. Modificar las clases
  4. Compilar ".java"
  5. Actualizar ".class"

1.- Decompilar JAR

Una de las mejores herramientas para decompilar es "Java Decompiler" desarrollada por Emmanuel Dupuy, la cual esta disponible en 4 diferentes sabores: GUI (mi elección), Eclipse,  IntelliJ y Live Demo.
  •  Ejecutamos Java Decompiler -> Nos vamos al menú "Archivo" -> Abrir archivo -> Buscamos nuestro JAR. 
2.- Guardar clase

El programa nos muestra el código reconstruido, con esto podemos copiar toda la clase y pegarla en un nuevo archivo de texto nombre "nombreArchivo.java" y guardarlo en la misma ubicación de nuestro archivo JAR.

3.- Modificar clase


Hacemos las modificaciones de código correspondientes en nuestro archivo "java".

4.- Compilar ".java" (jarc command)

Nota: Muy importante, recomiendo colocar en la carpeta "C:\Program Files\Java\jdk1.7.0_XX\bin", los tres archivo: "jar", "java", "class". Ya que el comando "jar.exe" (que veremos en el siguiente punto) crea el archivo, dentro del jar, con la misma ruta de nuestra ubicación física.

   A) Ejecutamos la consola de windows con permisos de administrador.
   B) Nos movemos a la ubicación del "javac.exe" (c:\Program Files\Java\jdk1.7.0_XX\bin)
   C) Corremos el siguiente comando: javac -classpath nombreArchivo.jar nombreArchivo.java

5.- Actualizar ".class" (jar command)

Por último, para actualizar la clase, utilizamos el comando "jar" de java, por lo que:

   A) Ejecutamos el comando: jar uf nombreArchivo.jar nombreArchivo.class

Listo, hemos modificado código de una JAR, sin tener los fuentes.

 Referencias

  • http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html
  • http://docs.oracle.com/javase/tutorial/deployment/jar/update.html





Monday, May 5, 2014

CentOS 6 / Squid - No carga sitios que soportan ipv6

Antecedentes
Squid

Momento en el que uno se convierte en el villano de los usuarios: cuando bloqueas las redes sociales. Efectivamente, me solicitaron volver a activar el bloqueo de ciertos sitios de entretenimiento por horarios y usuarios, pero esta vez squid se comportaba de forma extraña, todos aquellos sitios que soportan ipv6 no eran cargados, por ejemplo:

 - https://www.facebook.com
 - https://www.yahoo.com
 - https://www.ipv6ready.org

Introducción

Mi configuración inicial es:
- CentOS 6.5 i686
- Squid 3.4.3
- Dansguardian 2.10.1.1

De acuerdo a la documentación de squid soporta ipv6 desde la versión 3.1.x, teniendo que agregar ciertos parámetros (en "squid.conf") para la serie de versiones (3.1.x), no así para las versiones superiores, están ya vienen integradas, siempre y cuando se compile con "--enable-ipv6".

Yo contaba con la versión de squid 3.1.10, la cual tiene documentado bugs con ipv6, por lo que decidí actualizarme a la versión 3.4.3 (23/Abril/2014).
Después de actualizar y ajustar los parámetros de "/etc/squid/squid.conf" a la nueva versión, seguía teniendo problemas para abrir sitios que soportarán ipv6, este era el síntoma en los registros:

Comando:
  - # squidclient https://www.facebook.com
       - Sending HTTP request

  - # squidclient https://www.yahoo.com
       - Sending HTTP request

Registros ("/var/log/squid/access.log"):
-TCP_MISS/301 2664 GET https://www.facebook.com - HIER_DIRECT / 2a03:2880:f00b:800:face:b00c:0:1
-TCP_MISS/301 713 GET https://www.yahoo.com:443 - HIER_DIRECT / 2001:4998:44:4:c:9102

-TCP_MISS_ABORTED/000 0 GET https://www.facebook.com - HIER_DIRECT / 2a03:2880:f00b:800:face:b00c:0:1
- TCP_MISS_ABORTED/000 0 GET https://www.yahoo.com - HIER_DIRECT / 2001:4998:44:4:c:9102

Solución

La solución en muchos foros, era: "deshabilita ivp6 del squid y de tu CentOS", "Crea un puerto para HTTP y otro para HTTPS", esto no es nada recomendable en la documentación oficial.

La solución la encontré en uno de los parámetros de "squid.conf", el cual está por default en "off":

 -  dns_v4_first on

Reincias squid y "voilà", no más TCP_MISS_ABORTED para sitios que soportan ipv6.

Referencia: http://www.squid-cache.org/Doc/config/dns_v4_first/

Wednesday, April 30, 2014

¿Por qué no puedo entrar al IDSE utilizando Chrome o Firefox?

Antecedentes

En la empresa para la que trabajo, uno de módulos del ERP que desarrollamos, genera archivos en txt para dar altas y bajas del personal de campo y una de las preguntas más comunes de los encargados de esta actividad es: "¿Por qué no puedo acceder al IDSE utilizando Chrome o Firefox?




Introducción

Dos de los navegadores más utilizados en la actualidad son Google Chrome y Mozilla Firefox, por lo que es habitual que se intente acceder al IDSE utilizando uno de estos.


Solución

Respuesta corta: 

  - Los desarrolladores del IDSE no han actualizado el código para cumplir con los nuevos (desde el 2002) lineamientos de seguridad.

Respuesta larga:

   - Vamos a revisar el código para encontrar el problema.

Dentro de la pagina del IDSE, al dar click en el botón "iniciar sesión", manda a llamar la función de javascript "Sing()", la cual en su sexta línea de código contiene:

var pkcs12 = document.firmaForm.certificado.value;


Esto quiere decir que la variable "pkcs12" contiene el nombre del certificado que seleccionamos en el input "certificado digital".

Hacemos un paréntesis en este punto, para recordar que unos de los pasos para acceder a IDSE con Internet Explorer es habilitar la opción "Incluir el directorio local cuando se suban archivo al servidor". Esto hace que la ruta de nuestro archivo se muestre como (igual que el valor de la variable "pckcs12"):

  - Internet Explorer - "C:\Usuarios\UsuarioA\Desktop\certificadoIMSS.pfx"

Por cuestiones de seguridad Chrome/Firefox no incluyen la ruta completa (me parece bastante razonable), dándole a la variable "pckcs12" el valor de:

 - Firefox - "certificadoIMSS.pfx"
 - Chrome - "C:\fakepath\certificadoIMSS.pfx"

Teniendo en cuenta esto, si tratamos de iniciar sesión nos mostrará el error:

 - "El archivo no existe o se modificó la ruta del archivo. Por favor verifique y actualice la información".

Continuamos con nuestro análisis hasta llegar a la línea 371 de uno de los applets, la cual dice:

FileInputStream localFileInputStream = new FileInputStream(paramFile);

Esta línea trata de obtener los bytes del certificado (paramFile=pckcs12) y debido a que Chrome/Firefox no incluyen la ruta absoluta, devuelve el error antes mencionado (no encuentra el archivo en la computadora del cliente).

Soluciones

Algunas de las soluciones son:

1.- Que los desarrolladores actualicen el código / La mejor opción
* La mejor pero menos probable (por los cambios que implica) es que se actualice la forma en que se realiza el "login" en el sistema IDSE, el sistema debe subir el certificado al servidor o crear un nuevo applet para "login" y así poder seleccionar al archivo desde java (no por javascript).

2.- Instalar el complemento IETab.net en Chrome / Probable
* Este complemento es un emulador de Internet Explorer, que tiene habilitada por default la opción para incluir la ruta absoluta de los archivos.

3.- Seguir utilizando Internet Explorer / No recomendable
* Con todos los problemas de seguridad no es recomendable seguir utilizando este navegador.

4.- Crear el directorio C:\fakepath / Chistoso - No recomendable
* Creando el directorio mencionado y agregando a esa ruta el certificado, Chrome pasará la ruta absoluta utilizando el "fakepath" por lo que el applet encontrará el archivo.

Thursday, November 14, 2013

Adminpaq Error 42501 al ejectuar la terminal en un usuario limitado

Antecedentes


Una pequeña empresa me contactó para apoyarla, entre otras cosas, con la configuración de Adminpaq para que corriera en sesiones con usuarios limitados y la primer palabra que se me vino a la mente al escuchar "Adminpaq" fue "problema".


Introducción

Es ampliamente conocido que lo primero que se debe hacer es darle permisos a los usuarios en el registro de windows para la entrada "Computación en Acción" y sus subentradas, esto es en:
  • HKEY_LOCAL_MACHINE -> SOFTWARE -> Computación en Acción, SA CV
Después de asignar los permisos mencionados intenté entrar y "cuack" error 42501. 

Leyendo el buscador de conocimientos en la pagina oficial me encontré con que:
  • DAR PERMISOS AL USUARIO DE WINDOWS EN EL REGEDIT O INGRESAR CON UN USUARIO CON DERECHOS DE ADMINISTRADOR
¿Dar permisos al usuario de windows en el regedit?, ¿A todo el registro ó a cuales entradas? ... ¿O ingresar con un usuario con derechos de administrador? mmmm ¿Y donde esta la solución real a mi problema?

Solución

Después revisar los permisos en el registro, firewall, variables de entorno, encontré la solución en: dar permisos al usuario en la carpeta de instalación "Adminpaq".

Finalmente, entrando con un usuario administrador, nos vamos a:
  1. C -> Archivos de Programa -> Compacw 
  2. Click con el botón derecho en "Adminpaq" -> propiedades -> pestaña seguridad
  3. Buscamos/agregamos y seleccionamos a "Usuarios" -> click en "Control Total"
  4. Aceptar
Listo!, podemos entrar a Adminpaq con un usuario limitado.



Wednesday, October 9, 2013

Comprar una laptop Dell por internet

Antecedentes


Decidí adquirir una laptop para empezar a trabajar en varios proyectos personales, pienso que el primer paso para seleccionar de mejor forma el equipo, con el que vas a trabajar por varios años, es leer reseñas en internet de los mejores portatiles en cuestión precio/rendimiento.

Por lo que todo (en ese momento) apuntó a una Ultrabook Dell 14z, no es una Alienware pero para las funciones que tengo pensadas realizas está bastante cumplidora.

Hace más de 4 años tuve la oportunidad de adquirir para una empresa una Dell XPS 13, la cual me gustó bastante pero tardó más del mes en llegar al domicilio. Pensé que esto pudiera haber cambiado dramáticamente y que Dell iba a tener una bodega en México para solo realizar envío nacional en cuanto se confirmara la compra (para equipos no configurables a nivel hardware) ... esto era solo un "tal vez".

Proceso de compra

Después de elegir el modelo en el sitio Dell, el cual no era configurable a nivel hardware, procedí a realizar el pago con tarjeta de crédito y llegar hasta el punto de finalizar la compra sin mayor problemas, concluyendo con un correo de "confirmación de orden" por Dell el 18/Sep/2013.

La intriga sobre el status de mi equipo me llevó a consultar cada 2 hrs mi cuenta en la pagina Dell, está sin presentar algún cambio hasta el 20/Sep/2013, fecha en la que recibí dos correos; uno de "mi ejecutivo" y otro de "confirmación de compra" que fue cuando me dí cuenta que apenas se había realizado el cargo a la tarjeta de crédito.

Ese último correo también trae un link a la plataforma de Dell para monitorear el proceso de tu pedido, dividido en:
  1. Procesamiento de pedidos.
  2. Previo a la producción.
  3. En producción.
  4. Enviado.

Este correo también fue el inicio de una laaaaarga espera y angustia de saber "¿Cuando tendré el equipo en mis manos?" y fue hasta el 1/Oct/2013 cuando apareció en la plataforma el nombre del transportista "KUEHNE NAGEL" y un número de guía para rastrear el envío. El sistema de esta compañia mostraba que la guia no era correcta por un lapso de 3 días, hasta que por fin el 4/Oct/2013 desplegó información acerca del envío, la cual decía que la "fecha de estimada" de entrega sería el 9/Oct/2013.

Traté de mantener la calma y no consultar la pagina de Dell/Kuehne+Nagel cada hora y fue el 7/Oct/2013 cuando recibí otro correo de Dell informandome mi número de guía el cual podría rastrear por Estafeta, si, por Estafeta y fue cuando me di cuenta que Kuehne+Nagel entrega en México y Estafeta distribuye a su destino final.

Así que ahora con Estafeta como tercera compañía encargada de entregar mi pedido, tuve cierta tranquilidad de saber que por lo menos "esta fluyendo" y con el tipo de envío "garantizado al tercer día hábil", supe que mi equipo estaría llegando a mis manos el 8 o 9/Oct/2013.

"Dicho y hecho", el miercoles 9/Oct/2013 recibí mi nuevo equipo de trabajo.

En resumen

Como lo mencioné en el tercer párrafo; pensé que el tiempo de entrega había mejorado con el paso de los años y sobre todo para los equipos no configurables a nivel hardware pero desafortunadamente no fue así:

  • Tiempo de entrega: 22 días totales o 16 días hábiles.


Friday, July 12, 2013

Redmine no envía notificaciones por correo después de actualización - An error occurred while sending mail (hostname does not match the server certificate)


Antecedentes

Decidimos actualizar nuestro administrador de proyectos web alias Redmine, de la versión 2.0.3 a 2.3.1 pero al tenerla funcionando nos dimos cuenta que las notificaciones vía email no estaban funcionando.

Introducción

Como lo mencioné, Redmine es un administrador de proyectos web, el cual esta desarrollado con el framework Ruby on Rails y lo tenemos configurado para utilizar el motor de base de datos MySQL para el almacenamiento de información.

Después de haber actualizado Ruby con sus respectivas gemas y cumplir con los requisitos para correr la versión 2.3.x de Redmine, el problema con el que nos enfrentamos es que Redmine no enviaba las notificaciones de creación/cambios de proyectos/actividades/usuarios etc.

Nota

Cabe mencionar que dentro de los logs el sistema no registrada el error conexión con el servidor de correos.

La clave es el error que aparece en la sección "enviar correo de prueba" y dice: "An error occurred while sending mail (hostname does not match the server certificate".

Solución

Action mailer cuenta con un parámetro para que pueda establecer conexión con el servidor en caso de que tenga problemas de nombre en el certificado.

La solución es tan sencilla como agregar el parametro "enable_starttls_auto: false", por lo que el archivo "configuration.yml" debe lucir como:


  • email_delivery:
    • delivery_method: :smtp
    • smtp_settings:
      • address: "smtp.example.com"
      • port: numero_puerto
      • enable_starttls_auto: false
      • domain: "example.com"
      • authentication: :"metodo sin comillas"
      • username: "username"
      • password: "contraseña"



Fuentes

  1. Redmine
  2. Ruby on Rails - Action mailer

Windows 8 - Disco 100%

Antecedentes

Instalé Windows 8 Pro x64 para probar el nuevo y "mejorado" producto de Microsoft y con esto dejar a un lado el "me han contado", "he leído" que "...". En fin, el primer problema que se presentó fue lo extremadamente lento que trabajaba y aún cuando solo estaba ejecutando 3 ó 4 aplicaciones ligeras.

Primeros Pasos

Como es obvio, mi primera idea fue abrir el "Administrador de tareas" y así poder ver cual estaba consumiendo recursos en manera desproporcionada. Por lo que:

  • CPU - 15%
  • Memoria - 69%
  • Disco - 100%
  • Red - 0%
¿Disco 100%? ... Bueno, sorprendentemente después de cerrar aplicaciones, revisar controladores, reiniciar la computadora, aplicar actualizaciones de windows y revisar el "Visor de sucesos" no encontré explicación alguna; por lo que decidí investigar en los foros pero desafortunadamente ninguna solución ayudó en mi caso.

Después de varios días de investigación y pruebas, llegué al punto de leer las "novedosas funciones" de Windows 8 y fue en donde encontré el punto clave: "Mantenimiento automático".

Según como lo describe Microsoft, el mantenimiento automático corre tareas como: actualizaciones de antivirus y escaneo, actualizaciones de Windows, desfragmentación de disco, diagnostico del sistema, etc. y estas mantenimiento automático se corre solo cuando la computadora esta en reposo y se detiene cuando entra en actividad.

Debido a la desconfianza que se ha ganado con creces Microsoft, decidí probar deshabilitando estas tareas mantenimiento y oh sorpresa!, mi disco no ha vuelto a estar al 100% (sin motivo alguno).

Solución

Al final de cuentas la solución que me funcionó fue:

  1. Deshabilitar Windows Update
  2. Deshabilitar tareas automáticas.


Para deshabilitar las tareas automáticas, debes ingresar a:
  • Panel de control -> Herramientas administrativas -> Tareas programadas.
Dentro de Tareas programas nos vamos a:
  • Librería de tareas programadas -> Microsoft -> Windows -> TareasProgramadas
Damos click con el botón derecho y marcamos "deshabilitar".


Listo!, no mas disco al 100%!

Actualización

Mi equipo mejoró en redimiendo al aplicar estos dos cambios, ahora el problema con el que me enfrenté es que el crear/mover archivos, el disco volvía a elevarse al 100% y la culpa ahora era de "Windows Search". Esta "fabulosa" herramienta que debe indexar los archivos, pues bien, para mi era solo perdida de tiempo.

Para deshabilitar el servicio de Windows Search:

  • Presionamos "Windows + R" -> escribimos "services.msc" -> OK
  • Buscamos "Windows Search" -> click con el botón derecho -> "propiedades" -> "modo de arranque" -> "deshabilitado"
  • En la sección de "estado del servicio" damos click en "Stop"
Con esto mi equipo mejoró en rendimiento considerablemente.

Wednesday, May 29, 2013

Olvido de contraseña usuario SA Contpaqi


Antecedentes

Un amigo me habló sumamente preocupado, argumentando que había restaurado su computadora a los valores de fabrica pero seleccionando la opción "guardar información del usuario", lo que no tomó en cuenta es que windows borra los programas instalados.

La preocupación principal era que utiliza las aplicaciones de computación en acción (Contpaqi, Contpaqi facturación electrónica y Nomipaqi) y lo peor, no contaba con respaldos.

Introducción

- La restauración de windows 


Al restaurar el sistema (habiendo seleccionado la opción de conservar los archivos del usuario), windows crea un directorio de nombre "windows.old" en el cual almacena los directorios como:

    • Archivos de programa
    • Usuarios
    • Windows
Y adicional a esta respeta los directorios que se crearon en la unidad de instalación.

Requisitos
  1. Instalar la misma versión que se utilizaba de las aplicaciones a restaurar, como:
    • Contpaqi facturación electrónica.
    • SQL Server 20XX Express
    • Contpaqi
    • Nomipaqi
    2.   Detener el servicio SQL Server (COMPAC)
    • SQL Server Configuration Manager -> "Servicios de SQL Server" -> SQL Server (COMPAC) -> Detener.
Nota

Para restaurar Contpaqi factura electrónica es sumamente sencillo, ya que toda la información se almacena en el directorio x:\CompacW\empresas.

Solución

Es muy sabido que Contpaqi y Nomipaqi utilizan bases de datos SQL, siendo "SQL Server Express" la versión más común. Del mismo modo, la restauración es tan sencilla (debido a que es una instancia que se encuentra Offline), como copiar el directorio de la instancia almacenada en "x:\windows.old\Program Files" a nuestra nueva ruta de instalación de SQL Server Express. Las cuales están en "x:\Program Files\Microsoft SQL Server\MSSQLXX.COMPAC".

Puedes consultar más información en este link - ubicación de archivos y nombre de instancias.

Uno de los problemas más fuertes al restaurar una instancia es recordar la contraseña del usuario SA (system administrator) que se encuentra en la "master database".

Lo más sencillo es reemplazar la contraseña siguiendo estos pasos:

  1. Iniciamos el servicio "SQL Server (COMPAC)".
  2. Abrimos la consola de windows.
  3. Escribimos los siguientes comandos (presionamos enter en cada línea): 
    • sqlcmd -S nombreservidor\COMPAC
    • ALTER LOGIN sa WITH PASSWORD = 'nueva_contraseña';
    • GO
    • EXIT



Nota 

También se puede utilizar "sp_password", aunque con la nota que Microsoft dice que este será quitado en futuras versiónes (posteriores a SQL Server 2012).

Probamos la conexión

Una vez que cambiamos la contraseña vamos a intentamos conectarnos via la misma consola de windows, con los siguientes comandos:

  • osql -U sa -S nombreservidor\COMPAC
  • ingresa contraseña
  • En caso de conectarnos con exito escribrimos exit.
Listo!, con estos pequeños pasos hemos cambiamos la contraseña del sa.

Links



Tuesday, May 21, 2013

SUA - ERROR "13" EN TIEMPO DE EJECUCIÓN: NO COINCIDEN LOS TIPOS


Antecedentes

Un día me habló muy angustiada una persona de RRHH de la empresa para la que trabajo, comentándome que el SUA le daba un error al calcular un pago extemporáneo. El error era el siguiente: "error '13' en tiempo de ejecución: no coinciden los tipos".
Después de hacerle varías preguntas me dijo que ya había hablado por teléfono al soporte técnico del IMSS, en donde le pidieron hacer lo siguiente:

 - Verificar que la computadora este configurada con los estándares y formatos de acuerdo a como fue programado el SUA. 

Por lo general basta con fijar la computadora con el estándar "Español (México)", tal y como se detalla en las preguntas frecuentes del SUA.

A nosotros no nos funcionó esta solución y la respuesta de soporte técnico fue: "mándanos un correo con el error y datos generales de tu empresa, de 24 a 48 hrs tendrás respuesta".

Solución (SUA v3.4.0)

Me di cuenta que al momento de estar generando el pago, el sistema valida los números de crédito infonavit, el cual se compone de 9 dígitos + 1 número verificador.

Primeros pasos

  1. Respaldar SUA.
    • Como normal general, antes que nada debemos tener respaldo de cualquier archivo/fichero que   vayamos a modificar.

Paso a paso 

Este es el método más sencillo para corregir el error:

  1. Obtener un listado de las personas con crédito infonavit.
    • Esto se realiza en: SUA -> Reportes -> Análisis de información -> "Verificación de acreditados" -> seleccionamos el bimestre del mes que nos muestra el error.
  2. Buscamos los empleados con número de crédito incorrecto.
  3. Corregimos los movimientos de los empleados.
    • SUA -> Trabajadores -> buscamos al empleado -> eliminamos movimientos y los capturamos de nuevo.

El método que utilicé es el siguiente:
  1. Abrir la base de datos del SUA en Microsoft Access (obvio tiene contraseña para mayor "seguridad").
  2. Buscar en la tabla "Movtos" los registros en los que el campo "Num_Cre" sea menor a 10 caracteres.
    • Yo utilicé este query: SELECT * FROM Movtos WHERE LEN(Num_Cre) < 10;
    • Cuidado con los múltiples registros patronales.
  3. Le mandamos a RRHH el resultado para que nos valide los números de crédito.
  4. Actualizamos la información en Access. 

Listo!, Calculamos de nuevo y esta vez no debe presentar error.





Wednesday, April 24, 2013

Configurar router Tenda 3G611R+ - Movistar 3G USB México


Antecedentes

Mi hermano contrató una BAM de prepago con Movistar, modelo ZTE MF193, la cual utilizaba sólo en su Laptop, hasta que un día pensó compartir el internet 3G a cualquier dispositivo WiFi.

Solución

El método más sencillo para crear una red y compartir el Internet 3G es con un router que permita conectar un dongle USB 3G para configurarlo en el WAN del router.

En México puedes encontrar el router Tenda 3G611R+ a un precio muy accesible ($400.00 pesos + iva).

Configuración

Por un momento pensé que la configuración iba a ser dificil pero en realidad es "pan comido".

1.- Actualizar el firmware del router.
  - Recomiendo ampliamente actualizar el firmware de cualquier nuevo router que compremos, la tendencia es: entre más actualizados estemos menores errores de software tendremos.
   1.1.- Entramos vía web a la configuración del router. La dirección por defecto es http://192.168.0.1
   1.2.- Nos vamos a System Tools -> Upgrade.
   1.3.- La versión que utilice es la H2_V3.5.0d_EN (2013/02/04).

 2.- Restaurar valores de frabrica.
   - Despues de actualizar restauramos los valores de fabrica para asegurarnos que no tendremos problemas de parametros con el nuevo cargado de firmware.
   2.1.- Volvemos a entrar vía web.
   2.2.- System Tools -> Restore to factory ó presionamos con un clip por 10 segundos el botón de reset (ubicado en la parte posterior del router).

  3.- Listo!
   - Conectamos nuestra BAM USB, esperamos a que se conecte a la red de Movistar y navegamos en cualquier dispositivo que se conecte al router.

Sin configuraciones adicionales para el 3G, solo conectamos y navegamos.



Sunday, April 14, 2013

Nokia Asha 306 / Nokia 5310 - Olvido de contraseña de seguridad (bloqueo de teléfono)





Antecedentes

Después de una jornada laboral ardua, una de mis compañeras rumbo a su casa, tuvo la idea de ponerle contraseña a su teléfono Nokia Asha 306, lo que no tuvo en cuenta fue lo más importante; fijar una contraseña sea fácil de recordar ó apuntarla en algún otro medio.


Con el problema que nunca recordó la contraseña de su teléfono, tuvo que llevarlo a plaza de la computación, Telcel y otros centros de reparación de mobiles; sin éxito alguno.

Decidí ayudarla haciendo un poco de investigación y esto fue lo que encontré.

Información

No encontré información alguna que dijera como borrar la contraseña de seguridad, ni utilizando el Nokia PC Suite, Nokie Software Updater ó algún otro software y el principal problema es al conectarlo a la computadora, no puedes seleccionar el tipo de conexión (tiene que estar desbloqueado por seguridad). No existe código físico alguno que borre el código de seguridad; como encender el teléfono dejando presionado el botón de home + volumen, etc.

Existe un método utilizando el software NSS Pro pero requieres de la ayuda de hardware, la cual yo decidí no seguir este camino.

Solución

Flashear el teléfono.

Notas

Nokia Asha 306 utiliza la plataforma S40 (no Symbian) y me atrevería a decir que esta solución aplica para toda la línea Asha.

Actualización

Este mismo procedimiento funciona para el Nokia 5310 Express Music



Pasos


- Descargar firmware para Nokia Asha.
- Flashear teléfono.

Advertencia


1.- Pedí autorización para flashear el teléfono, ya que al ser una operación de cargado de sistema operativo, existe riesgo quedo quede bien flasheado lo cual involucra un proceso más avanzado de recuperación.

2.- Claro esta que al flashear el teléfono se perderá toda la información.

Requerimientos


- Batería del teléfono cargada mínimo al 50% pero recomiendo que sea al 100%.
- Nokia PC Suite. Software oficial de Nokia para primero instalar los drivers del teléfono y después nos da varias opciones de respaldo e instalación de aplicaciones.

- NaviFirm Plus. Un excelente programa para descargar firmwares Nokia.
- Nokia Phoenix Service Software. Aplicación de Nokia para testeo y servicio. (No agrego link para descarga por desconocimiento de los derechos de uso).

Tiempo aproximado


El tiempo aproximado desde que conseguimos los requerimientos, instalamos, descargamos firmware y hasta que flasheamos el teléfono es de aproximadamente 60 min.


Comenzamos


- Teléfono desconectado de la computadora, apagado, sin chip, sin la memoria SD y con los requerimientos antes mencionados instalados.



1.- Ejecutamos NaviFirm Plus y buscamos nuestro celular Nokia Asha 306, firmware conocido como (RM-768). NaviFirm cambio de desarrollador y para acceso al listado completo de firmwares debes hacer una donación.  En caso de que no quieras donar, debes buscar por código de producto (se encuentra en una etiqueta detrás de la batería).

1.1.- Una vez seleccionado encontraremos que cuenta con 3 firmwares. En lo personal utilicé la 5.93 (por default Telcel utiliza 3.81) pero esta nueva versión esta optimizada.
1.2.- Al seleccionar la versión nos aparece el listado de los archivos que componen el firmware. Seleccionas todo a excepción de la imagen de la memory card (1 GB), y damos click en "Download".
1.3.- Por defecto esta descarga se va a realizar dentro de la carpeta de nombre "FW", de donde ejecutamos esta aplicación y se guardará con el nombre de producto.
1.4.- Una vez completada la descarga copiamos la carpeta del firmware a la carpeta de instalación de Nokia Phoenix -> Products.
1.5.- Renombramos la carpeta al código de nuestro producto, en este caso RM-768.

2.- Ejecutamos Nokia Phoenix
2.1- Nos vamos a File -> Open Product
2.2.- Seleccionamos nuestro producto RM-768
2.3.- Damos click en Flashing -> Firmware Update
2.4.- En la ventana emergente damos click en el botón con los tres punto " ... " y damos doble click sobre nuestro producto. En este caso 059Q8K9.
2.5.- Seleccionamos la opción "Dead phone USB flashing".
2.6.- Click en "Options" y el sistema realizará una busqueda de los elementos del firmware, seleccionamos el elemento en rojo (que es el de la memory card que no descargamos) y damos click en "delete" y aceptar.
2.7.- Por último seleccionamos la opción "Refurbish" y seguimos los pasos que nos dice la aplicación  para que detecte el teléfono y comience a flashearlo.

Listo, tenemos nuestro teléfono Nokia Asha 306 funcionando.


Adicional


Una vez flasheado tuve que configurar los parámetros generales del APN de Telcel para poder navegar por internet vía dicho proveedor (esto se configura en el teléfono y lo dejo en tus manos), aun que cabe mencionar que sin haber configurado estos parámetros de (internet, mms, wrap), pude hablar y mensajear sin problemas.