Wednesday, November 29, 2006

Hice un programa que rompe vigenere... o por lo menos hace una estadistica rapida,
y te arroja una clave posible.
Si la contrasenia que te arroja no sirve, de todos modos sirve que te dice las distancias y el factor mas repetido usando Kasiski, hice algunas pruebas, el password es BORGES en el siguiente ejemplo , mi programa arrojo DORGLS , si hiciera mas probabilidades de password con combinaciones de letras mas frecuentes tal vez seria mas eficiente pero 'la talacha' del algoritmo ya esta hecha por si les interesa... mas o menos asi funciona..., lo hice analizando de 3 en 3 palabras , tiene que pegarme el criptotexto en el argumento del programa y al final ponerle un numero , en este caso fue el "3" , que significa que analizara kasiski con palabras de 3 letras, les dejo el codigo si lo quieren, se le puede hacer una modificacion si gustan para que en vez de sacarlo de linea de comandos el criptotexto , mejor lo sacara de un archivo.. pero si lo necesitan con mucho gusto comenten.

dirichlet@beck /home/dirichlet/cryptanalysis/bvigenere $ ./bvigenere DIVTXSOELKIDDC
EJSJMSYGFABRZILGBZQUVJPJRGLSCSIARSGWVYXSFBVRGAFZFKPRPFIUHWTSRHENFFPRIVJXFGPUPBU
UVNBAFYNMOHFYRGUSMUCSMZVBEJQCIWYWOCMGWSBULGRLBFVRLSNPIKPWDCEZIKUCVRGGORFXTWSCVR
DGSFFKBYMODURGNSMUCSNCIOVVFVRSFJFSEZSFDSJKPUPBUUVDFZCKZGIOJZEWMQZKPGBZCGpSHSEZI
KFDIKKMOHRHEIVSRTMEBZVYIKUSVRDGSFFVIJNOEKGAPSEARJJBTURWTHRHEJPMVTHGMCJNYWTCJJIT
BXFJIDBGDKWSTSCISFECIYIVFGVTXWORZUHWMNFXVGZGVLYWESJVYWTSCFSJSCSAWUPOCISFECIEEDO
CVTGGOHIGVDPGLVPADCRRPGSCGGVSRIVRSDMSMGWWFGKKPWQWUOSIVSRRMKUOJKQMDVRYSYBOCGGSCO
IKPRPFIUPWEWAULWSARTSQBVZIIDBGFME 3
Distancias obtenidas
354,138,210,349,102,426,426,426,426,426,294,312,186,234,357,126,126,126,126,126,
156,78,78,78,318,59,342,306,96,96,120,12,252,108,108,108,108,108,241,42,48,198,1
72,198,60,180,180,42,54,54,54,54,54,53,49,
Multiplos obtenidos de las distancias
49,49,17,5,48,12,5,23,5,2,16,6,10,5,3,3,23,4,11,2,5,6,10,5,2,2,2,8,6,10,2,3,2,3,
2,2,10,2,4,6,2,5,6,2,2,2,2,5,6,5,2,2,2,5,5,
Prioridad 1 para posible tamanio de password es 6
Prioridad 2 para posible tamanio de password es 6
Prioridad 3 para posible tamanio de password es 3
Posible Clave: DORGLS
dirichlet@beck /home/dirichlet/cryptanalysis/bvigenere $

Eduardo Ruiz Duarte

Codigo, si gustan que lo comente , diganme... esto es con propositos estrictamente personales para poder hacer mi tarea sin tener que andar contando , en efecto la hice y tarde en hacer este codigo un par de horas y la tarea era como para 140 horas.
me pusieron 12 de calificacion de hecho por haberla entregado unas horas despues....
pero si gustan ... con mucho gusto les comento el codigo , pero quiero saber que esto no sera en vano.

Saludos

/*
bvigenere 0.01 beta
Programa que 'adivina' password de sistema cifrado con vigenere.
si este no fuera el password , de todos modos puede ser util
porque imprime en pantalla las distancias y los multiplos y calcula cual es el que se repite mas , asi como obviamente proporcionar un posible password
esta muy sucio , debe tener algunos memory leaks , y hasta heap overflows...
pero bueno... lo siento... solo que esto lo utilice para hacer mi tarea...
un poco mas interesante y fue lo que me salio a la primera.
Eduardo Ruiz Duarte
rduarte@ciencias.unam.mx
*/
#include
#include
#include
typedef struct kasiski_offsets_t
{
char *word;
int *offsets;
int n;
} kasiski_offsets;

kasiski_offsets *
kasiski_alloc (int s, int w)
{
kasiski_offsets *ptr;
int i;
ptr = calloc (s, sizeof (struct kasiski_offsets_t));
ptr->offsets = calloc (s, sizeof (int));
ptr->n = s;
for (i = 0; i < s + 1; i++)
{
ptr[i].word = calloc (w, sizeof (char));
ptr[i].offsets = calloc (s, sizeof (int));
ptr[i].n = 0;
}
return ptr;
}
void
kasiski_free (kasiski_offsets * ptr)
{
int i;
for (i = 0; i < ptr[0].n; i++)
{
free (ptr[i].word);
free (ptr[i].offsets);
}
// free (ptr);
return;
}
int
is_allocated (char *str, int w, kasiski_offsets * words, int index)
{
int i = 0;
char *t = calloc (w, sizeof (char));
memcpy (t, str, w);
for (i = 0; i < index; i++)
{
if (strcmp (t, words[i].word) == 0)
{
free (t);
return 1;
}
}
free (t);
return 0;
}
void
give_me_distances (kasiski_offsets * w, unsigned int *d, int slen)
{
int i, j, k, t, c = 0;
for (i = 0; i < slen; i++)
for (j = 0; j < w[i].n; i++)
for (k = 0; k < w[i].n; k++)
{
t = abs (w[i].offsets[j] - w[i].offsets[k]);
if ((t != 0) || (j < k))
d[c++] = t;
}
printf ("Distancias obtenidas\n");
for (i = 0; i < c; i++)
printf ("%d,", d[i]);
printf ("\n");
return;
}
int
max (unsigned int *x, int l)
{
int i, t = 0;
for (i = 0; i < l; i++)
if (t > x[i])
t = x[i];
return t;
}
char
max_index (char *x, int l)
{
int i, t = 0, r;
for (i = 0; i < l; i++)
{
if (t < x[i])
{
t = x[i];
r = i;
}
}
return r;
}
#define MAX_FACTORS 8112
#define MAX_POSIBLES 3
int
usual_factor (int *x, int xlen, int *pos)
{
int i, t = 0, r, j, m = 0;
printf ("Multiplos obtenidos de las distancias\n");
for (i = 0; i < xlen; i++)
{
if (x[i] > 1)
printf ("%d,", x[i]);
}
printf ("\n");
for (j = 2; j < xlen; j++)
{
for (i = j; i < xlen; i++)
{
if (x[i] > 1)
if (t < x[i])
{
t = x[i];
r = i;
}
}
pos[m] = r;
m++;
if (m > MAX_POSIBLES)
return 0;
t = 0;
}
return 0;
}
int *
kasiski_analize_passlen (int *distances, int slen)
{
int i = 0, c = 0, r, k = 0;
static int posibles[MAX_POSIBLES];
unsigned int *factors = calloc (4096, sizeof (unsigned int));
while (distances[i] != 0)
{
for (c = 2; c <= distances[i]; c++)
{
if (distances[i] % c == 0)
{
factors[c] += 1;
k++;
}
}
i++;
}
r = usual_factor (factors, k, (int *) &posibles);
for (i = 0; i < MAX_POSIBLES; i++)
printf ("Prioridad %d para posible tamanio de password es %d \n", i + 1,
posibles[MAX_POSIBLES - i]);
free (factors);
return (int *) &posibles;
}
#define MAX_PASSLEN 32
#define MAIN_LETTER 'E'
char
get_letter (char *buf, int blen)
{
int i;
char alfa[26];
buf[blen] = 0;
memset (&alfa, 0, sizeof (alfa));
for (i = 0; i < blen; i++)
alfa[buf[i] - 'A']++;
return abs (max_index ((char *) &alfa, 26) + 'A' - MAIN_LETTER) + 'A';
}
void
calc_pass (char alfa[MAX_PASSLEN][256], int len, char *pass, int alen)
{
int i;
memset (pass, 0x0, MAX_PASSLEN);
for (i = 0; i < len; i++)
pass[i] = get_letter (alfa[i], alen);
printf ("Posible Clave: %s\n", pass);
}
void
kasiski_get_pass (char *buf, int blen, int *plen, int pnum, char *pass)
{
int i, j, k = 0, m;
char alfa[MAX_PASSLEN][256];
m = plen[MAX_POSIBLES - 1];
memset (&alfa, 0, sizeof (alfa));
for (j = 0; j < m; j++)
{
for (i = j; i < blen; i += m)
{
alfa[j][k] = buf[i];
k++;
}
k = 0;
}
calc_pass (alfa, m, pass, blen / m);
return;
}
void
kasiski_attack (char *str, int s, int w, kasiski_offsets * words,
unsigned int *distances)
{
char *tmp = calloc (w + 1, sizeof (char));
char *tmp2 = calloc (w + 1, sizeof (char));
char pass[MAX_PASSLEN];
int *plen;
int i, j, k = 0, m = 0, strcount = 0, d_alloc = 0;
for (j = 0; j < s; j++)
{
words[j].n = 0;
if (!is_allocated ((str + j), w, words, s))
{
memcpy (words[strcount].word, str + j, w);
for (i = 0; i < s; i++)
{
memcpy (tmp2, str + i, w);
if (strcmp (words[strcount].word, tmp2) == 0)
{
words[strcount].offsets[m++] = i;
words[strcount].n += 1;
d_alloc++;
}
}
strcount++;
}
m = 0;
}

k = 0;
distances = calloc (d_alloc, sizeof (int));
give_me_distances (words, distances, d_alloc);
plen = kasiski_analize_passlen (distances, d_alloc);
kasiski_get_pass (str, s, plen, MAX_POSIBLES, (char *) &pass);
free (tmp);
return;
}
int
main (int argc, char **argv)
{
int *distances;
if(argc < 3) {
fprintf(stderr,"ERROR: Necesitas proporcionar el criptotexto en argv[1] y en argv[2] el numero (tamanio de palabra) con el cual vas a analizar usando kasiski para las distancias (recomendados: 2,3,4 o 5)\n");
}
kasiski_offsets *shit = kasiski_alloc (strlen (argv[1]), atoi (argv[2]));
kasiski_attack (argv[1], strlen (argv[1]), atoi (argv[2]), shit, distances);
kasiski_free (shit);
return 0;
}

"Education is a system of imposed ignorance"

Wednesday, September 20, 2006

Im very happy in my number theory class , my professor was explaining multiplicative functions , like sigma or phi for integers , my professor told us about RSA , and if someone knew how it worked , of course i love RSA and the theory behind , and i made a program for "demo" im not using my big int library because is just for "showing" how the theory converts into something practic and not magic. i implemented modular exponentiation , greatest common divisor using euclid's algorithm and extended euclid's algorithm with an easy recursive function, is not very commented but the 'print f's explain how rsa works , it just encrypts the number "111" (you can change it) and then decrypts the same number , as i said before , is just for showing , as an argument the rsa function receives the 2 prime numbers to generate the keys, i made this very fast. so ill comment it later.

i hope someone can test it and i hope it can be useful as it was for me.

note: i just accept 2 primes such that the product is bigger than 111 and less than 7800^2 (im using just the processor registers no memory , if you want to check with a more complicated and serius implementation check my rsa implementation for no educational purposes (because it has more computer science than math hehe) using lightMP.

link here

RSA demo

Eduardo Ruiz Duarte

Thursday, August 17, 2006

I've been very busy , im working and with lot of math school
I'm taking Graph Theory , I previes took "Graphs and Games"
but this is more serious , the teacher said we all need to know a programming language
to show some algorithms , (this class is gonna be of algorithms , im starting to like some stuff)
im in number theory with cryptography class too, Im working with steganographical tools now
im gonna present something cool , i have a lot of crap for now (crapware) but im gonna clean it
im working now with JPEG just not PNG nor GIF , i have learnt a lot of engineer transforms and lot of
physics just for trying to understand the spectrums using complex algebra , is very cool....
i hope ill publish this soon (i have to give a speech about this so its going to exist very soon this material and C code
not just using LSB , ill use some algorithms anti-Kappa Function and others to simulate a pre-built complexity associated to a unique matrix (see Kolmogorov complexity). another thing , a friend asked me about Binary search trees , he cant understand
so i made a programm.. and well the fate is very curious i was trying to remember some tree things because of a class of Artificial intelligence my professor said i need to know how to search in binary trees and first order logic (im seeing that with Logic II in my school) so illl wait 1 semester to take AI.

Tenex here's the link to the programm , i commented it , and it was good remembering the basics because i always work with hash tables, and all guys who want to know something basic about tree's heres the explanation , if you still not understand , check on internet about binary search tree's or send me an email. rduarte@ciencias.unam.mx.

Note: Try to see it with a format like VI with colors , it looks better than checking the code online in my website

Eduardo Ruiz Duarte

Source code

Thursday, July 06, 2006

Batman......



Realmente yo no soy panista ni perredista ni priista etc..
tal vez mi punto sea de izquierda.. pero eso no quiere decir que me guste lo que AMLO propone.

Ahora el PAN gobernara con Felipe Calderon Hinojosa , no dudo que sea alguien preparado pero solo hay que tomar cosas en cuenta, el FOBAPROA era un fondo en caso de emergencia para los bancos , en caso de que muchos retiren su dinero del pais , poder seguir otorgando creditos etc.. porque el dinero de la gente con credito, es dinero de las personas que almacenan en los bancos , asi es como funcionan los bancos, como decia mi maestro de civismo en secundaria "Los bancos son las venas del pais" y si es cierto , es por ahi donde se mueve el dinero, los bancos en mexico sacan ventaja de los intereses generados y eso es lo que ellos ganan, ya que los bancos no tienen dinero como tal , viven de prestamos de sus clientes, y eso no es malo , asi funcionan todos los bancos en el mundo , y en todos los paises debe de existir un FOBAPROA equivalente , ahora , ese dinero no fue para eso , se privatizo una empresa grande, se retiro ese dinero del Pais , se devalua la moneda porque esos pesos se convierten en dolares, se usa el fondo , y despues ya no existe ese fondo por prestamos gigantes , y derrepente las tasas de interes suben , gente pierde sus creditos hipotecarios, etc... y despues la gente no tiene dinero en el banco , y cuando lo recuperan despues... simplemente lo sacan del pais por miedo y sube mas el dolar, eso es de manera superflua.

1) El PAN y Felipe Calderon tuvieron mucho que ver en que el FOBAPROA sea una deuda publica junto con el PRI, muchos no se dan cuenta pero realmente pagan eso, sus impuestos son para eso , nadie lo sabe... por eso no hay avance. realmente tus impuestos puede que no sean para el bien del pais... sino para pagar lo que algunos empresarios obtuvieron de beneficio en el fobaproa (pagar sus 'prestamos')

2) El pan tuvo que ver en la creacion del IPAB , el nuevo fobaproa.

