Поддельный IP-адрес от getaddrinfo и inet_ntop
-
21-09-2019 - |
Вопрос
Я использовал getaddrinfo для поиска адресов сокетов для основных команд сокетов.Однако в последнее время он возвращает мне адреса фиктивных IP-адресов, которые я нашел с помощью inet_ntop.Я попробовал свой код, а также тот, который представлен в Руководство Биджа, и оба они дают одинаковые результаты.Вот код:
struct addrinfo hints, *info;
int status;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
if(status = getaddrinfo(address, port, &hints, &info)) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
}
char ip4[INET_ADDRSTRLEN];
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN);
std::cout<<ip4<<std::endl;
Независимо от того, какой адрес я использую, он всегда дает мне IP вида
16.2.x.y
где 256*x + y равно номеру порта.Кто-нибудь когда-нибудь видел, как это происходит, или может ли кто-нибудь догадаться, почему он дает мне это?
Решение
Разве ты не должен проходить мимо?
((sockaddr_in const *)info->ai_addr)->sin_addr
к inet_ntop
?
Не связан с StackOverflow