sábado, 11 de octubre de 2008

Lenguaje ensamblador & procesador x86

Familia x86
CPU 8086 fue el primer procesador x86 -> desarrollado por Intel

Procesadores más avanzados de la misma familia: 80186, 80286, 80386 y 80486.

Herramienta GDB
Las herramientas de desarrollo de GNU incluye un debbuger llamado GDB. Un debbuger da información al programador sobre los registros y la memoria.

Los registros
EAX -> Accumulator
ECX -> Counter
EDX -> Data
EBX -> Base

ESP -> Stack pointer (almacena direcciones de 32bits)
EBP -> Base pointer
(almacena direcciones de 32bits)
ESI -> Source Index
EDI -> Destination Index

EIP -> Instruction pointer (apunta a la instrucción)
EFLAGS -> varios bit flags

Lenguaje ensamblador
Usare la sintaxis de Intel para el lenguaje ensamblador.
Configurar el GDB para que trabaje con esta sintaxis
gdb -q
(gdb) set dis intel
(gdb) quit

Sintaxis Intel -> operacion

Operaciones basicas:
mov -> mueve un valor de un origen a un destino
sub -> resta
inc -> incrementa
cmp -> compara valores

mov ebp,esp
sub esp,0x8

El compilador GCC incluye información extra de debbuging usando el -g
gcc -g primerprograma.c
gdb -q ./a.out
(gdb) list -> sale el programa en c
(gdb) disassemble main -> muestra el código ensamblador

word -> 2-bytes
double word DWORD -> 4-byte
x86 -> almacena los valores en orden little-endian, el valor menos significativo es almacenado primero



domingo, 14 de septiembre de 2008

Acto de graduación del IE 2008

Interesantisima charla de Bernardo Hernandez Gonzalez (unico español perteneciente a la dirección mundial de google)

http://download.ie.edu/graduacion08/graduacion2008_24_Julio.htm

screencast con VLC

VLC media player.

Es un reproductor multimedia del proyecto videolan.
Es software libre distribuido bajo licencia GPL.
Soporta muchos codecs de audio y video.

http://www.videolan.org/vlc/

Screencast con VLC

Abrir VLC --> menú Archivo (File) --> Asistente (Wizard) -->Transcodificar/Salvar a archivo (Transcode/Save to file) --> siguiente(next) -->en el textbox poner screen:// -->siguiente --> Transcodificado (Transcode) del video y Transcodificar audio (Transcode audio) --> elejimos codecs (por ejemplo MPEG-1) --> le damos nombre --> y fin

El vlc se habra quedado grabando hsta que le demos a STOP
El video lo deja en el directorio (carpeta en windows) donde esta el ejecutable

salu2 ñ_ñ

c: tipos de datos y tamaño en memoria

#include

int main() {
printf("El tipo de dato 'int' es\t\t %d bytes\n", sizeof(int));
printf("El tipo de dato 'unsigned int' es\t %d bytes\n", sizeof(unsigned int));
printf("El tipo de dato 'short int' es\t %d bytes\n", sizeof(short int));
printf("El tipo de dato 'long int' is\t %d bytes\n", sizeof(long int));
printf("El tipo de dato 'long long int' es %d bytes\n", sizeof(long long int));
printf("El tipo de dato 'float' es\t %d bytes\n", sizeof(float));
printf("El tipo de dato 'char' es\t\t %d bytes\n", sizeof(char));
}

c : punteros y direcciones de memoria 1

#include

int main() {
int int_var = 5;
int *int_ptr;

int_ptr = &int_var; // pone la direccion de int_var en int_ptr.

printf("int_ptr = 0x%08x\n", int_ptr);
printf("&int_ptr = 0x%08x\n", &int_ptr);
printf("*int_ptr = 0x%08x\n\n", *int_ptr);

printf("int_var esta localizada en 0x%08x y contiene %d\n", &int_var, int_var);
printf("int_ptr esta localizada en 0x%08x, contiene 0x%08x, y apunta a %d\n\n", &int_ptr, int_ptr, *int_ptr);
}

libpcap

Programar una aplicación que capture paquetes:

Librería --> Linux --> libpcap
Manual: www.e-ghost.deusto.es/docs/2005/conferencias/pcap.pdf


Windows --> winpcap

Interesante para hacerte un programita que analice el trafico que pasa por tu tarjeta de red.

Usada por: tcpdump , WireShark (antes Ethereal), Nmap , Cain y Abel , y Snort.

En algunas versiones de la libreria se han detectado fallos de seguridad.

Fuente: wikipedia, e-ghost

lkm

LKM = Linux Kernel Module = Modulo del kernel de linux

- Se ejecutan en ring0 (Kerneland) --> forman parte del kERNEL
- Aplicaciones de usuario (Userland) --> usan la syscall para acceder a los recursos controlados por el Kernel, si el Kernel no les deja se joden.

comandos:

insmod --> carga un modulo en el kernel --> insmod module_name
rmmod --> descarga un modulo del kernel --> rmmod module_name
lsmod --> lista los modulos que hay cargados en el kernel --> lsmod

Para compilar los ejemplos necesitas tener instalados los sources de tu kernel.



Fuente: http://mazard.info/?mod=docs&xml=lkm_joca
Publicado por JoCaNoR en JoCaLaBS.

wget

Definición:

wget = sirve para descargar archivos de internet.

Sintaxis:

wget [options] [URL-list] --> man wget

Ejemplos de uso en linea de comandos:

Descargar una pagina web o un fichero:
wget http://www.servidor.com/fichero.zipç

Descargar las URLs que aparezcan en un fichero:
wget -i urls.txt

Descargar toda una web:
wget -r http://www.servidor.com/

Descargar un archivo de un ftp:
wget ftp://ftp.servidor.com/fichero.zip


Ejemplo de uso en un ShellSript:

Las aplicaciones de wget en un script son multiples, por ejemplo descargar un foro
, eliminar las etiquetas html y buscar patrones para cojer direcciones de correo
de los usuarios del foro (gato pasame el script!!! :D)

Una manera que tiene la gente de evitarlo es poner:

www[punto]micuenta[arroba]gmail[punto]com

Info. sobre una IP


Saber IP de un dominio --> ping www.laurl.com --> windows y linux
- Tiene que ser un dominio (no un directorio de un dominio).

Los localizadores de IPs --> localizan geograficamente una IP --> consultan BBDD (pueden estar obsoletas y muchos funcionan mal)
Hay muchos, por ejemplo:

http://www.seomoz.org/ip2loc/ip2loc.php?start
http://www.ip-adress.com/

Los ISPs compran rangos de IPs.

Whois de IPs --> información diversa sobre el que contrato el dominio

http://www.nic.com/nic/whois/
http://www.nic.com/cgi-bin/whois.cgi
http://ws.arin.net/cgi-bin/whois.pl

Fuente: http://foro.elhacker.net/index.php/topic,12556.0.html

netcat

GNU netcat

Netcat --> herramienta de red --> windows y linux

Permiter abrir puertosTCP/UDP en un HOST quedando netcat a la escucha, asociar una shell a un puerto concreto y forzar conexiones UDP/TCP . (wikipedia)

Sintaxis:
nc [-options] hostname port[s] [ports]
nc -l -p port [-options] [hostname] [port]

Los usos son multiples. Usandolo en shellscript aun más usos. :)


Más info en: http://crysol.inf-cr.uclm.es/node/28
http://icenetx.net/sesiones/tutos/tutor-netcat.pdf (tutorial)

Obtener shell con Netcat --> http://foro.elhacker.net/index.php/topic,58032.0.html


--------
htx google :D