elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / ayuda para keylogger en: 15 Abril 2018, 02:04 am
Bueno es para saber si las librerias estan bien, saber porque no verifica el estado de la tecla y saber si esta bien poner getasynckeystate fuera del main.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
//#define OK -32767

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int tecla;

    for(tecla=4 ; tecla<256 ; tecla++){
if(GetAsyncKeyState(tecla) > 0){
printf("Presiono la tecla %c", tecla);
}
}

/*
int main(int argc, char *argv[]) {


return 0;

}
*/

2  Programación / Programación C/C++ / [Solucionado] Programando socke cliente y servidor en C en: 14 Octubre 2014, 22:17 pm
Aquí está el servidor, lo que hago es ingresar los datos del servidor pero me gustaría ver cual es la ip que se le asigna al servidor con INADDR_ANY, ¿Como puedo hacer para ver la ip del server?

Servidor:
Código
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5.  
  6. int main(void)
  7. {
  8. /* Abriendo socket */
  9. int sockfd, new_sockfd;
  10. struct sockaddr_in server_addr;
  11. struct sockaddr_in cliente_addr;
  12. int addrlen;
  13.  
  14. sockfd= socket(AF_INET, SOCK_STREAM, 0);
  15. if(sockfd == -1){
  16. printf("Error abriendo el socket...");
  17. }
  18.  
  19. /* Asociación de parámetros al socket */
  20. server_addr.sin_family= AF_INET;
  21. server_addr.sin_port= htons(1234);
  22. server_addr.sin_addr.s_addr= htonl(INADDR_ANY);
  23.  
  24. if(bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr))==-1){
  25. printf("\nError en bind()...");
  26. }
  27.  
  28. /* Habilitamos el socket para recibir peticiones y establecer conexiones */
  29. listen(sockfd, 5);
  30. addrlen= sizeof(struct sockaddr);
  31.  
  32. /* Recibimos peticiones con accept() */
  33. new_sockfd= accept(sockfd, (struct sockaddr *) &cliente_addr, &addrlen);
  34. if(new_sockfd == -1){
  35. printf("Error, no se pudo recibir petición correctamente");
  36. }
  37.  
  38. return 0;
  39. }
  40.  
  41.  

Cliente:
Código
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5.  
  6. int main(void)
  7. {
  8. struct sockaddr_in server;
  9. char ip[16];
  10. int fd, puerto;
  11. int addrlen;
  12.  
  13. printf("Ingrese la ip del servidor\n");
  14. scanf("%s", ip);
  15.  
  16. printf("Ingrese el puerto de conexión\n");
  17. scanf("%d", &puerto);
  18.  
  19. /* Abrimos el socket */
  20. fd= socket(AF_INET, SOCK_STREAM, 0);
  21. if(fd==-1){
  22. printf("Error abriendo el socket");
  23. return -1;
  24. }
  25.  
  26. /* Definimos los datos del servidor */
  27. server.sin_family= AF_INET;
  28. server.sin_port= htons(1234);
  29. server.sin_addr.s_addr= inet_addr(ip);
  30.  
  31. addrlen= sizeof(struct sockaddr);
  32.  
  33. if(connect(fd, (struct sockaddr *)&server, addrlen) == -1){
  34. printf("\nHa ocurrido un error al conectarce al server");
  35. }
  36.  
  37.  
  38. return 0;
  39. }
  40.  

Ok, ahora el código del cliente pide que ingreses la IP del servidor, cómo puedo saber la ip del servidor si coloque INADDR_ANY en el campo s_addr del servidor, y eso lo que hace es dejar que el SO le asigne una ip al servidor. También veo que el cliente declara un "char ip[16]" de 16 bytes para almacenar la ip del server cuando en realidad la ip ocupa 4 bytes (32 bits). Para rematar, tenemos la siguiente linea de código:

Código
  1. server.sin_addr.s_addr= inet_addr(ip);
  2.  

Viendo que la funcion inet_addr() es de esta manera:
Código
  1. in_addr_t inet_addr(const char *cp);
  2.  
Como el array ip se pasa a la función inet_addr() el puntero cp va apuntar al primer elemento de ip y también podrá apuntar a cada uno de los elementos de ip, así que la función inet_addr se la apañará para retornar la dirección ip, eso es lo que entiendo.


Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines