Proyecto MiCalculadora – Arbol de Expresion

 

Uno de las temas de mayor importancia en la carrera y en particular en la materia de Estructuras de Datos es precisamente el manejo de los datos en memoria de forma dinámica, para ello, se hacen uso de ciertas estructuras (pilas, colas, listas, árboles, grafos, etc.) que crecen en tiempo de ejecución y no así en tiempos de compilación, reduciendo así el tamaño de nuestras aplicaciones.

MiCalculadora – Evaluador de expresiones aritmética es una aplicación desarrollada y presentada como proyecto final en la materia de Estructuras de Datos II dirigida por el Ingeniero Gino Barroso Viruez. Este programa, para calcular el resultado de una expresión aritmética introducida por el usuario hace uso de una estructura dinámica muy particular, un Árbol binario de expresiones, que no es más que un Árbol binario. 

En un árbol binario de expresiones, cada nodo contiene la información de un elemento de la expresión (un operando o un operador) y la propia estructura del árbol viene determinada por la forma de la expresión aritmética.
 
 

 

El funcionamiento del programa se lo describe de la siguiente manera:

    • Una vez conrriendo (ejecutándose) el programa, se introduce una expresión aritmética cualquiera para ser evaluada.
    • Se procede a calcular y mostrar el resultado. Si se tubo éxito en la evaluación de la expresión, inmediatamente se muestra el resultado de la expresión (respetando paréntesis y prioridad de operadores), caso contrario se muestra un determinado mensaje de error.

Para que se entienda mejor, observar la figura en la parte superior.

La técnica de solución empleado en este problema se lo describe de la siguiente manera:

    • Se realiza un análisis léxico de la sintaxis y semántica de la expresión aritmética. Se presenta un mensaje de error en caso de encontrarse.
    • Se convierte la expresión en notación prefija (operador, operando1, operando2). Se respeta los paréntesis y prioridad de operadores.
    • A partir de la notación prefija generada por la expresión, se genera el árbol de expresión, esto se hace con la ayuda de una pila de Object (Java).
    • Una vez se tiene el árbol de expresión, se procede a evalúar en forma recursiva. Para ello, se utiliza el recorrido pre-orden.

Para tener un mejor conocimiento de la programación del programa se ha adjuntado el código fuente de las respectivas clases en la sección Programas.

Desarrollado en el leguaje de programación Java – IDE: NetBeans 6.1.

El proyecto ha sido trabajado por un equipo de 2 personas. Se agradece infinitamente a:

– Miguel Angel Miranda López

Publicado con fines educativos y de aprendizaje para la materia de Estructuras de Datos II.

Saludos.

Luis Alberto.

🙂

 

Proteger memorias USB de Software malicioso en sistemas Windows

 

Saludos. Con la extensión de dispositivos externos como memorias flash, reproductores de música y discos externos, se ha disparado la cantidad de programas con códigos maliciosos y nocivos a ellos. Es impresionante ver como el desarrollo tecnológico cambia la moda en ciertos aspectos, si bien, en un momento el disquete constituyo el dispositivo de almacenamiento portátil más empleado para el intercambio de información, hoy en día, lo constituyen las memorias flash y los discos externos. De tal manera, muchos de los creadores de códigos malignos (virus) se han fijado en estos medios para la propagación y proliferación de sus virus. Existen muchas variantes y/o técnicas para garantizar la ejecución de códigos malignos por esta vía, siendo la más utilizada y empleada, el de crear un archivo (fichero) nombrado “autorun.inf” en el directorio raíz, el cual incluye comandos especiales que ordena al sistema operativo la ejecución de ejecutables almacenados (de forma oculta) en el dispositivo USB. Así mismo, existen algunas técnicas o mecanismos para proteger tu memoria flash y evitar su posible infección, algunas de ellas son:

  • Simular la existencia del fichero, creando un archivo o carpeta en tu memoria flash cuyo nombre sea “autorun.inf” y asignándole atributos de “Solo lectura”, “Oculto” y de “sistema”.
  • Deshabilitar la reproducción automática de dispositivos, realizando algunos ajustes al sistema.
  • Abriendo la unidad de tu memoria flash de manera tal que no sea posible ejecutar el "autorun.inf".

De todas éstas formas, utilizaremos la primera, obviamente realizando algunas modificaciones ya que muchos de los creadores de virus han implementado ciertos módulos de verificación del archivo y de su contenido, e incluso la capacidad de quitarle los atributos, no solo al archivo sino también a la carpeta que hayamos denominado “autorun.inf”. Sin embargo, existe un atributo muy especial, el Atributo de Dispositivo, el cual es usado en particiones de tipo FAT o FAT32 y conocido únicamente por el sistema operativo. En este caso, si podríamos asignar este atributo al archivo autorun.inf, podríamos indicarle al sistema operativo que este archivo sería un dispositivo y por lo tanto no podría ser modificado ni borrado por ningún proceso usando la vía normal o común de escritura de archivos.

Puedes revisar más a fondo la estructura del sistema de ficheros FAT32.

Para nuestro propósito utilizaremos el Editor Hexadecimal: WinHex.

Bien, sin tanto rodeo, procedamos a preparar nuestra memoria flash para evitar su infección.

Nota: Antes de continuar con el tutorial, se recomienda tomar todos los recaudos necesarios, más aún, si no se tiene conocimientos sobre el tema.
 

1-. Lo primero que tenemos que hacer es vaciar nuestra memoria flash, seguidamente formateamos usando el sistema de archivos FAT32.

 

2.- Crear el archivo “autorun.inf” en la unidad asignada a la memoria flash. En mi caso es la unidad J: Para ello, utilizamos algún editor de texto, en este caso el Notepad.

 

 

3.-Abrimos el editor Hexadecimal. En la opción “Herramientas” (Tools), seleccionamos “Abrir Disco” (Open Disk), abrimos la unidad asignada a nuestra memoria USB.

 

Una vez abierto nuestra Unidad, vemos el contenido tal y como lo ve el Sistema Operativo. Vemos las estructuras del Boot Sector (Sector de Arranque), FAT1 y FAT2 (Tabla de asignación de archivos y copia), el Root Directory (Directorio Raíz donde se almacenan los nombres de los archivos, sus atributos, su tamaño y ubicación). Nosotros vamos a trabajar directamente sobre el Directorio Raíz, pues ubicaremos la entrada correspondiente al archivo AUTORUN.INF.

Al ubicarnos en el Directorio Raíz con nuestro editor hexadecimal al ubicar el byte 11 (Offset B), en mi caso, vemos que tiene el atributo 0×20, que indica que es un archivo de almacenamiento.

 

Bien, ubicado el valor, procederemos a cambiarlo por el valor 0x40, que es el valor de ATRIBUTO DE DISPOSITIVO, el cual se lo estaremos asignando a nuestro archivo autorun.inf

 

Esto evitara que cualquier software malicioso, incluso nosotros mismos podamos modificar, editar o eliminar el archivo autorun.inf. Por último, guardamos los cambios realizados.

 

Nota: Si quieres que el archivo autorun.inf además de tener el atributo de dispositivo, éste pueda permanecer oculto, entonces, cambia el valor 0x40, por el valor 0x42, esto ocultará el fichero.
 

Una vez efectuado los cambios en el fichero, procedamos a realizar algunas verificaciones, como editar, modificar, eliminar, cambiar el nombre, la extensión del archivo. ¿Qué sucede? Nada verdad. La idea es que ningún software malicioso pueda copiar su archivo auntorun.inf en nuestro disco y evitar que se ejecuten código malicioso. Por el momento, esta técnica es empleada en sistemas de archivos de tipo FAT y FAT32 (actualmente usadas por las memorias flash), y no así por particiones NTFS.

Saludos,

Luis Alberto 🙂

..

 

Recuperar contraseña de Administrador en Windows XP

 

Saludos.

Una de mis primeras experiencias, por no decir objetivo, fue conseguir entrar en una computadora con Windows XP como Administrador sin conocer la contraseña. En aquella oportunidad, Marcos, un amigo, se había olvidado su contraseña y necesitaba ingresar a su computadora para copiar algunos documentos, es ahí, dónde recibo la llamada solicitando mis servicios. Después de muchos intentos, muchos de ellos fracasados, logré alcanzar éste propósito.

La intención no es enseñar a entrar en computadores ajenos, todo lo contrario, la intención es por ejemplo, si algún usuario o Administrador olvida su clave o por cualquier problema no podemos ingresar (loguearnos), podría cambiar la clave por una nueva y loguearnos correctamente.

Existen muchas herramientas que nos permiten alcanzar este objetivo, pasando por Austrumi una distribución muy conocida del sistema operativo Linux, hasta llegar a CIA Comander, éste último es el que utilizaremos para llevar adelante nuestro propósito ya que presenta una interfaz más amigable con relación al Austrumi. Para ello, descarga el siguiente programa:

Descargar CIA Comander 1.0

Nota: El programa está en formato ISO y solo es compatible con Windows XP. 

Una vez descargado lo grabas directamente en un CD. Soy consciente que ya los disque´s son obsoletos y que en muchos lugares ya no se hace uso de la disquetera.

Grabada la imagen a un CD e ingresamos a la CMOS-BIOS y habilitamos que lo primero que arranque en cuanto a prioridad sea la unidad de CD, seguidamente reiniciamos, pulsar una tecla en caso que se solicite.

Después de muchas líneas de verificación acabaremos viendo la siguiente pantalla:

 De éstas cuatro opciones seleccionamos aquella que nos interese, en este caso seleccionamos User Manager:

Una vez estando en esta pantalla, nos dirigimos a la opción que dice: WINDOWS. Se recomienda leer las instrucciones descritas en la parte inferior de la pantalla.

Bien, si estas viendo esta pantalla, estamos cerca de conseguirlo. Selecciona la cuenta Administrador, ya que es la cuenta que goza de todos los privilegios con respecto a las demás cuentas. En la parte inferior se encuentran algunas opciones, como nos interesa cambiar la contraseña del Administrador, entonces pulsamos F3: ChgPwd (Cambiar contraseña), el cual nos solicita que ingresemos la nueva clave.

Ingresamos y confirmamos la nueva clave. ¡Que esta vez no se te olvide!… ¡Ya!.

Pulsamos la tecla F10, saliéndonos del menú principal sobre las cuentas. Nos mostrará las mismas opciones descritas en la primera imagen, seleccionamos la opción REBOOT (Reiniciar), inmediatamente configuramos la CMOS-BIOS para arrancar del disco duro y no así del CD.

Una vez en la pantalla de logueo, iniciaremos sección con la cuenta Administrador, y la clave será la misma que introducimos en CIA Comander.

Espero sea de mucha utilidad.

Muy pronto, otros temas interesantes.

Luis Alberto.

🙂