Implementando un Hard-Reset por código en Windows Mobile 6.x

Un tema bastante peliagudo en los tiempos que corren es el de la seguridad de los datos que almacenamos en nuestras aplicaciones, sobre todo cuando hablamos de aplicaciones de gestión empresarial, en las cuales almacenamos datos confidenciales de nuestros clientes, como facturación, deudas, compras habituales…

Si bien es cierto que si en nuestra empresa contamos con un servidor Exchange podemos forzar el borrado remoto, también es cierto que hasta que no nos demos cuenta de que el dispositivo ha “cambiado” de dueño no podremos dar dicha orden.

Aquí os dejo un ejemplo muy simple de como implementar el hard-reset del dispositivo para Windows Mobile 6.x utilizando el sistema de aprovisionamiento OMA Client.

Este sistema nos permite configurar nuestros dispositivos, desde agregar enlaces a la lista de favoritos del Explorer, hasta el ejecutar el borrado mediante Hard-Reset de nuestro dispositivo, esto último es lo que ha propiciado la redacción de este post.

Para ello es tan sencillo como componer el documento XML correspondiente.

<wap-provisioningdoc>
  <characteristic type=”RemoteWipe”>
      <parm name=”doWipe” value=”1″/>
  </characteristic>
</wap-provisioningdoc>

En este documento vemos que vamos a ejecutar la característica RemoteWipe y como parámetro le especificamos la acción doWipe.

Como ejecutamos esto desde nuestra aplicación, muy sencillo, para ello utilizaremos el método ProcessConfiguration esta clase se encuentra dentro del ensamblado Microsoft.WindowsMobile.Configuration por lo que deberemos agregar este nombre de espacio como referencia a nuestro proyecto.

Éste método tiene dos parámetros, veamos la sintaxis:

XmlDocument ProcessConfiguration (XmlDocument configDoc,bool metadata)

Donde configDoc será el documento XML con el que se aprovisionará nuestro dispositivo, y con el parámetro de metadata especificamos si vamos a recoger la respuesta, este último parámetro es muy útil si queremos controlar los errores que se puedan producir o por si el archivo de aprovisionamiento debe generar una salida, como puede ser por haber realizado algún tipo de consulta.

Una vez visto esto vamos a por el ejemplo:

public bool doWipe()
{
string WipeCSP = @”<wap-provisioningdoc>
                    <characteristic type=’RemoteWipe’>
                    <parm name=’doWipe’ value=’1’/>
                    </characteristic>
                   </wap-provisioningdoc>”;

//Documento en el que almacenaremos la respuesta
System.Xml.XmlDocument xmlDocRes;

//Documento donde cargaremos el xml de aprovisionamiento

XmlDocument configDoc = new XmlDocument();
configDoc.LoadXml(WipeCSP);

//Llamada al configuration manager
xmlDocRes = ConfigurationManager.ProcessConfiguration(configDoc, true);

//TODO: aquí iría el procesamiento del documento de retorno
return true;
}

Ojo que esto solo es valido para dispositivos con Windows Mobile 6.0 o superior no funciona en Windows Mobile 5.0 ni en Windows Mobile 2003.

Otro tema importante es que, muy bien, ya he flaseado la PDA pero que pasa con mi tarjeta de almacenamiento… y es que muchas veces los datos guardados en la tarjeta de memoria de nuestro dispositivo es mucho más importante que el contenido de la propia PDA, bien porque la aplicación guarde los datos en la tarjeta de memoria (bien porque hayamos hechos fotos comprometedoras que no queremos que nadie vea jeje) a partir de Windows Mobile 6.1 también es posible forzar el cifrado de la tarjeta SD utilizando el mismo sistema que hemos implementado para realizar el reset de la pda, tan solo hemos de utilizar el siguiente xml de aprovisionamiento y listo.

<wap-provisioningdoc>
<characteristic type=”MobileEncryption”>
   <parm name=”Enable” value=”1″ />
</characteristic>
</wap-provisioningdoc>

