Checksec – una herramienta para analizar ejecutables contra “exploitation”

Checksec es un bash script para analizar la implementación de medidas contra explotación de ejecutables (PIE, RELRO, PaX, Canaries, ASLR, Fortify Source). Fue esrito originalmente por Tobias Klein y el código fuente original se encuentra aquí: http://www.trapkit.de/tools/checksec.html.

Instalación

Lo ideal es clonar el “repository” de la herramienta y copiar el archivo checksec al directorio /usr/bin

arturo@imperial-star:~$ git clone https://github.com/slimm609/checksec.sh.git
arturo@imperial-star:~$ sudo cp checksec.sh/checksec /usr/bin

o para descargar una versión en particular del software:

arturo@imperial-star:~$ git clone --depth 1 --branch 2.4.0 https://github.com
seguir leyendo

Code coverage (cobertura de código)

Definición de code coverage

La cobertura de código, en inglés llamada “code coverage” o también “test coverage”, es una medida usada en el desarrollo de software para describir el grado al cual el código fuente de un software ha sido probado.

Los usos de la cobertura de software son por ejemplo:

  • Encontrar secciones de código fuente que no han sido ejecutadas por un conjunto de pruebas de software, y así escribir pruebas (test cases) adicionales para incrementar el porcentaje de cobertura
  • Identificación de pruebas redundantes, es decir, pruebas que ejercitan las mismas secciones de código fuente de un programa, con el objetivo de optimizar las pruebas que se le realizan al mismo
  • Determinar una medida cuantitativa de cobertura de código, la cual es indirectamente una medida de la calidad de un programa

Aun cuando podría resultar evidente, se debe enfatizar que:

  • El porcentaje de cobertura mide la cobertura de lo que ha sido escrito (programado), es decir, la cobertura de software no puede decir absolutamente nada acerca del código que aun no ha sido escrito
  • Una prueba de cobertura no puede ser usada para identificar si una función especificada del software no ha sido implementada o ha sido omitida.
seguir leyendo

Raspberry Pi

Logo de Raspberry Pi. Imagen de wikipedia.org.
Logo de Raspberry Pi. Imagen de wikipedia.org.

La Raspberry Pi es una computadora de placa única (single board computer). Es una computadora porque igual que una PC de escritorio o una laptop, la Raspberry Pi tiene hardware que le permite comunicarse con el exterior (por ejemplo con un teclado, raton, monitor, bocinas, etc.) y además se le puede instalar un sistema operativo. De placa única, porque todo el hardware está contenido en una sola placa de 85 mm x 56 mm en el caso de la Raspberry Pi 3 Model B+, que es el modelo más actual a la fecha de escritura de este artículo.… seguir leyendo

Programar y depurar (debuggear) Arduino usando Eclipse

De Arduino a Eclipse.
De Arduino a Eclipse. Logo de Arduino y de Eclipse IDE.

Entrar en el mundo de la programación de microcontroladores es ahora mucho más fácil y económico gracias a la existencia de Arduino.

El Arduino Software (IDE) es muy fácil de instalar, configurar y usar. La documentación y los “Getting Started” disponibles en linea son suficientes para estar cargando a la tarjeta de desarrollo y probando el primer programa (Sketch) en cuestión de un par horas.

Esta sencillez con la cual suceden las cosas en el Arduino Software resulta muy convenientes para las personas que  se inician en la electrónica y la programación de microcontroladores, sin embargo, para aquellos que buscan desarrollar sistemas embebidos de manera profesional, es mas bien una limitante.… seguir leyendo

Usos de const en C++

Una de las cosas más complicadas de un lenguaje de programación es aprender los diferentes usos de una palabra reservada, dependiendo del caso donde se utilice. Como si no hubiera ya suficientes palabras reservadas de las cuales hay que aprender su significado y función.

En este post se resumirá el uso de la palabra reservada const en C++.

Usos de const en C++

const double pi = 3.14159;
//o preferentemente
double const pi = 3.14159;

