Buenas, escribo este post para preguntar lo siguiente: ¿Como puedo sacar una IP de un sistema, cuando tengo un router (conex. privada)?
Para obtener la IP, lo que hice fue un sencillo programa, abajo posteado, que me dijese la IP y el puerto de quien se conectase a mi ordenador. El programa espera una conex. en determinado puerto, y si alguien se conecta, consigo su IP. El caso es que mis pruebas no funcionan debido a que al iniciar el programa resulta que al obtener una conex. que yo abro desde Firefox me dice la IP de mi ordenador, privada: 192.168....
Lo cual no sirve. Estoy programando en C, Linux, ADSL
Alguna idea en el codigo, u forma?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int sockfd, newsock;
int finalizar (int state)
{
close (sockfd);
close (newsock);
}
int main ()
{
printf ("#***************************************#\n");
printf ("# -[ GetIP - by Sagrini ]- #\n");
printf ("# ----------------------------------- #\n");
printf ("# Hacking programming #\n");
printf ("#***************************************#\n\n\n");
struct sockaddr_in host, client;
int a=sizeof (struct sockaddr);
char pass [30];
printf("[+] Creando el Socket...");
if ((sockfd
=socket
(2, 1, 0))!=-1) printf ("[OK]\n");
else {printf("[FAIL]\n"); finalizar
(1);}
host.sin_port=htons(31337);
host.sin_family=AF_INET;
host.sin_addr.s_addr=0;
if(bind
(sockfd
,(struct sockaddr
*)&host
,sizeof(host
))==-1) {printf("\t[FAIL]\n"); finalizar
(1);}
if(listen
(sockfd
,5)==-1) {printf("\t[FAIL]\n");finalizar
(1);}
printf("[+] Esperando cliente...");
if((newsock
=accept
(sockfd
, (struct sockaddr
*)&client
, &a
))==-1) {printf("[FAIL]\n");finalizar
(1);}
printf("[+] Conexion establecida con %s:%d\n", inet_ntoa
(client.
sin_addr), ntohs
(client.
sin_port));;
finalizar (0);
}
Gracias