[Tutorial] Introducion a los sockets en Ansi C : By Sagrini 2010

Iniciado por Garfield07, 17 Enero 2011, 19:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Garfield07



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

rdzlcs

Se ve muy lindo e interesante, pero poner el código como código, para que se vea :P porfa..

SAludos
Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.

Garfield07

Jeje gracias...
El code esta mejor en el .doc, aunque aqui mismo te dejo el original, en GeSHi...
#include <sys/socket.h>
#include <arpa/inet.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <signal.h>
#include <time.h>

int socketfd, newsocket;
char *filename;

void shutup (int signal)
{
FILE *log;
log=fopen (filename, "a+");
times ();
printf ("Shutting down...\n\n");
fprintf (log, "Shutting down...\n\n");
fclose (log);
close (newsocket);
close (socketfd);
exit (0);
}

int times ()
{
FILE *log;
time_t now=time (0);
struct tm *ahora;
char buffer [40];
ahora=localtime ((const time_t*)&now);
strftime (buffer, 40, "%d/%m/%Y %H:%M:%S" , ahora);
log=fopen (filename, "a+");
printf ("%s   ", buffer);
fprintf (log,"%s   ", buffer);
fclose (log);
return 0;
}

int main (int argc, char *argv [])
{
time_t now=time (0);
struct tm *ahora;
char hora [40];
ahora=localtime ((const time_t*)&now);
strftime (hora, 40, "%d/%m/%Y %H:%M:%S" , ahora);
printf ("SmallServ 2.0 - By Sagrini - Sagrini 2010 - %s\n", hora);

if (getuid()!=0)
{
printf ("This proccess must be run by root.\n\n");
return 1;
}
if (argc<3)
{
printf ("Use: %s <PORT> <LOG> [MODE]\nMode:\t\t0) Fork the proccess to background [DEFAULT].\n\t\t1) Run in the terminal.\n\n", argv [0]);
return 1;
}
int cont;
FILE *log;
struct sockaddr_in client, host;
char buffer [1024];
int size=sizeof (client);

filename = argv [2];

socketfd=socket (2, 1 ,  0);
host.sin_family=AF_INET;
host.sin_port=htons (atoi (argv [1]));
host.sin_addr.s_addr=0;
bind (socketfd, (struct sockaddr*)&host, sizeof (struct sockaddr));

listen (socketfd, 3);

log=fopen (filename, "a+");
times ();
if (argv [3] != NULL && atoi (argv [3]) == 1)
printf ("\nStarting up...\n\n");
fprintf (log, "Starting up...\n\n");
fclose (log);

signal (SIGTERM, shutup);
signal (SIGINT, shutup);


if (argv [3] == NULL || atoi (argv [3]) == 0)
daemon (1, 0);

while (1)
{
newsocket=accept (socketfd, (struct sockaddr*)&client, &size);

log=fopen (filename, "a+");
times ();
printf ("Got connection from %s:%d\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port));
fprintf (log, "Got connection from %s:%d\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port));
fclose (log);

cont=recv (newsocket, &buffer, 1024, 0);
while (cont>2)
{
printf ("%d", cont);
log=fopen (filename, "a+");
times ();
buffer [cont-1]='\0';
printf ("RECV %d bytes: %s ", cont-2, buffer);
fprintf (log, "RECV %d bytes: %s\n", cont-2, buffer);
fclose (log);

cont=recv (newsocket, &buffer, 1024, 0);
}
log=fopen (filename, "a+");
times ();
printf ("Finishing connection from %s:%d\n\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port));
fprintf (log, "Finishing connection from %s:%d\n\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port));
fclose (log);
close (newsocket);
}
close (socketfd);
return 0;
}


Este corresponde al 3.0. El 2.0 es el mismo pero con menos cosas. El 4.0 es el mismo para Windows...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

anonimo12121

Sagrini modifica el primero y quedara pro , gracias por ela porte
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Garfield07

Modificado! ya esta creo que se ve mejor... Descargaros el .doc, es mas facil no? Nop, no tiene macros.... no se ni crearlas  ;)


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

rdzlcs

Cita de: Sagrini en 19 Enero 2011, 18:18 PM
Modificado! ya esta creo que se ve mejor... Descargaros el .doc, es mas facil no? Nop, no tiene macros.... no se ni crearlas  ;)

Muy bueno, toda la info que se encuentra sobre el tema esta en ingles, y para los que estamos peleados con ese idioma, o entendemos poco, se nos complica, gracias por tu aporte..

SAludos
Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.

Garfield07

Bueno, le he escrito a Littlehorse para que lo mire, aun nada :-[ lo voy a pedir como post interesante o algo, o no llega a tanto? Realmente yo para escribir soy un poco cafre, pero... Gracias!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Littlehorse

No hace falta pedir nada. Pueden poner sus posts en este hilo y ya queda en el recopilatorio. En el caso de los sources interesantes, es lo mismo, pueden postearlos aqui y yo luego los agrego a la lista principal.

Cita de: Sagrini en 19 Enero 2011, 19:00 PM
Bueno, le he escrito a Littlehorse para que lo mire, aun nada :-[

Claramente "aun nada", estaría bien que tengas un poco de paciencia, ten en cuenta que todos tenemos una vida y nuestras cosas que hacer; no podemos estar 24hs pendientes del foro. Me enviaste el pm a las 19:00:34 e hiciste el post citado a las 19:00:58, es decir, no esperaste mas de 24 segundos.





En cuanto al post, no lo he leído todo. Trata de formatearlo un poco mejor para que sea mas legible, comenzando por quitar el contenido completo de la etiqueta quote y code y colocar los espacios correctamente.
Y por cierto, no se pueden poner direcciones de correo en los posts.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Garfield07

Bueno Littlehorse perdona lo que pasa es que hice un copy-paste del mensaje porque tecnicamente lo habia escrito con el nombre de E.I. pero el recibio ese dia bastantes mensajes y el mio cayo en el olvido. Asi que te escribi a ti y puse el mensaje directamente. Espero que no te lo tomes a mal, se me habia ido...

Ya he colgado el post. Perdonad por las molestias   :-\ lo siento....
PD: Gracias LH por lo del email habia copiado directamente el texto del .doc y no me habia dado cuenta que llevaba mi e-mail. Luego he ido mejorando el code, metiendole los  "code"...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo