卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

域名信息查詢

/** @brief* Whois client program** @details* This program shall fetch whois data for a IPv4 address.

/*

* @brief

* Whois client program

*

* @details

* This program shall fetch whois data for a IPv4 address. *

* @author Silver Moon ( m00n.silv3r@gmail.com ) * */

#include //scanf , printf

#include //strtok

#include //realloc

#include //socket

#include //sockaddr_in

#include //getsockname

#include //hostent

#include //close

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

{

char ip[100] , *data = NULL;

printf("Enter ip address to whois : ");

scanf("s" , ip);

get_whois(ip , &data);

printf("nn");

puts(data);

free(data);

return 0;

}

/**

Get the whois content of an ip

by selecting the correct server

*/

void get_whois(char *ip , char **data)

{

char *wch = NULL, *pch , *response = NULL;

if(whois_query("whois.iana.org" , ip , &response)) {

,

printf("Whois query failed");

}

pch = strtok(response , "n");

while(pch != NULL)

{

//Check if whois line

wch = strstr(pch , "whois.");

if(wch != NULL)

{

break;

}

//Next line please

pch = strtok(NULL , "n");

}

if(wch != NULL)

{

printf("nWhois server is : s" , wch);

whois_query(wch , ip , data);

}

else

{

*data = malloc(100);

strcpy(*data , "No whois data");

}

return;

}

/*

* Perform a whois query to a server and record the response * */

int whois_query(char *server , char *query , char **response) {

char ip[32] , message[100] , buffer[1500];

int sock , read_size , total_size = 0;

struct sockaddr_in dest;

sock = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);

//Prepare connection structures :)

,

memset( &dest , 0 , sizeof(dest) );

dest.sin_family = AF_INET;

printf("nResolving s..." , server);

if(hostname_to_ip(server , ip))

{

printf("Failed");

return 1;

}

printf("s" , ip);

dest.sin_addr.s_addr = inet_addr( ip );

dest.sin_port = htons( 43 );

//Now connect to remote server

if(connect( sock , (const struct sockaddr*) &dest , sizeof(dest) ) < 0) {

perror("connect failed");

}

//Now send some data or message

printf("nQuerying for ... s ..." , query);

sprintf(message , "srn" , query);

if( send(sock , message , strlen(message) , 0) < 0)

{

perror("send failed");

}

//Now receive the response

while( (read_size = recv(sock , buffer , sizeof(buffer) , 0) ) ) {

*response = realloc(*response , read_size total_size); if(*response == NULL)

{

printf("realloc failed");

}

memcpy(*response total_size , buffer , read_size); total_size = read_size;

}

printf("Done");

fflush(stdout);

*response = realloc(*response , total_size 1);

*(*response total_size) = '0';

,

close(sock);

return 0;

}

/*

* @brief

* Get the ip address of a given hostname *

* */

int hostname_to_ip(char * hostname , char* ip) {

struct hostent *he;

struct in_addr **addr_list;

int i;

if ( (he = gethostbyname( hostname ) ) == NULL) {

// get the host info

herror("gethostbyname");

return 1;

}

addr_list = (struct in_addr **) he->h_addr_list;

for(i = 0; addr_list[i] != NULL; i )

{

//Return the first one;

strcpy(ip , inet_ntoa(*addr_list[i]) ); return 0;

}

return 0;

}

標(biāo)簽: