如何查询服务器并获取MX,A,NS记录
发布时间:2020-12-15 21:09:11 所属栏目:安全 来源:网络整理
导读:我正在尝试获取A,MX和NS A服务器记录,如下所示: #include stdio.h#include stdlib.h#include unistd.h#include netinet/in.h#include resolv.h#include netdb.h#define N 4096int main (int argc,char *argv[]){ u_char nsbuf[N]; char dispbuf[N]; ns_msg
我正在尝试获取A,MX和NS A服务器记录,如下所示:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <netinet/in.h> #include <resolv.h> #include <netdb.h> #define N 4096 int main (int argc,char *argv[]) { u_char nsbuf[N]; char dispbuf[N]; ns_msg msg; ns_rr rr; int i,l; if (argc < 2) { printf ("Usage: %s <domain>n",argv[0]); exit (1); } // HEADER printf("Domain : %sn",argv[1]); // ------ // A RECORD printf("A records : n"); l = res_query(argv[1],ns_c_any,ns_t_a,nsbuf,sizeof(nsbuf)); if (l < 0) { perror(argv[1]); } ns_initparse(nsbuf,l,&msg); l = ns_msg_count(msg,ns_s_an); for (i = 0; i < l; i++) { ns_parserr(&msg,ns_s_an,&rr); ns_sprintrr(&msg,&rr,NULL,dispbuf,sizeof(dispbuf)); printf("t%s n",dispbuf); } //------------ // MX RECORD printf("MX records : n"); l = res_query(argv[1],ns_t_mx,sizeof(nsbuf)); if (l < 0) { perror(argv[1]); } else { #ifdef USE_PQUERY /* this will give lots of detailed info on the request and reply */ res_pquery(&_res,stdout); #else /* just grab the MX answer info */ ns_initparse(nsbuf,&msg); l = ns_msg_count(msg,ns_s_an); for (i = 0; i < l; i++) { ns_parserr(&msg,i,&rr); ns_sprintrr(&msg,sizeof(dispbuf)); printf ("t%sn",dispbuf); } #endif } // --------- // NS RECORD printf("NS records : n"); l = res_query(argv[1],ns_t_ns,dispbuf); } // --------- return 0; } 根据要求收到很多相同的,即相同的A记录.与NS记录相同.我究竟做错了什么? Domain : mail.ru A records : mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 mail.ru. 22S IN A 94.100.191.207 MX records : mail.ru. 1m57s IN MX 10 mxs.mail.ru. NS records : mail.ru. 1m50s IN NS ns.mail.ru. mail.ru. 1m50s IN NS ns.mail.ru. mail.ru. 1m50s IN NS ns.mail.ru. mail.ru. 1m50s IN NS ns.mail.ru. mail.ru. 1m50s IN NS ns.mail.ru. mail.ru. 1m50s IN NS ns.mail.ru. 请帮忙. 解决方法
在这个电话中:
ns_parserr(&msg,&rr); 第三个参数是要检索的记录的索引.所以在你的情况下它应该是: ns_parserr(&msg,&rr); 刚尝试使用那个小修补程序的代码,它按预期工作: Domain : mail.ru A records : mail.ru. 5S IN A 94.100.191.248 mail.ru. 5S IN A 94.100.191.249 mail.ru. 5S IN A 94.100.191.250 mail.ru. 5S IN A 94.100.191.201 mail.ru. 5S IN A 94.100.191.202 mail.ru. 5S IN A 94.100.191.203 mail.ru. 5S IN A 94.100.191.204 mail.ru. 5S IN A 94.100.191.205 mail.ru. 5S IN A 94.100.191.206 mail.ru. 5S IN A 94.100.191.207 mail.ru. 5S IN A 94.100.191.208 mail.ru. 5S IN A 94.100.191.209 mail.ru. 5S IN A 94.100.191.210 mail.ru. 5S IN A 94.100.191.241 mail.ru. 5S IN A 94.100.191.242 mail.ru. 5S IN A 94.100.191.243 mail.ru. 5S IN A 94.100.191.244 mail.ru. 5S IN A 94.100.191.245 mail.ru. 5S IN A 94.100.191.246 mail.ru. 5S IN A 94.100.191.247 MX records : mail.ru. 7m14s IN MX 10 mxs.mail.ru. NS records : mail.ru. 3m35s IN NS ns2.mail.ru. mail.ru. 3m35s IN NS ns.mail.ru. mail.ru. 3m35s IN NS ns4.mail.ru. mail.ru. 3m35s IN NS ns5.mail.ru. mail.ru. 3m35s IN NS ns1.mail.ru. mail.ru. 3m35s IN NS ns3.mail.ru. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |