domingo, 3 de marzo de 2013

Endianess de la CPU

El endianess se utiliza para referirse a donde están ubicados los dos bits: mas y menos significativos cuando representamos un dato, o por sus acronimos LSB y MSB.

Las arquitecturas de procesadores mas conocidas que utilizan little-endian son: x86 (x86-64), 6502 (65802, 65C816), Z80 ( Z180, eZ80), MCS-48, 8051, DEC Alpha, Altera Nios II, Atmel AVR, SuperH, VAX, y por ultimo, PDP-11.

Las arquitecturas de procesadores mas conocidas que utilizan little endian son: Motorola 6800 and 68k, Xilinx Microblaze, IBM POWER, y System/360, System/370, ESA/390, y z/Architecture. La PDP-10 para direccionamiento. SPARC históricamente utilizo big-endian hasta la version 9 la cual es bi-endian al igual que la arquitectura ARM que fue little-endian hast a la version 3 hasta que cambio a bi-endian, Por ultimo PowerPC y la Power Architecture decendiente de IBM POWER son tambien bi-endian.

Nota: bi-endian se refiere a la capacidad del procesador de trabajar tanto en modo big-endian como little-endian.

También cabe destacar que los protocolos de transmisión de datos seriales como USB, RS232, RS422, y RS485 son little-endian.

Un ejemplo practico:

Para representar un integer 1 en big-endian lo haríamos de la siguiente forma (mostrándolo bit por bit) 0000 0000 0000 0001, y para hacerlo en lite-endian seria 1000 0000 0000 0000.

Ya sabemos que el tipo de dato integer ocupa 4 bytes y que el tipo char solo ocupa 1 byte, por lo cual solo tenemos que mirar en el primero de los bytes y ver si el valor guardado es 1 o 0:


#include <stdio.h>
/*
 Endianess detection
*/

int isBigEndian(){
    int i=1;
    char *low = (char*) &i; /*grabamos en el puntero tipo char una conversion tipo char de otro puntero al valor 1*/
    return *low ? 0 : 1; /*miramos si el primer byte contiene el valor 0 o 1*/
}

int main(int argc, char *argv[]){

    if(isBigEndian())
        printf("System is big-endiann\n");
    else
        printf("System is lite-endian\n");   
   
    return 0;
}


Por ultimo compilamos y probamos:

$ gcc endianess.c -o endianess; chmod u+x endianess; ./endianess

Bookmark and Share

jueves, 20 de diciembre de 2012

Software libre y formatos abiertos en el Estado


El día de ayer en el parlamento de mi país se acaba de aprobar el siguiente proyecto de ley:

"Software libre y formatos abiertos en el Estado"

Articulo 1.-

Los Poderes Ejecutivo, Legislativo y Judicial, los Entes Autónomos,
los organismos descentralizados, las empresas donde el Estado posea
mayoría accionaria, los Gobiernos Departamentales, las Juntas
Departamentales, el Tribunal de lo Contencioso Administrativo (TCA),
la Corte Electoral y los organismos de contralor del Estado, deberán
distribuir toda información en al menos un formato abierto, estándar y
libre. Todo pedido de información deberá ser aceptado en al menos un
formato abierto y estándar.

Artículo 2.-

En las instituciones y dependencias del Estado mencionadas en el
artículo 1º, cuando se contraten licencias de software se dará
preferencia a licenciamientos de software libre. En caso de que se
opte por software privativo se deberá fundamentar la razón basada en
aspectos técnicos que no puedan ser resueltos con software libre.

En caso de que el Estado contrate o desarrolle software, el mismo se
licenciará como software libre, incluyendo el acceso como software
libre al o los programas necesarios para el desarrollo. El intercambio
de información realizado con el Estado, a través de Internet, deberá
ser posible en, al menos, un navegador de Internet licenciado como
software libre.

Artículo 3.-

Se considera de interés general que el sistema educativo proceda a
promover el uso de software libre.

Artículo 4.-

El Poder Ejecutivo reglamentará en un plazo de ciento ochenta días las
condiciones,

tiempos y formas en que se efectuará la transición de la situación
actual a una que satisfaga las condiciones de la presente ley y
orientará, en tal sentido, las licitaciones y contrataciones futuras
de programas de computación (software) realizadas a cualquier título.

Artículo 5.-

Definiciones a los efectos de la presente ley:

A) El Software Libre es el que esta licenciado de forma que cumpla las
siguientes condiciones:

1. Pueda ser usado para cualquier propósito.

2. Se tiene acceso a su código fuente de forma que pueda ser estudiado
y cambiado para adaptarlo a las necesidades.