3) Esperemos que no se privatice nada, (Petroleo , Luz) , diciendo que esto abre la libre competencia en Mexico.
disfrazandose de antimonopolio para que entren varias empresas al pais a hacer competencia en estos servicios.

A menos de que entraran MUCHISIMAS empresas aunque sean extranjeras, para pagar muchos impuestos.

Igual y estoy mal , no soy nostradamus , igual y nose nada de politica , pero eso es lo que pienso

Links y documentos interesantes.
Calderon y FOBAPROA
Lista negra FOBAPROA

Eduardo Ruiz Duarte

Friday, June 16, 2006

I made a little program , to multiply or sum 2 digits of ulimited size (hehe limited to your RAM memory)

im working in a version with base SQRT(2^64)-1 (aprox 2^32) for taking advantage of the CPU operations
that the computer can compute... but for now is just 1 byte per digit so complexity is no more nor less than O(n2)
im working with that , and karatsuba combined with the previus idea i said , im working with exponentiation to a
big integer and logarithm as the integral of 1/x using sums, with this ill do square root and power (modulo and div are done but im going to publish them maybe in 1 week after y put comments in the code)

i hope you can find this useful

beck

(Eduardo Ruiz Duarte)

Download it here

Wednesday, May 31, 2006

Interview with anakata (main member and founder of the staff thepiratebay.com)

