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


lunes, 10 de noviembre de 2014

Frecuencímetro Basico en XC8 PIC18f4550

Saludos amigos, despues de un tiempo un tanto intenso regreso al blog para compartirles un pequeño proyecto que desarrolle para la U.

Como el titulo indica es una frecuencimetro muy basico pero funciona bastante bien. tiene un error maximo porcentual de 0.07%, a bajas fecuencias no tiene error pero el error aumenta conforme existe mas frecuencia de entrada.

La visualizacion se la hace mediante un LCD Dogm 163, ( en post anteriores les deje la libreria respectiva)

¿Como funciona?
Se conecta una generador de frecuencias al pic mediante el pin RA4/T0CKI y se conecta un lcd.
El frecuencimetro funciona con el contador del timer0 a 16 bits esto permite recoger valores de 2^16 hertz alrededor de 65Khz.

Como generador de frecuencias uso una tarjeta NI myDAQ de National Instuments, yo se que algunos diran que eso no se software libre y es cierto, al menos para utilizar dicho instrumento necesito de cambiarde de sistema operativo. (Aunque en el blog de vez en cuanto tocare herramientas no libres como esta)

YA ES HORA QUE NATIONAL INSTRUMENTS DE SOPORTE PARA GNU/LINUX!!!
En fin espero que les sirva

Descarga el Codigo


domingo, 2 de noviembre de 2014

Configurando MPLABX con PICKIT3 (Fuente de Alimentacion)

Saludos les traigo un mini tutorial de como se debe configurar inicialmente el MPLABX para que el mismo funcione como fuente y programador.

1) Creamos un nuevo proyecto, escogemos la opción Standalone Project
2) Seleccionamos el dispositivo en este caso el PIC18f4550
3) El siguiente paso es seleccionar el grabador, usamos por supuesto el pickit3
4) Nos solicita escoger el compilador, yo uso por lo general el XC8 pero es libre de elegir el compilador que mas le guste.
5)Damos un nombre al proyecto
6)Finalmente hemos creado el proyecto, ahora para poder hacer que el pickit3 funcione como fuente debemos hacer lo siguiente.

En el cuadro inferior izquierdo encontraremos un icono con la forma de llave y tuercas, damos click y se nos abre una pantalla.

En la pantalla buscamos donde esta el nombre pickit3 y le damos click

En Option categories buscamos donde dice "POWER"

Seleccionamos la casilla power target y el nivel de voltaje, en mi caso elijo 5v pero si el micro que usamos trabaja a otro nivel se lo puede configurar.


Espero les haya servido saludos.

jueves, 23 de octubre de 2014

Agregando Python SDK del Robot NAO a Python Debian

Saludos estos dias e intentado probar algunos ejemplos que se encuentran en la pagina oficial de Aldebaran Robotics, casa comercial de Nao. http://doc.aldebaran.com/1-14/dev/python/index.html pero el problema es que no podia descargar el famoso sdk para programar con python.

Lo primero que hay que hacer es estar registrado en la pagina de aldebaran, linkear nuestro robot nao a la cuenta que creamos (Primeros pasos con NAO) y descargar el archivo pynaoqi-python-2.7-naoqi-1.14.5-linux32.tar.gz (pueden descargar la opcion de 64bits si lo prefieren)

Lo guardamos en la siguiente direccion:
 /home/usuario/
(usuario lo cambiamos por el nombre de nuestra perfil de usuario en mi caso richi)

Descomprimimos
tar -xvzf pynaoqi-python-2.7-naoqi-1.14.5-linux32.tar.gz 

Cambiamos el nombre por defecto a naoqi

finalmente ejecutamos el siguiente comando
export PYTHONPATH=${PYTHONPATH}:/home/usuario/naoqi

Para comprobar que lo tenemos correctamente instalado escribimos en el shell
python

Finalmente
import naoqi

Si no nos da ningún error lo hemos logrado, ahora podemos usar python directamente con el robot Saludos.

jueves, 16 de octubre de 2014

Libreria para el LCD Dogm163 4bits MPLABX - XC8 Compiler

Saludos amigos esta vez les vengo a compartir una librería que encontré en Internet y edite para que funcione con el LCD DOGM163 en configuracion 4bits aquí una foto del LCD.
este es el link de descarga: http://www.mediafire.com/download/z7fwftfiqc23eoq/library-dogm163.zip

A continuación una imagen de la librería en un proyecto de MPLABX-XC8

Enmarcado con Verde estan los archivos de la librería agregados al proyecto es un archivo .h y .c

Principales comandos.

LCD_initialise (void); 
Encargado de inicializar el LCD se lo coloca al inicio del programa

LCD_writechar (char data);
Escribe un caracter en la posicion en la que se encuentre el cursor. (Solo permite Caracteres)

LCD_displayRAM (unsigned char line, unsigned char position, const char *text);
Permite escribir un mensaje de texto 'String', se coloca el numero de linea(1,2 o 3), numero de columna y finalmente el texto string

LCD_position (unsigned char line, unsigned char position);
Brinda la opción de elegir la posicion en la que deseamos el cursor.

LCD_command (unsigned char cmd);
Esta funcion permite enviar un codigo de control al LCD en formato hexadecimal puede consultar estas instrucciones en el datasheet http://www.lcd-module.de/pdf/doma/dog-m.pdf

Espero que les sirva un saludo.