http://www.binarytides.com/c-code-to-perform-ip-whois/
http://www.oschina.net/code/snippet_12_9390
/*
* @brief
* Whois client program
*
* @details
* This program shall fetch whois data for a IPv4 address.
*
* @author Silver Moon ( m00n.silv3r@gmail.com )
* */
#include<stdio.h> //scanf , printf
#include<string.h> //strtok
#include<stdlib.h> //realloc
#include<sys/socket.h> //socket
#include<netinet/in.h> //sockaddr_in
#include<arpa/inet.h> //getsockname
#include<netdb.h> //hostent
#include<unistd.h> //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
(
"\n\n"
);
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 ,
"%s\r\n"
, 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;
}
相关推荐
1. `c.asp`:这是系统的核心组件,很可能包含了处理WHOIS查询请求的代码。通过输入域名,系统将调用这个页面来执行查询并返回结果。 2. `index.asp`:作为系统的主页,它通常会提供一个用户界面,让用户输入域名...
在Linux中,`whois`命令可以用来执行WHOIS查询。这个资源包可能提供了一个定制的WHOIS查询工具,或者是一些有关如何在Linux环境下使用WHOIS查询的教程。 压缩包内的“www.pudn.com.txt”可能是一个链接或说明文档,...
在这个案例中,可能包含处理Whois查询的网络请求和响应的类。 6. **资源文件**:如Pwhois.cfg可能是配置文件,存储程序的设置,如查询参数、线程数量等;cMain.ddp、cMain.dfm可能是Delphi(一种编程语言)的项目...
5. DNS查找:执行权威的DNS查找6. Whois查找:查找域名的注册和委派7. HTTP标头:列出所有响应HTTP标头8.复制IP:复制IP剪贴板上的地址9. Alexa:网站流量,统计和分析10. WOT记分卡:网站信誉等级11.病毒总数:免费...
通过Whois查询,可以获取到域名服务器的详情,进一步使用DNS的排错工具nslookup,可以伪装成次要DNS服务器请求区域传送,从而获取更多网络信息,包括主机名、IP地址、网络结构和主机用途。 Host命令是UNIX系统中...
1. **Whois查询**:通过 `msf> whois example.com` 或 `msf> whois 192.168.1.100` 来查询域名或IP的信息。 2. **Netcraft**:使用在线工具 `http://searchdns.netcraft.com/` 来收集服务器IP信息。 3. **NSLOOKUP**...
综上所述,DHDb是一个利用Shell脚本与GitHub交互的工具,通过GitHub Actions实现自动化,包括但不限于使用WHOIS查询、DNS-over-HTTPS进行域名和主机的健康检查,以及根据地区(国内与国外)进行差异化处理。...
5. **信息收集与枚举**:通过搜索引擎、社会工程、WHOIS查询等方法收集目标信息,为后续的扫描和分析做准备。 6. **扫描方法**:使用Nmap、ZAP等工具进行端口扫描、服务识别、操作系统指纹识别等,找出网络中的活体...
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 在Python中,可以使用Unicode类型来表示字符。...
- 如果本地语言环境不是utf8而是gb18030,可以使用: `mount -o iocharset=gb2312 /dev/sda1 /mnt/usb` - 挂载光盘镜像: `mount -t iso9660 -o loop /tmp/cd.iso /mnt/cdrom` 7. **字符界面下安装操作系统** - `...
- 如果本地语言环境是GB18030,可以使用以下命令:`# mount -o iocharset=gb2312 /dev/sda1 /mnt/usb` - 挂载光盘镜像到本地目录:`# mount -t iso9660 -o loop /tmp/cd.iso /mnt/cdrom` 9. **字符界面下安装操作...
- 如果本地语言环境不是UTF8而是GB18030,则需使用下面的命令挂载:`#mount -o iocharset=gb2312 /dev/sda1 /mnt/usb` - 挂载一个光盘镜像至本地`/mnt/cdrom`目录:`#mount -t iso9660 -o loop /tmp/cd.iso /mnt/...
- `-c`: 取消正在执行的关机操作。 - **示例**: - `#shutdown -k now "just kid"`: 发出警告信息“just kid”,但不实际关机。 - `#shutdown -h now`: 立即关机并关闭电源。 - `#shutdown -r now`: 立即重启...
2. **域名注册与管理**:理解域名注册和管理的过程是IT行业中的基础技能,涉及到DNS(Domain Name System)解析、WHOIS查询、域名生命周期(如注册、续费、锁定、转移)等概念。 3. **开源文化**:OpenSRS Client ...
- `whois`: 查询域名和IP地址的相关信息。 - `whatis`: 显示命令的简短描述。 - `whereis`: 显示系统命令的位置及其手册页位置。 以上命令涵盖了Linux终端中常用的安装、登录、关机、文件系统管理以及系统信息显示...
端口43 - Whois (Whois查询服务) - **描述**:用于查询注册信息的协议。 ##### 44. 端口44 - MPM FLAGS Protocol (消息处理模块标志协议) - **描述**:用于消息处理的应用层协议。 ##### 45. 端口45 - Message ...
Domain 集WHOIS查询、上传页面批量检测、木马上传、数据库浏览及加密解密于一体. SuperScan 强大的TCP端口扫描器、Ping和域名解析器! Hscan 这是款运行在WinNT/2000下的漏洞扫描工具,有GUI以及命令行两种扫描方式...