jueves, 30 de septiembre de 2010

BClock, un reloj binario en 510 bytes (autobootable)

Hoy presento un código en la línea del BGame, es decir, algo completamente inútil, hecho solo para quitarse el mono de ensamblador en ring 0.

Simplemente muestra un reloj binario (puro o en BCD, según le venga en gana al RealTimeClock =S )

De heuristicas, antivirus y malware

Antes de nada, ningun ordenador fue infectado por malware en el proceso y lo que viene a continuación se hizo con el único fin de pasar el rato, si lees esto con la esperanza de saber como infectar más ordenadores o algo por el estilo, lo siento (... en realidad no) pero no estas en el lugar indicado, ve con root.

Pues presento un programa que genera otros programas ensamblando componentes (una shell inversa, un proxy SOCKS4 , un bot IRC... ), al principio no tenía ningun propósito pero parece que los módulos por separado pueden servir para echarle un vistazo a la euristica de los antivirus.

domingo, 26 de septiembre de 2010

Introducción a NetKit (I): instalación

Al final si que habrá tuto de Netkit (lo estás leyendo ahora), más que nada orientado a esa gente que quiere trastear con las redes, y que no tiene espacio/tiempo/ganas de montar una fisica o con las máquinas virtuales habituales (tipo VirtualBox) y a aclarar algo mis propias ideas :P.

miércoles, 22 de septiembre de 2010

Generador de redes netkit

Comenzando por el principio... NetKit, conocido como "El sistema del hombre pobre para experimentar con redes de ordenadores" es un proyecto que pretende usar UML (User Mode Linux, un kernel que como su nombre indica, corre en espacio de usuario, en ring 3) para simular redes de ordenadores completos pero ligeros (normalmente Gnu/Linux Debian en modo texto).

lunes, 20 de septiembre de 2010

Sonido fractal (experimento)

Update: corregido un detalle que podría causar un error al dividir por 0

La idea (no me acuerdo de donde salio, la verdad) es diseñar un fractal y "mostrarlo" a través de un archivo de música. El fractal elegido es una conjunto de Cantor por que es simple, y porque se puede presentar en un formato de 1 dimensión, de tiempo en este caso y otra que aquí será la frecuencia. Este script genera un archivo wave (.wav) basandose en esa idea.

No a grabaciones Copyright en el CSA LaTabacalera [Offtopic]

Update: Parece que al final, el ministerio dejará la elección en manos de la asamblea del Centro ^^

Grosso modo, el asunto es que cierto cantante "pro-copyright" (Alejandro Sanz) quiere grabar un videoclip en el CSA LaTabacalera, estando este centro comprometido con el Copyleft se le pidio que no lo hiciera o que liberara la música, en este momento es cuando el ministerio de [in]cultura mete mano y obliga a que se permita la grabación, al principio se intento convencer al artista por las buenas (vía twitter). Dado que el artista no responde (o eso tengo entendido), se convoca a la gente mañana lunes, (¿hoy?) a las 10 (a las 10.30 es cuando se tiene pensado montar todo para grabar el videoclip) para ver que hacer.

Para verlo más claro:
    http://blogs.latabacalera.net/tabapress/?p=277 [en menéame] del 18, primera noticia
    http://latabacalera.net/?p=2361 lo que se hará el lunes (hoy)

Y el mensaje en la lista de correo:
Hola, fuentes bien informadas nos advierten que l@s montador@s de sonido
han sido convocad@s mañana a las 10,30 en Tabacalera para, obviamente,
preparar la técnica de la grabación del videoclip de Alejandro Sanz.

(Por si no todo el mundo ha seguido el hilo, la cuestión es que el
ministerio, nuestro dueño, ha decidido ejercer una cláusula e imponernos
la grabación en nuestro espacio -en la Nave central- de un videoclip
promocional del artista. Les explicamos que eso pasaba por encima de
todos nuestros criterios, desde el copyleft hasta la priorización de
actividades no comerciales y sin ánimo de lucro, pero no les gustó que
se lo dijéramos y cortaron la comunicación. Ahora por la vía de los
hechos, su decisión se impondrá).

