IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Trouver le pays d'une personne en fonction de son IP


Sujet :

C++

Vue hybride

The Lord of Nesquik Trouver le pays d'une... 26/06/2006, 11h25
The Lord of Nesquik Je me permet de poster mon... 26/06/2006, 11h33
Matthieu Brucher Regarde du côté... 26/06/2006, 11h39
alceste Je ne suis pas sûr d'avoir... 26/06/2006, 11h41
The Lord of Nesquik Le probleme est que mon code... 26/06/2006, 11h56
Matthieu Brucher Ben si, ce sont des plages... 26/06/2006, 11h58
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Par défaut Trouver le pays d'une personne en fonction de son IP
    Bonjour,
    Je suis actuelement en train de chercher un moyen de trouver le pays d'une personne en fonction de son IP, comme dans le Virtual Trace de McAfee.
    J'ai appris qu'il était possible de faire ca en PHP. Voici le lien :Tuto
    J'ai donc essayé de reproduir la l'opération PHP en C++, en utilisant les protocoles HTTP. Je n'ai pas réussi, et de toute façon cette méthode ne me plaisait pas. Cependant, j'ai téléchargé la base de données de IP-to-Country. Le fichier se présente donc sous la forme d'un fichier .txt de 732 ko...
    Ma question est donc : y-a-t'il un moyen d'utiliser cette base de données dans mon programme C++ ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Par défaut
    Je me permet de poster mon code de requete HTTP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <winsock2.h>
    #include <stdio.h>
     
    #pragma comment(lib,"ws2_32.lib")
     
    #define BUFSIZE 1024
     
    int connexion(char* server_name,int port)
    {
    	int sock;
    	struct sockaddr_in serverSockAddr;
    	struct hostent *serverHostEnt;
    	memset(&serverSockAddr,0,sizeof(serverSockAddr));
    	serverHostEnt = gethostbyname(server_name);  // recupere données sur serveur.
    	if (serverHostEnt == NULL)
    	{
    		printf("Serveur introuvable : %s\n",server_name);
    		return -1;
    	}
    	memcpy(&serverSockAddr.sin_addr,serverHostEnt->h_addr,serverHostEnt->h_length);
    	serverSockAddr.sin_port = htons(port);
    	serverSockAddr.sin_family = AF_INET;
     
    	sock = socket(AF_INET,SOCK_STREAM,0); // cree la socket
    	if (sock<0)
    	{
    		printf("creation de socket a foire...\n");
    		return -1;
    	}
    	if(connect(sock,(struct sockaddr *)&serverSockAddr,sizeof(serverSockAddr))<0)
    	{
    		printf("Impossible de se connecter :(\n");
    		return -1;
    	}
    	return sock;
    }
     
    void request(int sock,char* host,char* get)
    {
        char commande[500];
    	char buf[BUFSIZE];
    	int lu;
    	FILE* F;
        sprintf(commande,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\n\r\n",get,host);
        send(sock,commande,strlen(commande)+1,0);
     
    	F=fopen("IP.html","wb");
    	do
    	{
    		lu=recv(sock,&(buf[0]),BUFSIZE,0);
    		fwrite(&(buf[0]),lu,1,F);
    	} while(lu>0);
    	fclose(F);
    }
     
    int main()
    {
    	int sock=-1;
    	char server_name[]="ip-to-country.com";
    	char request_host[]="ip-to-country.com";
    	char request_path[]="/get-country/?ip='1042284544'&user=guest&pass=guest";
     
    	int port=80;
     
    	WSADATA wsa;
    	WSAStartup(MAKEWORD(2,0),&wsa);	
     
    	sock=connexion(server_name,port);
    	if (sock<0)
    		return -1;
     
    	request(sock,request_host,request_path);
     
    	/* fermeture de la connection */
    	shutdown(sock,2);
    	closesocket(sock);
    	WSACleanup( );
    	return 0;
    }
    Le fichier IP.html généré m'affcihe:
    HTTP/1.1 302 Found Date: Mon, 26 Jun 2006 15:26:22 GMT Server: Apache/1.3.33 (Unix) mod_jk/1.2.1-beta-1 mod_gzip/1.3.26.1a Midgard/1.5.0/SG PHP/4.4.2 Location: http://ip-to-country.webhosting.info/get-country/?ip='1042284544'&user=guest&pass=guest Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 161
    Found
    The document has moved here.


    --------------------------------------------------------------------------------

    Apache/1.3.33 Server at www.ip-to-country.com Port 80
    0

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Regarde du côté d'ip2countries qui est un fichier contenant une association IP <=> pays.

  4. #4
    Membre chevronné Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Par défaut
    Je ne suis pas sûr d'avoir compris le problème.. Quel est-il ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Par défaut
    Le probleme est que mon code d'envoit de requetes HTTP ne fonctionne pas, et que je préfererai de toute facon utiliser une autre méthode. J'ai donc pensé à utiliser la base de donnée de IP-to-Country, associant des IPs à des pays. Mais les bases de données ne sont utilisables que pour les scripts en PHP. Je voulais savoir si il y avait un moyen d'utiliser quand même cette base de donnée.
    Citation Envoyé par Miles
    Regarde du côté d'ip2countries qui est un fichier contenant une association IP <=> pays.
    Mais sous quelle forme ce fichier se présente-t'il ? C'est une base de données ?
    J'ai regardé le fichier RIR.idx de McAfee. Voila ce que j'y ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    [apnic]
    24.192.0.0	24.195.255.255
    60.0.0.0	61.255.255.255
    169.208.0.0	169.223.255.255
    202.0.0.0	203.255.255.255
    210.0.0.0	211.255.255.255
    218.0.0.0	222.255.255.255
     
    [ripe]
    24.132.0.0	24.135.255.255
    62.0.0.0	62.255.255.255
    80.0.0.0	82.255.255.255
    139.20.0.0	139.29.255.255
    141.0.0.0	141.85.255.255
    145.224.0.0	145.254.255.255
    146.48.0.0	146.48.255.255
    149.202.0.0	149.204.255.255
    149.206.0.0	149.251.255.255
    150.254.0.0	150.254.255.255
    151.0.0.0	151.100.255.255
    160.44.0.0	160.63.255.255
    160.216.0.0	160.220.255.255
    163.156.0.0	163.175.255.255
    164.0.0.0	164.40.255.255
    164.128.0.0	164.143.255.255
    171.16.0.0	171.33.255.255
    188.0.0.0	188.255.255.255
    192.71.0.0	192.71.255.255
    192.106.0.0	192.106.255.255
    192.114.0.0	192.118.255.255
    192.162.0.0	192.162.255.255
    192.164.0.0	192.167.255.255
    193.0.0.0	195.255.255.255
    198.17.117.0	198.17.117.255
    212.0.0.0	213.255.255.255
    217.0.0.0	217.255.255.255
     
    [lacnic]
    200.0.0.0	201.255.255.255
    Dites moi...Ca ne ressemble pas à des adresses IP ca ?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ben si, ce sont des plages d'adresses IP.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Par défaut
    Ben oui, mais j'en fais quoi ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2014, 15h24
  2. [Débutant] Trouver l'équation d'une courbe en fonction d'un tableau de valeur
    Par mahmoudbs dans le forum MATLAB
    Réponses: 5
    Dernier message: 04/08/2012, 22h38
  3. [MySQL] Afficher une donnée en fonction de son identifiant
    Par Bibbe dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/11/2007, 16h27
  4. cocher une checkbox en fonction de son nom
    Par boss_gama dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/09/2006, 16h42
  5. Fonction WHOIS : Trouver le pays d'une IP donnée
    Par bigsister dans le forum Réseau
    Réponses: 11
    Dernier message: 18/07/2005, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo