jueves, 8 de enero de 2015

Como Iniciar el Wargame de io.smashthestack.org (Level01)

Saludos amigos, en internet encontré este servidor http://io.smashthestack.org/ es un servidor que nos permite jugar un Wargame mediante una conexión ssh. Si utilizamos Windows es pertinente descargar PUTTY para hacer la conexión ssh. Si utilizamos Linux simplemente abrimos consola y escribimos lo siguiente:

ssh level1@io.smashthestack.org
password: level1

 Una vez dentro del juego vamos a cambiarnos a la carpeta levels con el comando  

cd /levels/

Para ejecutar el software escribimos lo siguiente

./level01

Nos solicita un passcode de 3 dígitos, bueno eso es lo que debemos encontrar. :)

Lo primero que se me vino a la mente es que puede ser un script el cual debería tener el password, así que intente abrir el archivo usando el comando

vim level01

pero no fue así :( en realidad es un archivo binario. Una vez sabido esto pues entonces hay que leer el binario. Para eso podemos utilizar la herramienta GDB Cerramos el archivo que abrimos tecleando.
:q



Para ejecutar gdb escribimos en consola:

gdb level0.1

gdb nos da una consola en donde vamos a ejecutar el comando functions para saber que   funciones tiene el programa, las mismas que vamos a desensamblar mas tarde.

info functions

nos aparece una serie de funciones, la que nos interesa es la función main, la función principal.

lo siguiente que vamos a ejecutar es el comando:

disassemble main

Esta función nos da como resultado el código en ensamblador de la función main. Aquí podemos encontrar  una instrucción llamada cmp, esta instrucción se utiliza para comparar. Vemos que tiene un numero en hexadecimal $0x10f del cual solo nos interesa la ultimas 3 cifras. estas las pasamos a formato Decimal y listo tenemos la clave.


Cerramos el gdb con la tecla q y un enter.

Finalmente volvemos a ejecutar el archivo con el comando

./level01

colocamos el pass y nos abrirá un shell con privilegio para abrir el archivo que contiene el pass del nivel 2
Escribimos en consola:

vim /home/level2/.pass

de esta manera tenemos el pass para acceder al siguiente nivel.
 Espero que les guste esta entrada y que con esta breve introducción acaben los 31 retos que se encuentran en este Wargame. Saludos y abrazos a todos.


martes, 6 de enero de 2015

Reloj, Cronometro, Alarma y Contador con interrupciones PIC16F877A (MPLABX-XC8)


Saludos amigos, a continuación les presento un proyecto que hice como trabajo en la universidad. Fue una practica para aprender a usar interrupciones del microprocesador PIC16F877A.

Como Funciona?

El circuito tiene 4 funciones principales:

Reloj:
Se utiliza un oscilador 32 Khz en los pines del Timer 1 para poder generar el clock de reloj en "tiempo real".

Alarma:
Existen dos pines para igualar el reloj y así mismo colocar una alarma. Mediante el pin RD7 se puede colocar un LED o Buzzer para que funcione como alarma.

Cronometro:
El cronometro funciona mediante el Timer 2 (hay que re-calcular el valor del timer), con los mismos botones con los que se iguala el reloj podemos:
Arrancar el Cronometro, Parar el Cronometro, Detener la Visualización, Borrar el Cronometro.

Contador:
Se puede utilizar 2 botones para hacer de contador ascendente y descendente. O también se pueden utilizar dos sensores  infrarrojos. Queda a gusto del lector.

Funcionamiento General.
Mediante el Switch se elige la función que necesitamos en el circuito RCAC.
La visualización se realiza mediante 6 displays de 7 segmentos multiplexados.

Cualquier duda por favor me la comentan, les dejo el circuito para que puedan armarlo y guiarse en el funcionamiento.

Descargar Código 
Descargar Esquema



,
                                             Esquemático del circuito
                                       Gráfica del circuito en la Baseta
                                     Circuito en Funcionamiento Reloj



sábado, 3 de enero de 2015

Calculo de constantes PID de una impresora 3D Rep Rap V2 Metodo Ziegler–Nichols

Saludos amigos, antes que nada desearles un feliz año 2015 y esperando que en este tiempo logre publicar mas informacion, bueno también depende del tiempo que me quede de la Universidad y el Trabajo. :)

Hace un tiempo atrás con un compañero de la universidad hicimos como proyecto de Teoría de Control un control PID para una impresora 3D que armamos a continuación les dejo el vídeo y la explicación del funcionamiento. Espero que sea de su agrado.

 

Para aquellas personas  que como yo prefieren leer les dejo el paper que se realizo para la presentación del proyecto. En el paper se encuentra el script para Matlab u Octave que calcula PID mediante el método de Ziegler–Nichols.

Descargar el Script Aqui