En este caso se esta declarando una constante de tipo double de nombre pi con el valor 3.14159. A diferencia de una variable, el valor de esta constante no se puede cambiar durante el programa.

seguir leyendo

Arduino

Logo de Arduino
Logo de Arduino.

Arduino es una plataforma open source con la cual se pueden realizar proyectos de electrónica digital, y está compuesta por hardware y software, y diseñada de tal forma que sea fácil para el usuario aprender a escribir programas para un microcontrolador, cargarlos a el y probarlos directamente en una tarjeta de desarrollo.

En el siguiente video Massimo Banzi, uno de los creadores, cuenta un poco la historia de Arduino, lo que es hoy en día y los proyectos que han sido realizados por la comunidad usando esta plataforma.

Entre las ventajas de Arduino con respecto a otras alternativas están:

  • bajo costo
  • multi-plataforma (Linux, Windows, Macintosh OSX)
  • un simple sistema de programación
  • hardware y software open source escalable

Un starter kit de Arduino es el mejor regalo que un niño puede obtener, y comprarse uno y aprender a usarlo es sumamente recomendable.… seguir leyendo

OpenRocket Simulator

OpenRocket es un programa originalmente desarrollado en el 2009 por Sampo Niskanen, como parte de su tesis de maestría en la Universidad Tecnológica de Helsinki. El programa fue escrito en Java, lo cual lo hace multi-plataforma, es decir, que puede ser ejecutado en computadoras con Linux, Windows o macOS.

Logo del simulador OpenRocket.
Logo del simulador OpenRocket.

OpenRocket está diseñado principalmente para ser usado por modelistas espaciales que quieran probar el desempeño de un cohete modelo, antes de construirlo o antes de lanzarlo. De hecho el software calcula de manera precisa las propiedades aerodinámicas de los cohetes modelo y simula su vuelo, y además entrega una gran variedad de resultados técnicos.… seguir leyendo

Scripting en Windows

Microsoft Windows sigue siendo el sistema operativo para PCs lider en el mercado. Por su facilidad de uso, es utilizado por usuarios que solo hacen clicks al visitar facebook, escribir mails, o ver videos en internet, pero también es utilizado por compañías dedicadas al desarrollo de software.

Una de las características de un buen software es que puede ser probado de manera automatizada, es decir, cuando hay una nueva versión del software que se está desarrollando, no se necesita un chango haciendo clicks para instalar la nueva versión, y una vez instalada, abrir el software y probar la funcionalidad de él haciendo clicks por todas partes buscando errores.… seguir leyendo

Windows 7 and Vista Guide to Scripting, Automation and Command Line Tools.

Este libro presenta las bases necesarias para poder utilizar de manera correcta y efectiva algunas de las opciones que se ofrecen para MS Windows para realizar automatización de tareas usando scripts.

Portada del libro Windows 7 and Vista Guide to Scripting, Automation and Command Line Tools de Brian Knittel.

Aun cuando existe en internet suficiente información referente a cualquiera de las opciones que ofrece este SO para escribir scripts, no está de más aprender las bases con un libro, de una manera estructurada.

Aun cuando Windows 7 se está quedando viejo, y Vista forma ya parte de un pasado muy distante, muchas de las instrucciones, comandos, o commandlets permanecen y permanecerán útiles por mucho tiempo.… seguir leyendo

Git y GitHub

En el proyecto2 (Solución a los ejercicios del libro Introduction to Rocket Science and Engineering) propuesto por esta página se requiere el uso de Git y GitHub. Pero, ¿qué es Git y que es GitHub?

Git

Logo de Git.

Git es un sistema de control de versiones (version control system), es gratis y además open source. Está diseñado para manejar desde pequeños hasta grandes proyectos con velocidad y eficiencia. Todo esto según la página oficial de Git.

Un sistema de control de versiones (VCS) es un software que ayuda al almacenamiento de los archivos que conforman un proyecto, manteniendo un historial de todos los archivos, y al mismo tiempo haciendo posible establecer una versión del repositorio completo.… seguir leyendo