3. Pueda ser copiado y distribuido.

4. Y sea posible la mejora del programa y la liberación de dichas
mejoras a la ciudadanía.

B) los formatos abiertos son formas de manejo y almacenamiento de los
datos en los que se conoce su estructura y se permite su modificación
y acceso no imponiéndose ninguna restricción para su uso. Los datos
almacenados en formatos abiertos no requieren de software privativo
para ser utilizados.

C) Formatos estándar son los que han sido aprobados por una entidad
internacional de certificación de estándares.

Bookmark and Share

martes, 18 de diciembre de 2012

La educación prohibida




































Excelente documental sobre un problema endémico que padece toda latinoamerica.
Cabe destacar que esta licenciado bajo los términos de Creative Commons NC-SA 3.0

Sinopsis

La escuela ha cumplido ya más de 200 años de existencia y es aun considerada la principal forma de acceso a la educación. Hoy en día, la escuela y la educación son conceptos ampliamente discutidos en foros académicos, políticas públicas, instituciones educativas, medios de comunicación y espacios de la sociedad civil.Desde su origen, la institución escolar ha estado caracterizada por estructuras y prácticas que hoy se consideran mayormente obsoletas y anacrónicas. Decimos que no acompañan las necesidades del Siglo XXI. Su principal falencia se encuentra en un diseño que no considera la naturaleza del aprendizaje, la libertad de elección o la importancia que tienen el amor y los vínculos humanos en el desarrollo individual y colectivo.

A partir de estas reflexiones críticas han surgido, a lo largo de los años, propuestas y prácticas que pensaron y piensan la educación de una forma diferente. “La Educación Prohibida” es una película documental que propone recuperar muchas de ellas, explorar sus ideas y visibilizar aquellas experiencias que se han atrevido a cambiar las estructuras del modelo educativo de la escuela tradicional.

Más de 90 entrevistas a educadores, académicos, profesionales, autores, madres y padres; un recorrido por 8 países de Iberoamérica pasando por 45 experiencias educativas no convencionales; más de 25.000 seguidores en las redes sociales antes de su estreno y un total de 704 coproductores que participaron en su financiación colectiva, convirtieron a “La Educación Prohibida” en un fenómeno único. Un proyecto totalmente independiente de una magnitud inédita, que da cuenta de la necesidad latente del crecimiento y surgimiento de nuevas formas de educación.




Fuente [ http://www.educacionprohibida.com ]

Bookmark and Share

jueves, 8 de noviembre de 2012

Sobre el sistema de camaras de Geovision

Esto puede parecer una chotada pero hoy me tope con un video de un sistema de filmacion de seguridad de geovision.
Al parecer utilizan el codec MPEG4 pero en los videos este sistema edita el header y en vez de grabar el nombre del codec correspondiente que seria XVID este graba GM4H, esto implica que los videos grabados con este sistema de camaras solamente se pueden ver en donde este instalado el software de geovision.

Cuando intento reproducir el vídeo:

dclavijo@hotel:~$ mplayer video.avi
MPlayer svn r34540 (Debian), built with gcc-4.6 (C) 2000-2012 MPlayer Team

Playing video.avi.
libavformat version 53.21.0 (external)
Mismatching header version 53.19.0
AVI file format detected.
[aviheader] Video stream found, -vid 0
AVI: No audio stream found -> no sound.
VIDEO:  [GM4H]  720x576  24bpp  30.000 fps  2404.4 kbps (293.5 kbyte/s)
Load subtitles in ./
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
==========================================================================
Cannot find codec matching selected -vo and video format 0x48344D47.
==========================================================================


Exiting... (End of file)

 Pero no es muy difícil solucionar este problema gracias a la herramienta sed:
 sed -e 's/GM4H/XVID/g#' video.avi > converted.avi 

 Y luego probamos ver este video:
dclavijo@debian:~$ mplayer converted.avi
MPlayer svn r34540 (Debian), built with gcc-4.6 (C) 2000-2012 MPlayer Team

Playing converted.avi.
libavformat version 53.21.0 (external)
Mismatching header version 53.19.0
AVI file format detected.
[aviheader] Video stream found, -vid 0
AVI: No audio stream found -> no sound.
VIDEO:  [XVID]  720x576  24bpp  30.000 fps  2404.4 kbps (293.5 kbyte/s)
Load subtitles in ./
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 53.35.0 (external)
Mismatching header version 53.32.2
Unsupported PixelFormat 61
Unsupported PixelFormat 53
Unsupported PixelFormat 81
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
Audio: no sound
Starting playback...
Movie-Aspect is 1.25:1 - prescaling to correct movie aspect.
VO: [xv] 720x576 => 720x576 Planar YV12
V:   2.3  69/ 69  7%  1%  0.0% 0 0

 Le dejo un -1 a geovision por generar dependencia a los usuarios.

Bookmark and Share

martes, 6 de noviembre de 2012

PyCon Uruguay

Cito texto del sitio oficial:

PyCon es una conferencia anual orientada a la comunidad de usuarios y desarrolladores del lenguaje de programación de código-abierto Python.PyConUy 2012 es la primera edición de eventos PyCon, organizado por la comunidad uruguaya de Python. El evento tendrá lugar el 10 y 11 de noviembre en el LATU. El éxito obtenido en el PyDay 2011, animó a los integrantes del Grupo de Usuarios Python en Uruguay -PyUy- a emprender esta primera PyCon.
Los objetivos se centran en acelerar la introducción y promover el uso de este hermoso lenguaje en Uruguay y la región. Nuestra meta es ofrecer acceso universal al lenguaje Python y sus herramientas relacionadas, por ello el registro a la PyCon será GRATIS gracias al trabajo de muchos voluntarios y sponsors.

Bookmark and Share

viernes, 26 de octubre de 2012

Ps3 LV0 key



 Al parecer la seguridad del Playstation 3 ha sido crackeada por completo. Anteriormente con cada vulnerabilidad encontrada sony podía parchearla con cada nueva versión del firmware y la carrera empezaba de nuevo. Estas claves encontradas reciden en la primer capa de la cadena de confianza de la seguridad del Playstation 3 por lo cual cualquier metodo que Sony pudiera utilizar para evitar el uso de homebrew o el booteo de otros sistemas operativos serian en vano.

Para que tengan una idea de como funciona la cadena de confianza en una ps3


El bootloader cuya clave esta grabada en el hardware y no se puede cambiar carga el lv0 y el lv0 se encarga de cargar el resto, anteriormente solo se contaban con las keys de isoldr appldr lv2ldr y lv1ldr, con esta nueva clave de lv0 cualquiera de las anteriores se puede derivar.

Fuente http://www.ps3news.com/ps3-hacks-jailbreak/ps3-lv0-keys-leaked-4-21-4-25-and-4-30-cfw-updates-incoming

Bookmark and Share

miércoles, 24 de octubre de 2012

A Crash Course in Onlie Piracy

I have the pleasure to share this infographic about piracy I get to my email

Music, Movies, Programs & Piracy
Created by: www.OnlineGraduatePrograms.com

Bookmark and Share

jueves, 4 de octubre de 2012

Cambiando el tamaño de una imagen de disco

Supongamos que hicimos una imagen de un disco físico con dd y esta nos quedo chica

Podemos hacerla crecer directamente agregando ceros al final del archivo Por ejemplo en este caso agregamos un gigabyte al final del archivo:

$dd if=/dev/zero bs=1024k count=1024 >> imagen_de_disco 

Hay que tener en cuenta de utilizar >> y no > porque esto ultimo creara una imagen en blanco de 1GB.

Luego forzamos un checkeo del sistema de archivos de esta imagen:

$e2fsck -f imagen_de_disco 

Cambiamos el tamaño de la partición:

$resize2fs imagen_de_disco 

Por ultimo es muy sano volver a correr un fsck:

$e2fsck -f imagen_de_disco

Bookmark and Share

martes, 7 de agosto de 2012

DarkReign2 Open Source



 Se ha liberado el codigo de fuente del mítico juego de estrategia DarkReign2 bajo la licencia LGPL. Actualmente solo se puede compilar con Visual Studio 6.

Bookmark and Share

martes, 12 de junio de 2012

Password bypass en MySQL

En este post el cual habla del CVE-2012-2122.

Se menciona que varias versiones de Mysql y MariaDB son vulnerables.
La raiz de esta vulnerabilidad es la función memcmp la cual se asume que devolverá un valor de entre -127 a 127 (signed char). En algunas plataformas con ciertas optimizaciones habilitadas, esta rutina puede retornar valores por fuera de este rango, eventualmente causando que el código que compara un password hasheado a veces retorne el valor True incluso cuando el password provisto sea incorrecto.
Incluso el protocolo de autenticación genera un hash diferente cada vez que una comparación es hecha, hay 1 en 256 posibilidades de que cualquier password sea aceptado en la autenticación.


Para verifiar si nuestro mysql es vulnerable solamente tenemos que ejecutar:


$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

Si lo es, estaremos logueados en el sistema.

Bookmark and Share