jueves, 30 de julio de 2009

Criptograma 30/07/09

BPJTALUJBPUPRFBIISASIYRTJTMSAKGMCPCRRPPBALC
AAKTPSOCUPFAPKIFKRNOPRSKABPUPSMDFSOKETCPFCP
  

viernes, 24 de julio de 2009

El impresionante Robot Asimo de Honda

 
Empezó siendo un robot torpón que a duras penas andaba. Después nos sorprendió subiendo escalareas... e incluso corriendo. Increible lo que estan consiguiendo los ingenieros de Honda.
 

jueves, 16 de julio de 2009

Criptograma 16/07/09

 

HOLAB UHODE MIMAH OLASI TUMAC ETUNA NATUB IMICI RUTUM
AHOCE HOMAS IMIRU SIMIR EFAHO DOTUB LNATU MACIB IHOLA
RUHOS STUMA NATUL ABIFA BITUL ABIHO GRUXR UUXSI UXGUT
UBUHO RUSIH ORRMA MIFAY YMIBU TUMAY YXXXX
  

 

jueves, 9 de julio de 2009

Comandos útiles para Vim

 
" las funciones de autocompletado buscan en los directorios indicados
: set path=/usr/include,/usr/local/include

" Habilita el coloreado de sintaxis
: syntax on

" habilita el auto indentado
: set autoindent

" habilita el auto indentado inteligente
: set smartindent

" Define 3 espacios para el indentado
:set shiftwidth=3

" Convierte tabulados en espacios. Deshabilitar con :set noexpandtab
: set expandtab     

" Hace que los tabuladores sean de tres espacios
: set tabstop=3 

" Plega bloques delimitados por {{{ }}}. Usando fdm=syntax no se necesitan marcas
: set fdm=marker   

" Establece los nivels de anidamiento para plegar código.
: set foldnestmax=1

" Marca el parentesis/llave que abre y el que cierra al situarse encima.
: set showmatch 

" La marca habilitada con 'showmatch' dura un segundo.
: set matchtime=1 

" Aparecen indicadores con el numero de linea, de columna, etc.
: set ruler 

" Cuando se abre un archivo coloca el cursor en su posicion del ultimo cierre
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

" Pinta los resultados de la busqueda
: set hlsearch

" Cierra un bloque delimitado por {{{ }}}. 
" Se abre pulsando el espacio sobre el bloque.
: foldclose        

" Entra en modo insercion a continuacion de la posicion actual


" Entra en modo insercion en la posicion actual


" Deshace los cambios


" Rehace los cambios
:redo 

" Guarda los cambios
:w! 

" Guarda los cambios en el fiechero 'file'
:w! file

" Sale sin guardar
:q!  

" Mueve el cursor al final del fichero
G 

" Mueve el cursor al principio del fichero
gg

" Mueve el cursor a la linea N
N G  

" Entra en modo visual. Seleccion a nivel de columnas.
ctrl + v 

" Entra en modo visual. Seleccion de todo el texto.
ctrl + v v 

" Corta/borra el texto seleccionado
dd 

" Copia el texto seleccionado

" Pega el texto del portapapeles

" Sustituye from por to, pidiendo confirmacion
:%s/from/to/gc 

" Sustituye from por to, pidiendo confirmacion de un texto seleccionado.
:'<,'>s/from/to/gc

" Ir al principio de la linea
0

" Ir al final de la linea
$

" Ir a la palabra siguiente
w
" Busca palabras como la situada debajo del cursor
#

" Abre la pagina man de la función sobre la que se encuentra el cursor
K

" Salta a la definición/declaración de la variable sobre la que se encuentra el cursor
gd

" Salta al parentesis/llave asociado al parentesis/llave sobre el que se encuentra el cursor
%

" Abre una pestaña con el fichero 'file'
: tabnew file

# Salta de una pestaña a otra
gt


" Divide la ventana en dos abriendo el fichero 'file'
: split file

" Salta de una ventana a otra
Ctrl+w w

" Autocompleta la palabra
Ctrl + p
Ctrl + n




lunes, 6 de julio de 2009

Estamos dentro de VMWare?

A continuacion dejo un programa que permite detectar si nuestro servidor se encuentra dentro de una maquina virtual VMWare. Utiliza una tecnica descubierta por Ken Kato que consiste en encontrar el Backdoor I/O port. Este puerto es el que utiliza VMWare para comunicarse con la maquina virtual. Como dicho puerto no existe en un servidor normal su deteccion indica que nos encontramos bajo VMWare.


/*
 * 4tphi-vmchk.c
 * Detects if you are in a VMWare virtual machine.
 *
 * Written by Andrew Hintz 
 * and AAron Walters
 * Fortify Research Laboratories 
 *
 * "Oft at the hives of his tame bees
 * They would their sugary thirst appease."
 *
 * This program is based on info and code from:
 * http://chitchat.tripod.co.jp/vmware/
 * by chitchat_at_lycos.jp
 *
 * Notes:
 * The program can be run as a normal user.
 * We tested the program only in x86 Linux.
 * The m4dn3ss lives on!
 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/signal.h>

#if __INTSIZE == 2 /* 16 bit environment */
typedef unsigned int uint16;
typedef unsigned long uint32;
#else /* 32 bit environment */
typedef unsigned short uint16;
typedef unsigned int uint32;
#endif /* __INTSIZE */

void segfault()
{
  printf("Not running inside VMware.\n");
  exit(1);
}

int main()
{
  uint32 verMajor, verMinor, magic, dout;

  signal(SIGSEGV, segfault);

  __asm__ __volatile__ 
   (
   "mov $0x564D5868, %%eax; /* magic number */"
   "mov $0x3c6cf712, %%ebx; /* random number */"
   "mov $0x0000000A, %%ecx; /* specifies command */"
   "mov $0x5658, %%edx; /* VMware I/O port */"
   "in %%dx, %%eax;"
   "mov %%eax, %0;"
   "mov %%ebx, %1;"
   "mov %%ecx, %2;"
   "mov %%edx, %3;"
    : "=r"(verMajor), "=r"(magic), "=r"(verMinor), "=r"(dout)
    );

  if (magic == 0x564D5868) 
  {
    printf("Running inside VMware. ");
    printf("(Version %lu,%lu)\n", verMajor, verMinor);
    /* I'm not really sure what the versions mean. */
  }

  return 0;

}