Como sacar una IP, CODE

Iniciado por Garfield07, 17 Julio 2010, 12:58 PM

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

Garfield07

Bueno, el otro dia postee en el subforo de Messenger, Chats... k como le sacaba la IP "real" a la victima pues la k aparecia en REAL IP, o algo asi, no era la buena...
pues aparte de k si es la buena, se me ocurrio otro metodo + eficaz xD

escribi un programa en C k esperase coenxiones en un puerto a indicar, y lo registrase todo en un archivo.
pues bien, lo k hice fue hacer kill al apache y lo puse en el p 80. le pase mi ip y le dije: "Conectate aki, ya veras... etc."
se conecta y queda registrada la Ip de la victima, con muxa mas info del ordenata destino.

si alguien kiere aplicar la idea, aki les dejo el code xD
#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;

void shutup (int signal)
{
FILE *log;
log=fopen ("/var/log/smallserver.log", "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 ("/var/log/smallserver.log", "a+");
fprintf (log,"%s   ", buffer);
fclose (log);
return 0;
}

int main (int argc, char *argv [])
{
if (getuid()!=0)
{
printf ("This proccess must be run by root.\n\n");
return 1;
}
if (argc!=2)
{
printf ("Error:\nUse: %s <PORT>\n\n", argv [0]);
return 1;
}
int cont;
FILE *log;
struct sockaddr_in client, host;
char buffer [1024];
int size=sizeof (client);

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 ("/var/log/smallserver.log", "a+");
times ();
fprintf (log, "Starting up...\n\n");
fclose (log);

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

printf ("Forking process...");
daemon (1, 0);

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

log=fopen ("/var/log/smallserver.log", "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)
{
printf ("%d", cont);
log=fopen ("/var/log/smallserver.log", "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 ("/var/log/smallserver.log", "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;
}


se k es bastante simple, xro me costo un pokito xD k estoi aprendiendo...
si alguien cree k es mejorable, k postee como. estoi interesado (stoi aprendiendo, otra vez xD)


* 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