Con esto y un bizcocho aquí os dejo un listado de enlaces para los que estéis interesados en investigar un poquito más en el tema del aprovisionamiento de los dispositivos móviles.

Understanding Provisioning (MSDN)

Options for Delivering Provisioning XML Files to Windows Mobile-Based Devices

Ejecutando archivos de aprovisionamiento desde nativo c++

Como final, desearos a todos una felices fiestas, ya que a muchos no nos ha tocado la lotería, nos seguiremos viendo por aqui.

¡Un saludo!

José Antonio Gallego

Mobile .NET Users Group

10 comentarios en “Implementando un Hard-Reset por código en Windows Mobile 6.x”

  1. Hola, buenas noches. Si no es mucha molestia, quisiera consultarte si tu sabes como puedo forzar el inicio de WM de mi Palm Treo 750 sin tener que hacer un hard reset, para no perder la información que está en la memoria de la Palm. Muchisimas gracias por anticipado.

  2. Para hacer un soft reset de ese modelo tienes que abrir la puerta de la tarjeta miniSD (que está en un laterar), y hacer clic con el puntero en el pequeño agujero que hay en la parte izquierda (si tienes la pda con la pantalla hacia arriba), el agujerio esta sobre una de las patillas de la tapa.

  3. Muchas gracias, José Antonio. Posiblemnte no me expliqué correctamente. El problema es que con soft reset no me reinicia el WM, queda sin terminar de cargar la pantalla inicial de Palm. Y si doy hard reset, pierdo toda la informacion (sin respaldar!) 🙁 Por eso es que te consultaba si sabias algun comando, script, u otra cualquier forma de forzar el inicio del WM… En definitiva, cualquier opcion que me salve de perder la informacion que esta en memoria!!!!!!!!!!. Mil gracias de nuevo!!!!!!!!!.

  4. hace 4 dias compre un widows mobile, el lg gm750, tenia un menu bastante complicado y quise poner spb pocket plus, y el teléfono se ha muerto. al encender carga la pantalla de windows mobile y la de vodafone y ahí se queda, el ordenador y el no se reconocen. vaya, ni se ven. Alguna sugerencia?

  5. @Jose: Has probado a hacerle un HardReset?

    1 Apaga la pda

    2 manten pulsadas las teclas “volumen abajo”, “camara” y “encendido /apagado” en secuencia (no hace falta ponerse a la pata coja)

    Manten las teclas pulsadas hasta que se encienda la pantalla LCD. (paciencia son unos segundos)

    3 Debería aparecer la pantalla de alineación al encencerse, si no aparece repite el proceso.

    Ya me contarás…

  6. buenos dias tocayo, he probado ha pulsar las teclas esas y en secuencia nada de nada, pero las tres a la vez… me ha salido una pantalla toda negra que dice “! emergency download”. voy a dejar el aparato un par de horas o tres y a ver si así se recupera. luego te cuento.

  7. eiiiiiiii! EUREKA! 😉 era de noche, estaba oscuro y había apretado otra tecla que no se bien para que es (no veo muy bien). pero el que saliera una pantalla diferente me dió ánimos a reintentar probando combinaciones. Y al final era la que tu decias, todas a la vez varios segundos y sin hacer caso de cuando sale la pantalla de windows mobile. ozú, que zuzto!
    Si estuvieras por aqui nos bebíamos una o dos botellitas de licor de cafe ruavieja de ese que gastais por ahí arriba. Mil Gracias!!!!!

  8. Estimado le consulto si usted sabe como realizar un hard reset para un gps motorola motonav tn20 he buscado como loko y no encuentro nada, solo un codigo en visual basic que en realidad no se como llevarlo a cabo, si usted me pudiera orientar un poco seria genial y se lo agradeceria bastante y si hubiese algun tipo de combinacion de teclas seria mucho mejor….muchas gracias.

  9. me anoto con un master reset por hardware para un tn20 de motorola. Al intentar actualizar el software algo hice mal y ahora al encender muestra una cruz roja

    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *