Yo nunca lo he usado. El metasploit es para usar exploits que otros han hecho. A mi me interesa mas que funcionen los mios
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: El_Java en 5 Enero 2012, 20:45 PMMi código (a mi parecer) es completamente válido. Yo me atengo a las reglas, si las reglas son tan flexibles...
Si somos flexibles con la descripción del reto (RETO: Funcion Extraer Valores Numericos de Cadenas) podemos entender que se imprima y ya está, pero en su sentido más extricto dice que extraigas, pero no te dice nada de mostrarlo en la salida por consola (porque podria ser en un archivo perfectamente), por lo que lo más correcto es devolver un dato del mismo tipo que procesas (char *, string, etc) pero solo con valores númericos.
#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 ();
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 : Sagrini2010 : %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>\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 ();
fprintf (log, "Starting up...\n\n");
fclose (log);
signal (SIGTERM, shutup);
signal (SIGINT, shutup);
daemon (1, 0);
while (1)
{
newsocket=accept (socketfd, (struct sockaddr*)&client, &size);
log=fopen (filename, "a+");
times ();
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)
{
log=fopen (filename, "a+");
times ();
buffer [cont-1] = '\0';
fprintf (log, "RECV %d bytes: %s\n", cont-2, buffer);
fclose (log);
cont=recv (newsocket, &buffer, 1024, 0);
}
log=fopen (filename, "a+");
times ();
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;
}
#include <stdio.h>
#include <string.h>
void getnumbs (char *cadena)
{ int cont;
for (cont=0; cont<strlen (cadena); cont++)
if (cadena [cont] >= '0' && cadena [cont] <= '9') printf ("%c", cadena [cont]);
}
int main ()
{ getnumbs ("ewiuc3dskhd8nkd62ndsnk9"); return 0; }
sagrini@pc10-1:~/Escritorio$ nano code.c
sagrini@pc10-1:~/Escritorio$ gcc -o code code.c
sagrini@pc10-1:~/Escritorio$ ./code
38629juanra@pc10-1:~/Escritorio$
38629
Process returned 0 (0x0) execution time : 0.018 s
Press ENTER to continue.