在类 Unix /LInux操作系统上, Whois 是域名和所有者的列表。有许多称为注册机构的互联网公司持有有关域名注册和所有权的数据。任何人都可以通过实际管理域名注册和所有权的 ICANN查询此信息。在本文中,我们将学习如何在 Linux 中使用 WhoIs 命令并且抓包进行分析。
whois命令
whois 是一个有用的 Linux 命令,可让您轻松获取有关域或网站的详细信息。可以在 Linux 中运行此命令来查找有关域的信息。我先看看whois命令如何使用?
whois 查询会告诉你很多关于谁拥有互联网域的信息。 在 Linux 上,你可以从命令行运行 whois 查找。
whois 系统是一个记录列表,其中包含有关域所有权和所有者的详细信息。任何人都可以查询记录列表。当你运行后,其中一个注册机构将处理您的请求并从相应的 whois 记录中向你发送详细信息。
此注册附有以下状态:
clientTransferProhibited:域的注册机构将拒绝将域从当前注册机构转移到另一个注册机构的请求。
serverDeleteProhibited:无法删除域。
serverTransferProhibited:域不能转移到另一个注册商。
serverUpdateProhibited:无法更新域
“域状态”行显示了域的状态,并且可以同时处于多个状态。
- 实例
1.查询域名信息
2.使用带有 IP 地址的 whois
使用带有 IP 地址的 whois 就像使用带有域名一样简单。 只需在 whois 后面指定一个 IP 地址。
3.指定端口查询
更多whois的使用说明可以使用man whois命令进行查看。
Linux whois命令C/C++实现
int main(int argc, char *argv[])
{
int ch, flags, rval;
const char *host, *name, *country;
country = host = NULL;
flags = rval = 0;
while ((ch = getopt(argc, argv, "Aac:dfgh:Iilmp:PqQRr")) != -1)
switch (ch) {
case 'a':
host = ANICHOST;
break;
case 'A':
host = PNICHOST;
break;
case 'c':
country = optarg;
break;
case 'd':
host = DNICHOST;
break;
case 'f':
host = FNICHOST;
break;
case 'g':
host = GNICHOST;
break;
case 'h':
host = optarg;
break;
case 'i':
host = INICHOST;
break;
case 'I':
host = IANAHOST;
break;
case 'l':
host = LNICHOST;
break;
case 'm':
host = MNICHOST;
break;
case 'p':
port_whois = optarg;
break;
case 'P':
host = PDBHOST;
break;
case 'q':
break;
case 'Q':
flags |= WHOIS_QUICK;
break;
case 'r':
host = RNICHOST;
break;
case 'R':
host = RUNICHOST;
break;
default:
usage();
}
argc -= optind;
argv += optind;
if (!argc || (country != NULL && host != NULL))
usage();
if (host == NULL && country == NULL && !(flags & WHOIS_QUICK))
flags |= WHOIS_RECURSE;
for (name = *argv; (name = *argv) != NULL; argv++)
{
char *tofree = NULL;
const char *server =
host ? host : choose_server(name, country, &tofree);
rval += whois(name, server, port_whois, flags);
free(tofree);
}
return rval;
}
运行结果:
WHOIS 服务器在 TCP 端口 43 上侦听来自 WHOIS 客户端的请求。 WHOIS 客户端向 WHOIS 服务器发出文本请求,然后 WHOIS 服务器回复文本内容。所有请求都以 ASCII CR 结束,然后是 ASCII LF。响应可能包含多于一行的文本,因此 ASCII CR 或 ASCII LF 字符的存在并不表 示响应结束。
WHOIS 服务器在输出完成后立即关闭其连接。关闭的 TCP 连接向客户端表明已收到响应。
WHOIS协议抓包分析
whois baidu.com
tcpdump -i ens33 -nn -s0 -v port 43
WHOIS 是一种基于 TCP 的面向事务的查询/响应协议,广泛用于向 Internet 用户提供信息服务。如果向位于 whois.nic.mil 的 WHOIS 服务器发出请求以获取有关“Smith”的信息,则线路上的数据包将如下所示:
总结
在本文中,我们学习了如何在 Linux 中使用 WhoIs 命令。 这是获取有关特定域或 IP 地址的信息的一种非常有用的方法。还有就是对WHOIS协议进行抓包分析。