Hola como podría obtener la diseccionar IPV4 del pc con router de este tipo:
192.168.1.xxx
Porque si creo un programa que sirve de servidor y el server_ip lo hago así:
server_ip.s_addr=inet_addr("192.168.1.4");
host=gethostbyaddr((char *)&server_ip,4,AF_INET);
Lo escribo directamente después de haber lo visto desde cmd pero asi el programa no es portable y si me cambie la ip tengo que cambiar lo y compilar de nuevo. Encima tengo que permitir las conexiones entrantes y salientes desde la configuración del router.
Como solucionar esto?
Gracias
intentas hacer un RAT(remote administration tool)?
lo mas comun es conexion inversa+ no-ip
asi solo hace falta abrir puertos en el router propio ademas de esa forma ni si quiera lo detecta el firewall de windows y no hay problema si la ip es dinamicaxD
wow! XD si son mal pensados! ni si quiera ha escrito y creen que es un RAT (espero que no lo sea :¬¬)
https://suite.io/guy-lecky-thompson/7sd21g (https://suite.io/guy-lecky-thompson/7sd21g) alli tienes una solucion que tal ves te sirva
No es posible si la dirección es dinamica
La solución pasaría, desde mi punto de vista, por una de estas dos posibilidades:
* Automático: creas un fichero de configuración que será leído por el programa durante su arranque. En dicho fichero le indicas la interfaz a la que debe conectarse (recuerda que un equipo puede tener varias IPs... independientemente de que tenga una o varias tarjetas ). Entonces localizas la ip asignada a la interfaz que te hayan dicho y usas esa ip para configurar tu conexión... una vez hecho esto puedes programarte una función que haga las veces de centinela y chequee cada cierto tiempo la ip de la interfaz por si acaso ésta ha cambiado. En tal caso cierras la conexión actual y creas una nueva usando los valores actuales de IP.
* Manual: al iniciar el programa pides una dirección ip para intentar la conexión.
Hola perdón por contestar tan tarde pero de repente se me ocurrió crear otros programas y se me olvido que había preguntado :-X
A partir del link de engel lex hice esto:
WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);
char name[255];
if (!gethostname(name, 255)){
cout << "Host name -> " << name;
hostent *host;
host = (hostent*)gethostbyname(name);
cout << inet_ntoa(*(in_addr*)host->h_addr_list[0]);
}
else{
cout << "gethostname error!";
}
Me imprime la ip de la red ethernet de vmware ;D
Bueno justo aquí estaba el problema.
Lo de RAT hice algo por el estilo no se si se podría llamar RAT pero funcionaba con conexión a un hosting gratuito que me registre con tor y siempre entraba con tor para que no registren la ip y desde allí el programa comprobaba un archivo php que le imprimía instrucciones encriptadas pero usando HTTP. Bueno lo malo fue que me lo detecto el antivirus :) aunque esto cambiara :silbar:
Pero lo que intentaba hacer no es RAT xD
El problema es que no se cual se la interfaz correcta con la que se conecta a internet y no por ejemplo la de hamache o vmware.
Tiene que haber alguna manera. A mi lo que se me ocurrió es hacer una petición a una pagina que te la diga pero no me parece practico.
Saludos