Eso quiere decir que sea la asamblea a las 8, a las 5 o a las 7, la cosa
se juega mañana por la mañana, porque esta misma fuente dice que si se
llega a montar es prácticamente imposible que no se haga, porque el
proceso es costosísimo en todos los sentidos, incluido el de carísimo.

Entonces, no nos queda más remedio que convocarnos a tod@s l@s que
podamos a las 10 en Tabacalera, y ver entonces qué ondas.

Lo que la fuente no nos ha podido decir es si tiene que presentarse en
un lugar o en otro del edificio, solo la han convocado a las 10, 30 en
Embajadores. Cabría la posibilidad de que hubiera suerte y hubieran
decidido hacerlo en la otra parte del edificio, pero nos tememos que no
sea así, y que finalmente lunes y martes estemos copad@s -veremos si nos
dejan acceder- por la macroproducción de la warner a mayor gloria de
alejandro, una de esas estrellas públicas que además se negó a firmar en
apoyo a la despenalización parcial de los manteros que el parlamento
aprobó recientemente.

nos vemos entonces a la mañana, oh, qué largo día. Difundid al máximo la
convocatoria.

Hasta luego, espero no haber llegado muy tarde =P.

martes, 14 de septiembre de 2010

SniperlCat 0.2, detección de SYN scan's

Actualización: por algun extraño motivo se vuelve paranoico con los paquetes cuando se suspende el ordenador y se vuelve a iniciar (¿?), estoy trabajando para resolver eso.

Hoy traigo la segunda versión del SniperlCat [SniperlCat 0.2], los cambios no son muchos, pero creo que pueden resultar interesantes:

- Detecta los paquetes SYN de sockets raw (típicos de un SYN scan), aunque para esto necesita permisos de root para levantar un sniffer, básicamente se aprovecha esta [http://danielmiessler.com/study/synpackets/] idea, aunque con scanners modernos se puede hacer que no exista diferencia, unicamente avisa de paquetes con un tamaño menor de 60 bytes (suelen ser de 58) y sin el flag DF de IP activado.

- Permite llevar un log aparte de las notificaciones... no es gran cosa pero puede ser útil.

- Las alertas se reunieron en una función llamada "show_alert" para poder modificar el sistema más facilmente.

Las dependencias quedarían en "libgtk2-notify-perl" para las notificaciones, y "libnet-pcap-perl" y "libnetpacket-perl" para buscar paquetes sospechosos.

Y la sintaxis del comando sería:

Sniperlcat 0.2

sniperlcat [-h]|[-d | -v ] [-nf] [-c] [-n <red>] [-f <descriptor de red>] [-p|-np] [-dv <interfaz>][-l <log>][-s <tiempo>]
-h  (--help): Muestra este mensaje
-d  (--daemonize): Se ejecuta de fondo
-nf (--no-fill): No llena la tabla de hosts (con nmap) antes de leerla
-c  (--cansino): Repite los avisos, aún los ya emitidos, en cada iteración
-v  (--verbose): Muestra más información por pantalla
-n  (--network): Especifica la red donde se ejecuta, por defecto 192.168.1.0/24
-dv (--device): Especifica la interfaz de red que se monitoreará
-p  (--privileged): Se asumirán que es un usuario con privilegios
-np (--no-privileged): Se asumirán que es un usuario sin privilegios
-l  (--log): Se guardarán los avisos en un archivo
-s  (--sleep): Especifica el tiempo en segundos de "descanso" entre iteraciones (por defecto 60)


Eso es todo, otro día... más.

[Referencias]
http://seclists.org/pen-test/2007/Oct/44
http://www.perlmonks.org/index.pl?node_id=170648
http://search.cpan.org/~saper/Net-Pcap-0.16/Pcap.pm

martes, 7 de septiembre de 2010

Script para hacer animaciones con CFDG

Hoy traigo un script que genera automaticamente un conjunto de imágenes con CFDG [cfanim.pl].
 Lo que hace es partir de un archivo de este programa, partiendo de un nivel de recursividad pequeño y avanzando, por ejemplo, partiendo del archivo:

startshape init

rule init{
     spiral{sat 1 b 0.8}
}

rule spiral{
     SQUARE{}
     spiral{x 1 r 1 hue 1 s 0.999}
}



Se pueden obtener las imágenes desde el primer nivel de recursividad, hasta, digamos... el 300


./cfanim.pl base.cfdg -i 1 -f 300


Nota: Es importante no partir del 0, porque se utilizaría en esa imágen el nivel de recursividad normal, no el especificado.

Con ese comando obtendríamos 300 imágenes individiales, pero si además queremos juntarlas para convertirlas en un .gif, se haría:

./cfanim.pl base.cfdg -i 1 -f 300 -m animacion.gif



La sintaxis del script es:

./cfanim.pl <archivo.cfdg> -i <figuras iniciales> -f <figuras finales> [-s <step>] [-m <output.gif> [-d <delay>]]


Por ejemplo, en el ejemplo anterior haciendo un gif de los 1000 primeros frames con 1 centésima de segundo entre cada una se haría:


./cfanim.pl base.cfdg -i 1 -f 1000 -m animacion.gif -d 1



Y eso es todo, hasta otra.

Introducción a Structure Synth (y III), el regreso

Gracias a Vishkey, descubrí hace un tiempo que las posibilidades que brinda Structure Synth van más allá de lo mencionado anteriormente, pues resulta que también soporta texturas más complejas, siempre partiendo de las mismas figuras básicas, cuales son dependen de la plantilla usada para exportar, como la plantilla "Sunflow-Ultimate-Groovelock", que como se encuentra entre las que están por defecto, servirá de ejemplo.

La sintaxis es la siguiente:

<figura base>::<textura>



Así, si queremos hacer una esfera con una textura de cristal ("glass"), haremos


sphere::glass



Este ejemplo muestra brevemente como se ven las texturas

set background black
{color white x -0.50005 s 0.001 1000 1000}box::ao // Base
{color white }sphere::glass
{color white x 10 s 0.5 1000 1000}box::shiny // Luz/techo
{ color blue y -2 }sphere::diffuse
{ color white y -4 } sphere::mirror
{color red y -6 } sphere::ao
{color black y -8 }sphere::constant
{color white y -10} sphere::phong
{color white y -12} sphere::ward



De izquierda a derecha, las texturas "glass" en blanco, "diffuse" en azul,"mirror" en blanco,"ao" en rojo,"constant" en negro,"phong" y "ward" en blanco. Además hay una caja que sirve de suelo (con una textura "ao" en blanco) y otra que ilumina la escena (con una textura "shiny" también en blanco).

Este otro ejemplo, (escrito por Vishkey) muestra más claramente las posibilidades que hay

//Autor: Vishkey

{s 2} room

esferas

rule room {
{color brown}pared
{z 20} paredLuminosa
{rx 90 z 10 y 10 color green} pared
{rx 90 z -10 y 10 color blue} pared
{ry 90 z 10 x -10 color yellow} paredEspejo
{ry 90 z -10 x -10 color white} paredEspejo
}

rule esferas {
{s 2 z 1 x 2 color white} sphere::glass
{s 2 z 1 x 1 y 1 color white} sphere::mirror
{s 2 z 1 x 1 y -1 color blue} sphere::phong
{s 2 z 1 x 2 y 2 color green} sphere::ao
{s 2 z 1 x 2 y -2 color yellow} sphere::constant
{s 2 z 1 x 1 y -3} sphere::diffuse
{s 2 z 1 x 2 y -4} sphere::shiny
{s 2 z 1 x -2 y -3 color white} box::ward
{s 2 z 1 x -3 y -2 color white} box::ao
{s 2 z 1 x -2 y -1 color white} box::phong
{s 2 z 1 x -3 color white} box::glass
}

rule pared {
{s 20 20 1} box
}

rule paredLuminosa {
{s 20 20 1} box::shiny
}

rule paredEspejo {
{s 20 20 1} box::mirror
}





Como se puede ver, el resultado es una delicia para los ojos aun con pocos elementos... aunque quizá demasiado perfecto =).
Por último añadir que la plantilla usada "Ultimate-Groovelock" añade algunas luces por su cuenta (se aprecia en algunos reflejos), en caso de querer tener un control total de la imágen estas se podrían eliminar buscando las secciones light adecuadas de la plantilla y eliminándolas o cerrando la escena con cajas... es elección de cada uno.

Hasta otra.