I have contact with a member of the piratebay via IRC in a server i visit frequently , i worked with him together with other people (dex,daemon,knish) , some time ago...
and he is a very talented person... i have learnt lots of things because of him, here's a conversation we had recently
today at 20:00 GMT-6

[msg(anakata-)] there are rumours about this (hoax)
[anakata-(~anakata@se)] we'll get TPB back up
in 3 or 4 different countries :p
[msg(anakata-)] do you need money (paypal or something)
[msg(anakata-)] are you asking for money to the community ?
[anakata-(~anakata@se)] hm i think we have
enough
[msg(anakata-)] cool , if theres something i could help , maybe i can do a
little donation
[msg(anakata-)] not too much but maybe 200 euros or something
[anakata-(~anakata@se)] kewl
[msg(anakata-)] but i wanted to be sure , that this isnt a hoax :p
[msg(anakata-)] because of the sarcasm and humor that tpb has
[anakata-(~anakata@se)] its not a hoax
[anakata-(~anakata@se)] they also raided my fucking business
[anakata-(~anakata@se)] took ALL equipment in a datacenter
[anakata-(~anakata@se)] several 100 customer boxes
[msg(anakata-)] fuck
[msg(anakata-)] well
[msg(anakata-)] i hope you can fix this shit
[msg(anakata-)] the thing i dont understand , what did you break in sweden ?
[anakata-(~anakata@se)] they just made some shit up to take it down
[msg(anakata-)] maybe , US enterprises said something to government
[msg(anakata-)] about closing relationship (commercial) with sweden
[anakata-(~anakata@se)] yeah
[anakata-(~anakata@se)] + the prosecutor is mad at prq
[anakata-(~anakata@se)] because we like freedom of speech
[anakata-(~anakata@se)] and he doesn't
[anakata-(~anakata@se)] he raided us like 3 weeks ago also
[anakata-(~anakata@se)] and took 2 servers of a customer
[msg(anakata-)] fuck... well if theres something i could help in mexico (banners , etc..)
[msg(anakata-)] i can help you , i dont have too much money but , maybe theres something i can do for you
[msg(anakata-)] hahaha , dex (diego) said , that you better play unreal , instead of having this problems hahaha
[msg(anakata-)] cool , dude , i hope your business can born again , and i hope you can solve this shit with the
sweden government
[msg(anakata-)] if theres no law about this, then they are breaking the law about this
[msg(anakata-)] but well , i think this conversation is very usual for you now , and you know what you do
[msg(anakata-)] sorry for lot of questions but im concerned ... do you think , you will have problems with jail ?
[anakata-(~anakata@se)] i might go to jail
[msg(anakata-)] dmca and riaa shit ?
[anakata-(~anakata@se)] but swedish jails are kinda nice so not a big problem..
[msg(anakata-)] hahaha
[msg(anakata-)] maybe you will have a compputer
[msg(anakata-)] and thepiratebay.com .. is death officially
[msg(anakata-)] ?
[msg(anakata-)] haha , well i hope you dont go to jail dude seriusly
[msg(anakata-)] i have learn a lot from some code you published :p
[msg(anakata-)] i think you arent in home now right ?
[anakata-(~anakata@se)] no tpb will get back up
[anakata-(~anakata@se)] in the netherlands, ukraine, mexico, possibly russia too
[msg(anakata-)] cool , do you have someone in mind for mexico ?
[anakata-(~anakata@se)] nahual, doh
[msg(anakata-)] haha cool
[msg(anakata-)] ok , thanks dude... , do you let me publish this in my site 'as an interview' ?
[msg(anakata-)] or is it 'kinda private'
[anakata-(~anakata@se)] yes
[msg(anakata-)] ok dude
[msg(anakata-)] thanks dude , back to work , and good , luck , if i can help you here in mexico , please just say
what you need
[msg(anakata-)] bye
*o* Ending conversation with anakata-

