MAC и IP
От: vvv848165@ya.ru  
Дата: 04.04.19 09:10
Оценка:
как программно по MAC адресу узнать IP?

И можно ли это сделать без всяких консольных утилит...
Re: MAC и IP
От: /aka/ СССР  
Дата: 04.04.19 09:21
Оценка: 3 (1)
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>как программно по MAC адресу узнать IP?


Помним, что про MAC можно говорить только если компьютеры в одном сегменте коллизий? Если между компьютерами хотя бы один маршрутизатор, то МАК не узнать никак.

Посмотреть в таблице — GetIpNetTable: https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getipnettable

Посмотреть в таблице быстро. Но МАКа там может не быть, если компьютер давно с этим МАКом не общался.

Отправить ARP запрос — SendARP: https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-sendarp

После отправки запроса система будет ждать ответа. Это может занимать сотни миллисекунд.
Re: MAC и IP
От: Mr.Delphist  
Дата: 04.04.19 10:56
Оценка:
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>как программно по MAC адресу узнать IP?


MAC чей, свой или чужой?

VYR>И можно ли это сделать без всяких консольных утилит...


Если сторонние консольные тулы это умеют, то и самому кодом это нарисовать, значит, тоже можно.
Re: MAC и IP
От: Harvat  
Дата: 04.04.19 13:04
Оценка: 1 (1)
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>как программно по MAC адресу узнать IP?


VYR>И можно ли это сделать без всяких консольных утилит...


Необходимо сконфигурировать ARP запрос.
Собственно так это и узнаётся.
https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-sendarp
Re[2]: MAC и IP
От: ononim  
Дата: 04.04.19 13:42
Оценка:
H>Необходимо сконфигурировать ARP запрос.
H>Собственно так это и узнаётся.
H>https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-sendarp
ARP определяет MAC по IP. IP по MAC не узнать никак кроме того как опросить все возможные IP и/или слушая сетку — авось он сам спалицца
Как много веселых ребят, и все делают велосипед...
Re[3]: MAC и IP
От: Harvat  
Дата: 04.04.19 13:50
Оценка:
Здравствуйте, ononim, Вы писали:

H>>Необходимо сконфигурировать ARP запрос.

H>>Собственно так это и узнаётся.
H>>https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-sendarp
O>ARP определяет MAC по IP. IP по MAC не узнать никак кроме того как опросить все возможные IP и/или слушая сетку — авось он сам спалицца
Ну дык я про вот это:
int main(int argc, char **argv) {
    if (argc < 2) {
        std::cerr << "Usage: " << argv[0] << " <IP address>\n";
        return EXIT_FAILURE;
    }
 
    char MacAddr[1024];
    ULONG size = sizeof(MacAddr);
 
    SendARP(inet_addr(argv[1]), inet_addr("0.0.0.0"), MacAddr, &size);
 
    std::cout << "The MAC address is: ";
    for (unsigned char c : MacAddr)
        std::cout << std::setw(2) << std::setprecision(2) << std::setfill('0') << std::hex << (unsigned)c << " ";
}
Re[4]: MAC и IP
От: ononim  
Дата: 04.04.19 13:57
Оценка:
O>>ARP определяет MAC по IP. IP по MAC не узнать никак кроме того как опросить все возможные IP и/или слушая сетку — авось он сам спалицца
H>Ну дык я про вот это:
А ТСу хочется RARP, а он — все.
Как много веселых ребят, и все делают велосипед...
Re[5]: MAC и IP
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.04.19 15:47
Оценка:
Здравствуйте, ononim, Вы писали:

H>>Ну дык я про вот это:

O>А ТСу хочется RARP, а он — все.

Только он почти никогда не работает...
Re[5]: MAC и IP
От: McQwerty Россия  
Дата: 04.04.19 18:16
Оценка:
Здравствуйте, ononim, Вы писали:

O>>>ARP определяет MAC по IP. IP по MAC не узнать никак кроме того как опросить все возможные IP и/или слушая сетку — авось он сам спалицца

H>>Ну дык я про вот это:
O>А ТСу хочется RARP, а он — все.

RFC 2390 не подойдёт?
Re[6]: MAC и IP
От: ononim  
Дата: 04.04.19 18:30
Оценка:
H>>>Ну дык я про вот это:
O>>А ТСу хочется RARP, а он — все.
MQ>RFC 2390 не подойдёт?
По моей ссылке про него сказано: InARP is not used in Ethernet
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.