Tuesday, May 09, 2006

I made a steganographical tool called bsteg to hide data in BMP images , im working now to support JPEG files using VIPS and fft i need this because of the lossy compression nature of this formats , so i need to locate the highest frequency pixels in a image , and then use those with a simply LSB interchange with the original data.
its fun ... ill publish this this week , i hope i can finish it. , the thing is , maybe ill now use fft , the discrete cosine transform can do the same , and it works with pure real numbers , so , i dont want complex numbers for now... so maybe ill need to switch.. (i thought in that at this moment) i hope you like it

Download bsteg now

Eduardo Ruiz Duarte (beck)

Thursday, April 27, 2006

Monday, April 24, 2006

http://www.pejendejo.net

Excelente sitio , yo estoy totalmente de acuerdo.. intente poner un comentario en la pagina y no salio, lo intente 3 veces o mas , tal vez por desesperado posteriormente salga muchas veces , pero si no sale.. aqui dejo mi post, yo no estoy a favor de ningun partido , es mas , me vale
las razones estan en ese post... creo q es la primera y ultima vez que meto cosas de este topico aqui.. tengo amigos prdistas y panistas no se me ofendan , es parte de mi libertad de expresion.

Saludos.


Eso de el apoyo a los pobres y 'a los que menos tienen'
deberia de ser otorgando empleos... mas no regalando el dinero como lo hace con los 'viejitos', yo no le regalo nada a nadie (impuestos) , mejor que trabajen , o que se invierta en instituciones para personas de la tercera edad... asi se otorgarian empleos a otras personas cuidando a estos individuos.
yo no votare, ni ire a anular mi voto... es mas ni me interese por tener credencial de elector, tengo 21 anios... simplemente no se me hace adecuado el sistema mucha gente me dice: 'minimo ve a poner lo que sea'
pero bueno para que pierdo mi tiempo en un sistema que de todos modos no funciona democraticamente... todos los candidatos estan educados de tal forma que al llegar al poder solo se preocupan por intereses de su partido , incluso en la camara legislativa lo unico que hacen es abuchearse , poner pancartas ofensivas... se me hace una falta de respeto , ya que estando en ese lugar , sea lo que sea deberia de unificarse todo , mas no seguir en una condicion de 'tu eres del pri y yo del pan y ese wey del prd' ... etc.. se deben de debatir intereses de la nacion mas no intereses partidarios... que porqueria me da lastima , y es por la unica causa la cual no me gusta este pais tan hermoso, es como si lo hermoso lo taparan con caca (gobierno)

Saludos

Eduardo Ruiz Duarte

Wednesday, April 19, 2006

Im back from cancun , soon ill publish some pics.

another thing is , I remembering some posix threads stuff (pthreads)
and i made a program to test some things like thread organization in a
server application using concurrent connections without asynchronous I/O
it has a timeout using select , and connection checking status
if you are interested , i made a commented code for all of you that may be interested

source here
this can be very useful for those who want a pthread server , with this source , you just need
to edit the void *session function to do whatever you want to do and use it .

Eduardo Ruiz Duarte

Friday, April 07, 2006

Im going to Cancun, with my girlfriend , my flight is at 7th april 20:55
ill take some pics to show here. im just waiting for my girl here in my work
then we are going to my house and eat something before the flight.
its 17:00 i think i need to hurry. but im here ...

nice holidays

your friend

Eduardo Ruiz (beck)

Saturday, March 25, 2006

Asynchronous I/O rocks.

I used to use poll() / select() to check if a filedescriptor
was ready for writing/reading, for reading i learnt something
new.. i didnt know nothing about AIO things, so i made some
tests with this asynchronous functions... aio_read , aio_write ,
aio_cancel , aio_suspend , etc.. and is very easy. aio in unix
uses pthreads to read() a FD and continue the execution
of the process (i mean aio functions return a value immediatly).
Its good to know this type of methods , at the beginning,
if i knew this thing two years ago something different would
happen in my life haha :p
im in a new project related to multiple sockets , i need to
code it and make it work in HP-UX and solaris so i need
to use strictly posix , and i didnt know nothing about AIO.
Another fun thing is that im 'touching' some features of 'hypercube'
webserver code from a good friend anakata
to run on sparc & hpux, anakata use this , thats why i wanted
to learn wtf was happening. maybe this is something i needed to
know, but i didnt.. so , maybe lot of you havent used this.

So here is an example i made to ALL OF YOU , commented,
and i hope i can start being a good programmer.
This examples reads the stdin, and it enters a while(1) { sleep(1); printf(); } loop
and when the buffer is read from stdin a signal is sent and
the program finishes. this can be useful for sockets , poll()
can handle multiple events like urgent packets etc..
but for a "standard" I/O async this is very useful.
remember im not a computologist, but i like lot this shit. hehe


Greetz

Source here

Sunday, March 19, 2006

I just finished doing my database manager , i put the source in public on cofradia.org, a friend told me that i was wrong publishing my source there, that it would been better in a more specialized forum, i wanted critics (im not a computer scientist , neither a programmer , i'm studying to be a mathematician
so i spected technical critics not just crap like "Your code is a shit" , but well , what can i spect of the same script kiddies
that thinks they are hackers or hacktivists or whatever the fuck you want to call them.
but well , people there just say the same bullshit that everybody knows, but nobody applies

1) Need to indent the code
2) need to have a version control
3) need to comment all the source code
4) not to mix different styles of programming
5) compatibility

etc... and all the bullshit you 'learn' in a 'programming I' course in computer engineer.
everybody knows that , but nobody knows how to make a fucking hello world , how to use a processor, or
how to use special features of a processor like intruction pairing , or when to use malloc() and when to NOT use it
or how to use a nonblocking function for filedescriptors , or the difference of poll and select , etc..
in my point of view the code is secure and works fine , and if its not , well , the point of that is the algorithm , im not planning to use it for a root server, is just for me and is fast (hash tables are O(1) (fastest) or O(n) (slowest) ,
but well i dont care , i never said my source was an "innovation" but well people start saying bullshit like

"why you publish something that is not innovative"

i publish it because i want, and if is not innovaative , is the same thing as the useless thing GNOME (dirty code , slow as hell) and there are other better window managers, at the beginning i said that it was for 'educational purposes'
because , everybody knows what the fuck is a hash table , but nobody codes it in a serious way.

blah , is the same bullshit if i say "Why you use linux fucking fanatic" , and you dont use BSD , is the same thing"
(because in mexico 90% of the people who use linux, could make the same shit using a pirate windows XP)
they use it for being elite , or for anti-tech causes like fanatism , or opossition to monopoly's , i support monopoly's
in technology , technology must be standarized for being easier and have the same opportunities for everybody to exists in their life , i use linux , but i use it to test shit of my work to be portable...
but i preffer all the people using microsoft windows , solaris , irix or bsd and not a new crap that is made by thousands of morons like richard stallman thay they feel they are god , but they are nobody.
that tries to copy other unixes to appear like the monopoly's OSes like Novell with the desktop crap trying to be the same as cocoa , or gnome trying to be a Windows but 2000% slower and a fucking cocktail of libraries mapped in memory when displaying a stupid animation, and mmaping lot of megs of bullshit,
in my point of view, the software is being corrupted with lot of pseudo programmers and wannabe's in mexico,
you cant do anything because you get insulted, nobody does anything but they feel they can 'stupidize' the things other people does.
Mexico is a country of egos or whatever the fuck you want to call it , but the point is that people doesnt like to learn with others , and they cannot admit, there are people they could learn from,
linux is not an innovation , as my program , linux doesnt provide new algorithms, neither GNU , gcc is good , but is not an innovation , there are better compilers and better algorithms to parse the code and give more optimization,

Eduardo Ruiz Duarte